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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QLJfZQZeAKAwSqViTmLzki
This commit is contained in:
2026-10-18 17:42:54 +02:00
co-authored by Claude Opus 5.5
parent 727da51a3c
commit 5e2e354bdd
4 changed files with 26 additions and 21 deletions
+22 -17
View File
@@ -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.
+2 -2
View File
@@ -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.
@@ -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 =
+1 -1
View File
@@ -208,7 +208,7 @@
<string name="about_title">About Nils\' MG4</string>
<string name="about_version">Version %1$s</string>
<string name="about_attribution">Fork of fatihdonmezdev / FatihsMG4,\nmalys / EVABRPUploader\nand Leon Kernan / ABRP_Uploader</string>
<string name="about_repository">github.com/fatihdonmezdev/FatihsMG4</string>
<string name="about_repository">git.stinnesbeck.com/nils/mg4</string>
<string name="about_made_with_love">MG4 EH32 · SWI69</string>
<string name="about_logo_description">Nils\' MG4 logo</string>
<string name="about_qr_description">QR code for the project repository</string>