diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 88221f1f8..955ae3af3 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -1352,8 +1352,8 @@ "healthCatMovementLoad": "Bewegung & Belastung", "healthCatBodyWear": "Körper & Tragezeit", "healthBlurbRestingHr": "Der niedrigste anhaltende Puls der Nacht", - "healthBlurbHrv": "RMSSD im saubersten Schlafabschnitt", - "healthBlurbHrvCv": "Wie stark das von Nacht zu Nacht schwankt", + "healthBlurbHrv": "Mittlerer RMSSD über die 5-Minuten-Fenster der Nacht", + "healthBlurbHrvCv": "SDNN als Anteil des mittleren Schlagintervalls, innerhalb einer Nacht", "healthBlurbLfHf": "Wie sich die Herzschlag-Variabilität auf die Frequenzbereiche verteilt", "healthBlurbDip": "Wie stark deine Herzfrequenz im Schlaf sinkt", "healthBlurbHrr": "Wie schnell sie in der Minute nach einer Belastung sinkt", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 874abe33f..756a7765d 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -6737,13 +6737,13 @@ "@healthBlurbRestingHr": { "description": "Explore catalogue one-line description for resting heart rate" }, - "healthBlurbHrv": "RMSSD over the cleanest window of sleep", + "healthBlurbHrv": "Mean RMSSD across the night's 5-minute windows", "@healthBlurbHrv": { - "description": "Explore catalogue one-line description for HRV" + "description": "Explore catalogue one-line description for HRV: the nightly mean of the RMSSDs of the sleep session's 5-minute windows" }, - "healthBlurbHrvCv": "How much that swings from night to night", + "healthBlurbHrvCv": "SDNN as a share of the average beat interval, within one night", "@healthBlurbHrvCv": { - "description": "Explore catalogue one-line description for HRV night-to-night variability" + "description": "Explore catalogue one-line description for HRV stability: within-night SDNN as a percentage of the mean beat interval (not a night-to-night variability)" }, "healthBlurbLfHf": "Where beat-timing power sits across frequencies", "@healthBlurbLfHf": { diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 5efd2cb99..c81fd67bf 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -1308,8 +1308,8 @@ "healthCatMovementLoad": "Movimiento y carga", "healthCatBodyWear": "Cuerpo y uso", "healthBlurbRestingHr": "El ritmo sostenido más bajo de la noche", - "healthBlurbHrv": "RMSSD durante la ventana de sueño más limpia", - "healthBlurbHrvCv": "Cuánto varía eso de una noche a otra", + "healthBlurbHrv": "RMSSD medio de las ventanas de 5 minutos de la noche", + "healthBlurbHrvCv": "SDNN como fracción del intervalo medio entre latidos, dentro de una noche", "healthBlurbLfHf": "Dónde se concentra la potencia del ritmo cardíaco entre frecuencias", "healthBlurbDip": "Cuánto baja tu frecuencia cardíaca mientras duermes", "healthBlurbHrr": "Cuán rápido baja en el minuto después de un esfuerzo", diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index 0968ca11f..e91fb62f9 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -1308,8 +1308,8 @@ "healthCatMovementLoad": "Mouvement et charge", "healthCatBodyWear": "Corps et port", "healthBlurbRestingHr": "Le rythme soutenu le plus bas de la nuit", - "healthBlurbHrv": "RMSSD sur la fenêtre de sommeil la plus propre", - "healthBlurbHrvCv": "À quel point cela varie d'une nuit à l'autre", + "healthBlurbHrv": "RMSSD moyen sur les fenêtres de 5 minutes de la nuit", + "healthBlurbHrvCv": "SDNN en proportion de l'intervalle moyen entre battements, sur une nuit", "healthBlurbLfHf": "Où se situe la puissance du rythme cardiaque selon les fréquences", "healthBlurbDip": "De combien votre fréquence cardiaque baisse pendant votre sommeil", "healthBlurbHrr": "À quelle vitesse elle baisse dans la minute suivant un effort", diff --git a/lib/l10n/app_hi.arb b/lib/l10n/app_hi.arb index 2d63f9052..d2b467e9b 100644 --- a/lib/l10n/app_hi.arb +++ b/lib/l10n/app_hi.arb @@ -1308,8 +1308,8 @@ "healthCatMovementLoad": "गतिविधि और भार", "healthCatBodyWear": "शरीर और पहनावा", "healthBlurbRestingHr": "रात की सबसे कम स्थिर दर", - "healthBlurbHrv": "नींद के सबसे स्वच्छ समय-खंड पर RMSSD", - "healthBlurbHrvCv": "यह रात-दर-रात कितना बदलता है", + "healthBlurbHrv": "रात की 5-मिनट की खिड़कियों पर औसत RMSSD", + "healthBlurbHrvCv": "एक रात के भीतर, औसत धड़कन-अंतराल के अनुपात में SDNN", "healthBlurbLfHf": "धड़कन-समय की ऊर्जा विभिन्न आवृत्तियों में कहाँ है", "healthBlurbDip": "सोते समय आपकी हृदय गति कितनी गिरती है", "healthBlurbHrr": "किसी कसरत के बाद एक मिनट में यह कितनी तेज़ी से गिरती है", diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index 33a526376..5362014c5 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -1308,8 +1308,8 @@ "healthCatMovementLoad": "运动与负荷", "healthCatBodyWear": "身体与佩戴", "healthBlurbRestingHr": "整夜持续保持的最低心率", - "healthBlurbHrv": "取睡眠中信号最干净时段的 RMSSD", - "healthBlurbHrvCv": "该数值在各夜之间的波动幅度", + "healthBlurbHrv": "整晚各 5 分钟窗口 RMSSD 的平均值", + "healthBlurbHrvCv": "单晚内 SDNN 占平均心跳间期的比例", "healthBlurbLfHf": "心跳间期功率在各频段的分布", "healthBlurbDip": "睡眠期间心率下降的幅度", "healthBlurbHrr": "运动结束后一分钟内心率下降的速度", diff --git a/lib/ui2/screens/health_screen.dart b/lib/ui2/screens/health_screen.dart index 213bdd3bd..cb5e2958a 100644 --- a/lib/ui2/screens/health_screen.dart +++ b/lib/ui2/screens/health_screen.dart @@ -357,8 +357,9 @@ class _Cat { const _catalogue = <_Cat>[ _Cat('Heart & rhythm', [ _CatRow('resting_hr', 'rhr', 'The lowest sustained rate of the night'), - _CatRow('hrv', 'rmssd', 'RMSSD over the cleanest window of sleep'), - _CatRow('hrv_cv', 'hrv_cv', 'How much that swings from night to night'), + _CatRow('hrv', 'rmssd', 'Mean RMSSD across the night\'s 5-minute windows'), + _CatRow('hrv_cv', 'hrv_cv', + 'SDNN as a share of the average beat interval, within one night'), _CatRow('lf_hf', 'lf_hf', 'Where beat-timing power sits across frequencies'), _CatRow('dip', 'dip_pct', 'How far your heart rate falls while you sleep'), _CatRow('hrr', 'hrr_bpm', 'How fast it falls in the minute after a bout'), diff --git a/lib/ui2/screens/metric_detail.dart b/lib/ui2/screens/metric_detail.dart index 842b1ed70..a99fddeae 100644 --- a/lib/ui2/screens/metric_detail.dart +++ b/lib/ui2/screens/metric_detail.dart @@ -115,11 +115,15 @@ const _specs = { unit: 'ms', color: C.green, icon: LucideIcons.activity, - method: 'RMSSD over the longest artefact-free window during sleep. Beat ' - 'timing is recovered from the band\'s 1 Hz records and corrected by ' - 'the Lipponen–Tarvainen method before any statistic is taken. ' + method: 'The mean of RMSSD across every 5-minute window of the detected ' + 'sleep session that holds at least 20 clean successive differences. ' + 'Beats outside 300–2000 ms, and beats more than 20% from their local ' + 'median, are dropped first. On a night whose beat timing looks noisy, ' + 'only windows that pass the jitter check on their own, or that sit on ' + 'a steady breathing line, count; a window, or a night, whose beats ' + 'add up to more time than passed is left out. ' 'Pulse-derived, so this is PRV: real and trendable, but not ECG HRV.', - citation: 'Task Force 1996 · Lipponen & Tarvainen 2019', + citation: 'Task Force 1996 · 20% local-median ectopic filter, after Malik', requires: {InputSignal.rrIntervals}, ), 'readiness': MetricSpec( @@ -301,8 +305,12 @@ const _specs = { color: C.green, icon: LucideIcons.activity, higherBetter: false, - method: 'Night-to-night coefficient of variation of RMSSD.', - citation: 'Within-user dispersion', + method: 'Within one night: the standard deviation of the night\'s beat ' + 'intervals after artifact correction (SDNN) as a percentage of their ' + 'mean. The chart shows how that per-night figure moves across nights; ' + 'it is not a night-to-night coefficient of variation.', + citation: 'SDNN (Task Force 1996) over Lipponen & Tarvainen 2019 corrected ' + 'beats, normalised by mean NN', requires: {InputSignal.rrIntervals}, ), 'brv': MetricSpec(