CarDash 1.2.0 adds an optional, fully in-app Jellyfin music source. - **Package:** `com.wasp.cardash_launcher` - **Version:** 1.2.0 (versionCode 20) - **ABIs:** arm64-v8a, armeabi-v7a, x86_64 (universal APK) - **Signing:** project debug key matching all prior releases - **SHA-256:** `cd8e7de1225dc9caa04d7caffe0d254db79f1bb0af872d5437f90adeab784acf` **Jellyfin** - New optional **Jellyfin** Home button after Music and before Radio. It is enabled in Settings → General → Home buttons and stays disabled/off until the integration is configured. It counts toward the 16-button cap and has no long-press action. - Jellyfin dashboard with **Albums / Artists** (Artists disabled for now): - **Recently played** derived from played tracks across Jellyfin devices, - **Recently added** albums, - **Random** albums from up to five grouped genre families (Metal, Rock, Jazz, Pop, Folk and so on; Cyrillic and variant tags are grouped), with a refresh button and an automatic re-roll after you start a Random album. - **Six cards per row when they fit, five otherwise.** Album names and artists are aligned to the album art's left edge. - Album page: top-aligned large cover, track list with the current track highlighted, tap-to-play, previous/play-pause/next, and the volume/mute controls. - Home **Jellyfin** tile subtitle shows **Artist — Album**, clipped to the rounded button width so long titles cannot break the shortcut grid. - Music and Jellyfin equalizers are exclusive: Jellyfin animates its own tile while it plays; the Music tile only animates for another app. **Playback** - Media3 1.11.1 playback inside CarDash, not a hand-off to the Jellyfin app. - Background playback through a `mediaPlayback` foreground service. - Media notification (Android 13+ requires the optional **Allow** row in Settings → Jellyfin; playback works without it). - Hardware/Bluetooth media keys, play/pause from the Home ring and album page. - Audio focus: pauses and keeps its position when another app takes over; resumes after a short transient interruption only if it was playing; stops at the end of the album. - Reports start/progress/stop to Jellyfin so the server sees CarDash as the player and recently played updates. **Compatibility** - Android 10+ (minSdk 29), landscape tablet-first. - Jellyfin 12.x; verified against Jellyfin 12.2. Quick Connect is the only sign-in path. The access token is stored in Keystore-backed storage and never placed in a URL or log. **Verified** - 134 Dart unit/widget tests (`flutter analyze` clean). - Android 14 emulator at 1280×800 and 1024×600: Quick Connect, grouped genres, 6/5-card dashboard, album page, track tap, previous/next, background playback, notification actions, hardware media keys, exclusive equalizers, audio-focus handover with Chrome, Random re-shuffle, Home title/progress and the clipped tile subtitle. - Jellyfin 12.2 real server and a local 12.2 container. Testing against the real account marked a few played tracks/albums, which is expected Jellyfin playback-reporting behavior. **Not in 1.2.0** - Artists tab/artist browsing, offline library/downloads, data-aware streaming quality and queue persistence across process death. See `docs/JELLYFIN_1.2.0_PLAN.md` for the future work list. **[Download cardash-android-1.2.0.apk](https://git.krasi.net/kkazakov/car-interface-android/raw/main/releases/cardash-android-1.2.0.apk)** Devices with the in-app updater can use Settings → Updates to download this APK and open Android's package installer. Android requires install confirmation and a one-time unknown-apps allowance; no silent install is attempted. A yellow dot appears on the Settings gear when this release is available. This build is debug-signed for sideloading/testing, not Play Store distribution. Gogs release attachments are limited to 32 MB, so the 59 MB universal APK is linked directly from the repository.