diff --git a/src/components/panel/Filmstrip.jsx b/src/components/panel/Filmstrip.jsx
index 6369efbba..bd4c4e77d 100644
--- a/src/components/panel/Filmstrip.jsx
+++ b/src/components/panel/Filmstrip.jsx
@@ -1,5 +1,5 @@
import { useEffect, useRef } from 'react';
-import { Image as ImageIcon, Star } from 'lucide-react';
+import { Image as ImageIcon, Star, Pencil } from 'lucide-react';
import { motion, AnimatePresence } from 'framer-motion';
const COLOR_LABELS = [
@@ -10,10 +10,10 @@ const COLOR_LABELS = [
{ name: 'purple', color: '#a78bfa' },
];
-export default function Filmstrip({
- imageList,
- selectedImage,
- onImageSelect,
+export default function Filmstrip({
+ imageList,
+ selectedImage,
+ onImageSelect,
onContextMenu,
thumbnails,
multiSelectedPaths,
@@ -57,15 +57,15 @@ export default function Filmstrip({
block: 'nearest',
inline: 'center',
});
- }, 320);
+ }, 320);
}
}
}
}, [selectedImage, imageList]);
return (
-
@@ -74,17 +74,18 @@ export default function Filmstrip({
{imageList.map((imageFile) => {
const path = imageFile.path;
const isActive = selectedImage?.path === path;
+ const isEdited = imageFile.is_edited;
const isSelected = multiSelectedPaths.includes(path);
const thumbData = thumbnails[path];
const rating = imageRatings?.[path] || 0;
const colorTag = imageFile.tags?.find(t => t.startsWith('color:'))?.substring(6);
const colorLabel = COLOR_LABELS.find(c => c.name === colorTag);
-
+
const ringClass = isActive
? 'ring-2 ring-accent'
: isSelected
- ? 'ring-2 ring-gray-400'
- : 'hover:ring-2 hover:ring-hover-color';
+ ? 'ring-2 ring-gray-400'
+ : 'hover:ring-2 hover:ring-hover-color';
return (
)}
-
- {(colorLabel || rating > 0) && (
+
+ {(colorLabel || rating > 0 || isEdited) && (
{colorLabel && (
-
>
)}
+ {isEdited && (
)}
)}
@@ -136,4 +140,4 @@ export default function Filmstrip({
);
-}
\ No newline at end of file
+}
diff --git a/src/components/panel/MainLibrary.jsx b/src/components/panel/MainLibrary.jsx
index 80449248e..e2789ee08 100644
--- a/src/components/panel/MainLibrary.jsx
+++ b/src/components/panel/MainLibrary.jsx
@@ -13,6 +13,7 @@ import {
Loader2,
AlertTriangle,
FolderInput,
+ Pencil,
} from 'lucide-react';
import { motion, AnimatePresence } from 'framer-motion';
import { FixedSizeGrid as Grid } from 'react-window';
@@ -286,9 +287,9 @@ function ViewOptionsDropdown({
sortCriteria,
setSortCriteria,
}) {
- const isFilterActive = filterCriteria.rating > 0 ||
- (filterCriteria.rawStatus && filterCriteria.rawStatus !== 'all') ||
- (filterCriteria.colors && filterCriteria.colors.length > 0);
+ const isFilterActive = filterCriteria.rating > 0 ||
+ (filterCriteria.rawStatus && filterCriteria.rawStatus !== 'all') ||
+ (filterCriteria.colors && filterCriteria.colors.length > 0);
return (
{
@@ -342,11 +343,11 @@ function Thumbnail({ path, data, onImageClick, onImageDoubleClick, isSelected, i
)}
-
- {(colorLabel || rating > 0) && (
+
+ {(colorLabel || rating > 0 || isEdited) && (
{colorLabel && (
-
>
)}
+ {isEdited && (
+ <>
+
+ >
+ )}
)}
@@ -384,6 +390,7 @@ const Cell = ({ columnIndex, rowIndex, style, data }) => {
className="p-2 h-full"
>
- {aiModelDownloadStatus ? `Downloading ${aiModelDownloadStatus}...`
- : (isIndexing && indexingProgress.total > 0)
- ? `Indexing images... (${indexingProgress.current}/${indexingProgress.total})`
- : (importState.status === 'importing' && importState.progress.total > 0)
- ? `Importing images... (${importState.progress.current}/${importState.progress.total})`
- : "Processing images..."
+ {aiModelDownloadStatus ? `Downloading ${aiModelDownloadStatus}...`
+ : (isIndexing && indexingProgress.total > 0)
+ ? `Indexing images... (${indexingProgress.current}/${indexingProgress.total})`
+ : (importState.status === 'importing' && importState.progress.total > 0)
+ ? `Importing images... (${importState.progress.current}/${importState.progress.total})`
+ : "Processing images..."
}
This may take a moment.
@@ -578,4 +585,4 @@ export default function MainLibrary({
)}
);
-}
\ No newline at end of file
+}