All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Removed legacy release workflow in favor of streamlined CI/CD
- Version bump for npm publishing improvements
- New
detectLeetspeakoption to catch obfuscated profanity likef4ck,@ss,$h!t - Three intensity levels:
basic,moderate,aggressive - Detects spaced characters (
f u c k) and repeated characters (fuuuuck)
- New
normalizeUnicodeoption (enabled by default) - Detects Cyrillic/Greek lookalikes (e.g.,
fυckwith Greek upsilon) - Handles zero-width characters, full-width characters, and homoglyphs
- Two-pass normalization to prevent Scunthorpe problem (false positives)
- New
cacheResultsoption for 800x performance improvement on repeated checks - LRU eviction with configurable
maxCacheSize(default: 1000) - Cache management methods:
getCacheSize(),clearCache()
- TensorFlow.js-powered toxicity detection via
glin-profanity/mlmodule ToxicityDetectorclass for standalone ML analysisHybridFilterclass combining rule-based and ML detection- Detects: toxicity, insults, threats, identity attacks, obscene content, severe toxicity
- Configurable threshold and combination modes
- Added Dutch language support
- Fixed Turkish dictionary
- Improved Filter class with configuration export/import
- Enhanced performance benchmarks
- Better TypeScript type definitions
- Scunthorpe problem (false positives like "Scunthorpe", "assassin")
- Repeated character handling in edge cases
- User ignoreWords now properly merge with global whitelist
See git history for changes prior to v3.0.0.