-
v2026.05.15.0 Stable
released this
2026-05-15 23:16:08 -04:00 | 687 commits to main since this releaseSystem playlists v2, the offline-cache rework, and a major CI speedup.
System playlists v2 (#411)
- For-You no longer rebuilds on play; shuffle-on-play default; For-You expanded to 100 tracks; server-side per-rotation sample-history dedup so re-plays within a day vary.
- Generalized refresh affordance (kebab/Regenerate) across web + Flutter via a kind registry — generic
/api/playlists/system/{kind}/{refresh,shuffle}. - Five new mixes: Deep Cuts, Rediscover, New for you, On This Day, First Listens.
- "Refreshed …" freshness subtitle on system tiles.
- Play-event correctness: naturally-finished in-queue tracks no longer mis-recorded as skips (was degrading recommendations), plus offline play replay so mobile/cached listening actually counts.
Offline cache rework (#427)
- Reachability-based offline mode (
/healthzprobe). - Two independent cache budgets — Liked and Recently-played, 5 GB each, tunable — replacing the single cap; liked tracks are protected from rolling-cache pressure.
- Offline: system playlists gate off; an always-present Shuffle all plays the cached union; Home surfaces "Recently played" / "Liked" pools. Online, Shuffle all draws from the whole library.
CI
- Flutter dev runs drop from ~10 min to ~3 (debug APK now main-only); the runner image bakes the Android SDK so the ~7-min per-run download is gone; release/main builds materially faster.
Mobile client version 2026.5.15+6. Post-release device verification focuses on the two-bucket eviction (Settings) and the airplane-mode flows.
Downloads