fix(insights): surface Rest Mode on the web and align sleep assessments

Add a calm, value-free Rest Mode indicator to the dashboard score card and
the recovery insight so the web matches what iOS already shows: when an
illness/condition episode is active the score and recovery are framed, never
penalised, and the surface now says so. The new banner is neutral and
untinted, self-gates on an active episode, and reveals only the onset date —
never a decrypted note or episode label. The dashboard reads the annotation
from the snapshot (resolved server-side alongside the score); the recovery
section reads it from the analytics payload.

Give the sleep page one assessment per distinct chart group: the
duration/architecture assessment now sits with its charts, and the
sleep-quality block carries its own SLEEP_SCORE assessment, matching the
"multiple charts, multiple texts" structure the recovery page meets.

Add the steps explainer (insights.subPage.explainer.steps*) and pass
explainerMetric="steps", and demote the recovery per-block title to an h3 so
the heading outline nests cleanly under the page heading and group heading.
This commit is contained in:
Marc-André Bombeck committed 2026-06-16 23:20:04 +02:00
1 parent a3217ff767
commit 201686f498
18 files changed
+249 -21

No files matched your search

@@ -49,6 +49,7 @@ export const dynamic = "force-dynamic";
const METRIC_MODULE: Partial<Record<MetricStatusMetricId, ModuleKey>> = {
SLEEP_DURATION: "sleep",
BREATHING_DISTURBANCES: "sleep",
SLEEP_SCORE: "sleep",
BLOOD_GLUCOSE: "glucose",
CARDIO_RECOVERY: "recovery",
// v1.18.1 — device-native recovery / strain signals gate on the