From 5e2e354bdd2a161cafbc057552b5d4ef634ede28 Mon Sep 17 00:00:00 2001 From: Nils Stinnesbeck Date: Sun, 18 Oct 2026 17:42:54 +0200 Subject: [PATCH] About dialog points to our repository; SPECS status refreshed The About dialog's link and QR code open https://git.stinnesbeck.com/nils/mg4 instead of Fatih's GitHub repository (the credits to upstream stay). SPECS.md: the Status section describes the current versions and what has and has not been tried on the car; the architecture notes list the current tabs and data paths. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01QLJfZQZeAKAwSqViTmLzki --- SPECS.md | 39 +++++++++++-------- app/build.gradle | 4 +- .../java/com/evsuite/abrp/MainActivity.java | 2 +- app/src/main/res/values/strings.xml | 2 +- 4 files changed, 26 insertions(+), 21 deletions(-) diff --git a/SPECS.md b/SPECS.md index e03021b..8185669 100644 --- a/SPECS.md +++ b/SPECS.md @@ -23,27 +23,34 @@ car ──live telemetry───▶ car.k8s.stinnesbeck.com (Go) - **Server:** `server/`, Go 1.26, API only — see `server/README.md` for endpoints, configuration and the storage layout. Replaced the Next.js app from upstream (`web/`, removed 2026-10-17). -- **Dashboards:** Grafana, provisioned from `k8s/grafana/`: Live (stats, SoC/range, power/speed, - route map, temperatures, tyres), Consumption (period totals, lifetime, SoH, per-day energy, +- **Dashboards:** Grafana, provisioned from `k8s/grafana/`, reading with a read-only token: Live + (stats, SoC/range, power/speed, route map, temperatures, tyres), Consumption (period totals, lifetime, SoH, per-day energy, distance and efficiency) and Charging (totals, session table, curves). Prices in euro. - **Pairing:** the car shows a QR code, a phone approves it with the approval password, and the car - gets its own token (RFC 8628-style; `server/README.md`). The shared `INGEST_TOKEN` still works. -- **Car app:** Server tab (URL, pairing by QR, ingest token, installation id, config import); live telemetry - every 15 s while driving or charging; consumption chunks and charging sessions as before. + gets its own token, bound to its installation id (RFC 8628-style; `server/README.md`). The + shared `INGEST_TOKEN` still works. The same QR flow carries settings typed on the phone. +- **Car app:** tabs Overview, Consumption, Charging, Live data (on/off, ABRP credentials, + frequency), Server (URL, pairing, token, installation id, config import), Settings (display, + voice key, tyre unit, accent colour, battery, charging price, Wi-Fi), Logs. Live telemetry every + 15 s while driving or charging, to the server and straight to ABRP; consumption chunks and + charging sessions to the server. - **Deployment:** `k8s/`, plain manifests. **Nothing is ever applied to the cluster by us** — Nils applies them (`k8s/README.md`). TLS comes from Traefik's default certificate. ### Status -- [x] Go server 2.0.0: tests and govulncheck clean; image builds (about 11 MB). -- [x] End-to-end in podman (server + InfluxDB 2.7.12 + Grafana 13.2.3): every endpoint, retry - idempotency, all 25 dashboard queries return data, dashboards rendered and checked. -- [x] Manifests validated offline (including Traefik CRDs). **Not applied.** -- [x] Car app 2.4.0 (pairing by QR): unit tests pass; **not yet tried on the car**. -- [x] Image `mg4-server:2.1.0` (with pairing) pushed to git.stinnesbeck.com (public; pinned by - digest `sha256:e5f6e2d2…` in `k8s/server.yaml`). +Current: app 2.14.2, server 2.5.0 (pinned by digest in `k8s/server.yaml`). + +- [x] On the car: QR pairing, values on the Overview, voice-key double press, full screen + without black bands. +- [x] Go server: tests and govulncheck clean; end to end in podman against InfluxDB 2.7.12 + (telemetry, consumption, charging, pairing, settings from the phone) and Grafana 13.2.3 (all + dashboard queries return data). +- [x] Manifests validated offline (kubeconform, with Traefik CRDs). **Applied by Nils only.** - [ ] Check Grafana's host in `k8s/ingress.yaml` (placeholder `car-grafana.k8s.stinnesbeck.com`). -- [ ] First pairing and drive with 2.4.0: telemetry arrives in InfluxDB, Grafana and ABRP. +- [ ] Not yet tried on the car: live data straight to ABRP (2.11), Enter on phone (2.12), accent + colours and the car-colour probe on the Logs tab (2.14; a photo of its list decides whether + the accent can follow the paint automatically), right-aligned values (2.14.1). ### Signals the car does not provide @@ -63,10 +70,6 @@ tyre pressures, GPS (lat, lon, elevation, heading) and the is_* flags. It does * ## 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 @@ -113,6 +116,8 @@ tyre pressures, GPS (lat, lon, elevation, heading) and the is_* flags. It does * INGEST_TOKEN) into git and pushed it. Commit amended and force-pushed; both values regenerated in the now gitignored `k8s/secrets.yaml` (since moved to `k8s/secrets/secrets.yaml`, outside `kubectl apply -f k8s/`). Filled-in secrets live only there from now on. +- 2026-10-18 — About dialog: link and QR code point to https://git.stinnesbeck.com/nils/mg4 + (were Fatih's GitHub). Status section brought up to date. - 2026-10-18 — App 2.14.2: "Range, 5-min average", like the usage and power cards (was "Range at 5-min average"). - 2026-10-18 — App 2.14.1: Overview values and their notes right-aligned, with tabular (equal-width) digits, so 9 → 10 → 100 no longer shifts the text; labels stay left. diff --git a/app/build.gradle b/app/build.gradle index da384c1..e9e9959 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -34,8 +34,8 @@ android { applicationId "com.stinnesbeck.nilsmg4" minSdk 27 targetSdk 36 - versionCode 80 - versionName "2.14.2" + versionCode 81 + versionName "2.14.3" // Nothing about the server ships in the APK: its URL and ingest token are entered in // the app's Server tab (ServerConfig), and the database is only reachable by the server. diff --git a/app/src/main/java/com/evsuite/abrp/MainActivity.java b/app/src/main/java/com/evsuite/abrp/MainActivity.java index d86d2ce..2e21606 100644 --- a/app/src/main/java/com/evsuite/abrp/MainActivity.java +++ b/app/src/main/java/com/evsuite/abrp/MainActivity.java @@ -37,7 +37,7 @@ public class MainActivity extends AppCompatActivity { /** Shared with {@link AbrpUploadService}, which reads it on every tick. */ static final String WIFI_AUTO_KEY = "wifi_auto_connect"; - private static final String REPOSITORY_URL = "https://github.com/fatihdonmezdev/FatihsMG4"; + private static final String REPOSITORY_URL = "https://git.stinnesbeck.com/nils/mg4"; /** Navigation destinations in page order. Parallel to {@link #panes}. */ private static final int[] TAB_IDS = diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ab25183..dfeaeef 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -208,7 +208,7 @@ About Nils\' MG4 Version %1$s Fork of fatihdonmezdev / FatihsMG4,\nmalys / EVABRPUploader\nand Leon Kernan / ABRP_Uploader - github.com/fatihdonmezdev/FatihsMG4 + git.stinnesbeck.com/nils/mg4 MG4 EH32 · SWI69 Nils\' MG4 logo QR code for the project repository