Phát hành

  • CarDash 1.2.9

    kkazakov 10 giờ trước cách đây | 0 commit đến main đến phiên bản này

    CarDash 1.2.9

    Fuel economy is back

    1.2.7 moved the rolling economy to the ECU's engine-fuel-rate PID (5E), but the one-shot supported-PID query added in that release could race the ATSP0 protocol search on a slow adapter and shift every later ELM327 response by one command. The result was a permanent — on the OBD card.

    1.2.9 fixes the serial stream:

    • warms the adapter with a 0100 request after ATSP0, with a longer timeout;
    • drains stale input before every command so a late response cannot be read as the next PID's answer;
    • removes the 0140 supported-PID query and probes 5E in the poll loop instead, retrying every 30 cycles while it is unsupported.

    The ECU fuel-rate economy itself is unchanged: vehicles that report 5E use it and match the car's trip computer; vehicles without it keep the MAF fallback.

    The release also includes the 1.2.8 Jellyfin album navigation work: the favorite heart moves to the left corner at 69 px, three separate 60 px volume buttons sit on the right, the cover is 30% smaller with taller track rows, every page has a larger back button, and both Jellyfin pages get a transparent top-right time / speed / temperature / Home strip.

    Install

    Download cardash-android-1.2.9.apk from the release page or the repository:

    https://git.krasi.net/kkazakov/car-interface-android/raw/main/releases/cardash-android-1.2.9.apk

    SHA-256: 3cf73d295ebe077a94c83d1aee6a7c1b4332e9eefa3048aa76c729aa7c3c9ad5

    The build is signed with the same project key as previous releases, so it installs over 1.2.8. Android still asks you to confirm the install.

     
  • CarDash 1.2.8

    kkazakov 10 giờ trước cách đây | 1 commit đến main đến phiên bản này

    CarDash 1.2.8

    A cleaner Jellyfin album page

    The album page now puts every control where the driver expects it and adds a persistent status strip to the Jellyfin pages.

    • The favorite heart moved into the left corner of the navigation card and is 50% larger (69 px).
    • Volume down, Mute/Unmute and Volume up moved to the right corner as three separate 60 px buttons; the surrounding volume card is gone.
    • The album cover is 30% smaller (21% of the body width, 140–252 px), leaving more room for the track list.
    • Track rows are taller and easier to tap.
    • The back button is 80% larger (83 px) on every page, including Settings, All apps and the PIN setup screen.
    • Both Jellyfin pages show a transparent top-right strip with the time, current speed, current temperature and a Home button that returns to the CarDash home screen.

    Includes the 1.2.7 ECU fuel-rate economy and all earlier work. No settings change or migration is required.

    Install

    Download cardash-android-1.2.8.apk from the release page or the repository:

    https://git.krasi.net/kkazakov/car-interface-android/raw/main/releases/cardash-android-1.2.8.apk

    SHA-256: 6cd5f4385edfceddc04790a0ad200fc99a19bb78eac7b995ef50fbcbf18cb5bc

    The build is signed with the same project key as previous releases, so it installs over 1.2.7. Android still asks you to confirm the install.

     
  • CarDash 1.2.7

    kkazakov 4 ngày trước cách đây | 6 commit đến main đến phiên bản này

    CarDash 1.2.7

    Fuel economy follows the car

    The rolling 5 km economy now prefers the ECU's engine-fuel-rate PID (5E) instead of always estimating fuel from MAF and a petrol stoichiometric ratio. That is the same injection data the car's trip computer uses, and it works for diesel engines — which run lean and were the reason the MAF estimate read much higher than the dash.

    • If the vehicle reports 5E, its fuel rate drives the economy figure.
    • If it does not, CarDash keeps the MAF/AFR fallback for petrol cars and shows the same estimate as before.
    • The native worker checks the supported-PID bitmap first, so a vehicle without 5E does not pay an extra timeout on every poll.
    • Speed, fuel rate and MAF are sampled next to each other to reduce transient pairing error.

    No settings change and no migration are required.

    Install

    Download cardash-android-1.2.7.apk from the release page or the repository:

    https://git.krasi.net/kkazakov/car-interface-android/raw/main/releases/cardash-android-1.2.7.apk

    SHA-256: 2bd589f7fb503c46e56ddcc872454d76ac1f3a64f7e5d5c8841b23efaa8e50c7

    The build is signed with the same project key as previous releases, so it installs over 1.2.6. Android still asks you to confirm the install.

     
  • CarDash 1.2.6

    kkazakov 4 ngày trước cách đây | 7 commit đến main đến phiên bản này

    CarDash 1.2.6 makes the Jellyfin album page use the stacked layout on every screen.

    • Package: com.wasp.cardash_launcher
    • Version: 1.2.6 (versionCode 26)
    • ABIs: arm64-v8a, armeabi-v7a, x86_64 (universal APK)
    • Signing: project debug key matching all prior releases
    • SHA-256: d664e9dff1ba499df93e03c0a44fe274b78ac438c665471a781c698c8650100f

    What changed

    • The album page now uses the same stacked layout as the smaller tablet at every resolution: cover and controls on top, track list below. The wide three-column layout has been removed.
    • The cover scales with the screen (30% of the body, clamped to 200–360 px), so a 1280-wide dashboard gets a larger cover instead of a small centre column.
    • The progress/transport card remains bottom-aligned with the cover; the track list gets the full width underneath.
    • The album heading now shows the Jellyfin release year in parentheses, for example Ascension (2025); a year already present in the name is not duplicated.
    • Includes the 1.2.5 larger 80/62 px transport buttons and 40 px compact volume controls, the 1.2.4 album controls and all earlier Jellyfin, volume and recents work.

    Verified

    • flutter analyze, formatting and the full 150-test suite.
    • Widget tests assert the track list is below the cover at 1280×800 and 1024×600 and that the progress card stays bottom-aligned with the cover.
    • Universal release APK built with JDK 21.

    Download cardash-android-1.2.6.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 universal APK is linked directly from the repository.

     
  • CarDash 1.2.5

    kkazakov 4 ngày trước cách đây | 10 commit đến main đến phiên bản này

    CarDash 1.2.5 polishes the Jellyfin album controls.

    • Package: com.wasp.cardash_launcher
    • Version: 1.2.5 (versionCode 25)
    • ABIs: arm64-v8a, armeabi-v7a, x86_64 (universal APK)
    • Signing: project debug key matching all prior releases
    • SHA-256: 47ba0960bf9bf16122f482f65941f27f166283d8aeeb0eb6ae718216aaf0dad5

    What changed

    • The progress/transport card is now bottom-aligned with the album cover in both the wide three-column layout and the narrower two-column layout.
    • Previous and next grow from 54 to 62 px; play/pause grows from 68 to 80 px. The compact volume −/+ and Mute/Unmute pill grow from 36 to 40 px, so all controls are easier to hit in a moving car.
    • Includes all 1.2.4 work: the seekable song-progress slider with elapsed/total time, the centered transport row and the compact volume card. The Home card is unchanged.
    • Includes the 1.2.3 normal-app/recents and Jellyfin progress-duration work, and all 1.2.2 FYT/Syu volume, Favorites and streaming-quality work.

    Verified

    • flutter analyze, formatting and the full 150-test suite.
    • A widget test asserts the progress card's bottom edge matches the album cover's bottom edge at 1280×800 and 1024×600, and covers the slider seek and transport.
    • Universal release APK built with JDK 21.

    Download cardash-android-1.2.5.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 universal APK is linked directly from the repository.

     
  • CarDash 1.2.4

    kkazakov 4 ngày trước cách đây | 11 commit đến main đến phiên bản này

    CarDash 1.2.4 redesigns the Jellyfin album controls.

    • Package: com.wasp.cardash_launcher
    • Version: 1.2.4 (versionCode 24)
    • ABIs: arm64-v8a, armeabi-v7a, x86_64 (universal APK)
    • Signing: project debug key matching all prior releases
    • SHA-256: 7a157490ae5c312edd87cac448d1fc7f2ceb01a57a9cce36f3bc4fe25fcfeafb

    What changed

    • The Jellyfin album page now has one seekable song-progress slider with elapsed / total time. Dragging the slider and releasing it seeks to that position.
    • Previous, play/pause and next are below the slider, centered and larger for easy tapping.
    • A compact volume card with −, Mute / Unmute and + sits to the right of the now-playing block, above the progress/transport card. The old combined ring, transport and volume card is no longer used on the album page; Home keeps it.
    • Includes the 1.2.3 normal-app/recents work and the Jellyfin progress-duration fallback, plus all 1.2.2 FYT/Syu volume, Favorites and streaming-quality work.

    Verified

    • flutter analyze, formatting and the full 150-test suite.
    • Universal release APK built with JDK 21.
    • The optional emulator install was skipped because the remote ADB server was unreachable. The album slider seek, transport controls and compact volume card are covered by the widget tests.

    Download cardash-android-1.2.4.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 universal APK is linked directly from the repository.

     
  • CarDash 1.2.3 — normal-app recents

    kkazakov 5 ngày trước cách đây | 12 commit đến main đến phiên bản này

    CarDash 1.2.3 makes the launcher usable as a normal app as well as a HOME app.

    • Package: com.wasp.cardash_launcher
    • Version: 1.2.3 (versionCode 23)
    • ABIs: arm64-v8a, armeabi-v7a, x86_64 (universal APK)
    • Signing: project debug key matching all prior releases
    • SHA-256: 72c9c1dca0c852104e9531b7cb532cf478ce121df83da4431669e20874d2837b

    What changed

    • Removed android:excludeFromRecents="true", so CarDash appears in the recents/overview list and can be switched back to when it is running without the HOME role.
    • Added android:resumeWhilePausing="true" so the Home transition does not have to wait for the previous app to finish pausing.
    • Added android:alwaysRetainTaskState="true" so the system keeps the launcher task instead of resetting it after a long time away.
    • Includes all 1.2.2 work: the FYT/Syu MCU master-volume bridge, the volume settle/unconfirmed behaviour, the Jellyfin Favorites tab and playing-album shortcut, and the Jellyfin streaming-quality setting.

    What this does not do Android can still kill a background app. CarDash deliberately adds no keep-alive foreground service, persistent flag or battery-exemption request. On vendor firmware, set CarDash to No battery restrictions and allow autostart/recents locking if the system keeps killing it. A recents entry does not keep the process alive by itself.

    When CarDash holds the HOME role, Android may still filter the home task out of recents; use Home to return. The recents entry is primarily for normal-app mode.

    Verified

    • flutter analyze, formatting and the full 149-test suite.
    • Universal release APK builds and its manifest was checked: MainActivity has no excludeFromRecents, and resumeWhilePausing/alwaysRetainTaskState are present.
    • No Android emulator is installed in this workspace, so the on-device recents behaviour could not be exercised here. Android may still omit the home task from recents when CarDash holds the HOME role; normal-app mode is the case this release targets.

    Download cardash-android-1.2.3.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 universal APK is linked directly from the repository.

     
  • CarDash 1.2.2

    kkazakov 5 ngày trước cách đây | 14 commit đến main đến phiên bản này

    CarDash 1.2.2 fixes the car volume on FYT/Syu head units and stops the volume card from jumping back to 100%.

    • Package: com.wasp.cardash_launcher
    • Version: 1.2.2 (versionCode 22)
    • ABIs: arm64-v8a, armeabi-v7a, x86_64 (universal APK)
    • Signing: project debug key matching all prior releases
    • SHA-256: fed6d1818cfd28b19c0e568652ad14f44ce4bf15291a635f73fd97efe1ef5a35

    The bug On FYT/Syu-based head units (Joying, Junsun, Teyes, Atoto and similar Chinese firmware) the amplifier belongs to the MCU. Android's media-stream volume is not what the driver hears, so setStreamVolume was accepted and ignored. The card then trusted the old read-back and snapped straight back to 100%, which made the car's real steps (10, 20, …) impossible to reach from the dashboard.

    The fix

    • CarDash binds the car's own com.syu.ms toolkit/sound module and sets the same master volume the car's OSD uses (0–36, MCU command C_VOL). It subscribes to the MCU level, so the dashboard and the car's knob now follow each other.
    • If the car reports an old level after a write, the card keeps the requested value and marks it with ? instead of snapping back.
    • Units without the Syu service keep the Android path, now with an extra FLAG_SHOW_UI write that can reach vendor volume panels.
    • Volume diagnostics show the raw level/max, minimum, fixed flag, control source (syu, syu-wait, system) and vendor state. Long-press Media volume.
    • No new permission, root or manifest change. The car's own knob and steering-wheel handling is untouched.

    Also in 1.2.2

    • Jellyfin Favorites tab, album-page heart and the playing-album Home shortcut.
    • Jellyfin Streaming quality setting: Direct or 320/256/192/128 kbps MP3.

    Verified

    • 149 tests pass; flutter analyze clean; debug and release APKs build.
    • The MCU volume path still needs the real-car test. After installing, long-press Media volume: source syu + vendor ready means the bridge is active. source system + vendor unavailable means this is not a Syu unit.

    Download cardash-android-1.2.2.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.

     
  • CarDash 1.2.1 — Jellyfin equalizer fix

    kkazakov 5 ngày trước cách đây | 18 commit đến main đến phiên bản này

    CarDash 1.2.1 fixes a brief Music-tile equalizer flash when Jellyfin playback is paused or stopped from the Home card.

    • Package: com.wasp.cardash_launcher
    • Version: 1.2.1 (versionCode 21)
    • ABIs: arm64-v8a, armeabi-v7a, x86_64 (universal APK)
    • Signing: project debug key matching all prior releases
    • SHA-256: 8fc6de444c2811dfe8269b21a7ad7b1f927cdde6b97d4f2f9fadd7cf0ea9b97e

    The bug

    • Pausing Jellyfin updated the Jellyfin controller immediately, but the Android MediaSession snapshot could still report CarDash's own session as playing for one system poll (~900 ms).
    • The Music tile briefly took that stale snapshot as “another app is playing” and animated its equalizer for part of a second.

    The fix

    • The Music equalizer now only animates for an external system media session; CarDash's own Jellyfin package is excluded.
    • The Home volume/playback card also ignores the stale CarDash session, so it stays on the paused Jellyfin queue instead of switching to the system source during that gap.
    • No visual or behavior changes to Jellyfin playback itself.

    Verified

    • 139 tests pass, including unit coverage for the stale CarDash session and the external-app case.
    • Android 14 emulator: play a Jellyfin album, pause from Home; the Jellyfin tile stops immediately, the Music tile stays quiet, and the Home card remains on the paused Jellyfin track.
    • All 1.2.0 Jellyfin features are included: Home button, dashboard, grouped genres, album page, Media3/background playback, notification, audio focus and playback reporting.

    Download cardash-android-1.2.1.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.

     
  • CarDash 1.2.0 — Jellyfin

    kkazakov 5 ngày trước cách đây | 22 commit đến main đến phiên bản này

    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

    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.