-
v2026.05.10.0 Stable
released this
2026-05-10 21:10:04 -04:00 | 864 commits to main since this releaseFirst test release of the M5–M7 sweep + offline cache + in-app updates + DRY pass batch.
See PR #35 for the full change list. Headline themes:
- Flutter offline mode (#357) — drift-backed metadata cache + LockCachingAudioSource + delta sync. Includes a wire-format fix that makes offline browse actually work end-to-end (prior images had broken sync JSON keys).
- Flutter parity (#356) — search, discover, queue, library 5-tab, settings, playlists, admin, history, requests view + cancel. systemVariant column closes the v1 limitation in plan C.
- In-app update flow (#397) — first release with the bundled-APK update channel. Server endpoints
/api/client/version+/api/client/apk(auth-gated, rate-limited). Flutter banner + AndroidPackageInstallerintent. CI bundles the matching APK into this image at/app/client/. - Web mobile responsive (#358) — hamburger nav, 2-row PlayerBar at <md, RowActionsMenu for admin tables.
- Web stream resilience — preload=auto, stall recovery, next-track prefetch with audioLoader seam (Tauri-ready).
- Web DRY pass (#375) — test-utils helpers, playlists.ts → api.* migration, auth↔player cycle inversion, CardActionCluster.
Test focus
- Offline browse — first sync after upgrade fully populates drift; library/artist/album surfaces should show real names instead of empty rows.
- In-app update — existing client should detect this release on next 24h poll → banner appears → install via system dialog.
- add-to-playlist sheet — system playlists (For You / Discover) should be hidden.
- Mobile responsive — walk through at 375 / 414 / 768 px.
- Stream resilience — toggle airplane mode briefly during playback; auto-retry should kick in.
Downloads