release v2026.05.11.1: Flutter caching, navigation, and player polish #39
Reference in New Issue
Block a user
Delete Branch "dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Follow-up release after v2026.05.11.0. Flutter-only changes.
Caching/loading strategy (SWR + hydration + skeleton): cacheFirst providers now alwaysRefresh so cache hits silently update; inline album/playlist providers gained the same SWR guard; detail screens accept a seed AlbumRef/ArtistRef from navigation so the header renders before the network returns; cold-start home shows a layout skeleton instead of a 30s blank spinner.
Library: Artists tab was 404ing because the client hit /api/library/artists; the server mounts it at /api/artists. Albums tab switched to the responsive 3-up grid that was built for artist detail (LayoutBuilder + sized AlbumCard, no wide-aspect empty space).
System playlists: tapping one landed on an empty playlist because playlistsListProvider wrote rows but not tracks, and playlistDetailProvider only cold-fetched on missing row. Now refetches when row exists but tracks are empty, mirrors the album fix. Also wipes + re-inserts playlist tracks per fetch so server-side deletions propagate; writes referenced artist/album rows so joined columns populate.
Player: didn't update on track change — audio_handler's currentIndexStream listener only kicked the cover load, never pushed the new MediaItem onto the stream. Now it does. Player kebab "Go to artist" 404'd because audio_handler's _toMediaItem didn't stash artist_id in extras (only album_id) — fixed. Added "Start radio" menu item wrapping the existing /api/radio endpoint. Title in full player re-centered via Stack.
Update banner: pubspec version-comparison rewrite, CI builds tagged APKs with --build-name="${TAG#v}" so PackageInfo matches the server's reported version.
Test plan: