Name the arrangement settings hub "Layout"

The hub arranges and picks what the dashboard, insights and each module
show and holds no theme control, so "Appearance" promised something it
does not have. It reads "Layout" in every locale, and its subtitle says
what it does. In German "Darstellung" now names only the account page's
language-and-units card.
This commit is contained in:
Marc-André Bombeck committed 2026-10-08 20:47:55 +02:00
1 parent f648168266
commit a589e15f86
13 files changed
+40 -40

No files matched your search

+4 -4
View File
@@ -5331,9 +5331,9 @@
"channelsLink": "Zustellkanäle"
},
"layout": {
"title": "Darstellung",
"description": "Lege fest, wie Dashboard, Auswertungen und deine Tracking-Module dargestellt und angeordnet sind.",
"backToHub": "Zurück zu Darstellung",
"title": "Layout",
"description": "Lege fest, was Dashboard, Auswertungen und deine Tracking-Module zeigen und wie sie angeordnet sind.",
"backToHub": "Zurück zu Layout",
"dashboard": {
"title": "Dashboard",
"description": "Kachel-Layout und Reihenfolge."
@@ -5342,7 +5342,7 @@
"title": "Insights",
"description": "Reihenfolge der Übersicht und der Navigations-Pills."
},
"subtitle": "Lege fest, wie Dashboard, Auswertungen und Tracking-Module dargestellt werden.",
"subtitle": "Lege fest, was Dashboard, Auswertungen und Tracking-Module zeigen und in welcher Reihenfolge.",
"medications": {
"title": "Medikamente",
"description": "Listenansicht und manuelle Reihenfolge."
+4 -4
View File
@@ -5331,9 +5331,9 @@
"channelsLink": "Delivery channels"
},
"layout": {
"title": "Appearance",
"description": "Choose how the dashboard, insights, and your tracking modules look and are arranged.",
"backToHub": "Back to Appearance",
"title": "Layout",
"description": "Choose what the dashboard, insights and your tracking modules show, and how they are arranged.",
"backToHub": "Back to Layout",
"dashboard": {
"title": "Dashboard",
"description": "Tile layout and order."
@@ -5342,7 +5342,7 @@
"title": "Insights",
"description": "Overview sections and navigation-pill order."
},
"subtitle": "Personalize how your dashboard, insights, and tracking modules look.",
"subtitle": "Choose what your dashboard, insights and tracking modules show, and in which order.",
"medications": {
"title": "Medications",
"description": "List view and manual order."
+4 -4
View File
@@ -5331,9 +5331,9 @@
"channelsLink": "Canales de entrega"
},
"layout": {
"title": "Apariencia",
"description": "Elige cómo se ven y se organizan el panel, los análisis y tus módulos de seguimiento.",
"backToHub": "Volver a Apariencia",
"title": "Diseño",
"description": "Elige qué muestran el panel, los análisis y tus módulos de seguimiento, y cómo se organizan.",
"backToHub": "Volver a Diseño",
"dashboard": {
"title": "Panel",
"description": "Diseño y orden de los mosaicos."
@@ -5342,7 +5342,7 @@
"title": "Análisis",
"description": "Orden de la vista general y de las pestañas de navegación."
},
"subtitle": "Personaliza cómo se ven tu panel, los análisis y los módulos de seguimiento.",
"subtitle": "Elige qué muestran tu panel, los análisis y los módulos de seguimiento, y en qué orden.",
"medications": {
"title": "Medicamentos",
"description": "Vista de lista y orden manual."
+4 -4
View File
@@ -5331,9 +5331,9 @@
"channelsLink": "Canaux de diffusion"
},
"layout": {
"title": "Apparence",
"description": "Choisissez l'apparence et l'agencement du tableau de bord, des analyses et de vos modules de suivi.",
"backToHub": "Retour à Apparence",
"title": "Disposition",
"description": "Choisissez ce qu'affichent le tableau de bord, les analyses et vos modules de suivi, et leur agencement.",
"backToHub": "Retour à Disposition",
"dashboard": {
"title": "Tableau de bord",
"description": "Disposition et ordre des tuiles."
@@ -5342,7 +5342,7 @@
"title": "Analyses",
"description": "Ordre de la vue d'ensemble et des onglets de navigation."
},
"subtitle": "Personnalisez l'apparence du tableau de bord, des analyses et des modules de suivi.",
"subtitle": "Choisissez ce qu'affichent le tableau de bord, les analyses et les modules de suivi, et dans quel ordre.",
"medications": {
"title": "Médicaments",
"description": "Vue en liste et ordre manuel."
+4 -4
View File
@@ -5331,9 +5331,9 @@
"channelsLink": "Canali di recapito"
},
"layout": {
"title": "Aspetto",
"description": "Scegli l'aspetto e la disposizione di dashboard, approfondimenti e dei tuoi moduli di monitoraggio.",
"backToHub": "Torna ad Aspetto",
"title": "Layout",
"description": "Scegli cosa mostrano dashboard, approfondimenti e i tuoi moduli di monitoraggio, e come sono disposti.",
"backToHub": "Torna a Layout",
"dashboard": {
"title": "Cruscotto",
"description": "Layout e ordine dei riquadri."
@@ -5342,7 +5342,7 @@
"title": "Approfondimenti",
"description": "Ordine della panoramica e delle schede di navigazione."
},
"subtitle": "Personalizza l'aspetto di dashboard, approfondimenti e moduli di monitoraggio.",
"subtitle": "Scegli cosa mostrano dashboard, approfondimenti e moduli di monitoraggio, e in quale ordine.",
"medications": {
"title": "Farmaci",
"description": "Vista elenco e ordine manuale."
+2 -2
View File
@@ -5332,7 +5332,7 @@
},
"layout": {
"title": "화면 구성",
"description": "대시보드, 인사이트, 기록 모듈의 모습과 배치를 정해요.",
"description": "대시보드, 인사이트, 기록 모듈에 무엇을 보여주고 어떻게 배치할지 정해요.",
"backToHub": "화면 구성으로 돌아가기",
"dashboard": {
"title": "대시보드",
@@ -5342,7 +5342,7 @@
"title": "인사이트",
"description": "개요 섹션과 내비게이션 칩 순서."
},
"subtitle": "대시보드, 인사이트, 기록 모듈의 모습을 원하는 대로 바꿔요.",
"subtitle": "대시보드, 인사이트, 기록 모듈에 무엇을 어떤 순서로 보여줄지 정해요.",
"medications": {
"title": "복약",
"description": "목록 보기와 수동 순서."
+4 -4
View File
@@ -5331,9 +5331,9 @@
"channelsLink": "Kanały dostarczania"
},
"layout": {
"title": "Wygląd",
"description": "Ustal, jak wyglądają i są rozłożone pulpit, analizy i Twoje moduły śledzenia.",
"backToHub": "Powrót do Wygląd",
"title": "Układ",
"description": "Ustal, co pokazują pulpit, analizy i Twoje moduły śledzenia oraz jak są rozłożone.",
"backToHub": "Powrót do układu",
"dashboard": {
"title": "Pulpit",
"description": "Układ i kolejność kafelków."
@@ -5342,7 +5342,7 @@
"title": "Analizy",
"description": "Kolejność przeglądu i pigułek nawigacyjnych."
},
"subtitle": "Dostosuj wygląd pulpitu, analiz i modułów śledzenia.",
"subtitle": "Wybierz, co pokazują pulpit, analizy i moduły śledzenia oraz w jakiej kolejności.",
"medications": {
"title": "Leki",
"description": "Widok listy i ręczna kolejność."
@@ -1,5 +1,5 @@
/**
* v1.25.11 (#148) — the "Appearance" hub (slug stays `layout`).
* v1.25.11 (#148) — the "Layout" hub (slug stays `layout`).
*
* The hub is a navigable index: it lists each module as a clickable row
* (`<a href="/settings/layout/<id>">` with the localized title + description +
@@ -433,11 +433,11 @@ describe("<SettingsShell>", () => {
// `/notifications` inbox now shares the "Notifications" label.
expect(html).toContain("Notifications");
// v1.17.1 (F-2) — the view/arrangement editors are reached through one hub
// entry (route stays `/settings/layout`). v1.25.3 — the hub is renamed
// "Appearance" (DE "Darstellung") and indexes every module's view surface;
// the route is unchanged.
// entry (route stays `/settings/layout`). v1.42 — the hub is named
// "Layout": it arranges and picks what each module shows and holds no
// theme, so "Appearance" promised a control it does not have.
expect(html).toContain('href="/settings/layout"');
expect(html).toContain(">Appearance</a>");
expect(html).toContain(">Layout</a>");
// v1.25.3 — Channels folded into Notifications, so it is no longer a
// left-side entry; Sources keeps its own.
expect(html).not.toContain('href="/settings/channels"');
@@ -478,10 +478,10 @@ describe("<SettingsShell>", () => {
// inbox now shares the "Benachrichtigungen" label.
expect(html).toContain("Benachrichtigungen");
// v1.17.1 (F-2) — the view editors are reached through one hub entry
// (route stays `/settings/layout`). v1.25.3 — the German nav label reads
// "Darstellung" (Appearance) to match the renamed hub.
// (route stays `/settings/layout`). v1.42 — "Layout" in German too;
// "Darstellung" now names the account page's language-and-units card.
expect(html).toContain('href="/settings/layout"');
expect(html).toContain(">Darstellung</a>");
expect(html).toContain(">Layout</a>");
// v1.25.3 — Channels ("Kanäle") folded into Notifications; Sources keeps
// its own left-side entry.
expect(html).not.toContain('href="/settings/channels"');
@@ -1,7 +1,7 @@
"use client";
/**
* Settings → Appearance → Documents.
* Settings → Layout → Documents.
*
* Reached from the wrench beside the vault's Upload button, the way the
* illness journal's wrench reaches its own page. Two choices, each in its own
+2 -2
View File
@@ -12,7 +12,7 @@ import { DocumentsSection } from "./documents-section";
import { VorsorgeSection } from "./vorsorge-section";
/**
* v1.25.11 (#148) — single source of truth for the "Appearance" (slug
* v1.25.11 (#148) — single source of truth for the "Layout" (slug
* `layout`) hub + its per-module subpages.
*
* "How my app looks and is arranged" was scattered across several unrelated
@@ -21,7 +21,7 @@ import { VorsorgeSection } from "./vorsorge-section";
* back into a HUB → SUBPAGE model: `/settings/layout` lists the modules as
* clickable rows, and each row opens `/settings/layout/<id>`, which renders
* ONLY that module's section (the same existing section component, verbatim)
* with a "← Appearance" back-link.
* with a "← Layout" back-link.
*
* This module is intentionally NOT `"use client"`: the client hub
* (`layout-section.tsx`) AND the server subpage route
@@ -11,7 +11,7 @@ import { useTranslations } from "@/lib/i18n/context";
import type { ModuleKey } from "@/lib/modules/registry";
/**
* Client gate for an Appearance subpage (`/settings/layout/<module>`).
* Client gate for a Layout subpage (`/settings/layout/<module>`).
*
* The subpage is a real URL a person can land on (a bookmark, the hub's own
* link, a link somebody sent) with its module switched off. It answers in
+2 -2
View File
@@ -11,14 +11,14 @@ import { isSurfaceVisible } from "@/lib/modules/surface";
import { LAYOUT_GROUPS } from "./layout-groups";
/**
* v1.25.11 (#148) — the "Appearance" hub (slug stays `layout`).
* v1.25.11 (#148) — the "Layout" hub (slug stays `layout`).
*
* The hub is a navigable index, NOT a stacked composition: it lists each
* module as a clickable row (title + description + chevron) that opens the
* module's own subpage at `/settings/layout/<id>`. Nothing is stacked inline;
* the per-module view/sort surfaces live on their subpages so the hub reads as
* a short, scannable directory. The visible page heading + subtitle
* ("Appearance" / "Personalize how …") are painted by `SettingsShell` from the
* ("Layout" / "Choose what …") are painted by `SettingsShell` from the
* `layout` slug; this body renders only the row list.
*
* Per-module gating fails OPEN (`!== false`): a missing key reads as enabled so