From 0b881fe5b70ce7b68a81fe617a0065330cdc8687 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Thu, 8 Oct 2026 16:20:26 +0200 Subject: [PATCH] Name every capture sheet by what it logs, in one order The measurement and mood sheets were titled with the bare 'Add', the medication one with the noun alone. Every capture sheet now carries the verb phrase the dashboard's add menu shows, and the add menu lists its entries in the capture picker's order. Normalise 'z.B.' to 'z. B.' in the German catalogue and drop the register page's subtitle, which repeated its title. --- messages/de.json | 11 ++++------ messages/en.json | 3 --- messages/es.json | 3 --- messages/fr.json | 3 --- messages/it.json | 3 --- messages/ko.json | 3 --- messages/pl.json | 3 --- src/app/auth/register/page.tsx | 13 +++++------- src/app/measurements/page.tsx | 2 +- .../__tests__/dashboard-header.test.tsx | 4 ++++ src/components/dashboard/dashboard-header.tsx | 12 +++++------ .../dashboard/quick-entry-sheets.tsx | 12 +++++------ src/components/layout/capture-picker.tsx | 21 +++++++++++-------- 13 files changed, 38 insertions(+), 55 deletions(-) diff --git a/messages/de.json b/messages/de.json index 625afb001..890fe581f 100644 --- a/messages/de.json +++ b/messages/de.json @@ -463,7 +463,6 @@ "signOut": "Abmelden und Einladung annehmen" }, "createAccount": "Konto erstellen", - "newAccount": "Neues Konto erstellen", "backToPasskey": "Zurück zu Passkey", "passkeySetupLater": "Passkeys kannst du jederzeit in den Einstellungen einrichten.", "passwordMinLength": "Min. 12 Zeichen", @@ -583,7 +582,6 @@ "quickAddLifeEvent": "Lebensereignis erfassen", "customizeDashboard": "Dashboard anpassen", "medicationIntakeQuickAdd": { - "sheetTitle": "Medikamenteneinnahme erfassen", "sheetDescription": "Dosis, Zeitpunkt und Medikament in wenigen Tipps protokollieren.", "medicationLabel": "Medikament", "medicationPlaceholder": "Medikament auswählen", @@ -764,7 +762,7 @@ "valueWithUnit": "Wert ({unit})", "timestamp": "Zeitpunkt", "timestampBackdateHint": "Datum und Uhrzeit anpassen, um einen vergangenen Wert zu erfassen.", - "notesPlaceholder": "z.B. nach dem Essen", + "notesPlaceholder": "z. B. nach dem Essen", "formReset": "Formular zurücksetzen", "saveError": "Fehler beim Speichern", "duplicateTimestamp": "Zum gewählten Zeitpunkt existiert bereits ein Messwert dieses Typs.", @@ -895,7 +893,7 @@ "factorNo": "Nein", "factorRatingOption": "{label}: {value} von {max}", "tags": "Tags", - "tagsPlaceholder": "z.B. Sport, Arbeit, Familie", + "tagsPlaceholder": "z. B. Sport, Arbeit, Familie", "tagsHelp": "Kommagetrennt eingeben", "timestamp": "Zeitpunkt", "date": "Datum", @@ -6554,7 +6552,7 @@ "createFailed": "Das Token konnte nicht erstellt werden. Bitte versuche es erneut." }, "tokenMintMovedDescription": "Tokens werden dort ausgestellt, wo sie gelten: oben für Messwerte und Dokumente, oder im API-Endpoint eines Medikaments für genau dieses Medikament.", - "tokenNamePlaceholder": "Token-Name (z.B. iPhone Shortcut)", + "tokenNamePlaceholder": "Token-Name (z. B. iPhone Shortcut)", "tokenCreated": "Token erstellt — kopiere ihn jetzt! Er wird nicht erneut angezeigt.", "tokenCopy": "Token kopieren", "tokenCopied": "Token in die Zwischenablage kopiert", @@ -8588,7 +8586,7 @@ "noActiveMedications": "Keine aktiven Medikamente gefunden.", "whichMedication": "Welches Medikament eingenommen?", "cancelButton": "Abbrechen", - "askMedicationName": "Bitte Medikament angeben, z.B. genommen Ramipril.", + "askMedicationName": "Bitte Medikament angeben, z. B. genommen Ramipril.", "medicationNotFoundExact": "Medikament nicht gefunden. Bitte Namen exakt wie in HealthLog senden.", "helpHeader": "Verfügbare Befehle:", "helpBody": "/help — Diese Hilfe anzeigen\n/add — Einnahme erfassen\n/start — Bot starten\n\nTextbefehle:\ngenommen <Name> — Einnahme bestätigen\n\nÜber die Buttons in Erinnerungen:\n• Genommen — Einnahme bestätigen\n• 🕐 1h / 🕐 3h — Erinnerung verschieben\n• ⏭ Überspringen — Einnahme überspringen\n• ✓ Bestätigen — Verpasste Einnahme bestätigen", @@ -12118,7 +12116,6 @@ "unreadableLabel": "Unlesbares Symptom", "intensityPill": "{value}/10", "entry": { - "sheetTitle": "Symptom erfassen", "sheetDescription": "Eines deiner eigenen Symptome, wie stark und wann.", "symptom": "Symptom", "symptomRequired": "Wähle ein Symptom.", diff --git a/messages/en.json b/messages/en.json index c8a52c09a..c502bab8a 100644 --- a/messages/en.json +++ b/messages/en.json @@ -463,7 +463,6 @@ "signOut": "Sign out and accept the invitation" }, "createAccount": "Create account", - "newAccount": "Create new account", "backToPasskey": "Back to Passkey", "passkeySetupLater": "You can set up passkeys at any time in Settings.", "passwordMinLength": "Min. 12 characters", @@ -583,7 +582,6 @@ "quickAddLifeEvent": "Log life event", "customizeDashboard": "Customize dashboard", "medicationIntakeQuickAdd": { - "sheetTitle": "Log medication intake", "sheetDescription": "Record dose, time, and medication in a few taps.", "medicationLabel": "Medication", "medicationPlaceholder": "Select a medication", @@ -12118,7 +12116,6 @@ "unreadableLabel": "Unreadable symptom", "intensityPill": "{value}/10", "entry": { - "sheetTitle": "Log symptom", "sheetDescription": "One of your own symptoms, how strong and when.", "symptom": "Symptom", "symptomRequired": "Choose a symptom.", diff --git a/messages/es.json b/messages/es.json index 238bb72f4..759191ed4 100644 --- a/messages/es.json +++ b/messages/es.json @@ -463,7 +463,6 @@ "signOut": "Cerrar sesión y aceptar la invitación" }, "createAccount": "Crear cuenta", - "newAccount": "Crear cuenta nueva", "backToPasskey": "Volver a passkey", "passkeySetupLater": "Puedes configurar passkeys más tarde en los ajustes.", "passwordMinLength": "Mín. 12 caracteres", @@ -583,7 +582,6 @@ "quickAddLifeEvent": "Registrar acontecimiento vital", "customizeDashboard": "Personalizar panel", "medicationIntakeQuickAdd": { - "sheetTitle": "Registrar toma de medicación", "sheetDescription": "Registra dosis, hora y medicamento en unos pocos toques.", "medicationLabel": "Medicamento", "medicationPlaceholder": "Selecciona un medicamento", @@ -12118,7 +12116,6 @@ "unreadableLabel": "Síntoma ilegible", "intensityPill": "{value}/10", "entry": { - "sheetTitle": "Registrar síntoma", "sheetDescription": "Uno de tus propios síntomas, su intensidad y cuándo.", "symptom": "Síntoma", "symptomRequired": "Elige un síntoma.", diff --git a/messages/fr.json b/messages/fr.json index 0fd018599..198f10fce 100644 --- a/messages/fr.json +++ b/messages/fr.json @@ -463,7 +463,6 @@ "signOut": "Se déconnecter et accepter l'invitation" }, "createAccount": "Créer un compte", - "newAccount": "Créer un nouveau compte", "backToPasskey": "Revenir à la passkey", "passkeySetupLater": "Tu peux configurer les passkeys plus tard dans les paramètres.", "passwordMinLength": "Min. 12 caractères", @@ -583,7 +582,6 @@ "quickAddLifeEvent": "Enregistrer un événement de vie", "customizeDashboard": "Personnaliser le tableau de bord", "medicationIntakeQuickAdd": { - "sheetTitle": "Saisir une prise de médicament", "sheetDescription": "Enregistre la dose, l’heure et le médicament en quelques touches.", "medicationLabel": "Médicament", "medicationPlaceholder": "Sélectionner un médicament", @@ -12118,7 +12116,6 @@ "unreadableLabel": "Symptôme illisible", "intensityPill": "{value}/10", "entry": { - "sheetTitle": "Noter un symptôme", "sheetDescription": "L'un de tes propres symptômes, son intensité et quand.", "symptom": "Symptôme", "symptomRequired": "Choisis un symptôme.", diff --git a/messages/it.json b/messages/it.json index 582cd2e10..d6dad2aac 100644 --- a/messages/it.json +++ b/messages/it.json @@ -463,7 +463,6 @@ "signOut": "Esci e accetta l'invito" }, "createAccount": "Crea account", - "newAccount": "Crea un nuovo account", "backToPasskey": "Torna a passkey", "passkeySetupLater": "Puoi configurare le passkey più tardi dalle impostazioni.", "passwordMinLength": "Min. 12 caratteri", @@ -583,7 +582,6 @@ "quickAddLifeEvent": "Registra evento di vita", "customizeDashboard": "Personalizza dashboard", "medicationIntakeQuickAdd": { - "sheetTitle": "Registra assunzione del farmaco", "sheetDescription": "Registra dose, orario e farmaco con pochi tap.", "medicationLabel": "Farmaco", "medicationPlaceholder": "Seleziona un farmaco", @@ -12118,7 +12116,6 @@ "unreadableLabel": "Sintomo illeggibile", "intensityPill": "{value}/10", "entry": { - "sheetTitle": "Registra sintomo", "sheetDescription": "Uno dei tuoi sintomi, quanto forte e quando.", "symptom": "Sintomo", "symptomRequired": "Scegli un sintomo.", diff --git a/messages/ko.json b/messages/ko.json index 3fc16b737..edf1f1df2 100644 --- a/messages/ko.json +++ b/messages/ko.json @@ -463,7 +463,6 @@ "signOut": "로그아웃하고 초대 수락하기" }, "createAccount": "계정 만들기", - "newAccount": "새 계정 만들기", "backToPasskey": "패스키로 돌아가기", "passkeySetupLater": "패스키는 설정에서 언제든 등록할 수 있어요.", "passwordMinLength": "최소 12자", @@ -583,7 +582,6 @@ "quickAddLifeEvent": "삶의 사건 기록", "customizeDashboard": "대시보드 맞춤 설정", "medicationIntakeQuickAdd": { - "sheetTitle": "복용 기록", "sheetDescription": "몇 번의 탭으로 약과 용량, 시각을 기록해요.", "medicationLabel": "약", "medicationPlaceholder": "약 선택", @@ -12118,7 +12116,6 @@ "unreadableLabel": "읽을 수 없는 증상", "intensityPill": "{value}/10", "entry": { - "sheetTitle": "증상 기록", "sheetDescription": "직접 정한 증상과 강도, 시각을 기록합니다.", "symptom": "증상", "symptomRequired": "증상을 선택하세요.", diff --git a/messages/pl.json b/messages/pl.json index f9487fb8f..b060b3a48 100644 --- a/messages/pl.json +++ b/messages/pl.json @@ -463,7 +463,6 @@ "signOut": "Wyloguj się i przyjmij zaproszenie" }, "createAccount": "Utwórz konto", - "newAccount": "Utwórz nowe konto", "backToPasskey": "Wróć do passkey", "passkeySetupLater": "Passkey możesz skonfigurować później w ustawieniach.", "passwordMinLength": "Min. 12 znaków", @@ -583,7 +582,6 @@ "quickAddLifeEvent": "Zapisz wydarzenie życiowe", "customizeDashboard": "Dostosuj pulpit", "medicationIntakeQuickAdd": { - "sheetTitle": "Zarejestruj przyjęcie leku", "sheetDescription": "Zapisz dawkę, godzinę i lek w kilku stuknięciach.", "medicationLabel": "Lek", "medicationPlaceholder": "Wybierz lek", @@ -12118,7 +12116,6 @@ "unreadableLabel": "Nieczytelny objaw", "intensityPill": "{value}/10", "entry": { - "sheetTitle": "Zapisz objaw", "sheetDescription": "Jeden z twoich objawów, jak silny i kiedy.", "symptom": "Objaw", "symptomRequired": "Wybierz objaw.", diff --git a/src/app/auth/register/page.tsx b/src/app/auth/register/page.tsx index 8b1bc9c34..e8cb2498f 100644 --- a/src/app/auth/register/page.tsx +++ b/src/app/auth/register/page.tsx @@ -175,14 +175,11 @@ export default function RegisterPage() {
-
-

