{"slug":"claude-mail","total":17,"limit":100,"offset":0,"since":null,"commits":[{"hash":"8ab0622","date":"2026-07-16 10:26:24 -0700","author":"Steve","subject":"chore: version bump v1.1.0 (session close — retire secret phrase, allowlist gate)","body":""},{"hash":"4294bd6","date":"2026-07-16 09:12:56 -0700","author":"Steve","subject":"claude-mail: retire secret phrase — allowlist + DKIM is the gate","body":"Steve 2026-07-16: allowlisted senders (Dave + all George agent accounts) no\nlonger need the Dust2026 subject phrase. The allowlist already hard-rejects\nnon-allowlisted senders, so the phrase was a redundant second factor on trusted\nmail. Gate is now: on the allowlist AND DKIM/DMARC-aligned. (.env ALLOWED_SENDERS\ngained theagentabrams@gmail.com; .env is gitignored so not in this commit.)"},{"hash":"3edd995","date":"2026-07-16 09:12:22 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-16T09:12:20 (1 files) — lib.js","body":""},{"hash":"69f2dae","date":"2026-07-03 08:07:53 -0700","author":"Steve","subject":"chore: macstudio3 migration — reconcile from mac2 + repoint paths (stevestudio2→macstudio3, node/npm/npx→/opt/homebrew)","body":""},{"hash":"26f2ff5","date":"2026-06-27 12:04:24 -0700","author":"Steve Abrams","subject":"claude-mail: accept PDF attachments too (Read renders them page-by-page)","body":""},{"hash":"5ff9546","date":"2026-06-27 10:17:41 -0700","author":"Steve","subject":"claude-mail: pass image attachments to the headless claude run","body":"Extract image/* parts from incoming mail, save to a temp dir, and hand the\npaths to claude -p so it can view them with the Read tool. Image-only emails\n(no text body) now get processed instead of bounced."},{"hash":"d59fd42","date":"2026-06-25 15:40:43 -0700","author":"Steve","subject":"claude-mail: self-heal — page Steve via CNCP+macOS+George when poller fails N times (mailbox-independent), auto-recover notice; restore probe.js","body":""},{"hash":"ec9022a","date":"2026-06-25 15:30:06 -0700","author":"Steve","subject":"claude-mail: add read-only inbox/sent audit diagnostics","body":""},{"hash":"261df12","date":"2026-06-25 15:23:06 -0700","author":"Steve","subject":"claude-mail: tolerate spaces/case in secret phrase; restore after Purelymail password reset","body":""},{"hash":"ed14dd7","date":"2026-06-25 15:04:51 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-25T15:04:49 (1 files) — tmp-godaddy-login.png","body":""},{"hash":"5a18aa5","date":"2026-06-25 11:33:56 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-25T11:33:53 (1 files) — tmp-godaddy-login.png","body":""},{"hash":"15ecdd0","date":"2026-06-25 10:20:41 -0700","author":"Steve","subject":"gate: drop bare spf=pass from anti-spoof set (keep DKIM/DMARC only — header-From-aligned)","body":""},{"hash":"1a8facd","date":"2026-06-25 10:17:50 -0700","author":"Steve","subject":"poller: guard against invoking claude on an empty prompt (empty body + subject)","body":""},{"hash":"f2f1dc0","date":"2026-06-25 10:17:05 -0700","author":"Steve","subject":"gate: add RFC 3834 mail-loop breakers (auto-submitted/bulk/list/no-reply/own-address) before allowlist","body":""},{"hash":"2afc049","date":"2026-06-25 10:08:28 -0700","author":"Steve","subject":"mailer: archive every reply to IMAP Sent (best-effort) + read-only thread-dump tool","body":""},{"hash":"92f1320","date":"2026-06-25 09:18:50 -0700","author":"Steve","subject":"docs: agentabrams.com Cloudflare migration package (DTD verdict C, validated record manifest + parity check)","body":""},{"hash":"2c4c86b","date":"2026-06-25 08:31:48 -0700","author":"Steve","subject":"claude-mail: email channel for Claude at claude@agentabrams.com (sender-gated, secret-phrase-locked, local access)","body":""}]}