[Feature] Add JMAP mailbox sync/search support after IMAP MVP stabilizes #7

Closed
opened 2026-07-09 12:46:46 +02:00 by zemion · 2 comments
Owner

Objective

Add JMAP mailbox support to govoplan-mail after the IMAP mailbox MVP is stable.

JMAP should be the preferred future protocol for modern mailbox sync/search when a target server supports it.

Scope

  • Owning repository: govoplan-mail.
  • Priority: higher than POP3 because JMAP fits modern sync/search and browser-facing mailbox UX better.
  • First slice: protocol-neutral mailbox DTOs, server capability discovery, read-only folder/message list, message detail, search/query, and incremental change support.
  • Out of scope initially: sending through JMAP, calendar/contact support, and broad provider-specific groupware behavior.

Expected behavior

  • Add protocol-neutral mailbox service interfaces so IMAP and JMAP can share UI/API contracts.
  • Add JMAP profile capability detection and configuration fields without disrupting existing SMTP/IMAP profiles.
  • Implement mailbox/folder/message listing with pagination and incremental changes where supported.
  • Implement message detail retrieval with headers, text/html body, and attachment metadata compatible with the existing message display panel.
  • Add profile test diagnostics that distinguish auth failure, unsupported JMAP, permission failure, and transient server failure.
  • Keep campaign sending independent: campaign delivery remains SMTP/IMAP append until a later explicit design says otherwise.

Acceptance criteria

  • Existing IMAP mailbox UI still works unchanged.
  • A JMAP-capable profile can be tested and browsed read-only through the mail module API.
  • The mailbox UI can switch between IMAP-backed and JMAP-backed profile/folder/message data through the same component contracts.
  • Tests cover capability detection, mailbox listing, search/query, incremental changes, message detail rendering, auth failure, and unavailable server behavior.
  • Documentation states that JMAP is optional and not required for normal SMTP/IMAP campaign sending.

Origin

Split out from the closed combined protocol placeholder govoplan-mail#4.

## Objective Add JMAP mailbox support to `govoplan-mail` after the IMAP mailbox MVP is stable. JMAP should be the preferred future protocol for modern mailbox sync/search when a target server supports it. ## Scope - Owning repository: `govoplan-mail`. - Priority: higher than POP3 because JMAP fits modern sync/search and browser-facing mailbox UX better. - First slice: protocol-neutral mailbox DTOs, server capability discovery, read-only folder/message list, message detail, search/query, and incremental change support. - Out of scope initially: sending through JMAP, calendar/contact support, and broad provider-specific groupware behavior. ## Expected behavior - Add protocol-neutral mailbox service interfaces so IMAP and JMAP can share UI/API contracts. - Add JMAP profile capability detection and configuration fields without disrupting existing SMTP/IMAP profiles. - Implement mailbox/folder/message listing with pagination and incremental changes where supported. - Implement message detail retrieval with headers, text/html body, and attachment metadata compatible with the existing message display panel. - Add profile test diagnostics that distinguish auth failure, unsupported JMAP, permission failure, and transient server failure. - Keep campaign sending independent: campaign delivery remains SMTP/IMAP append until a later explicit design says otherwise. ## Acceptance criteria - Existing IMAP mailbox UI still works unchanged. - A JMAP-capable profile can be tested and browsed read-only through the mail module API. - The mailbox UI can switch between IMAP-backed and JMAP-backed profile/folder/message data through the same component contracts. - Tests cover capability detection, mailbox listing, search/query, incremental changes, message detail rendering, auth failure, and unavailable server behavior. - Documentation states that JMAP is optional and not required for normal SMTP/IMAP campaign sending. ## Origin Split out from the closed combined protocol placeholder `govoplan-mail#4`.
zemion added the area/apicodex/readymodule/mail
priority
p2
status
ready
type
feature
labels 2026-07-29 14:15:12 +02:00
Author
Owner

Starting the autonomous implementation slice now.

Plan:

  • add an RFC 8620/8621-compatible, bounded JMAP session/API transport with capability discovery and safe diagnostics;
  • extend Mail server hierarchy and encrypted credential envelopes with an optional JMAP endpoint profile;
  • route the existing protocol-neutral mailbox DTO/API/UI through JMAP or IMAP without coupling Campaign sending to JMAP;
  • implement folders, paginated/query-backed message lists, search, detail/body/attachment metadata, and incremental Email/changes state;
  • add fake-provider contract tests, manifest-driven German/English documentation, UI configuration, and release checks.

