The IMAP/SMTP spine is real (Phase 1); JMAP needs a real HTTP client and the
camelCase serialization fix from the assessment.
Scope / acceptance criteria
Real JMAP HTTP client — session + Email/query/Email/get/Email/set
over HTTP(S), wired so the daemon can drive a JMAP account through the same
fetch→store path as IMAP; wiremock-mocked in tests.
camelCase fix — JMAP request/response structs serialize with the
JMAP-correct field names (camelCase) so real servers accept/return data.
Regression test on the wire JSON.
Reuses the existing MailBackend/sync seam so no new proto is required if the
mail surface already covers it; add proto/CLI only if a gap exists.
Offline E2E: JMAP fetch → store → list against a mock server. cargo verify green.
**Phase 3 — Feature completeness (behind the API).** Crate: `nuncio-mail` (JMAP).
The IMAP/SMTP spine is real (Phase 1); JMAP needs a real HTTP client and the
camelCase serialization fix from the assessment.
### Scope / acceptance criteria
- [ ] **Real JMAP HTTP client** — session + `Email/query`/`Email/get`/`Email/set`
over HTTP(S), wired so the daemon can drive a JMAP account through the same
fetch→store path as IMAP; `wiremock`-mocked in tests.
- [ ] **camelCase fix** — JMAP request/response structs serialize with the
JMAP-correct field names (camelCase) so real servers accept/return data.
Regression test on the wire JSON.
- [ ] Reuses the existing `MailBackend`/sync seam so no new proto is required if the
mail surface already covers it; add proto/CLI only if a gap exists.
- [ ] Offline E2E: JMAP `fetch → store → list` against a mock server. `cargo verify` green.
Superseded by #189 (M3) in the roadmap restructuring (milestones M1–M7). The replacement story carries the full, self-contained spec for a remote implementer. See docs/ROADMAP.md, docs/STORY-WORKFLOW.md, docs/HANDOFF.md.
Superseded by #189 (M3) in the roadmap restructuring (milestones M1–M7). The replacement story carries the full, self-contained spec for a remote implementer. See docs/ROADMAP.md, docs/STORY-WORKFLOW.md, docs/HANDOFF.md.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Phase 3 — Feature completeness (behind the API). Crate:
nuncio-mail(JMAP).The IMAP/SMTP spine is real (Phase 1); JMAP needs a real HTTP client and the
camelCase serialization fix from the assessment.
Scope / acceptance criteria
Email/query/Email/get/Email/setover HTTP(S), wired so the daemon can drive a JMAP account through the same
fetch→store path as IMAP;
wiremock-mocked in tests.JMAP-correct field names (camelCase) so real servers accept/return data.
Regression test on the wire JSON.
MailBackend/sync seam so no new proto is required if themail surface already covers it; add proto/CLI only if a gap exists.
fetch → store → listagainst a mock server.cargo verifygreen.Superseded by #189 (M3) in the roadmap restructuring (milestones M1–M7). The replacement story carries the full, self-contained spec for a remote implementer. See docs/ROADMAP.md, docs/STORY-WORKFLOW.md, docs/HANDOFF.md.