From ee7dbd99b8d4a5a028bfc50f04e879f4e27c54b6 Mon Sep 17 00:00:00 2001 From: Albrecht Degering Date: Wed, 9 Sep 2026 02:04:14 +0200 Subject: [PATCH] fix(ui): align contextual documentation with headings Verified with the coordinated workspace changes by devkit full run 2026-09-08T225814-186389-0000-3e3ed7cd (all seven phases passed). This shared UI pass does not mark the individual module reviews complete. --- src/govoplan_tasks/backend/manifest.py | 9 +++++++-- tests/test_webui_contract.py | 7 ++++++- webui/src/features/tasks/TasksPage.tsx | 4 ++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/govoplan_tasks/backend/manifest.py b/src/govoplan_tasks/backend/manifest.py index 2fc5df4..67b9786 100644 --- a/src/govoplan_tasks/backend/manifest.py +++ b/src/govoplan_tasks/backend/manifest.py @@ -140,7 +140,9 @@ DOCUMENTATION = ( id="tasks.workspace-layout", title="Tasks workspace actions", summary="Find collection-wide commands in their consistent workspace position.", - body="Reload and Create task use the persistent full-width workspace header at the upper right; Reload sits immediately before creation. Selecting a record, changing filters, or opening an editor does not move these collection-wide commands into the left pane. Search and status filters stay in the task list; completion, ownership, and other task-specific actions remain with the selected task. Existing permissions, disabled-state rules, and unsaved-change guards still apply. Administrators configure authority through the existing permission system; no new permission or automatic operation is introduced.", + body="Documentation books sit immediately beside the visible heading or contextual label for " + "Tasks, not among operational action buttons. Field help remains beside its label. " + "Reload and Create task use the persistent full-width workspace header at the upper right; Reload sits immediately before creation. Selecting a record, changing filters, or opening an editor does not move these collection-wide commands into the left pane. Search and status filters stay in the task list; completion, ownership, and other task-specific actions remain with the selected task. Existing permissions, disabled-state rules, and unsaved-change guards still apply. Administrators configure authority through the existing permission system; no new permission or automatic operation is introduced.", layer="static", documentation_types=("user", "admin"), audience=("user", "module_admin", "operator"), @@ -148,7 +150,10 @@ DOCUMENTATION = ( translations={"de": { "title": "Aufgaben: Aktionen im Arbeitsbereich", "summary": "Sammlungsweite Aktionen an ihrer einheitlichen Position im Arbeitsbereich finden.", - "body": "Neu laden und Aufgabe anlegen stehen oben rechts in der dauerhaft sichtbaren, arbeitsbereichsweiten Leiste; Neu laden steht unmittelbar vor dem Anlegen. Auswahl, Filterwechsel und Bearbeitung verschieben diese sammlungsweiten Aktionen nicht in den linken Bereich. Suche und Statusfilter bleiben in der Aufgabenliste; Abschluss, Zuständigkeit und weitere aufgabenspezifische Aktionen bleiben bei der ausgewählten Aufgabe. Bestehende Berechtigungen, Deaktivierungsregeln und der Schutz ungespeicherter Änderungen gelten weiterhin. Administratoren konfigurieren Rechte im bestehenden Berechtigungssystem; es entstehen weder neue Rechte noch automatische Vorgänge.", + "body": "Dokumentationsbücher stehen unmittelbar neben der sichtbaren Überschrift oder " + "Kontextbezeichnung für Aufgaben, nicht zwischen ausführbaren Aktionsschaltflächen. Feldhilfe " + "bleibt neben der Feldbezeichnung. " + "Neu laden und Aufgabe anlegen stehen oben rechts in der dauerhaft sichtbaren, arbeitsbereichsweiten Leiste; Neu laden steht unmittelbar vor dem Anlegen. Auswahl, Filterwechsel und Bearbeitung verschieben diese sammlungsweiten Aktionen nicht in den linken Bereich. Suche und Statusfilter bleiben in der Aufgabenliste; Abschluss, Zuständigkeit und weitere aufgabenspezifische Aktionen bleiben bei der ausgewählten Aufgabe. Bestehende Berechtigungen, Deaktivierungsregeln und der Schutz ungespeicherter Änderungen gelten weiterhin. Administratoren konfigurieren Rechte im bestehenden Berechtigungssystem; es entstehen weder neue Rechte noch automatische Vorgänge.", }}, ), DocumentationTopic( diff --git a/tests/test_webui_contract.py b/tests/test_webui_contract.py index c28588f..7ca8c34 100644 --- a/tests/test_webui_contract.py +++ b/tests/test_webui_contract.py @@ -16,7 +16,12 @@ class TasksQuickAccessContractTests(unittest.TestCase): topics = get_manifest().documentation kinds = {topic.metadata.get("kind", "system") for topic in topics} - self.assertEqual(3, len(topics)) + self.assertEqual({ + "tasks.workspace-layout", + "tasks.data-subject-requests", + "tasks.quick-access-and-product-area", + "tasks.work-inbox", + }, {topic.id for topic in topics}) self.assertTrue({"workflow", "reference"}.issubset(kinds)) for topic in topics: translation = topic.translations["de"] diff --git a/webui/src/features/tasks/TasksPage.tsx b/webui/src/features/tasks/TasksPage.tsx index 5f61cc6..9a5842f 100644 --- a/webui/src/features/tasks/TasksPage.tsx +++ b/webui/src/features/tasks/TasksPage.tsx @@ -203,8 +203,8 @@ export default function TasksPage({ settings, auth }: { settings: ApiSettings; a variant="detail" className="tasks-topbar" data-help-context-id="tasks.page.detail" - contextActions={{selected?.title ?? "i18n:govoplan-tasks.work_details"}} - helpAction={} + title={} + titleHelp={} primaryActions={selected?.provider_id === "tasks.explicit" && canWrite ? ( action === "defer" ? setDeferOpen(true) : void runAction(action)} /> ) : undefined}