-
v2026.05.19.0 Stable
released this
2026-05-18 21:43:05 -04:00 | 648 commits to main since this release26 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-brokensetRatingpath. - 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.*;LikeButtonand the notification heart re-derived from the verbatim Lucide heart path (outline vs filled).
Migration
0031applies 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