From c10262530620624965809979bb97fece058e0427 Mon Sep 17 00:00:00 2001 From: TCFDONMEZ Date: Fri, 25 Sep 2026 14:03:18 +0300 Subject: [PATCH] chore: release 2.2.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2.2.3 was published with the broken installer, so it is recorded as released rather than rewritten, and 2.2.4 is the build that can actually install itself. 2.2.4 must be sideloaded once — the fix cannot deliver itself over the path it fixes. OTA should carry 2.2.5 onward. Co-Authored-By: Claude Opus 5 (1M context) --- CHANGELOG.md | 30 ++++++++++++++++++++++++++++++ app/build.gradle | 4 ++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ff0d94..f7943ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,36 @@ All notable changes to this project are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.2.4] - 2026-09-25 + +### Fixed + +- OTA installs now go through the platform `PackageInstaller` instead of shelling out to + `pm install -r`. The old path handed the package manager service a file inside the app's + private cache, which it cannot read from its own process, and every such failure was + reported as `Kurulum reddedildi (imza uyuşmuyor?)` — a signature verdict on a correctly + signed build. A session streams the archive from this process, so no second process has + to reach our cache. Approach taken from merthankaraman/DriveHub_Dort, which solved the + same problem on the same head unit. +- The four ways an install can be refused no longer share one message. The certificate + check, an unparseable or wrong-package archive, and a failed session each say so, and the + package manager's own `INSTALL_FAILED_*` text is surfaced verbatim rather than guessed at. +- The archive's package name is checked against ours. The platform key signs every app on + the unit, so a certificate match alone never meant the APK was this app. + +## [2.2.3] - 2026-09-23 + +### Added + +- Opt-in SWI69 Comfort window closing adapted from WinClose, independent of ABRP. + Door opening while in P at readable 0 km/h closes all four windows with a bounded + five-second pulse; STOP is attempted on completion, cancellation and failure. + No driving timer, speed threshold, delay or per-window settings. A wake lock is held + across the pulse, and WinClose's 60-second cooldown suppresses a second close when the + door is reopened. The state a fresh listener registration replays seeds the door edge + detector instead of triggering it. The service stops itself on a non-SWI69 generation + or without system uid. Not tested on a car. + ## [2.2.2] - 2026-09-17 ### Changed diff --git a/app/build.gradle b/app/build.gradle index 43b482d..d96942f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -34,8 +34,8 @@ android { applicationId "com.evsuite.abrp" minSdk 27 targetSdk 36 - versionCode 19 - versionName "2.2.2" + versionCode 21 + versionName "2.2.4" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" }