-
v2026.05.14.0 Stable
released this
2026-05-14 21:17:57 -04:00 | 715 commits to main since this releasePlayer feel, background metadata sweeper, and the first offline-resilience layer for outbound user actions.
Player
- Track-change no longer leaks the previous track's art/metadata mid-swap (
setQueueFromTracksnow sets source before broadcasting;_scheduleSwaphas a fast sync path on warm cache). - Prefetcher pre-warms cover bytes + palette for the next N tracks so the swap is instant.
- Playback stream errors auto-skip instead of stranding the UI on a broken track.
- Reverted the Wear MediaSession surface expansion (Pixel Watch 2 regressed when we advertised setRating); LikeBridge stays wired but dormant.
CacheFiller
Background sweeper that walks the drift cache for artists missing albums and albums missing tracks, fills via
/api/artists/:id+/api/albums/:id, and pre-warms covers. 10s initial, 5-min interval, 200ms throttle.Offline mutation queue
New
cached_mutationstable +MutationReplayer. Likes, hide/unhide, add-to-playlist, Lidarr request, request cancel all now persist the user's intent across network loss: optimistic local write, REST attempt, queued for replay on failure. 3s initial drain, 1-minute periodic ticker, 5-attempt drop.Fixes
- Liked tab no longer spins forever on a fresh install (
cacheFirstcold-fetch loop). - Library Artists grid: artist circles stay round at 3-column widths.
- Restored artist coverUrl on drift-cached
ArtistRef(LEFT JOIN cached_albums). - Discover system playlist no longer duplicates tracks across buckets.
Downloads
- Track-change no longer leaks the previous track's art/metadata mid-swap (