diff --git a/frontend/apps/editor3d/app/src/components/signaled/TopBar/TaskQueue.tsx b/frontend/apps/editor3d/app/src/components/signaled/TopBar/TaskQueue.tsx
index 080ea69aae..860ff413e7 100644
--- a/frontend/apps/editor3d/app/src/components/signaled/TopBar/TaskQueue.tsx
+++ b/frontend/apps/editor3d/app/src/components/signaled/TopBar/TaskQueue.tsx
@@ -128,6 +128,11 @@ const CompletedCard = ({
{
+ console.log("Failed to load thumbnail", e);
+ // NB: Replace the broken thumbnail with a placeholder.
+ e.currentTarget.src="/resources/placeholders/placeholder.png";
+ }}
className="h-full w-full object-cover"
/>
) : (
@@ -147,7 +152,7 @@ const CompletedCard = ({
)}
{task.completedAt && (
- {task.completedAt}
+ {task.completedAt.toISOString()}
)}
diff --git a/frontend/libs/components/gallery-modal/src/lib/GalleryDraggableItem.tsx b/frontend/libs/components/gallery-modal/src/lib/GalleryDraggableItem.tsx
index 624dc125d4..e4cc3cb155 100644
--- a/frontend/libs/components/gallery-modal/src/lib/GalleryDraggableItem.tsx
+++ b/frontend/libs/components/gallery-modal/src/lib/GalleryDraggableItem.tsx
@@ -26,7 +26,7 @@ interface GalleryDraggableItemProps {
activeFilter: string;
selected: boolean;
onClick: () => void;
- onImageError: () => void;
+ onImageError: (e: React.SyntheticEvent) => void;
disableTooltipAndBadge?: boolean;
imageFit?: "cover" | "contain";
onDeleted?: (id: string) => void;
diff --git a/frontend/libs/components/gallery-modal/src/lib/gallery-modal.tsx b/frontend/libs/components/gallery-modal/src/lib/gallery-modal.tsx
index 307291ad92..71f8aa0781 100644
--- a/frontend/libs/components/gallery-modal/src/lib/gallery-modal.tsx
+++ b/frontend/libs/components/gallery-modal/src/lib/gallery-modal.tsx
@@ -637,9 +637,11 @@ export const GalleryModal = React.memo(
activeFilter={activeFilter}
selected={selectedItemIds.includes(item.id)}
onClick={() => handleItemClick(item)}
- onImageError={() =>
- handleImageError(item.thumbnail!)
- }
+ onImageError={(e) => {
+ // NB: Replace the broken thumbnail with a placeholder.
+ e.currentTarget.src = "/resources/placeholders/placeholder.png";
+ handleImageError(item.thumbnail!);
+ }}
disableTooltipAndBadge={mode === "select"}
imageFit={imageFit}
onDeleted={handleItemDeleted}