The format is based on Keep a Changelog.
2.5.2 - 2026-06-07
- fix: update redis hmSet -> hSet
- test: refactored against test-fixtures 1.7.0 (#72)
2.5.1 - 2026-05-24
- fix: guard pubsub JSON.parse and validate payload shape in check_result
- fix: guard new RegExp() in check_result_match against invalid config
- fix: results_init fast-path now calls next() when notes.redis exists
- fix: preserve originating plugin on awards so AUTH repeat-scoring works
- fix: check_result_length measures collection length per karma.ini docs
- fix: detect empty hGetAll ({}) in ip_history_from_redis and check_asn (node-redis v4)
- docs: README threshold wording matches deny boundary
2.5.0 - 2026-05-24
- dep(address-rfc2821): -> @haraka/email-address
2.4.1 - 2026-05-13
- fix: after trapping a denysoft, return denysoft later (vs deny)
- config: update spammy TLDs
- fix(config): spamassassin hits -> score
2.4.0 - 2026-05-06
- extend spammy_tlds to support multi-label suffixes
- allow rspamd to deny(soft) image-only spam from specific ASNs
2.3.0 - 2026-05-05
- allow rspamd to greylist image-only spam
- allow rspamd to greylist Google Groups messages
2.2.0 - 2026-03-31
- allow rspamd to greylist ASNs when SA & rspamd agree
- replace to_object with arrays
- deps(all): updated to latest
- style: ES2024 updates throughout
- test: test runner is now node:test
- test: coverage 58% -> 86%
- remove unnecessary done callbacks in synchronous tests (#65)
2.1.8 - 2025-10-27
- fix: use optional chaining in should_we_skip
- reduce ASN details saved to results store
- config: update plugin names
2.1.7 - 2025-01-31
- replace utils.in_array with [].includes
- dep(eslint): upgrade to v9
- doc(CONTRIBUTORS): updated
2.1.6 - 2024-11-08
- fix missing error handler on redis client #61
2.1.5 - 2024-04-23
- doc(README): remove spurious markdown link
- doc(CONTRIBUTORS): added
2.1.4 - 2024-04-06
- eslint: reduce config to depending on @haraka
- package.json: added scripts
- doc(CHANGELOG): ordered urls
- doc(Changes) -> CHANGELOG
- prettier & eslint configs
- chore: populate package.json [files]
2.1.3 - 2023-12-12
- ci: use shared configs
- style(es6): replace for..i with for...of
- deps(*): bump versions to latest
2.1.2 - 2023-12-11
- config: update several plugin names
- style(es6): refer to plugin as 'this'
2.1.1 - 2023-08-22
- fix: check_result unexpected return #50
2.1.0 - 2022-11-29
- fix: in disconnect, call redis_unsub after skip check
- dep(redis): 4 -> 4.1
- dep(pi-redis): 2 -> 2.0.5
2.0.4 - 2022-05-28
- use .release as submodule
2.0.3 - 2022-05-28
- fix: depend directly on redis
- fix: update redis command names for v4 compatibility
- fix: update redis commands to be async
2.0.1 - 2022-05-27
- chore(ci): depend on shared GHA workflows
2.0.0 - 2022-03-29
- remove lots of plugin=this
- remove unnecessary braces and trailing ;
- some promises.
- try to unsubscribe in case connection is marked to skip during transaction
- add 'exists' pattern
- don't interfere with STARTLS and AUTH when karma is listed above those plugins in config/plugins
- private addresses and flagged connections exemption
- add TLS awards #19
- splash on some es6
- add AppVeyor CI testing
- revert #9, it breaks current Haraka deployments
- update for eslint 4 compat
- Add results_redis_publish=true for haraka-results changes #9
- emit error if redis plugin didn't create connection
- move merge_redis_ini into load_karma_ini, so it also gets applied after a karma.ini change
- skip redis operations when no connection exists
- use the new haraka-plugin-redis
- remove exceptions for soft denials. This makes denial time simpler.
- rules updates
- add rule #280 for known-senders
- add support for 'length' type, with eq, gt, and lt operators
- use shared haraka-eslint
- use redis.merge_redis_ini()