Repository navigation
v0.1.0
What's Changed
- ci: run make ci's gates on GitHub Actions by @bketelsen in #1
- docs: add screenshots of the app on made-up mail to the README by @bketelsen in #2
- fix(imapserver): deliver updates queued before IDLE starts by @bketelsen in #3
- Plan M4.5 (contacts, calendars, tasks) and run task cards with Codex by @bketelsen in #4
- M4.5 Phases 1 and 2: contracts, DAV sync and People by @bketelsen in #5
- M4.5 Phase 3: calendars, the Calendar module and reminders by @bketelsen in #6
- M4.5 Phase 4: tasks, the To-Do bar and invitations (into main) by @bketelsen in #8
- M4.5 Phase 5 groundwork: record, scrub and replay DAV and Tasks sessions by @bketelsen in #9
- build: name Go's toolchain in go.mod for mise by @bketelsen in #10
- fix(pimsync): sync Google's CardDAV, which refuses a first sync-collection by @bketelsen in #11
- feat(settings): choose contacts, calendars and tasks when adding an account by @bketelsen in #12
- fix(oauth): close the sign-in port before the browser gets its page by @bketelsen in #13
- test(pimsync): replay a new Gmail account's contacts, calendars and tasks by @bketelsen in #14
- fix(engine): show each of a contact's addresses once by @bketelsen in #15
- fix(mailsync): keep a new sync window when a pass of the old one ends late by @bketelsen in #16
- fix(reminders): catch up only on alarms due while maild was stopped by @bketelsen in #17
- fix(pimsync): verify confirms what is missing and checks task lists; name unnamed collections by @bketelsen in #18
- fix(pimsync): follow the Location a server gives a new object by @bketelsen in #19
- feat(identity): add and remove an account's addresses; an invitation is no conflict with itself by @bketelsen in #20
- fix(invitations): mail the reply the server will not send (ADR-0022) by @bketelsen in #21
- feat(calendar): the server's default calendar, and Use as Default Calendar by @bketelsen in #22
- fix(invitations): answer once; read iCloud's default calendar by @bketelsen in #23
- docs(icloud): Apple Reminders is out of reach; Settings says why by @bketelsen in #24
- feat(engine): copy messages, filter by attachments, keep read rows by @bketelsen in #25
- fix(view): keep only rows read in an unread view, not unflagged ones by @bketelsen in #26
- feat(app): filter bar, row actions and a fuller context menu in the message list by @bketelsen in #27
- M5 Phase 1: contracts, the condition compiler, settings and VIPs, Phase 2's cards by @bketelsen in #29
- docs: plan M5 Mail.app parity and its checklist by @bketelsen in #28
- M5 Phase 2: VIPs, flag colors in the sidebar, the General pane by @bketelsen in #30
- M5 Phase 3: smart mailboxes by @bketelsen in #31
- M5 Phase 4: rules by @bketelsen in #32
- M5 Phase 5: Send Later and Remind Me by @bketelsen in #33
- M5 Phase 6a: mailboxes by @bketelsen in #34
- M5 Phase 6b: list and reader by @bketelsen in #35
- M5 Phase 6c: unsubscribe, Redirect, Forward as Attachment by @bketelsen in #36
- M5 Phase 6d: mute, block, undo and shortcuts by @bketelsen in #37
- fix(app): name the source an empty filtered list narrows by @bketelsen in #38
- M5 Phase 7: categories spike; no mail categories (ADR-0029) by @bketelsen in #39
- docs: plan M5.5, editing events and contacts, before M6 by @bketelsen in #40
- M5.5 Phase 1: contracts for contact and event edits; Phase 2's cards by @bketelsen in #41
- M5.5 Phase 2: contact editing (cards T-0132 to T-0138, maild's people writes) by @bketelsen in #42
- M5.5 Phase 3: edit events in three scopes, with the event editor by @bketelsen in #43
- M5.5 Phase 4: dragging and undo by @bketelsen in #44
- fix(pim): keep what Google's sync calls deleted but still serves by @bketelsen in #46
- M5.5 Phase 5: invitations by @bketelsen in #45
- fix(app): open links clicked in the reader's message frame by @bketelsen in #47
- M5.5 Phase 6: replay a Gmail write session by @bketelsen in #48
- perf: open messages from what the reader shows, and prefetch INBOX and VIP mail by @bketelsen in #49
- docs: plan M7, Microsoft accounts and Windows by @bketelsen in #50
- M7 Phase 1: probe Outlook.com, and store Graph's events and contacts as derived sources by @bketelsen in #51
- M7 Phase 2: Outlook.com mail by @bketelsen in #52
- M7 Phase 3a: Microsoft contacts and calendars over Graph, read-only by @bketelsen in #53
- M7 Phase 3b: write Outlook contacts and calendars over Graph by @bketelsen in #54
- M7 Phase 4: maild and mailctl on Windows by @bketelsen in #55
- M7 Phase 5: the app on Windows by @bketelsen in #56
- fix(settings): show the account form's error in view; Phase 5's trial by @bketelsen in #57
- fix(rpcserver): answer internal when a handler panics by @bketelsen in #58
- fix(rpcserver): answer internal when a reply is too large by @bketelsen in #59
- docs: maild runs as a lodge app (ADR-0041, plan 0011) by @bketelsen in #60
- feat(maild): serve lodge's mail app socket through the kit (M8 phase 2) by @bketelsen in #61
- feat(app): the web build for lodge's /app/mail/ (M8 phase 3) by @bketelsen in #62
- feat(app): compose, settings, events and reminders as routes in lodge (M8 phase 4, part 1) by @bketelsen in #63
- feat(maild): read-only /mcp/mail for agents through lodge (M8 phase 5, part 1) by @bketelsen in #64
- docs: the desktop app on a maild behind lodge (M8 phase 6 design) by @bketelsen in #65
- feat(app): the desktop app as a lodge client (M8 phase 6) by @bketelsen in #66
- feat: attach files from a browser, and save attachments in lodge (M8 phase 4) by @bketelsen in #67
- refactor(rpc): serve maild's RPC on lodge's kit (kit/jsonrpc) by @bketelsen in #68
- build(deps): pin lodge's kit v0.1.0 and lodge-client client/v0.1.0 by @bketelsen in #69
- feat(app): a narrow window shows one pane at a time, for the phone by @bketelsen in #71
- feat(lodge): Save As downloads the whole message from the content route by @bketelsen in #72
- feat(lodge): a permanent route by Message-ID, which maild resolves by @bketelsen in #73
- feat(lodge): announce new mail to connected clients, and notify in a browser by @bketelsen in #74
- feat(app): the desktop app notifies new mail from a maild behind lodge by @bketelsen in #75
- feat(mcp): the ;write and ;send scopes, with tools to draft a reply and send by @bketelsen in #76
- test(lodge): limits and policies tested, and two fixes on M8's edges by @bketelsen in #77
- docs: M8's status, the lodge socket's 403, and the map by @bketelsen in #70
- docs(plans): record the live ;write drafting check in plan 0011's Phase 5 by @bketelsen in #78
- feat(app): a narrow window's module tabs reach Calendar, People and Tasks by @bketelsen in #79
- feat(app): Calendar, People and Tasks show one pane at a time on a phone by @bketelsen in #80
- docs: calendar, tasks and contacts for agents (ADR-0042, plan 0012) by @bketelsen in #81
- feat(mcp): agents read calendars, tasks and contacts in their scope by @bketelsen in #82
- feat(mcp): maild computes the conversations waiting on a reply by @bketelsen in #83
- feat(mcp): agents create and complete tasks and set Remind Me under ;write by @bketelsen in #84
- feat(mcp): tools answer each message's Message-ID and permanent lodge URL by @bketelsen in #85
- feat(mcp): draft_reply answers the URL that opens the draft in Compose by @bketelsen in #86
- feat: drafts not yet saved show in Drafts and All Drafts by @bketelsen in #87
- fix(app): drafts not yet saved show under a heading and in the count by @bketelsen in #88
- feat(mcp): draft_message drafts a new message under ;write by @bketelsen in #89
- docs: the owner's review-pack decisions of 2026-10-21 by @bketelsen in #90
- feat(app): take the colour tokens from @frostyard/lodge-ui, with no visual change by @bketelsen in #91
- refactor(unsubscribe): use lodge's kit/netguard by @bketelsen in #92
- build(app): pin @frostyard/lodge-ui to ui/v0.1.0 by @bketelsen in #93
- feat(app): the splitter from @frostyard/lodge-ui, with keyboard resizing by @bketelsen in #94
- refactor(app): the rpc session from lodge-client client/v0.3.0 by @bketelsen in #95
- fix(sync): retry Outlook's 'authenticated but not connected' login by @bketelsen in #96
- feat(signin): finish an OAuth sign-in with a pasted address (ADR-0043, accepted as amended) by @bketelsen in #97
- feat(app): the icon button from @frostyard/lodge-ui by @bketelsen in #98
- refactor(app): the narrow query and hook from @frostyard/lodge-ui by @bketelsen in #99
- fix(settings): show the address field when a signed-in account signs in again by @bketelsen in #100
- feat(app): the nine sheets from @frostyard/lodge-ui by @bketelsen in #101
- feat(app): the menus from @frostyard/lodge-ui by @bketelsen in #102
- test(e2e): wait longer for a cold WebDriver server, and try it twice by @bketelsen in #103
- build: pin @frostyard/lodge-ui to ui/v0.5.0 (the cold-blue accent) by @bketelsen in #105
- test(e2e): the window chrome and the keyboard map on WebView2 (M7 Phase 5) by @bketelsen in #104
- fix(calendar): answer an invitation on the object as a pass left it by @bketelsen in #106
- fix(pim): read the written object again in its transaction by @bketelsen in #108
- fix(ui): fit the filter tabs beside Sort, moving the rest into More by @bketelsen in #109
- fix(ui): move toolbar actions that do not fit into a » menu by @bketelsen in #110
- refactor(app): the toolbar's window buttons from @frostyard/lodge-ui 0.6.0 by @frostyard-machines in #111
- feat(app): Windows' caption buttons on Windows (ADR-0038) by @frostyard-machines in #112
- build(app): pin lodge-client to client/v0.3.2 by @frostyard-machines in #113
- docs: drop private host and device names by @frostyard-machines in #114
- feat: move the desktop's mail to lodge's host (plan 0011 Phase 7, ADR-0044 proposed) by @frostyard-machines in #115
- docs: accept ADR-0044 (sealed secrets on the server) by @frostyard-machines in #116
- feat(secrets): seal the server's secrets with a systemd credential (ADR-0044) by @frostyard-machines in #117
- feat(scripts): seal-mail-secrets.sh, the move from plain to sealed secrets (ADR-0044) by @frostyard-machines in #118
- ci: add a govulncheck job and fix its findings (Go 1.27.3, x/net v0.61.0) by @frostyard-machines in #119
- feat(packaging): stage maild for lodge under usr/ only (core ADR-0058) by @frostyard-machines in #120
- build(release): a .deb release on v* tags (core Plan 0010 Phase 2) by @frostyard-machines in #121
New Contributors
- @frostyard-machines made their first contribution in #111
Full Changelog: https://github.com/frostyard/frostmail/commits/v0.1.0