• v2026.05.15.0 Stable

    bvandeusen released this 2026-05-15 23:16:08 -04:00 | 687 commits to main since this release

    System 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 (/healthz probe).
    • 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