Files
mg4/SPECS.md
T
2026-10-17 13:38:47 +02:00

3.8 KiB

SPECS — Nils' MG4

Journal for this fork of fatihdonmezdev/FatihsMG4: what has been changed, and what is still to do.

To do

  • About dialog link and QR code → https://git.stinnesbeck.com/nils/mg4. Both come from REPOSITORY_URL in app/src/main/java/com/evsuite/abrp/MainActivity.java and about_repository in app/src/main/res/values/strings.xml. They still point to Fatih's GitHub repository.
  • Re-enable OTA updates against our own releases. RELEASES_API in app/src/unstable/java/com/evsuite/abrp/OtaUpdater.java points at updates.invalid on purpose, so checks fail. The updater speaks the GitHub releases API and only allows GitHub hosts (ALLOWED_HOSTS). For git.stinnesbeck.com it needs the host on the allowlist, and the response parsing checked against that server's releases API. Release assets must be named NilsMG4-unstable-<version>.apk with a .sha256 sidecar (build-car writes both).
  • ABRP upload is gone upstream. Upstream commit ea8032a ("chore", 2026-10-09) removed the ABRP tab, the config-file import (ConfigImport), the upload (AbrpApi, TelemetryPayload, UploadCadence), SecurePrefs and HeadUnitWeather. The app now only tracks consumption and syncs it to the MongoDB API. Leftover strings.xml entries (btn_import, import_*, hint_api_key, …) belong to it. Decide whether to restore it.
  • Fix the unit tests. They don't compile upstream: AbrpApiTest, TelemetryPayloadTest and others still use AbrpApi/TelemetryPayload, which upstream commit ea8032a deleted.
  • Charging currency. Prices and costs are shown in Turkish lira (₺/kWh, ₺) in pane_charging.xml and MainActivity.java.
  • Cloud consumption sync. CONSUMPTION_INSTALLATION_ID in app/build.gradle is a fixed UUID inherited from upstream. Set our own before configuring CONSUMPTION_API_URL / CONSUMPTION_API_TOKEN, so our data cannot land under upstream's id.
  • Translate the rest. The web/ dashboard (Next.js) and docs (CHANGELOG.md, OTA.md's message table, comments in mise.toml/app/build.gradle) are still Turkish or French.
  • Docs still use the old package ID. README.md, OTA.md, CHANGELOG.md, mise.toml and docs/MG4_PLATFORM_INSTALL.md refer to com.evsuite.abrp(.unstable) and FatihsMG4-*.apk.
  • Move hardcoded UI strings into strings.xml. Many are inline in Java and layouts.

Done

  • 2026-10-17 — Translated the app UI from Turkish to English.
  • 2026-10-17 — Nix flake: nix develop provides JDK 21 and the Android SDK. build-car builds the unstable APK and signs it with the AOSP test platform key, which the MG4 head unit uses (cert SHA-256 c8a2e9bc…192ab8).
  • 2026-10-17 — OTA update checks disabled by pointing at an unresolvable host (see To do).
  • 2026-10-17 — Renamed to "Nils' MG4": package ID com.stinnesbeck.nilsmg4 (.unstable for the car build), APK names NilsMG4-*.apk. It installs next to the old FatihsMG4 app instead of replacing it, and starts with empty settings and history.
  • 2026-10-17 — Temporary on-screen diagnostics (b2a5b32) to debug blank values without adb; removed again (1002962) once values showed on the car. Revert 1002962 to bring them back.

Installing on the car

nix develop
build-car
adb push build/car/NilsMG4-unstable-<version>.apk /data/local/tmp/update.apk
adb shell "pm install -r -f -d -t /data/local/tmp/update.apk"

To remove the old upstream app: adb uninstall com.evsuite.abrp.unstable.