Skip to content

v0.12.1

Latest

Choose a tag to compare

@wiltodelta wiltodelta released this 23 Jun 22:15
· 5 commits to main since this release
ee4af80

Changes since v0.12.0

Performance:

  • perf(invisible): fp16 weight variant -- InvisibleEngine now loads the fp16 weight variant on float16 (CUDA/XPU), reading the half-precision weight files (~3.5 GB) instead of the full fp32 files (~7 GB) and downcasting. Roughly halves the cold-start weight read and host-to-device transfer; falls back to the default weights when a checkpoint ships no fp16 variant. fp32 (cpu/mps) and bf16 (qwen) are unaffected.

Detection and removal:

  • feat(identify): NovelAI / Reve / Aphrodite generator stamps -- new AI_GENERATOR_TOKENS entries surfaced through the existing exif_generator signal. NovelAI stamps in PNG tEXt chunks (Software/Source/Title), so exif_generator now reads PNG text chunks in addition to EXIF/XMP; Reve writes reve.com (full token to avoid false-firing on "forever"/"reverie"), Aphrodite writes Aphrodite AI. Detection and removal stay in parity.

Fidelity:

  • feat(invisible): skip the diffusion scrub when no invisible watermark is detectable (P0#5) -- regenerating pixels degrades a clean image, so invisible/all/batch now skip the scrub by default when identify.has_invisible_target() finds no locally-detectable invisible AI signal (--force overrides). A skip never claims the image is clean and fails safe (a detector error runs the removal). New identify.has_invisible_target(path) + ProvenanceReport.ai_from_metadata for callers (e.g. the raiw.cc worker) to reuse the gate.

No breaking changes (all additive).