[Feature] Build template editor polish: formatting buttons, image inserts, links, WYSIWYG editing, and field bubbles #33

Closed
opened 2026-07-06 11:25:22 +02:00 by zemion · 1 comment
Owner

Imported from the consolidated GovOPlaN product backlog.

  • Source: /mnt/DATA/Nextcloud/ADD ideas UG/Products/govoplan/backlog.md
  • Line: 193
  • Section: Milestones > Milestone 11 - Address Book, Templates, And Adoption Polish
  • Source status: PARTIAL.

Imported backlog item:

- [ ] Build template editor polish: formatting buttons, image inserts, links, WYSIWYG editing, and field bubbles.
<!-- codex-backlog-fingerprint:bbb9f6b4ba629400df9042bc --> Imported from the consolidated GovOPlaN product backlog. - Source: `/mnt/DATA/Nextcloud/ADD ideas UG/Products/govoplan/backlog.md` - Line: `193` - Section: `Milestones > Milestone 11 - Address Book, Templates, And Adoption Polish` - Source status: `PARTIAL.` Imported backlog item: ```markdown - [ ] Build template editor polish: formatting buttons, image inserts, links, WYSIWYG editing, and field bubbles. ```
zemion added this to the Milestone 11 - Address Book, Templates, And Adoption Polish milestone 2026-07-06 13:17:14 +02:00
Author
Owner

Codex State: done

Summary

  • Implemented Campaign's rich HTML template editing with one reusable Core-owned WYSIWYG component.

Changed Files

  • ../govoplan-core/webui/src/components/WysiwygEditor.tsx: added the controlled visual/source editor, formatting toolbar, safe links and images, atomic merge-field tokens, and imperative insertion API
  • ../govoplan-core/webui/src/wysiwyg.ts and package exports: exposed the editor through the dedicated @govoplan/core-webui/wysiwyg entry point so non-consuming module combinations do not load its engine
  • webui/src/features/campaigns/TemplateDataPage.tsx: replaced the HTML textarea and connected field chips to atomic token insertion at the active selection
  • webui/src/features/campaigns/wizard/steps/CreateWizardSteps.tsx: reused the central editor for initial campaign template creation
  • ../govoplan-core/docs/UI_UX_DECISION_LEDGER.md: recorded the platform rich-HTML editing contract and source-preservation behavior

Verification

  • Core npm run test:wysiwyg-editor passed
  • Campaign npm run test:template-preview passed
  • Core TypeScript no-emit check passed
  • Core-only, Campaign-only, and full production builds passed; Core-only emitted no rich-text chunks
  • tools/checks/check-focused.sh passed, including all 31 WebUI module permutations
## Codex State: done ### Summary - Implemented Campaign's rich HTML template editing with one reusable Core-owned WYSIWYG component. ### Changed Files - `../govoplan-core/webui/src/components/WysiwygEditor.tsx: added the controlled visual/source editor, formatting toolbar, safe links and images, atomic merge-field tokens, and imperative insertion API` - `../govoplan-core/webui/src/wysiwyg.ts and package exports: exposed the editor through the dedicated @govoplan/core-webui/wysiwyg entry point so non-consuming module combinations do not load its engine` - `webui/src/features/campaigns/TemplateDataPage.tsx: replaced the HTML textarea and connected field chips to atomic token insertion at the active selection` - `webui/src/features/campaigns/wizard/steps/CreateWizardSteps.tsx: reused the central editor for initial campaign template creation` - `../govoplan-core/docs/UI_UX_DECISION_LEDGER.md: recorded the platform rich-HTML editing contract and source-preservation behavior` ### Verification - `Core npm run test:wysiwyg-editor passed` - `Campaign npm run test:template-preview passed` - `Core TypeScript no-emit check passed` - `Core-only, Campaign-only, and full production builds passed; Core-only emitted no rich-text chunks` - `tools/checks/check-focused.sh passed, including all 31 WebUI module permutations`
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan-campaign#33