Lay the lightbox info-panel metadata out in a two-column grid: paired fields (Dimensions/Duration, Video codec/Audio codec, Type/File size) sit side by side while Rating, Modified, and Embedding span the full width. More compact panel with less scrolling. Tags and EXIF sections are unchanged.
This commit is contained in:
@@ -63,6 +63,9 @@ aims to follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
|
|||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
- **Two-column lightbox details** — the image info panel now lays metadata out in
|
||||||
|
two columns (Dimensions/Duration, Video codec/Audio codec, Type/File size sit
|
||||||
|
side by side), so the panel is more compact and less scrolling.
|
||||||
- **Faster Explore on large libraries** — revisiting a folder's visual clusters
|
- **Faster Explore on large libraries** — revisiting a folder's visual clusters
|
||||||
is now near-instant. The cluster cache is validated from a lightweight
|
is now near-instant. The cluster cache is validated from a lightweight
|
||||||
image-ID signature instead of re-reading every embedding, so big libraries no
|
image-ID signature instead of re-reading every embedding, so big libraries no
|
||||||
|
|||||||
@@ -611,7 +611,8 @@ export function Lightbox() {
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
<div className="min-h-0 flex-1 overflow-y-auto px-5 pb-4 space-y-4 text-sm">
|
<div className="min-h-0 flex-1 overflow-y-auto px-5 pb-4 space-y-4 text-sm">
|
||||||
<div>
|
<div className="grid grid-cols-2 gap-x-6 gap-y-4">
|
||||||
|
<div className="col-span-2">
|
||||||
<p className="mb-1 text-xs uppercase tracking-wider text-gray-500">Rating</p>
|
<p className="mb-1 text-xs uppercase tracking-wider text-gray-500">Rating</p>
|
||||||
<div className="flex items-center gap-1">
|
<div className="flex items-center gap-1">
|
||||||
{Array.from({ length: 5 }, (_, index) => {
|
{Array.from({ length: 5 }, (_, index) => {
|
||||||
@@ -674,7 +675,7 @@ export function Lightbox() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{selectedImage.metadata_error ? (
|
{selectedImage.metadata_error ? (
|
||||||
<div>
|
<div className="col-span-2">
|
||||||
<p className="mb-1 text-xs uppercase tracking-wider text-gray-500">Metadata</p>
|
<p className="mb-1 text-xs uppercase tracking-wider text-gray-500">Metadata</p>
|
||||||
<p className="text-amber-300">{selectedImage.metadata_error}</p>
|
<p className="text-amber-300">{selectedImage.metadata_error}</p>
|
||||||
</div>
|
</div>
|
||||||
@@ -692,18 +693,19 @@ export function Lightbox() {
|
|||||||
<p className="text-white">{formatBytes(selectedImage.file_size)}</p>
|
<p className="text-white">{formatBytes(selectedImage.file_size)}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div className="col-span-2">
|
||||||
<p className="mb-1 text-xs uppercase tracking-wider text-gray-500">Modified</p>
|
<p className="mb-1 text-xs uppercase tracking-wider text-gray-500">Modified</p>
|
||||||
<p className="text-white">{formatDate(selectedImage.modified_at)}</p>
|
<p className="text-white">{formatDate(selectedImage.modified_at)}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div className="col-span-2">
|
||||||
<p className="mb-1 text-xs uppercase tracking-wider text-gray-500">Embedding</p>
|
<p className="mb-1 text-xs uppercase tracking-wider text-gray-500">Embedding</p>
|
||||||
<p className="text-white">{embeddingLabel(selectedImage.embedding_status, selectedImage.embedding_model)}</p>
|
<p className="text-white">{embeddingLabel(selectedImage.embedding_status, selectedImage.embedding_model)}</p>
|
||||||
{selectedImage.embedding_error ? (
|
{selectedImage.embedding_error ? (
|
||||||
<p className="mt-1 text-xs text-amber-300">{selectedImage.embedding_error}</p>
|
<p className="mt-1 text-xs text-amber-300">{selectedImage.embedding_error}</p>
|
||||||
) : null}
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<div className="mb-2 flex items-center justify-between">
|
<div className="mb-2 flex items-center justify-between">
|
||||||
|
|||||||
Reference in New Issue
Block a user