Commit Graph

15 Commits

Author SHA1 Message Date
steve 05abcf3bac feat(cli): JSON output envelope with stable error codes
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 00:00:25 +01:00
steve 47f877ad82 fix(mail): apply search limit and propagate body read error
- Cap search results to limit (keep most-recent UIDs)
- Propagate io.ReadAll errors from body reads in fetchByUIDSet

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 23:58:09 +01:00
steve 83bf3019c5 feat(mail): IMAP client — select, fetch headers/full, search
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-21 23:55:30 +01:00
steve 7df0c95339 fix(mail): propagate io.ReadAll errors when parsing parts 2026-06-21 23:53:24 +01:00
steve d73aabca96 feat(mail): RFC822 message parsing (headers, body, attachments)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-21 23:51:29 +01:00
steve b9d0b57f84 feat(policy): inbound whitelist + subject-regex filter 2026-06-21 23:49:04 +01:00
steve 4d6ac3e7c6 feat(policy): case-insensitive address and domain matching 2026-06-21 23:47:39 +01:00
steve 5fb022bbaf feat(store): audit log with retention-based purge 2026-06-21 23:45:57 +01:00
steve a4e72b2178 feat(store): seen-set read state with floor baseline and compaction 2026-06-21 23:43:35 +01:00
steve a1e9f601ce feat(store): per-account inbound/outbound whitelist CRUD
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 23:41:10 +01:00
steve 2db459d701 feat(store): accounts CRUD with encrypted password column 2026-06-21 23:38:51 +01:00
steve aaab744b15 fix(store): pin connection pool so foreign_keys pragma sticks
SQLite PRAGMAs are connection-scoped, but database/sql uses a connection
pool. Without pinning to one connection, new pooled connections won't have
foreign_keys enabled, breaking ON DELETE CASCADE enforcement.

Also mark modernc.org/sqlite as a direct dependency in go.mod.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 23:37:11 +01:00
steve 673ed5f350 feat(store): open encrypted SQLite, schema v1, settings 2026-06-21 23:34:31 +01:00
steve 8d04b0fde9 feat(crypto): AES-256-GCM field encryption keyed from EMCLI_KEY
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 23:32:23 +01:00
steve afad3bf3f1 feat: project scaffold, version command, build 2026-06-21 23:30:44 +01:00