5.6 KiB
5.6 KiB
yaris-obd Bug Tracker
Standalone bug/issue tracker. One ## BUG-XX per issue. Numbering sequential.
Status: OPEN → IN PROGRESS → CLOSED (with commit ref + verification).
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(netwatch fix deployed, needs in-car test) - Fix applied:
yaris_uplink.pynow skips the periodic AP scan when clients are connected (_ap_client_count()viaiw dev station dump). Settings page has new "In-car access" card showing hotspot URL with copy button and cell-data warning. - Needs verification: Connect phone to Pi hotspot while driving; confirm it stays up >3 min.
BUG-02 — Micro-USB power port on the Pi is physically damaged
- Status:
OPEN - Severity: Hardware
- Area: Hardware / power
- Phase: Phase 26
- Symptom: Pi's micro-USB 5V connector is worn — unreliable under vibration.
- Fix scope: Owner hard-wires 5V/GND to GPIO header (pins 2/4 for 5V).
BUG-06 — Server timestamps are shifted (naive local time stored as UTC)
- Status:
IN PROGRESS(fix deployed 2026-08-11, needs new-data verification) - Severity: High-ish
- Area:
modules/app_upload.py,server/sql,server/modules/db.py, portal - Phase: Phase 26
- Symptom: Server trip times shifted by EDT offset (~4-5h). Pi stores naive
local time; Postgres
TIMESTAMPTZinterprets it as UTC. - Fix: New
_to_tz_aware()helper inapp_upload.pyconverts 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. Existing rows on the server are NOT migrated — only new uploads benefit from this fix. Old trips will still show the wrong time until a one-time server-sideUPDATEmigration is run (needs owner sign-off). - Acceptance: New trips uploaded after this fix display correct local time on both portal and Pi.
BUG-11 — Dashboard GPS shows "Stale fix" while Status shows "Live fix"
- Status:
OPEN - Severity: Low
- Area:
static/js/yaris.js,static/js/status.js - Phase: Phase 26
- Symptom: Dashboard shows "Stale fix", lat/lon blank. Status page shows "Live fix"
with valid coordinates. Both pages query the same
/api/gps/statusendpoint. - Root cause: Dashboard
renderGpsStatus()updates badge + age text but never populates lat/lon fields — those only receive data from the livesocket.on('gps_location')event. Status page readsgps.latitude/gps.longitudedirectly from the API response. Also, the staleness thresholds differ: Dashboard marks stale at >30s, Status page ignores age entirely. - Fix scope:
renderGpsStatus()should populate lat/lon from the API response (already present instatus.latitude,status.longitude). - Acceptance: Dashboard GPS card matches Status page — both show same fix status and coordinates.
Resolved
BUG-03 — DTC/MIL codes never persisted
- Status:
CLOSED2026-08-11 - Commit:
e2f2314 - Fix:
save_dtc_state()persists MIL+codes each poll./api/dtcfalls back toget_persisted_dtc_state()when OBD offline. Cleared codes tracked via IS_SET timestamps. - Verification: Deployed to Pi,
/api/dtcreturns persisted snapshot, stats showactive_dtc: 0.
BUG-04 — Server merges two trips into one
- Status:
CLOSED2026-08-11 - Commit:
96fb897 - Fix: Replaced time-gap splitting with Pi's motion-aware logic: OBD > 1 km/h primary, GPS >= 8m × 3 consecutive fallback, 5-min inactivity gap.
- Verification: Server trips cleared + recomputed. 17 trips on both Pi and server.
BUG-05 — Server route replay speed_source always "gps"
- Status:
CLOSED2026-08-11 - Commit:
e2f2314 - Fix:
"obd" if speed > 0 else "gps"matching Pi logic. - Verification: Docker rebuild,
/healthOK LAN + Cloudflare.
BUG-07 — Trip replay on portal sometimes does nothing
- Status:
CLOSED2026-08-11 - Commit:
fa93384 - Fix: Full rewrite of
static/js/history.js: unified AbortController cancels fetch- all downstream rendering on trip switch; 300ms debounce prevents double-tap stacking;
loading spinner on map +
.table-activerow highlight give clear feedback; geocode preload starts immediately before map rendering so cache is warm for the scrubber;signal.abortedguards after every async step (route build, fitBounds, timeline init).
- all downstream rendering on trip switch; 300ms debounce prevents double-tap stacking;
loading spinner on map +
- Verification: Deployed to Pi and server. Rapid trip-switching no longer freezes. Verified on both platforms 2026-08-11.
BUG-08 — No trip deletion on local Pi
- Status:
CLOSED2026-08-11 - Commit:
c5c478b - Fix:
deletablemacro,window.confirmDelete,DELETE /api/trip/<id>, configurabledata-delete-urlin sharedhistory.js. Raw tracking preserved. - Verification: Trip 1967 deleted (18→17 trips), 2028 tracking rows preserved.
BUG-09 — Server trip scrubber geocoding is slow
- Status:
CLOSED2026-08-11 - Fix:
preloadGeocodes()batch-fetches all unique coords (concurrency 4) on trip load.geocodePoint()checks in-memory cache first. - Verification:
preloadGeocodespresent in history.js on both Pi and server Docker container.
BUG-10 — GPS-only false trips when car not connected
- Status:
CLOSED2026-08-11 - Fix:
_car_ever_connectedflag inapp_obd.py.build_trip_summaries()returns empty list when car was never connected. - Verification: Pi bench-test shows 0 trips. No OBD = no GPS-only trips.