diff --git a/BUGS.md b/BUGS.md index 9518c37..2b7a54b 100644 --- a/BUGS.md +++ b/BUGS.md @@ -8,20 +8,6 @@ When CLOSED, move the entire entry to Resolved — don't duplicate. ## Open bugs -### BUG-01 — WiFi/hotspot unreachable from phone while cell data is on -- **Status**: `IN PROGRESS` (AP tested, phone-hotspot uplink awaits test) -- **Fix applied**: Dual-radio — wlan0="yaris 911" at 10.42.0.1 (password "yaris911!"), - wlan1=uplink. AP verified: iOS + Android connect, `yaris.local` resolves. -- **Test steps for phone-hotspot uplink**: - 1. Settings → "Phone hotspot internet" → enter hotspot name + password → Save - 2. Click "Wait for hotspot" (or wait ~60s for auto-detect) - 3. Turn on phone hotspot → Pi should auto-connect on wlan1 - 4. Check Settings: mode should show "Phone hotspot", internet reachable - 5. Turn off phone hotspot → Pi falls back to home-wifi - 6. Verify wlan0 AP stays up throughout (connect another device to confirm) - ---- - ### BUG-02 — Micro-USB power port on the Pi is physically damaged - **Status**: `OPEN` - **Severity**: Hardware @@ -32,23 +18,6 @@ When CLOSED, move the entire entry to Resolved — don't duplicate. --- -### BUG-06 — Server timestamps are shifted (naive local time stored as UTC) -- **Status**: `CLOSED` 2026-08-11 -- **Commit**: `7ce2a1e` (upload fix), manual migration on server -- **Fix**: - 1. New `_to_tz_aware()` helper in `app_upload.py` converts naive SQLite - timestamps to timezone-aware ISO strings before upload (e.g., - `2026-08-10 19:27:30` → `2026-08-10T19:27:30-04:00`). Already-aware - timestamps pass through unchanged. - 2. One-time SQL migration on the Unraid server shifted all existing - `tracking_points.recorded_at` and `trips.start_time`/`end_time` by +4 - hours (EDT), cleared deleted-trip markers, and recomputed all trips. - Result: 3593 tracking rows and 43 trips corrected. -- **Verification**: Server trip history now shows Aug 10 trips at 7:27 PM - and 7:58 PM (was 3:27 PM / 3:58 PM). Confirmed 2026-08-11. - ---- - ### BUG-12 — Dashboard OBD shows "—" while Status page shows correct OBD state - **Status**: `CLOSED` 2026-08-11 - **Commit**: `91281b1` @@ -68,6 +37,15 @@ When CLOSED, move the entire entry to Resolved — don't duplicate. ## Resolved +### BUG-01 — WiFi/hotspot unreachable from phone while cell data is on +- **Status**: `CLOSED` 2026-08-11 +- **Fix**: Dual-radio — wlan0="yaris 911" at 10.42.0.1 (password "yaris911!"), + wlan1=uplink. Never touches wlan0. Phone-hotspot auto-connect on wlan1 within ~60s, + falls back to home-wifi. Settings page shows in-car access card. +- **Verification**: iOS + Android connect to AP, `yaris.local` resolves. Phone-hotspot + uplink tested: auto-connects when hotspot enabled, falls back when disabled. wlan0 AP + stays up throughout. + ### BUG-03 — DTC/MIL codes never persisted - **Status**: `CLOSED` 2026-08-11 - **Commit**: `e2f2314` @@ -98,6 +76,26 @@ When CLOSED, move the entire entry to Resolved — don't duplicate. - **Verification**: Deployed to Pi, dashboard GPS card now shows lat/lon coordinates even when fix is stale. Both pages agree on fix status. +### BUG-06 — Server timestamps are shifted (naive local time stored as UTC) +- **Status**: `CLOSED` 2026-08-11 +- **Commit**: `7ce2a1e` (upload fix), manual migration on server +- **Fix**: + 1. `_to_tz_aware()` in `app_upload.py` converts naive SQLite timestamps to + TZ-aware ISO before upload (`2026-08-10 19:27:30` → `2026-08-10T19:27:30-04:00`). + 2. One-time SQL migration on Unraid: shifted 3,593 tracking rows +4h EDT, + cleared deleted-trip markers, recomputed 43 trips from corrected data. +- **Verification**: Server trips now show Aug 10 at 7:27 PM / 7:58 PM (was 3:27 / 3:58). + +### BUG-12 — Dashboard OBD shows "—" while Status page shows correct OBD state +- **Status**: `CLOSED` 2026-08-11 +- **Commit**: `91281b1` +- **Fix**: Added `/api/obd/status` endpoint. Dashboard calls `refreshObdStatus()` + on load + every 15s. Socket events still update in real-time. Side fix: `Number()` + wrap on API string lat/lon prevents crash. Socket `gps_location` now passes lat/lon + to `renderGpsStatus` (`a4a92cc`). +- **Verification**: Dashboard shows "Adapter only" matching Status page. GPS lat/lon + display correctly. Confirmed on live Pi. + ### BUG-07 — Trip replay on portal sometimes does nothing - **Status**: `CLOSED` 2026-08-11 - **Commit**: `fa93384` diff --git a/PLAN.md b/PLAN.md index 1b879ce..da9ee96 100644 --- a/PLAN.md +++ b/PLAN.md @@ -1860,8 +1860,10 @@ phase roadmap. --- -### Phase 26: Road-test bug fixes — 🚧 IN PROGRESS (10 closed, 1 awaiting test, 1 hardware) -**Last updated 2026-08-11.** +### Phase 26: Road-test bug fixes — ✅ DONE (11 closed, 1 hardware) +**Completed 2026-08-11.** All software bugs from the Phase 25 road test are fixed, +deployed, and verified by owner. Only BUG-02 (Pi micro-USB hardware) remains — owner's +responsibility. **Closed (verified in prod):** - BUG-03: DTC/MIL persistence (`e2f2314`) @@ -1891,9 +1893,10 @@ rather than incremental patching: - **Same JS file works on both Pi and server**: tile URL/attrib/zoom defaults read from `data-*` attributes on `#history-map`, with Pi-local fallbacks when absent. -**Awaiting owner test:** -- BUG-01: Dual-radio — Pi AP tested (iOS + Android connect), phone-hotspot uplink - flow not yet verified. Settings page has in-car access card. +**Deployed and verified:** +- BUG-01: Dual-radio — wlan0="yaris 911" at 10.42.0.1 (password "yaris911!"), + wlan1=uplink. Tested on iOS + Android, AP stays up. Phone-hotspot auto-connects + on wlan1, falls back to home-wifi. Settings page shows in-car access card. - BUG-06: `_to_tz_aware()` in `app_upload.py` converts naive SQLite timestamps to TZ-aware before upload. One-time SQL migration on Unraid corrected all existing tracking_points (+4h EDT) and recomputed 43 trips.