refactor(checkups): rename the preventive-care slug to /checkups

Move the preventive-care surface from the German-derived slug /vorsorge to
the English /checkups and make the feature read consistently across locales.
The route directory, the nav entry, the dashboard card link, and the
onboarding tour step now point at /checkups. A permanent redirect keeps old
bookmarks, the PWA's cached navigation, and push deep-links resolving.

Display label is now "Checkups" in English and the equivalent term in
Spanish (Revisiones), French (Examens), Italian (Controlli), and Polish
(Badania); German keeps "Vorsorge". The internal id stays "vorsorge" so
saved layouts, module-order preferences, and tour state keep resolving
without a data migration.
This commit is contained in:
Marc-André Bombeck committed 2026-06-27 12:48:04 +02:00
1 parent 74d94e3473
commit a9892e9586
12 files changed
+91 -76

No files matched your search

+12 -12
View File
@@ -238,7 +238,7 @@
},
"cycle": "Cycle",
"labs": "Labs",
"vorsorge": "Preventive Care",
"vorsorge": "Checkups",
"illness": "Illness"
},
"auth": {
@@ -3677,8 +3677,8 @@
"body": "The illness journal records acute episodes and chronic diagnoses with their flares. Hidden: correlate an episode with your readings, and Rest Mode that pauses reminders. That’s how the Coach understands why values drift for a while."
},
"vorsorge": {
"title": "Preventive care",
"body": "Preventive care reminds you of check-ups and vaccinations on their own interval. Tip: “Done” can create a reading or a lab result directly. Due items appear as reminders and in the doctor report."
"title": "Checkups",
"body": "Checkups remind you of screenings and vaccinations on their own interval. Tip: “Done” can create a reading or a lab result directly. Due items appear as reminders and in the doctor report."
},
"cycle": {
"title": "Cycle",
@@ -3702,7 +3702,7 @@
},
"export": {
"title": "Doctor report",
"body": "The doctor report bundles readings, medications, lab values, and preventive care as PDF or FHIR for the appointment. This is where every module converges — a complete report only comes from well-kept data."
"body": "The doctor report bundles readings, medications, lab values, and checkups as PDF or FHIR for the appointment. This is where every module converges — a complete report only comes from well-kept data."
},
"achievements": {
"title": "Achievements",
@@ -4132,8 +4132,8 @@
"subtitle": "Manage the view and order of episodes."
},
"vorsorge": {
"title": "Preventive care",
"description": "View, order, and individual preventive-care reminders.",
"title": "Checkups",
"description": "View, order, and individual checkup reminders.",
"subtitle": "Manage the view, order, and individual reminders."
},
"modules": {
@@ -6483,13 +6483,13 @@
"selectionBarLabel": "Selection actions"
},
"measurementReminders": {
"sectionTitle": "Preventive care",
"sectionTitle": "Checkups",
"sectionDescription": "Reminders for what to measure or check, when, and where.",
"addButton": "Add reminder",
"markDone": "Done",
"delete": "Delete",
"deleteConfirmTitle": "Delete reminder?",
"deleteConfirmDescription": "This preventive-care reminder will be permanently deleted.",
"deleteConfirmDescription": "This checkup reminder will be permanently deleted.",
"disabledBadge": "Off",
"nextDue": {
"none": "Not scheduled",
@@ -6551,7 +6551,7 @@
"rruleHint": "RFC-5545, e.g. FREQ=YEARLY for an annual check.",
"firstDue": "First due (optional)"
},
"pushTitle": "Preventive-care reminder",
"pushTitle": "Checkup reminder",
"pushBody": "Time for: {label}",
"pushLocation": "(at {location})",
"edit": "Edit",
@@ -6562,7 +6562,7 @@
"measureNow": "Measure now",
"nextDueLabel": "Next due:",
"lastDoneLabel": "Last done:",
"customize": "Customize preventive care",
"customize": "Customize checkups",
"adherence": {
"label": "Within interval",
"onTrack": "On track",
@@ -6578,8 +6578,8 @@
"empty": "No reminders to customize yet."
},
"dashboard": {
"empty": "No upcoming preventive-care reminders.",
"openLink": "Open preventive care"
"empty": "No upcoming checkup reminders.",
"openLink": "Open checkups"
},
"showMeasurements": "Show measurements"
},
+12 -12
View File
@@ -238,7 +238,7 @@
},
"cycle": "Ciclo",
"labs": "Análisis",
"vorsorge": "Prevención",
"vorsorge": "Revisiones",
"illness": "Enfermedad"
},
"auth": {
@@ -3677,8 +3677,8 @@
"body": "El diario de enfermedades registra episodios agudos y diagnósticos crónicos con sus brotes. Oculto: correlacionar un episodio con tus mediciones y el Modo descanso que pausa los recordatorios. Así el Coach entiende por qué los valores varían un tiempo."
},
"vorsorge": {
"title": "Prevención",
"body": "Prevención te recuerda revisiones y vacunas con su propio intervalo. Consejo: «Hecho» puede crear directamente una medición o un resultado de laboratorio. Lo pendiente aparece como recordatorio y en el informe médico."
"title": "Revisiones",
"body": "Las revisiones te recuerdan controles y vacunas con su propio intervalo. Consejo: «Hecho» puede crear directamente una medición o un resultado de laboratorio. Lo pendiente aparece como recordatorio y en el informe médico."
},
"cycle": {
"title": "Ciclo",
@@ -3702,7 +3702,7 @@
},
"export": {
"title": "Informe médico",
"body": "El informe médico reúne mediciones, medicación, valores de laboratorio y prevención en PDF o FHIR para la cita. Aquí convergen todos los módulos: un informe completo solo sale de datos bien cuidados."
"body": "El informe médico reúne mediciones, medicación, valores de laboratorio y revisiones en PDF o FHIR para la cita. Aquí convergen todos los módulos: un informe completo solo sale de datos bien cuidados."
},
"achievements": {
"title": "Logros",
@@ -4132,8 +4132,8 @@
"subtitle": "Gestiona la vista y el orden de los episodios."
},
"vorsorge": {
"title": "Prevención",
"description": "Vista, orden y recordatorios de prevención individuales.",
"title": "Revisiones",
"description": "Vista, orden y recordatorios de revisión individuales.",
"subtitle": "Gestiona la vista, el orden y los recordatorios individuales."
},
"modules": {
@@ -6483,13 +6483,13 @@
"selectionBarLabel": "Acciones de selección"
},
"measurementReminders": {
"sectionTitle": "Prevención",
"sectionTitle": "Revisiones",
"sectionDescription": "Recordatorios de qué medir o revisar, cuándo y dónde.",
"addButton": "Añadir recordatorio",
"markDone": "Hecho",
"delete": "Eliminar",
"deleteConfirmTitle": "¿Eliminar recordatorio?",
"deleteConfirmDescription": "Este recordatorio de prevención se eliminará de forma permanente.",
"deleteConfirmDescription": "Este recordatorio de revisión se eliminará de forma permanente.",
"disabledBadge": "Apagado",
"nextDue": {
"none": "Sin programar",
@@ -6551,7 +6551,7 @@
"rruleHint": "RFC-5545, p. ej. FREQ=YEARLY para una revisión anual.",
"firstDue": "Primer vencimiento (opcional)"
},
"pushTitle": "Recordatorio de prevención",
"pushTitle": "Recordatorio de revisión",
"pushBody": "Toca: {label}",
"pushLocation": "(en {location})",
"edit": "Editar",
@@ -6562,7 +6562,7 @@
"measureNow": "Medir ahora",
"nextDueLabel": "Próximo vencimiento:",
"lastDoneLabel": "Última vez:",
"customize": "Personalizar prevención",
"customize": "Personalizar revisiones",
"adherence": {
"label": "Dentro del intervalo",
"onTrack": "Al día",
@@ -6578,8 +6578,8 @@
"empty": "Aún no hay recordatorios para personalizar."
},
"dashboard": {
"empty": "No hay recordatorios de prevención próximos.",
"openLink": "Abrir prevención"
"empty": "No hay revisiones próximas.",
"openLink": "Abrir revisiones"
},
"showMeasurements": "Ver mediciones"
},
+12 -12
View File
@@ -238,7 +238,7 @@
},
"cycle": "Cycle",
"labs": "Analyses",
"vorsorge": "Prévention",
"vorsorge": "Examens",
"illness": "Maladie"
},
"auth": {
@@ -3677,8 +3677,8 @@
"body": "Le journal des maladies consigne les épisodes aigus et les diagnostics chroniques avec leurs poussées. Caché : corréler un épisode à vos mesures et le Mode repos qui suspend les rappels. Le Coach comprend ainsi pourquoi les valeurs dérivent un temps."
},
"vorsorge": {
"title": "Prévention",
"body": "Prévention vous rappelle examens et vaccins selon leur propre intervalle. Astuce : « Fait » peut créer directement une mesure ou un résultat de laboratoire. Les échéances apparaissent en rappels et dans le rapport médical."
"title": "Examens",
"body": "Les examens vous rappellent dépistages et vaccins selon leur propre intervalle. Astuce : « Fait » peut créer directement une mesure ou un résultat de laboratoire. Les échéances apparaissent en rappels et dans le rapport médical."
},
"cycle": {
"title": "Cycle",
@@ -3702,7 +3702,7 @@
},
"export": {
"title": "Rapport médical",
"body": "Le rapport médical regroupe mesures, médicaments, valeurs de laboratoire et prévention en PDF ou FHIR pour le rendez-vous. Tous les modules convergent ici — un rapport complet ne vient que de données bien tenues."
"body": "Le rapport médical regroupe mesures, médicaments, valeurs de laboratoire et examens en PDF ou FHIR pour le rendez-vous. Tous les modules convergent ici — un rapport complet ne vient que de données bien tenues."
},
"achievements": {
"title": "Réussites",
@@ -4132,8 +4132,8 @@
"subtitle": "Gérez l’affichage et l’ordre des épisodes."
},
"vorsorge": {
"title": "Prévention",
"description": "Affichage, ordre et rappels de prévention individuels.",
"title": "Examens",
"description": "Affichage, ordre et rappels d’examen individuels.",
"subtitle": "Gérez l’affichage, l’ordre et les rappels individuels."
},
"modules": {
@@ -6483,13 +6483,13 @@
"selectionBarLabel": "Actions de sélection"
},
"measurementReminders": {
"sectionTitle": "Prévention",
"sectionTitle": "Examens",
"sectionDescription": "Rappels de ce qu'il faut mesurer ou vérifier, quand et où.",
"addButton": "Ajouter un rappel",
"markDone": "Terminé",
"delete": "Supprimer",
"deleteConfirmTitle": "Supprimer le rappel ?",
"deleteConfirmDescription": "Ce rappel de prévention sera définitivement supprimé.",
"deleteConfirmDescription": "Ce rappel d’examen sera définitivement supprimé.",
"disabledBadge": "Désactivé",
"nextDue": {
"none": "Non planifié",
@@ -6551,7 +6551,7 @@
"rruleHint": "RFC-5545, p. ex. FREQ=YEARLY pour un contrôle annuel.",
"firstDue": "Première échéance (facultatif)"
},
"pushTitle": "Rappel de prévention",
"pushTitle": "Rappel d’examen",
"pushBody": "C'est l'heure : {label}",
"pushLocation": "(chez {location})",
"edit": "Modifier",
@@ -6562,7 +6562,7 @@
"measureNow": "Mesurer maintenant",
"nextDueLabel": "Prochaine échéance :",
"lastDoneLabel": "Dernière fois :",
"customize": "Personnaliser la prévention",
"customize": "Personnaliser les examens",
"adherence": {
"label": "Dans l'intervalle",
"onTrack": "Dans les temps",
@@ -6578,8 +6578,8 @@
"empty": "Aucun rappel à personnaliser pour l'instant."
},
"dashboard": {
"empty": "Aucun rappel de prévention à venir.",
"openLink": "Ouvrir la prévention"
"empty": "Aucun rappel d’examen à venir.",
"openLink": "Ouvrir les examens"
},
"showMeasurements": "Afficher les mesures"
},
+12 -12
View File
@@ -238,7 +238,7 @@
},
"cycle": "Ciclo",
"labs": "Esami",
"vorsorge": "Prevenzione",
"vorsorge": "Controlli",
"illness": "Malattia"
},
"auth": {
@@ -3677,8 +3677,8 @@
"body": "Il diario delle malattie registra episodi acuti e diagnosi croniche con le loro riacutizzazioni. Nascosto: correlare un episodio alle tue misurazioni e la Modalità riposo che mette in pausa i promemoria. Così il Coach capisce perché i valori variano per un periodo."
},
"vorsorge": {
"title": "Prevenzione",
"body": "Prevenzione ti ricorda controlli e vaccinazioni con un proprio intervallo. Suggerimento: «Fatto» può creare direttamente una misurazione o un risultato di laboratorio. Le scadenze compaiono come promemoria e nel referto medico."
"title": "Controlli",
"body": "I controlli ti ricordano screening e vaccinazioni con un proprio intervallo. Suggerimento: «Fatto» può creare direttamente una misurazione o un risultato di laboratorio. Le scadenze compaiono come promemoria e nel referto medico."
},
"cycle": {
"title": "Ciclo",
@@ -3702,7 +3702,7 @@
},
"export": {
"title": "Referto medico",
"body": "Il referto medico raccoglie misurazioni, farmaci, valori di laboratorio e prevenzione in PDF o FHIR per la visita. Qui convergono tutti i moduli: un referto completo nasce solo da dati ben curati."
"body": "Il referto medico raccoglie misurazioni, farmaci, valori di laboratorio e controlli in PDF o FHIR per la visita. Qui convergono tutti i moduli: un referto completo nasce solo da dati ben curati."
},
"achievements": {
"title": "Traguardi",
@@ -4132,8 +4132,8 @@
"subtitle": "Gestisci la vista e l’ordine degli episodi."
},
"vorsorge": {
"title": "Prevenzione",
"description": "Vista, ordine e singoli promemoria di prevenzione.",
"title": "Controlli",
"description": "Vista, ordine e singoli promemoria di controllo.",
"subtitle": "Gestisci la vista, l’ordine e i singoli promemoria."
},
"modules": {
@@ -6483,13 +6483,13 @@
"selectionBarLabel": "Azioni di selezione"
},
"measurementReminders": {
"sectionTitle": "Prevenzione",
"sectionTitle": "Controlli",
"sectionDescription": "Promemoria su cosa misurare o controllare, quando e dove.",
"addButton": "Aggiungi promemoria",
"markDone": "Fatto",
"delete": "Elimina",
"deleteConfirmTitle": "Eliminare il promemoria?",
"deleteConfirmDescription": "Questo promemoria di prevenzione verrà eliminato definitivamente.",
"deleteConfirmDescription": "Questo promemoria di controllo verrà eliminato definitivamente.",
"disabledBadge": "Disattivato",
"nextDue": {
"none": "Non pianificato",
@@ -6551,7 +6551,7 @@
"rruleHint": "RFC-5545, es. FREQ=YEARLY per un controllo annuale.",
"firstDue": "Prima scadenza (facoltativo)"
},
"pushTitle": "Promemoria di prevenzione",
"pushTitle": "Promemoria di controllo",
"pushBody": "È ora di: {label}",
"pushLocation": "(presso {location})",
"edit": "Modifica",
@@ -6562,7 +6562,7 @@
"measureNow": "Misura ora",
"nextDueLabel": "Prossima scadenza:",
"lastDoneLabel": "Ultima volta:",
"customize": "Personalizza prevenzione",
"customize": "Personalizza controlli",
"adherence": {
"label": "Nell'intervallo",
"onTrack": "In linea",
@@ -6578,8 +6578,8 @@
"empty": "Nessun promemoria da personalizzare."
},
"dashboard": {
"empty": "Nessun promemoria di prevenzione in arrivo.",
"openLink": "Apri prevenzione"
"empty": "Nessun promemoria di controllo in arrivo.",
"openLink": "Apri controlli"
},
"showMeasurements": "Mostra le misurazioni"
},
+12 -12
View File
@@ -238,7 +238,7 @@
},
"cycle": "Cykl",
"labs": "Wyniki badań",
"vorsorge": "Profilaktyka",
"vorsorge": "Badania",
"illness": "Choroba"
},
"auth": {
@@ -3677,8 +3677,8 @@
"body": "Dziennik chorób zapisuje ostre epizody i przewlekłe diagnozy wraz z zaostrzeniami. Ukryte: korelacja epizodu z pomiarami oraz Tryb odpoczynku wstrzymujący przypomnienia. Dzięki temu Coach rozumie, czemu wartości przez chwilę odbiegają."
},
"vorsorge": {
"title": "Profilaktyka",
"body": "Profilaktyka przypomina o badaniach i szczepieniach z własnym interwałem. Wskazówka: „Wykonane” może od razu utworzyć pomiar lub wynik laboratoryjny. Terminy pojawiają się jako przypomnienia i w raporcie dla lekarza."
"title": "Badania",
"body": "Badania przypominają o przeglądach i szczepieniach z własnym interwałem. Wskazówka: „Wykonane” może od razu utworzyć pomiar lub wynik laboratoryjny. Terminy pojawiają się jako przypomnienia i w raporcie dla lekarza."
},
"cycle": {
"title": "Cykl",
@@ -3702,7 +3702,7 @@
},
"export": {
"title": "Raport dla lekarza",
"body": "Raport dla lekarza łączy pomiary, leki, wyniki laboratoryjne i profilaktykę w PDF lub FHIR na wizytę. Tu zbiegają się wszystkie moduły — pełny raport powstaje tylko z zadbanych danych."
"body": "Raport dla lekarza łączy pomiary, leki, wyniki laboratoryjne i badania w PDF lub FHIR na wizytę. Tu zbiegają się wszystkie moduły — pełny raport powstaje tylko z zadbanych danych."
},
"achievements": {
"title": "Osiągnięcia",
@@ -4132,8 +4132,8 @@
"subtitle": "Zarządzaj widokiem i kolejnością epizodów."
},
"vorsorge": {
"title": "Profilaktyka",
"description": "Widok, kolejność i poszczególne przypomnienia profilaktyczne.",
"title": "Badania",
"description": "Widok, kolejność i poszczególne przypomnienia o badaniach.",
"subtitle": "Zarządzaj widokiem, kolejnością i poszczególnymi przypomnieniami."
},
"modules": {
@@ -6483,13 +6483,13 @@
"selectionBarLabel": "Akcje zaznaczenia"
},
"measurementReminders": {
"sectionTitle": "Profilaktyka",
"sectionTitle": "Badania",
"sectionDescription": "Przypomnienia, co, kiedy i gdzie zmierzyć lub sprawdzić.",
"addButton": "Dodaj przypomnienie",
"markDone": "Gotowe",
"delete": "Usuń",
"deleteConfirmTitle": "Usunąć przypomnienie?",
"deleteConfirmDescription": "To przypomnienie profilaktyczne zostanie trwale usunięte.",
"deleteConfirmDescription": "To przypomnienie o badaniu zostanie trwale usunięte.",
"disabledBadge": "Wył.",
"nextDue": {
"none": "Niezaplanowane",
@@ -6551,7 +6551,7 @@
"rruleHint": "RFC-5545, np. FREQ=YEARLY dla corocznego badania.",
"firstDue": "Pierwszy termin (opcjonalnie)"
},
"pushTitle": "Przypomnienie profilaktyczne",
"pushTitle": "Przypomnienie o badaniu",
"pushBody": "Czas na: {label}",
"pushLocation": "(u {location})",
"edit": "Edytuj",
@@ -6562,7 +6562,7 @@
"measureNow": "Zmierz teraz",
"nextDueLabel": "Następny termin:",
"lastDoneLabel": "Ostatnio wykonano:",
"customize": "Dostosuj profilaktykę",
"customize": "Dostosuj badania",
"adherence": {
"label": "W interwale",
"onTrack": "Zgodnie z planem",
@@ -6578,8 +6578,8 @@
"empty": "Brak przypomnień do dostosowania."
},
"dashboard": {
"empty": "Brak nadchodzących przypomnień profilaktycznych.",
"openLink": "Otwórz profilaktykę"
"empty": "Brak nadchodzących przypomnień o badaniach.",
"openLink": "Otwórz badania"
},
"showMeasurements": "Pokaż pomiary"
},
+15
View File
@@ -134,6 +134,21 @@ const nextConfig: NextConfig = {
destination: "/settings/notifications",
permanent: true,
},
// v1.22.0 — the preventive-care surface moved from the German slug
// `/vorsorge` to the English `/checkups` (the feature reads "Checkups"
// in every non-German locale now). 301-redirect so bookmarks, the PWA's
// cached navigation, and any push deep-link keep resolving. The
// persisted internal id stays `vorsorge`; only the URL changes.
{
source: "/vorsorge",
destination: "/checkups",
permanent: true,
},
{
source: "/vorsorge/:path*",
destination: "/checkups/:path*",
permanent: true,
},
];
},
async headers() {
@@ -12,7 +12,7 @@ import { VorsorgeSection } from "@/components/measurement-reminders/vorsorge-sec
import { queryKeys } from "@/lib/query-keys";
/**
* v1.17.1 — Vorsorge (preventive-care) reminders page. The dedicated
* v1.17.1 — Checkups (preventive-care) reminders page. The dedicated
* feature surface for "wann muss ich was wo machen". Auth-gated; the
* section component owns the list + create flow.
*
@@ -20,7 +20,7 @@ import { queryKeys } from "@/lib/query-keys";
* measurements): a pull invalidates the measurement-reminders read so the
* list + server-computed next-due repaint.
*/
export default function VorsorgePage() {
export default function CheckupsPage() {
const { isAuthenticated, isLoading } = useAuth();
const mounted = useMounted();
const queryClient = useQueryClient();
@@ -45,17 +45,17 @@ describe("nav-model destination list", () => {
}
});
it("gives Vorsorge a top-level nav home in the clinical spine (N-3)", () => {
it("gives Checkups a top-level nav home in the clinical spine (N-3)", () => {
const hrefs = NAV_DESTINATIONS.map((d) => d.href);
expect(hrefs).toContain("/vorsorge");
const vorsorge = NAV_DESTINATIONS.find((d) => d.href === "/vorsorge");
expect(hrefs).toContain("/checkups");
const vorsorge = NAV_DESTINATIONS.find((d) => d.href === "/checkups");
expect(vorsorge?.tKey).toBe("nav.vorsorge");
// v1.19.1 (S4) — the fixed spine is Medications → Vorsorge → Labs →
// Illness → Insights, so Vorsorge sits after Medications and before Labs.
// v1.19.1 (S4) — the fixed spine is Medications → Checkups → Labs →
// Illness → Insights, so Checkups sits after Medications and before Labs.
expect(hrefs.indexOf("/medications")).toBeLessThan(
hrefs.indexOf("/vorsorge"),
hrefs.indexOf("/checkups"),
);
expect(hrefs.indexOf("/vorsorge")).toBeLessThan(hrefs.indexOf("/labs"));
expect(hrefs.indexOf("/checkups")).toBeLessThan(hrefs.indexOf("/labs"));
expect(hrefs.indexOf("/labs")).toBeLessThan(hrefs.indexOf("/insights"));
});
@@ -170,7 +170,7 @@ describe("visibleNavDestinations module gate", () => {
expect(emptyMap).toContain("/measurements");
expect(emptyMap).toContain("/medications");
expect(emptyMap).toContain("/insights");
expect(emptyMap).toContain("/vorsorge");
expect(emptyMap).toContain("/checkups");
});
});
@@ -210,7 +210,7 @@ describe("mobileMoreHubDestinations — the F-1 mobile invariant (N-2)", () => {
// Feature surfaces that left the always-visible strip stay reachable.
expect(hub).toContain("/measurements");
expect(hub).toContain("/mood");
expect(hub).toContain("/vorsorge");
expect(hub).toContain("/checkups");
// The shared utility tail rides at the end.
expect(hub).toContain("/bugreport");
expect(hub).toContain("/settings/account");
@@ -142,7 +142,7 @@ describe("<SidebarNav> module gating (v1.18.0)", () => {
expect(html).toContain('href="/measurements"');
expect(html).toContain('href="/medications"');
expect(html).toContain('href="/insights"');
expect(html).toContain('href="/vorsorge"');
expect(html).toContain('href="/checkups"');
});
it("renders a module's nav entry when its module is enabled", () => {
+1 -1
View File
@@ -104,7 +104,7 @@ export const NAV_DESTINATIONS: ReadonlyArray<NavDestination> = [
// render — not buried three taps deep under Settings → Reminders. The
// Reminders hub still links to it; this is the direct front door.
{
href: "/vorsorge",
href: "/checkups",
tKey: "nav.vorsorge",
icon: Stethoscope,
tourId: "nav-vorsorge",
@@ -5,7 +5,7 @@
*
* A compact chart-row card listing the next few due reminders with an
* inline primary action per row — the same done-vs-capture branch the
* dedicated `/vorsorge` page surfaces, scaled down for the dashboard.
* dedicated `/checkups` page surfaces, scaled down for the dashboard.
* A free-text / self-planned exam marks done silently; a measurement-
* linked reminder opens the real measurement-entry form and satisfies
* the reminder in the same action.
@@ -109,7 +109,7 @@ export function VorsorgeDashboardCard() {
{t("measurementReminders.dashboard.empty")}
</p>
<Button asChild variant="outline" size="sm">
<Link href="/vorsorge">
<Link href="/checkups">
{t("measurementReminders.dashboard.openLink")}
</Link>
</Button>
+1 -1
View File
@@ -137,7 +137,7 @@ const ALL_STOPS: readonly TourStop[] = [
id: "vorsorge",
targetId: "vorsorge-hero",
placement: "bottom",
route: "/vorsorge",
route: "/checkups",
titleKey: "onboarding.tour.steps.vorsorge.title",
bodyKey: "onboarding.tour.steps.vorsorge.body",
},