Release v2026.05.14.0 — player polish, CacheFiller, offline mutation queue #47
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?
Highlights
Player track-change feel
setQueueFromTracksnow sets the audio source before broadcasting queue/mediaItem, so AudioService stops emitting the previous track's metadata mid-swap (fb95a46).flutter_cache_managerand the palette extractor;_scheduleSwaptakes a fast sync path when the warm cache hits.CacheFiller (
60085b1)cached_artists/cached_albumsfor missing relations and fills them via/api/artists/:id+/api/albums/:id. 10s initial delay, 5-minute interval, 200ms throttle between requests. Pre-warms covers for newly discovered albums.Offline mutation queue (
335940c+ wiring)cached_mutationsdrift table +MutationQueue.enqueue+MutationReplayer(3s initial drain, 1min periodic, 5-attempt drop). Likes / quarantine / add-to-playlist / Lidarr request+cancel now write their optimistic local state to drift first, attempt the REST call, and queue on failure — so the user's intent persists across network loss instead of getting rolled back.cacheFirst hang fix (
5511f87)coldFetchAttemptedflag + yield-after-fetch so populates that write to the watched table but produce no rows for the filter (Liked tab on a fresh install) don't spin forever waiting for a re-fetch that would never reveal new data.Test fixes
CacheFiller/MutationReplayerdispose (d27dd69).connectivityProviderlistener inMutationReplayer.start(); the 3s initial + 1min ticker + post-enqueue nudge cover reconnect (f6ee837).cacheFirststream Future before feeding controller in tests (67bacac).Test plan
🤖 Generated with Claude Code