[Task] Polish mailbox and message display beyond the read-only baseline #18

Closed
opened 2026-07-31 01:22:03 +02:00 by zemion · 2 comments
Owner

Moved from Campaign #28. Mail owns mailbox synchronization, mailbox browsing, and message presentation; Campaign remains only a consumer of Mail capabilities.

Outcome

Make the existing read-only mailbox baseline operationally complete and consistent with the shared GovOPlaN mail display components.

Acceptance criteria

  • Mailbox lists support bounded loading, pagination/deltas, refresh, search/filter state, empty/error states, and clear synchronization provenance.
  • Message display handles structured headers, plain-text/HTML alternatives, attachments, inline content, read/unread state, unavailable content, and provider errors without exposing unsafe markup.
  • Shared message-display components remain reusable by Campaign previews without Campaign-owned mailbox logic.
  • Responsive, keyboard, accessibility, and partial-module behavior receive focused WebUI coverage.
  • Sending/composition and protocol expansion such as JMAP/POP3 remain in their own issues.
> Moved from [Campaign #28](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/issues/28). Mail owns mailbox synchronization, mailbox browsing, and message presentation; Campaign remains only a consumer of Mail capabilities. ## Outcome Make the existing read-only mailbox baseline operationally complete and consistent with the shared GovOPlaN mail display components. ## Acceptance criteria - Mailbox lists support bounded loading, pagination/deltas, refresh, search/filter state, empty/error states, and clear synchronization provenance. - Message display handles structured headers, plain-text/HTML alternatives, attachments, inline content, read/unread state, unavailable content, and provider errors without exposing unsafe markup. - Shared message-display components remain reusable by Campaign previews without Campaign-owned mailbox logic. - Responsive, keyboard, accessibility, and partial-module behavior receive focused WebUI coverage. - Sending/composition and protocol expansion such as JMAP/POP3 remain in their own issues.
Author
Owner

Moved here from Campaign #28; the source issue is closed to keep Mail as the canonical owner.

<!-- codex-routing-2026-07-31:campaign-28 --> Moved here from [Campaign #28](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/issues/28); the source issue is closed to keep Mail as the canonical owner.
Author
Owner

Implemented and verified in 9ac8847.

This completes the read-only mailbox polish by:

  • presenting provider-derived Seen state as explicit read/unread UI without mutating mailbox flags;
  • exposing live, cached, and refresh-in-progress synchronization provenance, including the index timestamp;
  • retaining bounded cursor/offset pagination, filtering, refresh, empty/error/loading states, keyboard navigation, and responsive behavior;
  • continuing to use Core’s shared MessageDisplayPanel for structured headers, plain/HTML alternatives, attachments, safe inline CID/data references, unavailable content, and provider errors. The HTML preview remains sandboxed and removes remote/active markup;
  • documenting the user and operational behavior in the manifest-driven topic and Mail handbook;
  • adding focused read-state/provenance tests and structural conformance assertions.

Verification passed: 127 Mail backend tests, Ruff, Mail WebUI tests, manifest registry (68/68), static contracts, Core i18n/theme/interface checks, full TypeScript/Vite production build, and bundle budget.

Implemented and verified in `9ac8847`. This completes the read-only mailbox polish by: - presenting provider-derived `Seen` state as explicit read/unread UI without mutating mailbox flags; - exposing live, cached, and refresh-in-progress synchronization provenance, including the index timestamp; - retaining bounded cursor/offset pagination, filtering, refresh, empty/error/loading states, keyboard navigation, and responsive behavior; - continuing to use Core’s shared `MessageDisplayPanel` for structured headers, plain/HTML alternatives, attachments, safe inline CID/data references, unavailable content, and provider errors. The HTML preview remains sandboxed and removes remote/active markup; - documenting the user and operational behavior in the manifest-driven topic and Mail handbook; - adding focused read-state/provenance tests and structural conformance assertions. Verification passed: 127 Mail backend tests, Ruff, Mail WebUI tests, manifest registry (68/68), static contracts, Core i18n/theme/interface checks, full TypeScript/Vite production build, and bundle budget.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan-mail#18