Milestones
List view
Retire carried weight: fold the legacy send-only worker/ into inbound/, single-source the webmail, vector-index hygiene, docs/tags pass. No behavior changes, just less to maintain.
No due date•7/7 issues closedMake the human doors good enough to live in: new mail surfaces mid-session, server-side IMAP SEARCH, one-tap iOS setup. Follows M8 because liveness work should ride the corrected data model.
No due date•6/6 issues closedThe mail we store is the mail that was sent. The v1 store (single to_addr, no Cc/Bcc/Sender, Message-ID-unique dedup) is now the binding constraint under a family of live symptoms (ENVELOPE NILs, per-recipient drops, inline-part loss, approximate RFC822.SIZE). Contract design first (CONTRACT.md update), then migration + seams.
No due date•4/4 issues closedBring the IMAP door to the relay's security bar and close the hardening tail from the Fable deep-dive (2026-07-02). Theme: two doors, ONE policy. Security debt first because it is small, well-defined, and highest risk-reduction per hour.
No due date•8/8 issues closedLet a standard IMAP mail client (Thunderbird/Apple Mail/etc.) SEND as @skyphusion.org via authenticated SMTP submission -> postern send/reply API. Pairs with M5 IMAP read = postern becomes a real usable human mailbox. WHY: vendors require email FROM the account-holder's own domain (sender-domain verification), so send-as-domain from a client is the unblock for actually using skyphusion.org as email. Deferred behind vivijure.
No due date•3/3 issues closedThe human face. Python/Twisted IMAP proxy consuming the shared mailbox API -- reference frontend, not the only door.
No due date•2/2 issues closedThe agent semantic face. Cloudflare AI Search over the mailbox (Vectorize is already populated by inbound ingestion).
No due date•2/2 issues closedProve the module boundary. Make the Go relay a real transport module against the contract (bring-your-own-SMTP, both directions) so people are not locked into CF Email Routing/Sending on the wire.
No due date•3/3 issues closedClose the receive-only gap. Agent send/reply THROUGH the mailbox: reply-in-thread + the sent copy lands back in the store. The mailbox becomes genuinely two-way.
No due date•2/2 issues closedCore v1.0. De-hardcode, unify the two email handlers into one ingest(), define the ingest/dispatch transport contract with CF Email as the default module, expose the read side of the structured mailbox API. Gate: a stranger deploys on CF and sends + receives.
No due date•7/7 issues closedRename to Postern, go public, carve into 3 repos (postern / postern-relay / postern-imap), move CI to GitHub Actions, license + stranger README. Gate: the repo is publishable.
No due date•6/6 issues closed