Skip to content

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 19:38
· 169 commits to main since this release
df10655

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

Full Changelog: https://github.com/frostyard/frostmail/commits/v0.1.0