[UI review] Campaigns: visual and interaction conformance #103

Open
opened 2026-09-08 18:40:30 +02:00 by zemion · 1 comment
Owner

Status and objective

Pending / not reviewed. This module track belongs to the product-wide UI review epic.
Apply the Core design principles using the shared review process. The current heading-help icon pass and any existing isolated fixes are preparation, not evidence that this whole module is complete. Source documents are being prepared in the current working tree; this issue does not claim they are released.

Prioritize usability defects, consistent interaction and shared-component fixes before broader features. Preserve permissions, security, optional-module boundaries and data integrity.

Source inventory to verify

This is a source-derived starting inventory, not a completed runtime audit. Verify nested routes, embedded dialogs and contributions in the installed module context; add missing surfaces to this issue.

Repository: govoplan-campaign.
Manifest source: src/govoplan_campaign/backend/manifest.py.

Declared routes (5):

  • /campaigns — CampaignModulePage
  • /operator — OperatorQueueRedirect
  • /campaigns/queue — OperatorQueuePage
  • /campaigns/:campaignId/* — CampaignWorkspace
  • /campaigns/reports — AggregateReportsPage

Declared public routes (0):
None declared in this manifest; verify indirect/contributed surfaces before marking anything not applicable.

Declared settings routes (0):
None declared in this manifest; verify indirect/contributed surfaces before marking anything not applicable.

Declared navigation (1):

  • /campaigns — Campaigns

Declared view, settings and contributed surfaces (6):

  • campaigns.admin.system-delivery — System Campaign delivery
  • campaigns.admin.tenant-delivery — Tenant Campaign delivery
  • campaigns.page.work — Campaign work
  • campaigns.page.activity — Campaign collaboration
  • campaigns.widget.activity — Campaign activity widget
  • campaigns.quick_access.campaigns — Campaign selection
Source entrypoint seed (60 TSX files; classification is heuristic)

Pages and navigation entrypoints (20):

Dialogs and embedded editing surfaces (11):

Settings and administrator surfaces (1):

Widgets, public/operator and contributed surfaces (1):

Shared components and other UI entrypoints (27):

Review and implementation TODO

  • Confirm every actual page, nested route, dialog, field/form, table/tree, settings level, public/operator surface, widget and cross-module contribution; document role/module prerequisites.
  • Exercise EN/DE, keyboard/focus, narrow and wide layouts, long content, empty/loading/error states and realistic datasets.
  • Check UI-01 heading/label help placement and UI-02 display-first/scoped editing; document any justified large-grid bulk-edit exception with explicit mode, Save/Cancel and dirty-navigation guard.
  • Verify consistent top-right actions (Reload left of New), clean/dirty Save/Cancel behavior, destructive separation and safe navigation/reload.
  • Verify full-width cards/tables, visible last-column actions, pagination, initial sizing, two-way pointer/keyboard resizing and preference reload with fixed columns and horizontal overflow.
  • Check scoped progress/error feedback and predictable tree selection versus expansion; no unnecessary global blocking or repeated background reload.
  • Record findings and implement shared-contract corrections plus all affected consumers, not local CSS/action-row exceptions without justification.
  • Verify save/cancel/retry and partial-failure behavior without unintended writes, sends, deletes or loss of persisted/unsaved data.
  • Update owning manifest-driven EN/DE documentation; record targeted automated checks and manual evidence against actual module surfaces.
  • Complete the principle matrix, list unresolved decisions/manual checks and link follow-ups before proposing closure.

Campaign-specific starting direction

  • Present a compact read-only campaign settings dashboard/overview and use explicit scoped edit dialogs for settings instead of a permanently editable form wall.
  • Keep large recipient/attachment tables practical through an explicit bulk-edit mode where appropriate, with Save/Cancel, dirty-state protection and reload persistence; this is the documented UI-02 exception, not silent autosave.
  • Review the complete compose → attachments → validation/review → delivery/report/operator workflow, including mail-profile migration, ZIP policy, multiple recipients and SMTP/IMAP progress, without sending live messages just to collect UI evidence.

Principle applicability / application / evidence / exceptions

Reviewed Core principle revision: not yet recorded. No exceptions approved.

Principle Applicable surfaces / justified N/A Applied / remaining work Evidence Exception / owner / follow-up
UI-01: Help icons beside the relevant heading/label, not action-button rows Pending inventory Pending review Not yet recorded None approved
UI-02: Display-first with scoped edit dialogs; explicit bulk-grid editing exception Pending inventory Pending review Not yet recorded None approved
UI-03: Shared page actions, Reload/New ordering, Save/Cancel and destructive separation Pending inventory Pending review Not yet recorded None approved
UI-04: Full-width table/card geometry, visible actions, pagination and two-way resizing Pending inventory Pending review Not yet recorded None approved
UI-05: Scoped loading/error feedback, useful progress and retained state Pending inventory Pending review Not yet recorded None approved
UI-06: Predictable tree selection, expansion, grouping and reordering Pending inventory Pending review Not yet recorded None approved
UI-07: Keyboard/focus/accessibility, responsive layouts and understandable German Pending inventory Pending review Not yet recorded None approved
UI-08: Authorization, optional-module boundaries and save/cancel/retry data integrity Pending inventory Pending review Not yet recorded None approved
UI-09: Revision evidence and retroactive checks for changed design principles Pending inventory Pending review Not yet recorded None approved

When a principle changes after this review, re-check applicability and record current evidence. Reopen this issue or link an owned follow-up for outstanding work; notify the central epic. A past review must not silently remain green against an obsolete rule.

Findings / TODO / done ledger

Finding / surface / reproduction Principle and expected behavior TODO / implementation or follow-up Verified done evidence
Full review not started UI-01–UI-09 Inventory and review pending None; no completed review claimed

Manual checks, decisions and closure evidence

  • Manual work pending: safe actual-module walkthrough in both languages and realistic viewports, keyboard/focus, permissions/optional-module contexts, loading/error/empty states, edits/Save/Cancel/navigation/reload, tables/trees and progress.
  • Decisions: none invented by this bootstrap. Record any product or policy choice with context and a recommendation; isolate independent implementation work from blocked decisions.
  • Automated evidence: not yet recorded for this complete module review. Existing targeted fixes/tests may be linked as partial evidence only.
  • Closure gate: verified inventory, complete current principle matrix, resolved required findings, owning EN/DE documentation and automated/manual evidence. Unimplemented placeholders remain pending until real surfaces can be reviewed or an explicit catalog/product decision changes scope.
<!-- govoplan-ui-review:v1:module:campaigns --> ## Status and objective **Pending / not reviewed.** This module track belongs to the [product-wide UI review epic](https://git.add-ideas.de/GovOPlaN/govoplan/issues/56). Apply the [Core design principles](https://git.add-ideas.de/GovOPlaN/govoplan-core/src/branch/main/docs/UI_DESIGN_PRINCIPLES.md) using the [shared review process](https://git.add-ideas.de/GovOPlaN/govoplan/src/branch/main/docs/project/UI_REVIEW_PROGRAM.md). The current heading-help icon pass and any existing isolated fixes are preparation, not evidence that this whole module is complete. Source documents are being prepared in the current working tree; this issue does not claim they are released. Prioritize usability defects, consistent interaction and shared-component fixes before broader features. Preserve permissions, security, optional-module boundaries and data integrity. ## Source inventory to verify This is a **source-derived starting inventory, not a completed runtime audit**. Verify nested routes, embedded dialogs and contributions in the installed module context; add missing surfaces to this issue. Repository: [govoplan-campaign](https://git.add-ideas.de/GovOPlaN/govoplan-campaign). Manifest source: [src/govoplan_campaign/backend/manifest.py](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/src/govoplan_campaign/backend/manifest.py). **Declared routes (5):** - `/campaigns` — CampaignModulePage - `/operator` — OperatorQueueRedirect - `/campaigns/queue` — OperatorQueuePage - `/campaigns/:campaignId/*` — CampaignWorkspace - `/campaigns/reports` — AggregateReportsPage **Declared public routes (0):** None declared in this manifest; verify indirect/contributed surfaces before marking anything not applicable. **Declared settings routes (0):** None declared in this manifest; verify indirect/contributed surfaces before marking anything not applicable. **Declared navigation (1):** - `/campaigns` — Campaigns **Declared view, settings and contributed surfaces (6):** - `campaigns.admin.system-delivery` — System Campaign delivery - `campaigns.admin.tenant-delivery` — Tenant Campaign delivery - `campaigns.page.work` — Campaign work - `campaigns.page.activity` — Campaign collaboration - `campaigns.widget.activity` — Campaign activity widget - `campaigns.quick_access.campaigns` — Campaign selection <details><summary>Source entrypoint seed (60 TSX files; classification is heuristic)</summary> **Pages and navigation entrypoints (20):** - [webui/src/features/campaigns/AttachmentsDataPage.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/AttachmentsDataPage.tsx) - [webui/src/features/campaigns/CampaignAuditPage.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/CampaignAuditPage.tsx) - [webui/src/features/campaigns/CampaignCollaborationPage.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/CampaignCollaborationPage.tsx) - [webui/src/features/campaigns/CampaignFieldsPage.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/CampaignFieldsPage.tsx) - [webui/src/features/campaigns/CampaignListPage.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/CampaignListPage.tsx) - [webui/src/features/campaigns/CampaignModulePage.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/CampaignModulePage.tsx) - [webui/src/features/campaigns/CampaignOverviewPage.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/CampaignOverviewPage.tsx) - [webui/src/features/campaigns/CampaignReportPage.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/CampaignReportPage.tsx) - [webui/src/features/campaigns/CampaignWorkPage.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/CampaignWorkPage.tsx) - [webui/src/features/campaigns/GlobalSettingsPage.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/GlobalSettingsPage.tsx) - [webui/src/features/campaigns/MailSettingsPage.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/MailSettingsPage.tsx) - [webui/src/features/campaigns/RecipientDataPage.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/RecipientDataPage.tsx) - [webui/src/features/campaigns/ReviewSendPage.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/ReviewSendPage.tsx) - [webui/src/features/campaigns/TemplateDataPage.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/TemplateDataPage.tsx) - [webui/src/features/campaigns/components/CampaignDraftPageScaffold.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/components/CampaignDraftPageScaffold.tsx) - [webui/src/features/campaigns/review/WorkflowNavigation.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/review/WorkflowNavigation.tsx) - [webui/src/features/campaigns/wizard/WizardDirectoryPage.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/wizard/WizardDirectoryPage.tsx) - [webui/src/features/operator/OperatorQueuePage.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/operator/OperatorQueuePage.tsx) - [webui/src/features/reports/AggregateReportsPage.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/reports/AggregateReportsPage.tsx) - [webui/src/features/templates/TemplatesPage.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/templates/TemplatesPage.tsx) **Dialogs and embedded editing surfaces (11):** - [webui/src/features/campaigns/components/AttachmentRulesOverlay.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/components/AttachmentRulesOverlay.tsx) - [webui/src/features/campaigns/components/MessagePreviewOverlay.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/components/MessagePreviewOverlay.tsx) - [webui/src/features/campaigns/components/PostboxTargetsDialog.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/components/PostboxTargetsDialog.tsx) - [webui/src/features/campaigns/components/TemplateExpressionEditorDialog.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/components/TemplateExpressionEditorDialog.tsx) - [webui/src/features/campaigns/recipients/AddressSourceImportDialog.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/recipients/AddressSourceImportDialog.tsx) - [webui/src/features/campaigns/recipients/DistributionListImportDialog.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/recipients/DistributionListImportDialog.tsx) - [webui/src/features/campaigns/recipients/RecipientImportDialog.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/recipients/RecipientImportDialog.tsx) - [webui/src/features/campaigns/reporting/ReportRecoveryDialog.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/reporting/ReportRecoveryDialog.tsx) - [webui/src/features/campaigns/review/BulkMessageReviewDialog.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/review/BulkMessageReviewDialog.tsx) - [webui/src/features/campaigns/review/CampaignDeliveryProgressDialog.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/review/CampaignDeliveryProgressDialog.tsx) - [webui/src/features/campaigns/review/DeliveryJobDetailOverlay.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/review/DeliveryJobDetailOverlay.tsx) **Settings and administrator surfaces (1):** - [webui/src/features/admin/CampaignDeliveryPolicyPanel.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/admin/CampaignDeliveryPolicyPanel.tsx) **Widgets, public/operator and contributed surfaces (1):** - [webui/src/features/campaigns/CampaignActivityWidget.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/CampaignActivityWidget.tsx) **Shared components and other UI entrypoints (27):** - [webui/src/features/campaigns/CampaignJsonView.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/CampaignJsonView.tsx) - [webui/src/features/campaigns/CampaignQuickAccess.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/CampaignQuickAccess.tsx) - [webui/src/features/campaigns/CampaignWorkspace.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/CampaignWorkspace.tsx) - [webui/src/features/campaigns/components/CampaignAccessCard.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/components/CampaignAccessCard.tsx) - [webui/src/features/campaigns/components/CampaignArchiveEncryptionPolicyNotice.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/components/CampaignArchiveEncryptionPolicyNotice.tsx) - [webui/src/features/campaigns/components/FieldValueInput.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/components/FieldValueInput.tsx) - [webui/src/features/campaigns/components/LegacyMailMigrationNotice.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/components/LegacyMailMigrationNotice.tsx) - [webui/src/features/campaigns/components/LockedVersionNotice.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/components/LockedVersionNotice.tsx) - [webui/src/features/campaigns/components/TemplatePlaceholderControls.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/components/TemplatePlaceholderControls.tsx) - [webui/src/features/campaigns/components/VersionLine.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/components/VersionLine.tsx) - [webui/src/features/campaigns/context/UnsavedChangesContext.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/context/UnsavedChangesContext.tsx) - [webui/src/features/campaigns/recipients/RecipientAddressEditor.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/recipients/RecipientAddressEditor.tsx) - [webui/src/features/campaigns/recipients/recipientProfileColumns.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/recipients/recipientProfileColumns.tsx) - [webui/src/features/campaigns/reporting/ReportRecipients.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/reporting/ReportRecipients.tsx) - [webui/src/features/campaigns/review/AttachmentLinkingPreview.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/review/AttachmentLinkingPreview.tsx) - [webui/src/features/campaigns/review/BuiltMessagePreview.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/review/BuiltMessagePreview.tsx) - [webui/src/features/campaigns/review/DeliverabilityPreflight.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/review/DeliverabilityPreflight.tsx) - [webui/src/features/campaigns/review/PaginatedReviewDetails.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/review/PaginatedReviewDetails.tsx) - [webui/src/features/campaigns/review/RepeatedFilesDetails.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/review/RepeatedFilesDetails.tsx) - [webui/src/features/campaigns/review/ReviewWorkflowGuidance.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/review/ReviewWorkflowGuidance.tsx) - [webui/src/features/campaigns/review/ValidationDetails.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/review/ValidationDetails.tsx) - [webui/src/features/campaigns/review/reviewPresentation.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/review/reviewPresentation.tsx) - [webui/src/features/campaigns/wizard/CreateWizard.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/wizard/CreateWizard.tsx) - [webui/src/features/campaigns/wizard/ReviewWizard.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/wizard/ReviewWizard.tsx) - [webui/src/features/campaigns/wizard/SendWizard.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/wizard/SendWizard.tsx) - [webui/src/features/campaigns/wizard/steps/CreateWizardSteps.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/features/campaigns/wizard/steps/CreateWizardSteps.tsx) - [webui/src/layout/SectionSidebar.tsx](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/branch/main/webui/src/layout/SectionSidebar.tsx) </details> ## Review and implementation TODO - [ ] Confirm every actual page, nested route, dialog, field/form, table/tree, settings level, public/operator surface, widget and cross-module contribution; document role/module prerequisites. - [ ] Exercise EN/DE, keyboard/focus, narrow and wide layouts, long content, empty/loading/error states and realistic datasets. - [ ] Check UI-01 heading/label help placement and UI-02 display-first/scoped editing; document any justified large-grid bulk-edit exception with explicit mode, Save/Cancel and dirty-navigation guard. - [ ] Verify consistent top-right actions (Reload left of New), clean/dirty Save/Cancel behavior, destructive separation and safe navigation/reload. - [ ] Verify full-width cards/tables, visible last-column actions, pagination, initial sizing, two-way pointer/keyboard resizing and preference reload with fixed columns and horizontal overflow. - [ ] Check scoped progress/error feedback and predictable tree selection versus expansion; no unnecessary global blocking or repeated background reload. - [ ] Record findings and implement shared-contract corrections plus all affected consumers, not local CSS/action-row exceptions without justification. - [ ] Verify save/cancel/retry and partial-failure behavior without unintended writes, sends, deletes or loss of persisted/unsaved data. - [ ] Update owning manifest-driven EN/DE documentation; record targeted automated checks and manual evidence against actual module surfaces. - [ ] Complete the principle matrix, list unresolved decisions/manual checks and link follow-ups before proposing closure. ### Campaign-specific starting direction - [ ] Present a compact read-only campaign settings dashboard/overview and use explicit scoped edit dialogs for settings instead of a permanently editable form wall. - [ ] Keep large recipient/attachment tables practical through an explicit bulk-edit mode where appropriate, with Save/Cancel, dirty-state protection and reload persistence; this is the documented UI-02 exception, not silent autosave. - [ ] Review the complete compose → attachments → validation/review → delivery/report/operator workflow, including mail-profile migration, ZIP policy, multiple recipients and SMTP/IMAP progress, without sending live messages just to collect UI evidence. ## Principle applicability / application / evidence / exceptions Reviewed Core principle revision: **not yet recorded**. No exceptions approved. | Principle | Applicable surfaces / justified N/A | Applied / remaining work | Evidence | Exception / owner / follow-up | | --- | --- | --- | --- | --- | | UI-01: Help icons beside the relevant heading/label, not action-button rows | Pending inventory | Pending review | Not yet recorded | None approved | | UI-02: Display-first with scoped edit dialogs; explicit bulk-grid editing exception | Pending inventory | Pending review | Not yet recorded | None approved | | UI-03: Shared page actions, Reload/New ordering, Save/Cancel and destructive separation | Pending inventory | Pending review | Not yet recorded | None approved | | UI-04: Full-width table/card geometry, visible actions, pagination and two-way resizing | Pending inventory | Pending review | Not yet recorded | None approved | | UI-05: Scoped loading/error feedback, useful progress and retained state | Pending inventory | Pending review | Not yet recorded | None approved | | UI-06: Predictable tree selection, expansion, grouping and reordering | Pending inventory | Pending review | Not yet recorded | None approved | | UI-07: Keyboard/focus/accessibility, responsive layouts and understandable German | Pending inventory | Pending review | Not yet recorded | None approved | | UI-08: Authorization, optional-module boundaries and save/cancel/retry data integrity | Pending inventory | Pending review | Not yet recorded | None approved | | UI-09: Revision evidence and retroactive checks for changed design principles | Pending inventory | Pending review | Not yet recorded | None approved | When a principle changes after this review, re-check applicability and record current evidence. Reopen this issue or link an owned follow-up for outstanding work; notify the central epic. A past review must not silently remain green against an obsolete rule. ## Findings / TODO / done ledger | Finding / surface / reproduction | Principle and expected behavior | TODO / implementation or follow-up | Verified done evidence | | --- | --- | --- | --- | | Full review not started | UI-01–UI-09 | Inventory and review pending | None; no completed review claimed | ## Manual checks, decisions and closure evidence - Manual work pending: safe actual-module walkthrough in both languages and realistic viewports, keyboard/focus, permissions/optional-module contexts, loading/error/empty states, edits/Save/Cancel/navigation/reload, tables/trees and progress. - Decisions: none invented by this bootstrap. Record any product or policy choice with context and a recommendation; isolate independent implementation work from blocked decisions. - Automated evidence: not yet recorded for this complete module review. Existing targeted fixes/tests may be linked as partial evidence only. - Closure gate: verified inventory, complete current principle matrix, resolved required findings, owning EN/DE documentation and automated/manual evidence. Unimplemented placeholders remain pending until real surfaces can be reviewed or an explicit catalog/product decision changes scope.
Author
Owner

Partial implementation evidence — UI-01 heading help

Implemented locally; uncommitted and unpushed. This review remains pending. No module review checkbox, principle matrix or issue state is being marked complete by this comment.

The current govoplan-campaign UI-01 pass moves migrated documentation-book affordances beside their relevant visible headings/labels using the shared Core contract, removing isolated action-row placement. This is the scope of this partial implementation; it does not certify every screen or every design principle in this module.

Owning manifest-driven English and German help text was updated for the changed placement/workflows. Permissions, business operations and persistence semantics are not intentionally changed by this help-placement pass.

Source scope in the local working tree

  • webui/src/features/campaigns/AttachmentsDataPage.tsx
  • webui/src/features/campaigns/CampaignAuditPage.tsx
  • webui/src/features/campaigns/RecipientDataPage.tsx
  • webui/src/features/campaigns/recipients/recipientProfileColumns.tsx
  • webui/src/features/reports/AggregateReportsPage.tsx
  • src/govoplan_campaign/backend/manifest.py

These paths identify the current uncommitted source scope, not a released commit. Some listed files also contain earlier fixes; this comment claims only the UI-01 changes described above.

Verification

Verified rollout checks (shared evidence, not a complete manual review of this module):

  • Main product WebUI build and bundle-budget gate: passed.
  • Conformance TypeScript: passed.
  • Heading-help / EN-DE guard tests: 21 passed.
  • Workspace placement scan: 129 links across 327 TSX files in 47 WebUI modules passed.
  • Manifest-shape/documentation validation: 72/72 modules passed.
  • Core help/layout component tests: passed.
  • Targeted browser checks: 12 passed; full Core browser conformance: 253/253 passed in 7.2 minutes, with no failures or source fixes during that full run.

Shared/rollout checks are partial evidence, not exhaustive manual review of this module. Record the actual surfaces and principle revision during the full review.

Still pending

  • The complete module inventory and principle-by-principle UI-01–UI-09 review, realistic data/roles/optional modules, EN/DE walkthroughs, keyboard/focus, responsive layouts, errors/loading, save/cancel/navigation and data-integrity checks.
  • Display-first/scoped editing review (UI-02), remaining usability findings and any explicitly justified editing-mode exceptions.
  • Commit/release provenance and any still-required manual acceptance; no deployment or release is claimed here.
  • Campaign UI-02 remains unimplemented in this pass: the compact read-only campaign settings dashboard with scoped edit dialogs is still a pending review/implementation slice. Large grids may use a documented explicit bulk-edit mode with Save/Cancel and dirty-state protection.

Coordination: Meta review epic; authoritative rules: Core UI design principles. Reusable lessons must be checked against already-reviewed modules through linked follow-ups or reopened reviews.

Earlier related work — separate partial history

Earlier, separate partial history: Campaign #102 tracks the preceding recipient sizing, table-card and breadcrumb work. Linking it does not close that issue or establish completion of this full Campaign review.

<!-- govoplan-ui-review:v1:partial-evidence:2026-09-08-heading-help:campaigns --> ## Partial implementation evidence — UI-01 heading help **Implemented locally; uncommitted and unpushed. This review remains pending.** No module review checkbox, principle matrix or issue state is being marked complete by this comment. The current `govoplan-campaign` UI-01 pass moves migrated documentation-book affordances beside their relevant visible headings/labels using the shared Core contract, removing isolated action-row placement. This is the scope of this partial implementation; it does not certify every screen or every design principle in this module. Owning manifest-driven English and German help text was updated for the changed placement/workflows. Permissions, business operations and persistence semantics are not intentionally changed by this help-placement pass. ### Source scope in the local working tree - `webui/src/features/campaigns/AttachmentsDataPage.tsx` - `webui/src/features/campaigns/CampaignAuditPage.tsx` - `webui/src/features/campaigns/RecipientDataPage.tsx` - `webui/src/features/campaigns/recipients/recipientProfileColumns.tsx` - `webui/src/features/reports/AggregateReportsPage.tsx` - `src/govoplan_campaign/backend/manifest.py` These paths identify the current uncommitted source scope, not a released commit. Some listed files also contain earlier fixes; this comment claims only the UI-01 changes described above. ### Verification Verified rollout checks (shared evidence, not a complete manual review of this module): - Main product WebUI build and bundle-budget gate: **passed**. - Conformance TypeScript: **passed**. - Heading-help / EN-DE guard tests: **21 passed**. - Workspace placement scan: **129 links across 327 TSX files in 47 WebUI modules passed**. - Manifest-shape/documentation validation: **72/72 modules passed**. - Core help/layout component tests: **passed**. - Targeted browser checks: **12 passed**; full Core browser conformance: **253/253 passed in 7.2 minutes**, with no failures or source fixes during that full run. Shared/rollout checks are partial evidence, not exhaustive manual review of this module. Record the actual surfaces and principle revision during the full review. ### Still pending - The complete module inventory and principle-by-principle UI-01–UI-09 review, realistic data/roles/optional modules, EN/DE walkthroughs, keyboard/focus, responsive layouts, errors/loading, save/cancel/navigation and data-integrity checks. - Display-first/scoped editing review (UI-02), remaining usability findings and any explicitly justified editing-mode exceptions. - Commit/release provenance and any still-required manual acceptance; no deployment or release is claimed here. - **Campaign UI-02 remains unimplemented in this pass:** the compact read-only campaign settings dashboard with scoped edit dialogs is still a pending review/implementation slice. Large grids may use a documented explicit bulk-edit mode with Save/Cancel and dirty-state protection. Coordination: [Meta review epic](https://git.add-ideas.de/GovOPlaN/govoplan/issues/56); authoritative rules: [Core UI design principles](https://git.add-ideas.de/GovOPlaN/govoplan-core/src/branch/main/docs/UI_DESIGN_PRINCIPLES.md). Reusable lessons must be checked against already-reviewed modules through linked follow-ups or reopened reviews. ### Earlier related work — separate partial history Earlier, separate partial history: [Campaign #102](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/issues/102) tracks the preceding recipient sizing, table-card and breadcrumb work. Linking it does not close that issue or establish completion of this full Campaign review.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan-campaign#103