From 2304e5904ed0c1a2dc6cd353a4e7a36524e99434 Mon Sep 17 00:00:00 2001 From: Dorian Date: Fri, 6 Mar 2026 15:55:40 +0000 Subject: [PATCH] fix(app): fix image fallbacks across all content grids, refactor into useContentImages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Create useContentImages composable eliminating ~240 lines of duplicated image loading/fallback logic across 6 grid components - Fix book covers: use full fetchBookImage chain (Open Library → Google Books → Wikipedia) - Fix TV series images: try disambiguated Wikipedia title first (e.g. "Chernobyl (TV series)") - Add Wikipedia image fetching for places (fetchPlaceImage) - Rewrite all SVG fallbacks to consistent text-only style (no icons) - Add generateWebsiteFallback for NewsGrid websites variant - Fix song extraction regex catching raw song_ext: prefix in titles - Fix player bar: clean song_ext: prefix from display, mute error text - Fix Code panel: auto-load projects on mount when list is empty - Improve chat bubble spacing (py-2.5) and first message top margin (pt-6) Co-Authored-By: Claude Opus 4.6 --- .../app/src/components/chat/ChatWindow.vue | 2 +- .../app/src/components/content/BookCard.vue | 4 +- .../app/src/components/content/BookGrid.vue | 57 ++----- .../app/src/components/content/FilmGrid.vue | 58 ++----- .../app/src/components/content/NewsGrid.vue | 5 +- .../app/src/components/content/PlaceCard.vue | 14 +- .../src/components/content/PlaceDetail.vue | 23 ++- .../app/src/components/content/PlaceGrid.vue | 38 ++--- .../src/components/content/PodcastGrid.vue | 55 ++----- .../src/components/content/ProjectGrid.vue | 7 +- .../app/src/components/content/SongGrid.vue | 56 ++----- .../src/components/content/TVSeriesCard.vue | 4 +- .../src/components/content/TVSeriesGrid.vue | 55 ++----- .../app/src/components/player/PlayerBar.vue | 12 +- .../app/src/composables/contentExtraction.ts | 3 +- .../app/src/composables/useContentImages.ts | 59 +++++++ .../app/src/composables/useImageFallback.ts | 152 ++++++++++-------- 17 files changed, 294 insertions(+), 310 deletions(-) create mode 100644 packages/app/src/composables/useContentImages.ts diff --git a/packages/app/src/components/chat/ChatWindow.vue b/packages/app/src/components/chat/ChatWindow.vue index 03ece060..11f76cb0 100644 --- a/packages/app/src/components/chat/ChatWindow.vue +++ b/packages/app/src/components/chat/ChatWindow.vue @@ -75,7 +75,7 @@ width: '100%', transform: `translateY(${virtualRow.start}px)`, }" - class="px-4 py-1.5" + :class="['px-4 py-2.5', virtualRow.index === 0 ? 'pt-6' : '']" > () defineEmits<{ select: [book: Book] }>() @@ -64,7 +64,7 @@ const fallbackCover = computed(() => onMounted(() => { if (props.book.coverUrl) return - fetchBookCover(props.book.title, props.book.author).then((url) => { + fetchBookImage(props.book.title, props.book.author).then((url) => { if (url) fetchedCover.value = url }) }) diff --git a/packages/app/src/components/content/BookGrid.vue b/packages/app/src/components/content/BookGrid.vue index beef0114..1388394b 100644 --- a/packages/app/src/components/content/BookGrid.vue +++ b/packages/app/src/components/content/BookGrid.vue @@ -54,19 +54,20 @@ >
-
+
-
@@ -103,10 +104,11 @@