ReviewOS

also looking at this

mail-os/mail

docs(webmail): reconcile the status header with the phase markers

#12
Open glennmichael123 wants to merge docs/webmail-status into main
1 file +35 -9
WEBMAIL.mdmodified+35-9
Changes to WEBMAIL.md
@@ -1,18 +1,28 @@
11# Webmail UI — Implementation Plan
22
3> **Status:** Phases 0–6 done + Phase 9 built & locally verified over HTTPS — full read+write client (login, 3-pane inbox, flags/move/delete, compose/reply/forward) now ships as a single binary that serves the embedded SPA over its own TLS. Prod deploy to mail.stacksjs.com is the one remaining explicit step (runbook in Phase 9). Next: trigger the deploy, or Phase 7 (search/polish).
3> **Status:** Phases 1, 2, 3, 5 and 6 are ✅ DONE and Phase 9 is �� built and
4> locally verified over HTTPS — the read+write client (login, 3-pane inbox,
5> flags/move/delete, compose/reply/forward) ships as a single binary serving the
6> embedded SPA over its own TLS. Prod deploy to mail.stacksjs.com is the one
7> remaining explicit step (runbook in Phase 9). Phases 0, 4, 7, 8 and 10 carry no
8> completion marker — Phase 4's reading UI is covered by the shipped 3-pane
9> client, so its marker lags the code. Next: trigger the deploy, or Phase 7
10> (search/polish).
411> **Owner:** TBD
5> **Last updated:** 2026-06-01
12> **Last updated:** 2026-10-05
613> **Estimated effort:** ~8–12 weeks (multi-phase, see [Phases](#phases))
714
815This document is the single source of truth for building a browser-based webmail
9client for this mail server. It captures (1) the **real current state** of the
10codebase, (2) the **target architecture**, and (3) a **phased plan** broken into
11shippable increments.
16client for this mail server. It captures (1) the **state the plan started from**,
17(2) the **target architecture**, and (3) a **phased plan** broken into shippable
18increments.
1219
13Read [Current State](#current-state) first — it corrects the common assumption
14that "there is no UI yet." There is a lot of *scaffolding and design work*, but
15**none of it is live and none of it serves real mail.**
20[Current State](#current-state) is an inventory taken on 2026-05-29, before the
21backend was wired up — read it as history, not as a description of the code
22today. At that point there was scaffolding and design work but no HTTP listener
23and no real mail. The per-phase markers under [Phases](#phases) are the current
24record: the client serves real mail over its own TLS, and what remains is
25deploying it to production.
1626
1727---
1828
@@ -43,11 +53,25 @@ IMAP/SMTP.
4353 delivery queue / SES path.
4454- [ ] Works on desktop + responsive on mobile.
4555
56> These are the v1 roll-up, deliberately still unticked. The phases that cover
57> them are marked done, but nothing has been verified end-to-end against a
58> deployed instance — tick these off the deploy, not off the phase markers.
59
4660---
4761
4862## Current State
4963
50> Evidence-based inventory as of 2026-05-29. Legend:
64> ⚠️ **Historical snapshot — 2026-05-29, superseded.** This records the state
65> before Phases 1–3, 5, 6 and 9 landed. It is kept for the design rationale it
66> explains, not as a description of the code today.
67>
68> Known superseded: `webmail.zig` is no longer "never imported anywhere"
69> (`main.zig` imports `api/webmail_http.zig` and starts it when `enable_webmail`
70> or `enable_auth` is set), and "no HTTP/HTTPS port is opened at all" no longer
71> holds. Still accurate: `crosswind` is not installed —
72> `packages/webmail/package.json` carries only `bun-plugin-stx`.
73>
74> Legend:
5175> **�� Live** = wired in and working · **�� Code-complete but dead** = compiles
5276> but never invoked · **�� Mock** = returns fake/in-memory data · **⚪ Mockup** =
5377> static design reference · **�� Missing** = does not exist.
@@ -579,3 +603,5 @@ deferred deploy above.
579603
580604## Changelog
581605- 2026-05-29 — Initial plan + current-state inventory.
606- 2026-10-05 — Reconciled the status header with the per-phase markers; flagged
607 the Current State inventory as a superseded 2026-05-29 snapshot.