docs: close BUG-13, update PLAN.md Phase 26 (13 bugs resolved)

- BUG-13 moved from Open to Resolved with fix summary
- PLAN.md Phase 26: 12 → 13 bugs, added BUG-13 entry
- deploy memory: Unraid SSH deploy key + updated rebuild command
This commit is contained in:
Mathieu Moran
2026-08-12 03:08:57 -04:00
parent 830981934f
commit ad10a873b4
2 changed files with 27 additions and 26 deletions
+13 -20
View File
@@ -8,31 +8,24 @@ When CLOSED, move the entire entry to Resolved — don't duplicate.
## Open bugs
### BUG-13 — Server Web UI shows raw coordinates instead of geocoded location on trips
- **Status**: `IN PROGRESS`
- **Reported**: 2026-08-12
- **Affected trips**: 18517, 18516 (and possibly others)
- **Symptom**: The trip detail/replay page shows raw (x, y) coordinates instead of
reverse-geocoded location names (street/city/address).
- **Root cause**: Server `_geocode_cached()` returned `None` when both Nominatim and
reverse_geocoder failed to produce a label. The `/api/geocode` endpoint then returned
HTTP 204 with no body. The frontend JS treated 204 as success, called `r.json()` on
empty body → threw → showed raw-coordinate fallback. The Pi version always returned
a label string (with coordinate fallback) and never 204.
- **Fix**:
- Server `_geocode_cached()` now always returns a non-empty string — coordinate
fallback (`lat, lon`) when both geocoders fail, matching Pi behavior.
- Server `/api/geocode` always returns HTTP 200 with `{label: "..."}` (never 204).
- Server `/api/geocode/batch` always includes every coord key in the result dict.
- Server Nominatim call now uses `jsonv2` + `accept-language=en` (aligned with Pi).
- Server reverse_geocoder now uses `mode=1` (aligned with Pi).
- Pi `_geocode_cached()` now checks for empty reverse_geocoder label before
returning (same guard the server has), falling through to coordinate string.
(No open bugs)
---
## Resolved
### BUG-13 — Server Web UI shows raw coordinates instead of geocoded location on trips
- **Status**: `CLOSED` 2026-08-12
- **Commit**: `8309819`
- **Fix**: Server `_geocode_cached()` now always returns a non-empty string with
coordinate fallback when Nominatim/reverse_geocoder fail. `/api/geocode` always
returns HTTP 200 with `{label}` (never 204). Batch endpoint includes all keys.
Nominatim params + reverse_geocoder mode aligned with Pi. Pi also hardened against
empty reverse_geocoder label.
- **Verification**: Deployed to Unraid (Docker rebuild) and Pi (git pull + restart).
Both healthy. Unraid now uses SSH deploy key for git fetch (was failing on HTTPS auth).
### 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!"),
+14 -6
View File
@@ -1872,10 +1872,11 @@ phase roadmap.
---
### Phase 26: Road-test bug fixes — ✅ DONE
**Completed 2026-08-11.** Targeted bug-fix pass for 12 defects surfaced by the Phase 25
in-car road test. Every item tracked in [BUGS.md](./BUGS.md), fixed, deployed, and verified
by owner. BUGS.md Open section is now empty — all 12 bugs in Resolved.
### Phase 26: Road-test bug fixes — ✅ DONE (13 bugs resolved)
**Completed 2026-08-11; BUG-13 resolved 2026-08-12.** Targeted bug-fix pass for 13 defects
surfaced by the Phase 25 in-car road test and follow-up. Every item tracked in
[BUGS.md](./BUGS.md), fixed, deployed, and verified by owner. BUGS.md Open section is
now empty — all 13 bugs in Resolved.
**Implemented and verified 2026-08-11:**
@@ -1938,10 +1939,17 @@ by owner. BUGS.md Open section is now empty — all 12 bugs in Resolved.
.toFixed is not a function` — API returns lat/lon as strings, fixed with `Number()` wrapper
(`a4a92cc`). Socket `gps_location` event now passes lat/lon to `renderGpsStatus` so both
API and Socket paths display coordinates correctly.
- **BUG-13 — Server Web UI shows raw coords instead of geocoded location** (`8309819`,
2026-08-12): Server `_geocode_cached()` returned `None` → `/api/geocode` returned HTTP 204
with no body. Frontend JS couldn't parse 204 → showed raw (x,y) fallback. Fixed by always
returning `{label}` with coordinate-string last-resort fallback (matching Pi behavior),
aligning Nominatim params (`jsonv2`, `accept-language=en`) and reverse_geocoder `mode=1`
between server and Pi. Also hardened Pi against empty reverse_geocoder label.
**Result**: All 12 bugs closed. Pi runs at full 1.2 GHz with clean power. GPS has fix. Dual-radio
**Result**: All 13 bugs closed. Pi runs at full 1.2 GHz with clean power. GPS has fix. Dual-radio
AP stays up regardless of uplink state. Server trip times are correct. Dashboard and Status page
agree on OBD and GPS state. BUGS.md Open section is empty. readme.md project status updated.
agree on OBD and GPS state. Server geocode always returns a label. Unraid now uses SSH deploy key
for git operations. BUGS.md Open section is empty. readme.md project status updated.
---