An unused math import in the Krea 2 core, an unused os import and
stitch_blend_from_mask import in the clip tests, and result assignments
nothing read in the Save Image caption test. ruff check --select F,E9
is clean again.
Save Video shares sanitize_exact_name with Save Image, which hard-coded
its own node and input, so a rooted prefix such as "/abs/x" failed with
"Save Image: exact_name must be a relative name". The helper now takes
the node and input to name; Save Image's wording is unchanged.
With on_existing set to "error", the policy was checked frame by frame
inside the write loop, so a batch whose second name already existed
wrote the first image and its caption sidecar and only then stopped -
despite the comment promising the whole batch is validated first. The
collision check now runs for every destination, after the path checks
and before the first write, so an error leaves the folder untouched.
- New node: Save Image - PNG or lossless JPEG XL (optional
pillow-jxl-plugin, the pack's new jxl extra), workflow embedding on or
off (honoring --disable-metadata), an exact_name mode that saves under
exactly that filename with no counter suffix, overwrite/skip/error
collision policy, output_dir up to absolute dataset paths, a caption
.txt sidecar sharing the basename, file_path and IMAGE passthrough
outputs, and always-re-run semantics so a deleted file re-saves.
- Image Resize now only invents pixels on an explicit width+height pad
request: scale-derived modes resolve divisible_by snaps with a
sub-half-step resize instead of padding a sliver; the tour workflow
switched to an explicit 512x512 letterbox so its mask lane demonstrates
real bars.
- Registry-facing metadata: the description now names every node family
(Manager search matches against it) and the keyword list grew to match.
- Release 1.2.0: version bump, frontend version constant synced,
changelog dated, and a publish workflow (Comfy-Org/publish-node-action)
that releases to the registry whenever pyproject.toml changes on main.