v0.4.0 adds optional CtrlRegen pixel removal via an external backend, a finding-confidence taxonomy with aggregate audits, and a batch of Windows and false-positive fixes.
Optional CtrlRegen pixel removal (external backend)
- Optional pixel-domain watermark removal via an external
mertizci/noai-watermarkcheckout:clean_ctrlregen.pyadapter +setup_ctrlregen.shbootstrap (pinned commit, sparse checkout, venv, SHA verification), plusDockerfile.ctrlregenandmake bootstrap-ctrlregen/docker-ctrlregen-build/smoke-ctrlregen clean_image.py --remove-pixel ctrlregenruns metadata strip → CtrlRegen removal → optional reverse-SynthID before/after score;inspect_image.pyhints at the flag on a high SynthID score- Conservative default strength
0.25(presets 0.15/0.25/0.35/0.5/0.7); the 512×512-native pipeline is auto-tiled by the backend for larger images; the torch subprocess gets higher env-overridable resource caps - Backend is never bundled:
noai-watermarkships no LICENSE file (treated as all-rights-reserved), and its auto-install/restart code paths are bypassed by usingCtrlRegenEnginedirectly
Finding confidence and aggregate audits
- Findings are now classified
confirmed/probable/informational/likely_false_positive, exposed in text/image/container JSON and human reports - New
audit_dir.py(recursive tree) andaudit_website.py(sitemap discovery + crawl) aggregate reports; documented inSKILL.md
False-positive fixes
- DOCX: scan only
docProps/customXml, not the visible body (#14) - Text Layer A: preserve emoji
VS16/ZWJafter an emoji base; new--strip-emoji-glueparanoid flag (#22) - HTML: treat CMS generator tags as informational, not AI metadata (#13)
- PDF: exclude stream payloads from the AI-marker byte scan (#13)
- Inspect reports note unsupported/best-effort paths
Windows support
- Gate POSIX-only
preexec_fnandos.fchmodso writes and optional tools run on Windows (#15, #23) - Reconfigure stdio to UTF-8 so redirected Windows streams no longer raise on invisible Unicode; Windows CI leg + CLI smoke run (#23)
Docs and supply chain
- README CtrlRegen section + research references (CtrlRegen, UnMarker, forensic-stealth caveat), responsible-use disclaimer;
SKILL.md/matrix/vendor-notes/ethics updates - Dependabot config + security-path
CODEOWNERS; bump scipy/numpy/opencv-python/scikit-learn/pywavelets and the base image to Python 3.14-slim - Mock-based CtrlRegen tests (no torch in CI)
Full changelog: README