feat(home): Recently Played Albums gets a View-all full page

The rail's 'View all' opens a dedicated page listing the recently
played albums (the dedicated album history from the #567 fix, cap 24).
Built on the AwardAlbumsView skeleton stripped to essentials: fixed
header + windowed AlbumCollectionView wired per the new sampler
contract, scroll-restore, shared scrollbar. Works offline (local
history — the AppShell arm deliberately skips the offline gate) with
mixed-source rows routing through the existing open-album funnel
(qobuz/plex/local) and source-split artwork dispatch mirroring the
rail's. Full nav integration: NavEntry::RecentAlbums round-trips
through last_nav so view persistence restores it (a local JSON read —
cannot crash-loop), ADR-004 back button via the standard record +
navigate + flags shape. Zero new msgids — title, empty state and the
View-all link all reuse existing strings across the 8 locales.

cc
This commit is contained in:
vicrodh committed 2026-07-08 14:07:16 -06:00
1 parent addc18b219
commit d3b00b78ef
9 files changed
+353 -33

No files matched your search

+13 -1
View File
@@ -201,6 +201,18 @@ export global HomeActions {
callback toggle-playlist-tag(string);
// Clear all selected category tags (back to showing every playlist).
callback clear-playlist-tags();
// "View all" on the Recently Played Albums rail -> the full-page listing
// (RecentAlbumsView), fed from the local play-history store.
callback open-recent-albums();
}
// RecentAlbumsView — the full "Recently Played Albums" page opened from the
// Home rail's "View all". Fed from the LOCAL play-history store (capped at
// 24, see crate::recently), so it needs no paging/search state; the loader
// repopulates `albums` on every navigation.
export global RecentAlbumsState {
in property <[AlbumCardItem]> albums: [];
in property <bool> loading: false;
}
// ---------------------------------------------------------------------------
@@ -967,7 +979,7 @@ export global DragActions {
}
// Which content view the shell shows.
export enum ContentView { home, album, artist, artist-releases, settings, search, musician, label, label-releases, award, award-albums, location, favorites, mix, playlist, discover-browse, playlist-manager, offline-manager, blacklist-manager, local-library, local-album, mixtapes, collections, mixtape-detail, discography-builder, purchases, purchase-album }
export enum ContentView { home, album, artist, artist-releases, settings, search, musician, label, label-releases, award, award-albums, location, favorites, mix, playlist, discover-browse, recent-albums, playlist-manager, offline-manager, blacklist-manager, local-library, local-album, mixtapes, collections, mixtape-detail, discography-builder, purchases, purchase-album }
// In-app toast (transient notification). Mirrors Tauri's toastStore:
// a single toast at a time (a new one replaces the current), auto-hidden