• v2026.05.19.0 Stable

    bvandeusen released this 2026-05-18 21:43:05 -04:00 | 648 commits to main since this release

    26 commits since v2026.05.18.0. Mobile client 2026.5.19+10. CI green.

    Headline: the Flutter media/playback experience now behaves like a real media app, and the whole app moved to the Lucide icon set.

    MediaSession / playback (Flutter):

    • Fixed the mini-player / watch ~30s stale-track race (logical-index base — same audio_service stream the Pixel Watch mirrors, so track-change staleness on the watch improves too).
    • Audio focus, interruptions & becoming-noisy via audio_session — pause for phone calls, duck for navigation prompts, pause on earbud unplug / Bluetooth drop instead of blasting the speaker.
    • MediaSession terminal-state teardown — the watch tile / notification now close when playback sits idle 5 min or the app is dismissed while paused (previously lingered forever on a stale track).
    • Resume-last-session on relaunch, plus resume on a media-button press when the session was fully torn down.
    • Periodic PlaybackState refresh so the lock-screen / Wear / Android Auto scrubber advances smoothly; notification progress bar.
    • Notification favorite (heart) via MediaControl.custom + customAction — not the upstream-broken setRating path.
    • AudioServiceConfig art downscale + preload for external surfaces.
    • Playback errors surfaced via a debounced/coalesced SnackBar instead of a silent skip.

    Lidarr (backend):

    • Durable approve — a Lidarr-down approve no longer 503s / stays pending; the reconciler idempotently retries the add until it lands (migration 0031, additive). No failed-state by design: Lidarr keeps trying, operator monitors.
    • Idempotent Create() — a re-request for an in-flight MBID returns the existing row instead of duplicating.

    Design system:

    • Full Lucide migration: 30 files swept Material Icons.*LucideIcons.*; LikeButton and the notification heart re-derived from the verbatim Lucide heart path (outline vs filled).

    Migration 0031 applies automatically on startup.

    ⚠️ This batch shipped CI-green but, per an explicit decision, without on-device verification. After installing this release APK, smoke-check on the phone + Pixel Watch: icons render correctly app-wide; mini-player/playlist marker update instantly; call/earbud interruptions; watch tile teardown + media-button resume; the notification favorite. Hotfix-release anything off.

    Deferred (tracked, not in this release): #399 — add libsqlite3 to the flutter-ci runner image to re-enable the skipped drift tests.

    Downloads