- {t("auth.createAccount")} -

-

- {t("auth.newAccount")} -

-
+ {/* The title says it; a subtitle repeating "new account" said it + twice. */} +

+ {t("auth.createAccount")} +

{inviteToken && ( diff --git a/src/app/measurements/page.tsx b/src/app/measurements/page.tsx index 61bac9f8e..64e0d653a 100644 --- a/src/app/measurements/page.tsx +++ b/src/app/measurements/page.tsx @@ -182,7 +182,7 @@ export default function MeasurementsPage() { setReturnTo(null); } }} - title={t("measurements.addMeasurement")} + title={t("dashboard.quickAddMeasurement")} footer={
} > — every entry follows its module, as the capture p `${kind} ${JSON.stringify(modules)}`, ).toBe(picker.includes(kind)); } + // Same order as the picker, so the two ways in never disagree on + // where an entry sits. + const positions = picker.map((kind) => html.indexOf(label[kind])); + expect(positions).toEqual([...positions].sort((x, y) => x - y)); } }); }); diff --git a/src/components/dashboard/dashboard-header.tsx b/src/components/dashboard/dashboard-header.tsx index cbadbda00..1c7b2b481 100644 --- a/src/components/dashboard/dashboard-header.tsx +++ b/src/components/dashboard/dashboard-header.tsx @@ -190,12 +190,6 @@ export function DashboardHeader({ {t("dashboard.quickAddMeasurement")} )} - {canAddMood && ( - onQuickEntry("mood")}> - - )} {/* v1.4.37 W7b — third quick-add row: medication intake. Same Sheet-on-mobile / Dialog-on-desktop primitive as the other two; the menu label is a self-contained @@ -209,6 +203,12 @@ export function DashboardHeader({ {t("dashboard.quickAddMedicationIntake")} )} + {canAddMood && ( + onQuickEntry("mood")}> + + )} {canAddSymptom && ( onQuickEntry("symptom")}>