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