diff --git a/messages/de.json b/messages/de.json
index 637089669..7798c950e 100644
--- a/messages/de.json
+++ b/messages/de.json
@@ -6987,12 +6987,11 @@
},
"stored": {
"title": "Was gespeichert wird",
- "measurements": "Messwerte (Gewicht, Blutdruck, Puls, Glukose, Schlaf, Körperzusammensetzung)",
- "medications": "Medikamente und Einnahmeverlauf",
- "moodLabs": "Stimmungseinträge und Laborwerte",
- "coach": "Coach-Unterhaltungen",
+ "measurements": "Messwerte: Gewicht, Blutdruck, Puls und jeder weitere Wert, den du oder ein Gerät erfasst",
"integrations": "Integrations-Tokens (verschlüsselt)",
- "security": "Konto- und Sicherheitsaktivität (Sitzungen, Anmeldeprotokoll)"
+ "security": "Konto- und Sicherheitsaktivität (Sitzungen, Anmeldeprotokoll)",
+ "profile": "Dein Profil, deine Anamnese und die Angaben für die Gesundheitsakte",
+ "modules": "Einträge der Module: {list}"
},
"retention": {
"title": "Aufbewahrung",
diff --git a/messages/en.json b/messages/en.json
index 185bd2226..476b9030e 100644
--- a/messages/en.json
+++ b/messages/en.json
@@ -6987,12 +6987,11 @@
},
"stored": {
"title": "What's stored",
- "measurements": "Measurements (weight, blood pressure, pulse, glucose, sleep, body composition)",
- "medications": "Medications and intake history",
- "moodLabs": "Mood entries and lab results",
- "coach": "Coach conversations",
+ "measurements": "Measurements: weight, blood pressure, pulse and every other value you or a device record",
"integrations": "Integration tokens (encrypted)",
- "security": "Account and security activity (sessions, sign-in log)"
+ "security": "Account and security activity (sessions, sign-in log)",
+ "profile": "Your profile, medical history and health-record details",
+ "modules": "Records of each module: {list}"
},
"retention": {
"title": "Retention",
diff --git a/messages/es.json b/messages/es.json
index 787114de2..7bc772cdd 100644
--- a/messages/es.json
+++ b/messages/es.json
@@ -6987,12 +6987,11 @@
},
"stored": {
"title": "Qué se almacena",
- "measurements": "Mediciones (peso, presión arterial, pulso, glucosa, sueño, composición corporal)",
- "medications": "Medicamentos e historial de tomas",
- "moodLabs": "Entradas de estado de ánimo y resultados de laboratorio",
- "coach": "Conversaciones con el asistente",
+ "measurements": "Mediciones: peso, presión arterial, pulso y cualquier otro valor que registres tú o un dispositivo",
"integrations": "Tokens de integración (cifrados)",
- "security": "Actividad de la cuenta y de seguridad (sesiones, registro de inicio de sesión)"
+ "security": "Actividad de la cuenta y de seguridad (sesiones, registro de inicio de sesión)",
+ "profile": "Tu perfil, tus antecedentes médicos y los datos del historial de salud",
+ "modules": "Registros de cada módulo: {list}"
},
"retention": {
"title": "Retención",
diff --git a/messages/fr.json b/messages/fr.json
index 7803ab4f4..d13999e72 100644
--- a/messages/fr.json
+++ b/messages/fr.json
@@ -6987,12 +6987,11 @@
},
"stored": {
"title": "Ce qui est stocké",
- "measurements": "Mesures (poids, tension, pouls, glycémie, sommeil, composition corporelle)",
- "medications": "Médicaments et historique des prises",
- "moodLabs": "Entrées d'humeur et résultats de laboratoire",
- "coach": "Conversations avec le coach",
+ "measurements": "Mesures : poids, tension, pouls et toute autre valeur enregistrée par vous ou un appareil",
"integrations": "Jetons d'intégration (chiffrés)",
- "security": "Activité du compte et de sécurité (sessions, journal de connexion)"
+ "security": "Activité du compte et de sécurité (sessions, journal de connexion)",
+ "profile": "Votre profil, vos antécédents médicaux et les informations du dossier de santé",
+ "modules": "Données de chaque module : {list}"
},
"retention": {
"title": "Conservation",
diff --git a/messages/it.json b/messages/it.json
index e959745d9..e2d3097cb 100644
--- a/messages/it.json
+++ b/messages/it.json
@@ -6987,12 +6987,11 @@
},
"stored": {
"title": "Cosa viene memorizzato",
- "measurements": "Misurazioni (peso, pressione, polso, glicemia, sonno, composizione corporea)",
- "medications": "Farmaci e cronologia delle assunzioni",
- "moodLabs": "Voci dell'umore e referti di laboratorio",
- "coach": "Conversazioni con il coach",
+ "measurements": "Misurazioni: peso, pressione, battito e ogni altro valore registrato da te o da un dispositivo",
"integrations": "Token di integrazione (cifrati)",
- "security": "Attività dell'account e di sicurezza (sessioni, registro degli accessi)"
+ "security": "Attività dell'account e di sicurezza (sessioni, registro degli accessi)",
+ "profile": "Il tuo profilo, l'anamnesi e i dati della cartella sanitaria",
+ "modules": "Dati di ogni modulo: {list}"
},
"retention": {
"title": "Conservazione",
diff --git a/messages/ko.json b/messages/ko.json
index b6abad7a8..933ed797e 100644
--- a/messages/ko.json
+++ b/messages/ko.json
@@ -6987,12 +6987,11 @@
},
"stored": {
"title": "저장되는 항목",
- "measurements": "측정값 (체중, 혈압, 맥박, 혈당, 수면, 체성분)",
- "medications": "약과 복용 기록",
- "moodLabs": "기분 기록과 검사 결과",
- "coach": "코치 대화",
+ "measurements": "측정값: 체중, 혈압, 맥박과 직접 또는 기기로 기록한 모든 값",
"integrations": "연동 토큰 (암호화됨)",
- "security": "계정·보안 활동 (세션, 로그인 기록)"
+ "security": "계정·보안 활동 (세션, 로그인 기록)",
+ "profile": "프로필, 병력, 건강 기록 정보",
+ "modules": "모듈별 기록: {list}"
},
"retention": {
"title": "보관 기간",
diff --git a/messages/pl.json b/messages/pl.json
index a6f21206f..733555615 100644
--- a/messages/pl.json
+++ b/messages/pl.json
@@ -6987,12 +6987,11 @@
},
"stored": {
"title": "Co jest przechowywane",
- "measurements": "Pomiary (waga, ciśnienie, tętno, glukoza, sen, skład ciała)",
- "medications": "Leki i historia przyjmowania",
- "moodLabs": "Wpisy nastroju i wyniki badań laboratoryjnych",
- "coach": "Rozmowy z asystentem",
+ "measurements": "Pomiary: waga, ciśnienie, tętno i każda inna wartość zapisana przez ciebie lub urządzenie",
"integrations": "Tokeny integracji (szyfrowane)",
- "security": "Aktywność konta i zabezpieczeń (sesje, dziennik logowań)"
+ "security": "Aktywność konta i zabezpieczeń (sesje, dziennik logowań)",
+ "profile": "Twój profil, wywiad medyczny i dane dokumentacji zdrowotnej",
+ "modules": "Wpisy poszczególnych modułów: {list}"
},
"retention": {
"title": "Retencja",
diff --git a/src/components/settings/__tests__/privacy-stored-list.test.tsx b/src/components/settings/__tests__/privacy-stored-list.test.tsx
new file mode 100644
index 000000000..b81c53ccc
--- /dev/null
+++ b/src/components/settings/__tests__/privacy-stored-list.test.tsx
@@ -0,0 +1,59 @@
+/**
+ * Settings → Data & privacy: "What's stored" is read off the module registry,
+ * so every module that keeps records is named and a new one joins the list
+ * without an edit here.
+ */
+import { renderToStaticMarkup } from "react-dom/server";
+import { describe, expect, it, vi } from "vitest";
+
+vi.mock("@tanstack/react-query", () => ({
+ useQuery: () => ({ data: undefined, isLoading: true, isError: false }),
+ useQueryClient: () => ({ invalidateQueries: vi.fn() }),
+ useMutation: () => ({ mutate: vi.fn(), isPending: false }),
+}));
+vi.mock("@/hooks/use-auth", () => ({
+ useAuth: () => ({ user: null, isAuthenticated: true, isLoading: false }),
+}));
+vi.mock("@/components/settings/security-sessions-card", () => ({
+ SecuritySessionsCard: () => null,
+}));
+vi.mock("@/components/settings/security-activity-card", () => ({
+ SecurityActivityCard: () => null,
+}));
+vi.mock("@/components/settings/trusted-devices-card", () => ({
+ TrustedDevicesCard: () => null,
+}));
+
+import { I18nProvider } from "@/lib/i18n/context";
+import { MODULE_KEYS, MODULE_REGISTRY } from "@/lib/modules/registry";
+import { PrivacySection, storedModuleLabelKeys } from "../privacy-section";
+
+function render(): string {
+ return renderToStaticMarkup(
+