• v2026.05.10.0 Stable

    bvandeusen released this 2026-05-10 21:10:04 -04:00 | 864 commits to main since this release

    First 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 + Android PackageInstaller intent. 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

    1. Offline browse — first sync after upgrade fully populates drift; library/artist/album surfaces should show real names instead of empty rows.
    2. In-app update — existing client should detect this release on next 24h poll → banner appears → install via system dialog.
    3. add-to-playlist sheet — system playlists (For You / Discover) should be hidden.
    4. Mobile responsive — walk through at 375 / 414 / 768 px.
    5. Stream resilience — toggle airplane mode briefly during playback; auto-retry should kick in.
    Downloads