v0.6.0
Added
- Subscriber self-service commands (
src/requests.lisp):info,who(gated by:advertised),query(own settings),set mail|nomail|digest - BITNET-style archive search (
src/requests.lisp):search <keyword>,index,get <list> <N>against Maildir archives;:search-enabledper list - AllFix file distribution (
src/state.lisp):filescommand (FILES.BBS),mlisp-admin hatch(add file + announce);:distrib-filesstate tracking - Plugin filter pipeline (
src/filters.lisp)::pre-filterand:post-filterhooks; exit codes 0=pass 1=reject 2=hold 3=discard; space-separated filter chains;invoke-filter-chain/invoke-single-filter - Example filters:
etc/filters/spamassassin,etc/filters/clamav,etc/filters/gemini-archive,etc/unsubscribe-cgi/unsub.sh - mlisp-admin hatch: add file to distrib archive + announce to subscribers
- 27 new BATS specs (
test_mlisp_v06.bats+test_mlisp_filters.bats)
Fixed
string-trim " \t"trimming literaltfrom filter paths — fixed to(list #\Space #\Tab)(classic CL footgun:\tin a string is\+t)string-to-message: CRLF normalisation — strip\rbefore header parsingsb-posix:getpidreplaced with(random 99999)for standalone binary compat- Duplicate
windowed-increment-bounceremoved fromdiagnose.lisp - Forward declarations added to
distrib.lisp,metrics.lisp *compile-file-failure-behaviour*set to:warnin all build scripts
Test coverage: 416 tests (78 FiveAM + 338 BATS)
Full Changelog: v0.5.0...v0.6.0