mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-11 13:52:20 +00:00
feat(settings): a time-format preference and one home for insight pills
The clock format followed the UI language with no way out — an English interface forced AM/PM everywhere. A new profile preference (automatic, 24-hour, 12-hour) feeds every formatter through the shared locale context, persists on the user row and rides the profile endpoints. The insight pill list in settings gains the same eye toggle the overview tiles have, so ordering and visibility live in one place; the page-side 'manage detail pages' block folds into a link there. Includes the locale bundles for both features and the regenerated API contract.
This commit is contained in:
1 parent
3cf48fa0f1
commit
aabc7915cb
28 files changed
+1137
-462
No files matched your search
@@ -0,0 +1,14 @@
|
||||
-- v1.15.20 — per-user hour-cycle display preference.
|
||||
--
|
||||
-- The UI locale alone decided whether times rendered as AM/PM or 24-hour,
|
||||
-- which left e.g. an en-locale user no way to read 24-hour times. The new
|
||||
-- column carries an explicit preference: AUTO follows the locale convention,
|
||||
-- H12 forces AM/PM, H24 forces 24-hour. Display-time only — stored instants
|
||||
-- stay UTC.
|
||||
--
|
||||
-- Additive + non-destructive: a new NOT NULL column with a default, no
|
||||
-- backfill needed. Existing rows read AUTO.
|
||||
CREATE TYPE "time_format_preference" AS ENUM ('AUTO', 'H12', 'H24');
|
||||
|
||||
ALTER TABLE "users"
|
||||
ADD COLUMN "time_format" "time_format_preference" NOT NULL DEFAULT 'AUTO';
|
||||
@@ -132,6 +132,10 @@ model User {
|
||||
// Canonical storage stays SI; this only selects the display-time
|
||||
// transform branch (km/h vs mph, km vs mi). Null = default "metric".
|
||||
unitPreference String? @map("unit_preference") // "metric" | "imperial" | null = default "metric"
|
||||
// Hour-cycle display preference. AUTO follows the locale convention
|
||||
// (en → AM/PM, de → 24h), H12 forces AM/PM, H24 forces 24-hour.
|
||||
// Display-time only — canonical storage stays UTC instants.
|
||||
timeFormat TimeFormatPreference @default(AUTO) @map("time_format")
|
||||
// AI provider selection for insights. Null = OPENAI fallback.
|
||||
aiProvider String? @map("ai_provider") // "OPENAI" | "ANTHROPIC" | "LOCAL" | "CHATGPT_OAUTH"
|
||||
aiModel String? @map("ai_model")
|
||||
@@ -716,6 +720,16 @@ enum GlucoseContext {
|
||||
@@map("glucose_context")
|
||||
}
|
||||
|
||||
// Hour-cycle display preference for rendered times. AUTO defers to the
|
||||
// active locale's convention; H12/H24 pin the cycle regardless of locale.
|
||||
enum TimeFormatPreference {
|
||||
AUTO
|
||||
H12
|
||||
H24
|
||||
|
||||
@@map("time_format_preference")
|
||||
}
|
||||
|
||||
enum MeasurementSource {
|
||||
MANUAL
|
||||
WITHINGS
|
||||
|
||||
Reference in new issue
Block a user