[Debt] Split large frontend components only along stable feature boundaries; avoid churn before recipient import/report/test-bed work #45

Closed
opened 2026-07-06 11:26:36 +02:00 by zemion · 5 comments
Owner

Imported from the consolidated GovOPlaN product backlog.

  • Source: /mnt/DATA/Nextcloud/ADD ideas UG/Products/govoplan/backlog.md
  • Line: 259
  • Section: Deferred Cleanup Notes

Imported backlog item:

- [ ] Split large frontend components only along stable feature boundaries; avoid churn before recipient import/report/test-bed work.
<!-- codex-backlog-fingerprint:36fe6bf59209cfb0a9a6c519 --> Imported from the consolidated GovOPlaN product backlog. - Source: `/mnt/DATA/Nextcloud/ADD ideas UG/Products/govoplan/backlog.md` - Line: `259` - Section: `Deferred Cleanup Notes` Imported backlog item: ```markdown - [ ] Split large frontend components only along stable feature boundaries; avoid churn before recipient import/report/test-bed work. ```
zemion added this to the Deferred Cleanup milestone 2026-07-06 13:20:06 +02:00
Author
Owner

Codex State: reviewed

Reviewed against published main (5240749). This remains open: ReviewSendPage.tsx is 2,667 lines and RecipientDataPage.tsx is 2,521 lines. Some stable components exist, but the deferred feature-boundary split is not complete.

## Codex State: reviewed Reviewed against published `main` (`5240749`). This remains open: `ReviewSendPage.tsx` is 2,667 lines and `RecipientDataPage.tsx` is 2,521 lines. Some stable components exist, but the deferred feature-boundary split is not complete.
Author
Owner

2026-07-29 implementation review: this no longer needs a product decision. The stable extraction boundaries are now visible. ReviewSendPage can be split into workflow navigation, attachment preview, deliverability preflight, built-message preview/query state, job attempts, and delivery results. RecipientDataPage can be split into address editing, address-source import, recipient CSV/XLSX import, file linking, and recipient-column/view-model utilities. Preserve the page-level controllers and split one boundary at a time. Resolve #84 first so generated translation noise does not obscure the refactor.

2026-07-29 implementation review: this no longer needs a product decision. The stable extraction boundaries are now visible. ReviewSendPage can be split into workflow navigation, attachment preview, deliverability preflight, built-message preview/query state, job attempts, and delivery results. RecipientDataPage can be split into address editing, address-source import, recipient CSV/XLSX import, file linking, and recipient-column/view-model utilities. Preserve the page-level controllers and split one boundary at a time. Resolve #84 first so generated translation noise does not obscure the refactor.
Author
Owner

Codex State: progress

Summary

  • Pushed the first stable-boundary refactor tranche in 961d5d1. ReviewSendPage now delegates workflow navigation, attachment linking, deliverability preflight, built-message preview/query state, job detail, and formatting helpers. RecipientDataPage now delegates address-source selection/snapshot UI and import transformation/provenance. Focused review, template-preview, and import tests pass; the integrated Core WebUI build passes. Remaining work: extract recipient CSV/XLSX import and file linking, then recipient column/view-model utilities and any remaining delivery-results controller concerns.

Suggested status label: status/in-progress

## Codex State: progress ### Summary - Pushed the first stable-boundary refactor tranche in 961d5d1. ReviewSendPage now delegates workflow navigation, attachment linking, deliverability preflight, built-message preview/query state, job detail, and formatting helpers. RecipientDataPage now delegates address-source selection/snapshot UI and import transformation/provenance. Focused review, template-preview, and import tests pass; the integrated Core WebUI build passes. Remaining work: extract recipient CSV/XLSX import and file linking, then recipient column/view-model utilities and any remaining delivery-results controller concerns. Suggested status label: `status/in-progress`
Author
Owner

Codex State: done

Summary

  • Completed the remaining stable-boundary frontend decomposition: recipient address editing, CSV/XLSX import and file linking, recipient grid/view-model construction, and review result/table presentation now live in focused feature-owned modules.
  • RecipientDataPage is now a 624-line state/persistence controller (down from 2,190 lines); ReviewSendPage remains the workflow orchestration controller while pure result presentation and column construction have moved out.
  • The extraction preserves behavior and optional Mail, Files, and Postbox capability boundaries; source-structure tests were updated to cover the page and its collaborators rather than weakened.

Changed Files

  • webui/src/features/campaigns/RecipientDataPage.tsx
  • webui/src/features/campaigns/recipients/RecipientAddressEditor.tsx
  • webui/src/features/campaigns/recipients/RecipientImportDialog.tsx
  • webui/src/features/campaigns/recipients/recipientProfileColumns.tsx
  • webui/src/features/campaigns/ReviewSendPage.tsx
  • webui/src/features/campaigns/review/reviewPresentation.tsx
  • webui/tests/recipient-search-ui-structure.test.mjs
  • webui/tests/aggregate-report-ui-structure.test.mjs

Verification

  • Campaign TypeScript check passed.
  • Campaign import, recipient-search, review-preview, template-preview, policy, report-grid, operator-queue, and aggregate-report tests passed.
  • Campaign-only production build passed bundle budgets.
  • tools/checks/check-focused.sh passed, including 31 module permutations and the full-product build.
  • git diff --check passed.
## Codex State: done ### Summary - Completed the remaining stable-boundary frontend decomposition: recipient address editing, CSV/XLSX import and file linking, recipient grid/view-model construction, and review result/table presentation now live in focused feature-owned modules. - RecipientDataPage is now a 624-line state/persistence controller (down from 2,190 lines); ReviewSendPage remains the workflow orchestration controller while pure result presentation and column construction have moved out. - The extraction preserves behavior and optional Mail, Files, and Postbox capability boundaries; source-structure tests were updated to cover the page and its collaborators rather than weakened. ### Changed Files - `webui/src/features/campaigns/RecipientDataPage.tsx` - `webui/src/features/campaigns/recipients/RecipientAddressEditor.tsx` - `webui/src/features/campaigns/recipients/RecipientImportDialog.tsx` - `webui/src/features/campaigns/recipients/recipientProfileColumns.tsx` - `webui/src/features/campaigns/ReviewSendPage.tsx` - `webui/src/features/campaigns/review/reviewPresentation.tsx` - `webui/tests/recipient-search-ui-structure.test.mjs` - `webui/tests/aggregate-report-ui-structure.test.mjs` ### Verification - `Campaign TypeScript check passed.` - `Campaign import, recipient-search, review-preview, template-preview, policy, report-grid, operator-queue, and aggregate-report tests passed.` - `Campaign-only production build passed bundle budgets.` - `tools/checks/check-focused.sh passed, including 31 module permutations and the full-product build.` - `git diff --check passed.`
Author
Owner

Codex State: note

Summary

  • Correction to the completion note: the final RecipientDataPage.tsx is 580 lines, not 624, after the last import cleanup. The verification and closure assessment are unchanged.
## Codex State: note ### Summary - Correction to the completion note: the final RecipientDataPage.tsx is 580 lines, not 624, after the last import cleanup. The verification and closure assessment are unchanged.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan-campaign#45