From 4d570b5e9e6967e2cce445097b8a2d4adbbeed81 Mon Sep 17 00:00:00 2001 From: Albrecht Degering Date: Wed, 9 Sep 2026 02:03:41 +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_dataflow/backend/manifest.py | 9 +++++++-- tests/test_interface_documentation_contract.py | 3 ++- webui/src/features/dataflow/DataflowPage.tsx | 8 ++++---- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/govoplan_dataflow/backend/manifest.py b/src/govoplan_dataflow/backend/manifest.py index e689a7d..48bc526 100644 --- a/src/govoplan_dataflow/backend/manifest.py +++ b/src/govoplan_dataflow/backend/manifest.py @@ -250,7 +250,9 @@ DOCUMENTATION = localize_documentation_topics(( id="dataflow.workspace-layout", title="Dataflow workspace actions", summary="Find collection-wide commands in their consistent workspace position.", - body="Reload and New pipeline 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. SQL editing, validation, previews, saving, and execution keep their existing editor scope and bounded safety rules. 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="The workspace documentation book sits beside Pipelines; automation and run help sits beside " + "the corresponding dialog title, and field help stays with its label. " + "Reload and New pipeline 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. SQL editing, validation, previews, saving, and execution keep their existing editor scope and bounded safety rules. 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"), @@ -258,7 +260,10 @@ DOCUMENTATION = localize_documentation_topics(( translations={"de": { "title": "Datenflüsse: Aktionen im Arbeitsbereich", "summary": "Sammlungsweite Aktionen an ihrer einheitlichen Position im Arbeitsbereich finden.", - "body": "Neu laden und Neue Pipeline 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. SQL-Bearbeitung, Validierung, Vorschau, Speichern und Ausführung behalten ihren bisherigen Editorbereich und ihre begrenzenden Sicherheitsregeln. 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": "Das Dokumentationsbuch des Arbeitsbereichs steht neben Pipelines; Hilfe zu Automatisierung " + "und Ausführung steht neben dem jeweiligen Dialogtitel, und Feldhilfe bleibt bei der " + "Feldbezeichnung. " + "Neu laden und Neue Pipeline 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. SQL-Bearbeitung, Validierung, Vorschau, Speichern und Ausführung behalten ihren bisherigen Editorbereich und ihre begrenzenden Sicherheitsregeln. 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_interface_documentation_contract.py b/tests/test_interface_documentation_contract.py index cc5bbc1..ebffc15 100644 --- a/tests/test_interface_documentation_contract.py +++ b/tests/test_interface_documentation_contract.py @@ -67,12 +67,13 @@ class DataflowInterfaceDocumentationContractTests(unittest.TestCase): for component in ( "ActionBlockerHint", - "DocumentationHelpLink", + "titleHelp={}", "useUnsavedDraftGuard", "ConfirmDialog", ): self.assertIn(component, page) self.assertIn("DATAFLOW_NODE_DOCUMENTATION", inspector) + self.assertNotIn("helpAction=", page) if __name__ == "__main__": diff --git a/webui/src/features/dataflow/DataflowPage.tsx b/webui/src/features/dataflow/DataflowPage.tsx index bc1783d..efb2006 100644 --- a/webui/src/features/dataflow/DataflowPage.tsx +++ b/webui/src/features/dataflow/DataflowPage.tsx @@ -668,11 +668,12 @@ export default function DataflowPage({ settings, auth }: { settings: ApiSettings return ( } scope="workspace" variant="collection" refreshable reloadAction={{ onReload: () => void loadPipelines(draft?.id), loading, label: "Refresh pipelines" }} - contextActions={Pipelines} createAction={} @@ -759,7 +760,6 @@ export default function DataflowPage({ settings, auth }: { settings: ApiSettings } - helpAction={} primaryActions={
ariaLabel="Pipeline editor mode" @@ -1953,6 +1953,7 @@ function DataflowTriggersDialog({ } className="dataflow-triggers-dialog" closeDisabled={busy} onClose={close} @@ -2009,7 +2010,6 @@ function DataflowTriggersDialog({ {!busy && !triggers.length ? No triggers configured : null}
- {error ? {error} : null} setName(event.target.value)} /> @@ -2313,6 +2313,7 @@ function RunPipelineDialog({ } className="dataflow-run-dialog" onClose={() => { if (!busy) { @@ -2349,7 +2350,6 @@ function RunPipelineDialog({ ) : null}
- ariaLabel="Run output" options={[