I am selecting this ahead of Connectors #12 because #12 explicitly requires integration tests against a pinned OpenProject deployment; that remains a useful provider-backed slice, but JMAP #7 can be completed and verified autonomously without a deployment or product decision.

Starting the autonomous implementation slice now. Plan: - add an RFC 8620/8621-compatible, bounded JMAP session/API transport with capability discovery and safe diagnostics; - extend Mail server hierarchy and encrypted credential envelopes with an optional JMAP endpoint profile; - route the existing protocol-neutral mailbox DTO/API/UI through JMAP or IMAP without coupling Campaign sending to JMAP; - implement folders, paginated/query-backed message lists, search, detail/body/attachment metadata, and incremental Email/changes state; - add fake-provider contract tests, manifest-driven German/English documentation, UI configuration, and release checks. I am selecting this ahead of Connectors #12 because #12 explicitly requires integration tests against a pinned OpenProject deployment; that remains a useful provider-backed slice, but JMAP #7 can be completed and verified autonomously without a deployment or product decision.
Author
Owner

Implemented and released as Mail v0.1.22, coordinated with Core/workspace v0.1.34.

Delivered:

  • Governed read-only JMAP transport with Session discovery, capability/account validation, Mailbox/get hierarchy, Email/query pagination and search, Email/get summaries/details, Email/changes cursors, bounded body/attachment metadata, and explicit state-reset/full-refresh handling.
  • Bearer and Basic credential envelopes; same-origin API enforcement with explicit cross-origin allowlisting; inherited jmap_hosts allow/deny policy; bounded time/response/body limits; safe provider diagnostics.
  • Protocol-neutral mailbox routes plus JMAP connection test and mailbox-changes endpoints.
  • Admin profile editor and protocol-aware mailbox/Quick Access UI, including debounced server-side JMAP search.
  • Static and configured-state user/admin documentation, English/German text, protocol roadmap, security/egress/operational limits.

Compatibility boundary: IMAP remains the default mailbox protocol, SMTP remains the send transport, and this slice deliberately keeps JMAP read-only. No live provider credentials are committed.

Verification:

  • Mail backend: 164 tests passed, including 10 focused JMAP transport tests and route/policy/provider tests.
  • Mail WebUI suite passed; Core typecheck and shared Mail component tests passed.
  • Workspace focused gate passed end-to-end: manifest registry 68/68, package/release integrity, strict endpoint inventory, full backend suite, 63 WebUI module permutations (including Mail-only and full product), bundle budgets, and 8 Playwright conformance tests.

Commits/tags:

  • govoplan-mail 1cbf4ac / v0.1.22
  • govoplan-core aa91063 / v0.1.34
  • workspace 23bfe5e / v0.1.34
Implemented and released as Mail v0.1.22, coordinated with Core/workspace v0.1.34. Delivered: - Governed read-only JMAP transport with Session discovery, capability/account validation, Mailbox/get hierarchy, Email/query pagination and search, Email/get summaries/details, Email/changes cursors, bounded body/attachment metadata, and explicit state-reset/full-refresh handling. - Bearer and Basic credential envelopes; same-origin API enforcement with explicit cross-origin allowlisting; inherited jmap_hosts allow/deny policy; bounded time/response/body limits; safe provider diagnostics. - Protocol-neutral mailbox routes plus JMAP connection test and mailbox-changes endpoints. - Admin profile editor and protocol-aware mailbox/Quick Access UI, including debounced server-side JMAP search. - Static and configured-state user/admin documentation, English/German text, protocol roadmap, security/egress/operational limits. Compatibility boundary: IMAP remains the default mailbox protocol, SMTP remains the send transport, and this slice deliberately keeps JMAP read-only. No live provider credentials are committed. Verification: - Mail backend: 164 tests passed, including 10 focused JMAP transport tests and route/policy/provider tests. - Mail WebUI suite passed; Core typecheck and shared Mail component tests passed. - Workspace focused gate passed end-to-end: manifest registry 68/68, package/release integrity, strict endpoint inventory, full backend suite, 63 WebUI module permutations (including Mail-only and full product), bundle budgets, and 8 Playwright conformance tests. Commits/tags: - govoplan-mail 1cbf4ac / v0.1.22 - govoplan-core aa91063 / v0.1.34 - workspace 23bfe5e / v0.1.34
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan-mail#7