Releases: craigjmidwinter/mail-muncher
Release list
v0.4.0
Changelog
- 0f320b7: Ship a container image, and list on the MCP Registry (#1) (@craigjmidwinter)
Install
brew install craigjmidwinter/tap/mail-muncherOr download an archive below and verify it:
# 1. checksum -- on macOS use `shasum -a 256` instead of `sha256sum`
sha256sum --check --ignore-missing checksums.txt
# 2. signature over the checksum file (keyless, no key to fetch)
cosign verify-blob \
--certificate checksums.txt.pem \
--signature checksums.txt.sig \
--certificate-identity-regexp '^https://github\.com/craigjmidwinter/mail-muncher/\.github/workflows/release\.yml@refs/tags/' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
checksums.txtv0.3.0
Changelog
- 6816ee4: brand: retranscribe the mark from the corrected reference (@craigjmidwinter)
- cc23405: filter: add from_regex_file, a second program-owned predicate (@craigjmidwinter)
- a1e0732: filter: export the pattern-file accounting, delete the copy in mcpserver (@craigjmidwinter)
- f4901c4: gmail: a message deleted mid-cycle is skipped, not a wedge (@craigjmidwinter)
- 8fffd35: mcpserver: list_rules resolves from_regex_file too (@craigjmidwinter)
Install
brew install craigjmidwinter/tap/mail-muncherOr download an archive below and verify it:
# 1. checksum -- on macOS use `shasum -a 256` instead of `sha256sum`
sha256sum --check --ignore-missing checksums.txt
# 2. signature over the checksum file (keyless, no key to fetch)
cosign verify-blob \
--certificate checksums.txt.pem \
--signature checksums.txt.sig \
--certificate-identity-regexp '^https://github\.com/craigjmidwinter/mail-muncher/\.github/workflows/release\.yml@refs/tags/' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
checksums.txtv0.2.0
Changelog
- 3dd8eb3: brand: add PNG lockups at 4x (@craigjmidwinter)
- 7053b95: brand: document the docs-site scheme wiring in BRAND.md (@craigjmidwinter)
- 1b58ced: brand: drop the badge — the mark stands free on both surfaces (@craigjmidwinter)
- db95a14: brand: pixel-art mark, Silkscreen wordmark, and a two-scheme docs theme (@craigjmidwinter)
- 1fa96a0: brand: redraw the mark as a faithful transcription of the reference (@craigjmidwinter)
- 2a22abd: cli: make the unconfigured state do real work, and add
init(@craigjmidwinter) - 91088dc: config: require
provider, and generate a password_cmd that exists on this platform (@craigjmidwinter) - d0e8e41: feat(imap): fetch from any IMAP server behind the same provider seam (@craigjmidwinter)
- cc0ece1: gmail: stop feeding Spam and Trash to the agent by default (@craigjmidwinter)
- e752595: release: ship signed binaries and a Homebrew tap (@craigjmidwinter)
- 8d8c95d: sink: carry machine-readable addresses in the frontmatter (@craigjmidwinter)
- 0bb023a: sink: stop attachments from masquerading as delivered messages (@craigjmidwinter)
- 2944723: skill: lead with IMAP, and stop telling agents Gmail is the only way (@craigjmidwinter)
Install
brew install craigjmidwinter/tap/mail-muncherOr download an archive below and verify it:
# 1. checksum -- on macOS use `shasum -a 256` instead of `sha256sum`
sha256sum --check --ignore-missing checksums.txt
# 2. signature over the checksum file (keyless, no key to fetch)
cosign verify-blob \
--certificate checksums.txt.pem \
--signature checksums.txt.sig \
--certificate-identity-regexp '^https://github\.com/craigjmidwinter/mail-muncher/\.github/workflows/release\.yml@refs/tags/' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
checksums.txtv0.1.0
First tagged release. mail-muncher gives a program its own read-only mailbox: it pulls messages from Gmail, evaluates each one against ordered composable rules, and writes the matches to a directory as byte-faithful .eml plus an optional markdown rendering with the headers as YAML frontmatter.
It requests exactly one OAuth scope, gmail.readonly. It cannot send, delete, label, or modify anything in the mailbox.
Install
go install github.com/craigjmidwinter/mail-muncher/cmd/mail-muncher@v0.1.0What's in this release
- Gmail provider — OAuth device flow, full scan, incremental history sync, and RAW message download.
- Config loading and validation —
mail-muncher validatechecks a config without touching the network. - Filter engine — the full match-tree language: every combinator and predicate documented in filters. A rule can take its input from a plain text file another program owns, re-read at the start of every cycle, so the consuming program changes what it receives by editing one line.
- Sinks —
.emland markdown, with attachments extracted alongside. runanddaemon— one-shot for cron or a polling loop, with a cycle lock and an instance lock so overlapping invocations cannot collide.--jsonrun manifests — a machine-readable record of every cycle on stdout, stderr reserved for logs. Field names are a documented contract; see the manifest reference.mcp— a stdio MCP server over the archive exposing five tools:list_rules,list_messages,read_message,search_messagesandsync.- Quarantine and failure policies — messages that cannot be delivered are parked rather than dropped, and counted in the manifest.
- Claude Code plugin — the repo packages itself as an installable plugin bundling the MCP server.
Not in this release
IMAP is specified but not built. There is no provider: imap block; the config rejects any provider other than gmail. Gmail is the only implemented provider.
By design and not planned: writing to your mailbox (no labeling, deletion, sending or drafts), a UI, a real search index (search_messages is a case-insensitive substring scan, not a search engine), and any network listener.
Stability
Pre-1.0. The config schema is stable enough to write against, but treat it as subject to change until 1.0.