From e9c7e4672c031cb85a473dad64049a177be520ca Mon Sep 17 00:00:00 2001
From: vicrodh <103399283+vicrodh@users.noreply.github.com>
Date: Sun, 25 Jan 2026 23:47:33 -0600
Subject: [PATCH] Add release date display to AlbumCard overlay
- Add releaseDate prop to AlbumCard component
- Display release date below genre in overlay (format: "Jan 25, 2026")
- Update all AlbumCard usages across views to pass releaseDate:
- ArtistDetailView (all album sections)
- HomeView (all featured album sections)
- SearchView (search results)
- FavoritesView (favorite albums)
- LabelView (label albums)
- AlbumDetailView ("By the same artist" section)
- Add releaseDate to types and adapters
- Skip local library view (VirtualizedAlbumList)
---
src/lib/adapters/qobuzAdapters.ts | 1 +
src/lib/components/AlbumCard.svelte | 39 ++++++++++++++++++-
.../components/views/AlbumDetailView.svelte | 2 +
.../components/views/ArtistDetailView.svelte | 6 +++
src/lib/components/views/FavoritesView.svelte | 2 +
src/lib/components/views/HomeView.svelte | 11 +++++-
src/lib/components/views/LabelView.svelte | 1 +
src/lib/components/views/SearchView.svelte | 3 ++
src/lib/types/index.ts | 6 +++
src/routes/+page.svelte | 8 ++--
10 files changed, 73 insertions(+), 6 deletions(-)
diff --git a/src/lib/adapters/qobuzAdapters.ts b/src/lib/adapters/qobuzAdapters.ts
index ffa8efdcb..444803b70 100644
--- a/src/lib/adapters/qobuzAdapters.ts
+++ b/src/lib/adapters/qobuzAdapters.ts
@@ -260,6 +260,7 @@ function toArtistAlbumSummary(album: QobuzAlbum): ArtistAlbumSummary {
title: album.title,
artwork,
year: album.release_date_original?.split('-')[0],
+ releaseDate: album.release_date_original,
quality,
genre: album.genre?.name || "Unknown genre"
};
diff --git a/src/lib/components/AlbumCard.svelte b/src/lib/components/AlbumCard.svelte
index be1005ac6..c52baa308 100644
--- a/src/lib/components/AlbumCard.svelte
+++ b/src/lib/components/AlbumCard.svelte
@@ -15,6 +15,7 @@
title: string;
artist: string;
genre: string;
+ releaseDate?: string;
quality?: string;
size?: 'standard' | 'large';
searchId?: string;
@@ -40,6 +41,7 @@
title,
artist,
genre,
+ releaseDate,
quality,
size = 'standard',
searchId,
@@ -90,6 +92,19 @@
imageError = true;
}
+ function formatReleaseDate(dateStr: string | undefined): string {
+ if (!dateStr) return '';
+ const date = new Date(dateStr);
+ if (isNaN(date.getTime())) return '';
+ return date.toLocaleDateString('en-US', {
+ month: 'short',
+ day: 'numeric',
+ year: 'numeric'
+ });
+ }
+
+ const formattedDate = $derived(formatReleaseDate(releaseDate));
+
async function handleToggleFavorite(event: MouseEvent) {
event.stopPropagation();
if (!albumId || !favoriteAvailable) return;
@@ -184,7 +199,12 @@
{#if hasOverlay}
-
{genre}
+
+ {genre}
+ {#if formattedDate}
+ {formattedDate}
+ {/if}
+
{#if showFavoriteButton}