docs: Phase 27 DONE (3 shipped) — odometer sync, trip ID, hotspot docs; FEAT-08 shipped, FEAT-09 wontfix

This commit is contained in:
Mathieu Moran
2026-08-12 01:16:53 -04:00
parent 22bbee3b30
commit 13cb8b4361
3 changed files with 36 additions and 26 deletions
+22 -10
View File
@@ -1945,23 +1945,35 @@ agree on OBD and GPS state. BUGS.md Open section is empty. readme.md project sta
---
### Phase 27: Feature additions — 🚧 IN PROGRESS (1 shipped, 6 candidates)
**Started 2026-08-11.** Phase 26 is complete.
### Phase 27: Feature additions — ✅ DONE (3 shipped, 4 candidates remain)
**Completed 2026-08-12.** Three features shipped; remaining 4 are low-priority ideas
tracked in FEATURES.md.
**Shipped:**
- **FEAT-03 — Manual odometer fallback** (2026-08-11): Settings page has an "Odometer
baseline (km)" field. `odometer_km = baseline + cumulative trip distance`. Dashboard
label shows "(manual)" when using baseline. Falls back to live OBD when baseline is 0.
Changed files: `modules/app_settings.py`, `modules/app_sql.py`, `templates/settings.html`,
`templates/index.html`, `static/js/settings.js`, `FEATURES.md`.
- **FEAT-03 — Manual odometer baseline** (2026-08-11): Pi settings has "Odometer baseline
(km)". Dashboard shows `odometer_km = baseline + trip distance`. Pushes to server on save
via `POST /api/device-config/push`. Portal shows read-only synced value. Server overview
stat card. Four sync bugs fixed during implementation:
1. Sync overwrote Pi odometer with stale server value (`_store_synced_config` no longer touches it).
2. JS skipped `POST /api/device-config` when enabling sync (always-send fix).
3. Backend returned error when toggling sync with locked fields present (toggle-first fix).
4. `get_device_by_id()` missing `odometer_baseline` in SQL SELECT (added column, shifted indices).
Changed: `modules/app_settings.py`, `modules/app_sql.py`, `modules/app_device_sync.py`,
`modules/app_device_config.py`, `templates/settings.html`, `static/js/settings.js`,
`server/modules/db.py`, `server/modules/device_config.py`,
`server/templates/device_settings.html`, `static/js/portal-device-settings.js`,
`server/app.py`, `FEATURES.md`.
- **FEAT-06 — Trip ID column in history** (2026-08-11): Narrow `#ID` column on server
history (`data-show-id="1"`). Checkbox + batch-delete server-only (`data-batch-delete-url`).
Changed: `static/js/history.js`, `server/templates/history.html`.
- **FEAT-07 — Phone-hotspot auto-connect docs** (2026-08-11): Already implemented in
Phase 22; documented and verified with real Pixel hardware.
**Remaining candidates:**
**Remaining candidates (4):**
1. **FEAT-01** — Parallel/concurrent chunked dashcam uploads (medium)
2. **FEAT-02** — QR / claim-code device pairing flow (medium)
3. **FEAT-04** — Replace SIM868 2G GSM with 4G LTE modem (large)
4. **FEAT-05** — DTC history synced to remote server (medium)
5. **FEAT-08** — Predictable IP on phone hotspot (small)
6. **FEAT-09** — mDNS on phone hotspot (small)
### Phase 28: Native Android companion app — 🚧 IN PROGRESS (low priority, always last)
**Renumbered from former Phase 26 on 2026-08-10 to make room for the road-test bug-fix phase.