"Longer posts, harder test cases, a cleaner toolchain."
Adds long-form post classification, sharpens the evaluation set, and clears the extension's dev-dependency security debt. No breaking changes.
New
- Twitter Article (Notes) support: long-form posts at
/i/notes/URLs are now extracted and classified, not just tweets.
Fixed
- Extracted post text is now whitespace-normalized before hashing, so the same post with different internal spacing no longer misses the cache and gets re-classified.
Changed
- Sharper evaluation set: added fearmongering, divisive/ragebait, and YouTube hype/clickbait boundary cases, plus more YouTube and Reddit examples for platform coverage (@vaishnavidesai09, #92).
- Refreshed the accuracy claim to 96% - the old 98% was measured on a smaller, easier set; the current set is larger with harder boundary cases, and 8B+ models now lead, so
llama3.1:8bis the recommended default.
Security
- Cleared all 21 npm audit advisories in the extension dev toolchain (all dev-only and transitive under
jest; the shipped extension carries nonode_modules). No runtime or user exposure. THREAT_MODEL.mdgained an engineering-controls table, and thechrome-extension://*CORS note was corrected: it is a no-op literal that fails closed, not an over-permissive wildcard (the extension reaches the server via MV3host_permissions).
Infrastructure
- The extension Jest suite (81 tests) now runs in CI, so JavaScript regressions are caught. Docker entrypoint hardened (PUID/PGID drop via gosu, SIGTERM forwarding). Dependabot PRs no longer trip the PR-description check.
git pull