mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-07 04:12:04 +00:00
`User.glucoseUnit` has existed since v1.2 and around thirty surfaces read it — the dashboard tiles, the glucose page, the targets panel, the CSV and FHIR exports, the doctor report, the Coach snapshot, the low-reading push copy. Nothing could ever write it. No route, no schema, no field on any form, so every account resolved to the mg/dL default and the mmol/L half of the app was unreachable code. Anyone who reads glucose in mmol/L converted in their head on every screen. This is the missing end: a `GET`/`PATCH /api/auth/me/glucose-unit` scalar on the pattern the unit-preference endpoint next door established, and a dropdown in the profile form beside it. Deliberately its own control rather than a branch of metric/imperial: metric countries are split on which unit they read glucose in, so one dropdown would get half of them wrong. Storage is untouched and stays untouched. Every reading is written in mg/dL by every ingest path and the unit only selects a display branch, so nothing already recorded is reinterpreted. The entry form moved with the preference, which is the half that could have hurt: it asks in the chosen unit and inverts through `toCanonicalMgdl` on submit, so a 5.3 typed by an mmol/L reader is filed as 95 mg/dL rather than as 5.3 — a value the plausibility band accepts in silence and every surface reads back as a severe hypo. The contract gains the endpoint and nothing else; the account payload already carried the field.