- internal/hub: project side of the frozen ask-contract. GET /capabilities,
read-only POST /ask answerer (no LLM, <3s), and the outbound POST /notify
client.
- internal/apprise: daily-summary delivery through the house Apprise API.
- internal/summary: deterministic plain-text daily summary builder.
- internal/store: CountByCategory, MessagesByCategory, and summary CRUD.
- internal/server: /capabilities and /ask (bearer-token protected), plus the
Reports screen (/reports, build, send, delete).
- main.go: -summary, -summary-send, and -notify CLI entry points for n8n.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- FR-11 rules editor: plain-text area at /rules, saved and versioned
(SaveRules appends a version; restore re-saves an old version), parse
errors surfaced, one-click re-classify. The reply model now reads the
rules document too (FR-11).
- FR-7 unsubscribe: parse and store List-Unsubscribe / List-Unsubscribe-Post
(migration v6), detect email and web links (internal/unsubscribe), a
domain-level ignore list, and an explicit record of what was marked. No
code path contacts an unsubscribe link; acting on one needs Sam's approval.
- Migration v6 is additive; unsubscribe gains url/updated_at.
- Tests: detector, parser, store migration/records/candidates, rules editor,
unsubscribe handlers, message-detail rendering.
Co-Authored-By: Paperclip <noreply@paperclip.ing>