- 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>