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:
@@ -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
@@ -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 =
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user