Keep Krea 2 Outpaint, Klein 9B Outpaint, LTX 2.3 Video Outpaint,
Qwen Image 2.1 Edit + Realign and Simple Video Watermark Remover, and add
Krea 2 Inpaint Masked and Krea 2 Rotate + Outpaint with their sample
pictures. Remove the other sixteen examples and the sample picture only
they used.
Update the README example table and links, the Realign to Source help
page, a test comment, the CHANGELOG and the pyproject description, and
raise the Registry archive budget to 13 MB.
Resolution Master is renamed Latent Size: the old name belongs to another
node pack. The node id AUSBOSS_NODES_Resolution is unchanged, so saved
workflows and API graphs load and run as before. Workflows only store a
title that differs from the default, so they pick up the new name; a saved
title that starts with "Resolution Master 🆎" gets the new name in its
place on load. The example, its thumbnail and the README image follow.
- Latent Size can be resized: wider stretches the chips, fields and size
picks, and taller gives the stage the room. It opens at 340 x 531 as
before and goes down to 320, where the size row tightens so W, H and MP
stay whole.
- LoRA Loader: gear -> Long names, end (the default, as before) or middle,
which keeps the checkpoint number at the end of a name in view. The
picker opens wide enough for long names and shortens the folder first.
- The frontend adds 104 px to a DOM panel's minWidth before using it as
the node's floor (LGraphNode.computeSize), so a node that opened
narrower jumped wider the moment its corner was touched: the LoRA Loader
could not go under 424. fillNodeHeight gains exactMinWidth, which
measures that padding and takes it back off, and holdVueNodeMinWidth
lends the floor to Nodes 2.0, whose corner drag reads the node's inline
min-width instead. Both nodes use them; the other panels keep their old
floors for now.
- README: the workflow-tools image shows Latent Size alone; the Seed card
is gone.
The LoRA loader promotion (strength bars, absorb chain, moved-file
resolution, reconnect, master-toggle memory, slot-band bar), the Image
Crop + Rotate + Pad megapixel resize and quick row, the scrub-input
standard, and the dynamic README badge.
- 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.
The ComfyUI version floor never reached the registry. comfy-cli reads it from
a [tool.comfy] key named requires-comfyui; the pack declared
supported_comfyui_version, which the parser ignores, so 1.1.0 published with
an empty floor and Manager had nothing to refuse an incompatible install on.
Also declares Operating System :: OS Independent, which is where the registry
sources supported_os from, and publishes the license as a readable name rather
than the literal string {"file": "LICENSE"} that a file reference
serializes to. Accelerator classifiers stay off rather than asserting hardware
nobody has tested.
Verified by parsing pyproject.toml through comfy-cli itself: the floor now
reads >=0.27.1 and supported_os reads ['OS Independent']. No node behaviour
changes.
Closes the Unreleased section into 1.1.0 and syncs the version across
pyproject.toml and AUSBOSS_JS_VERSION, which release_preflight.py compares so
a fresh install never trips the stale-browser warning.
First version published to the Comfy Registry. 1.0.0 was never tagged or
released anywhere, so it stays as changelog history rather than becoming the
registry's first entry describing a fifth of what it contains.
Every registered node now has rich help: Video Unbundle and Video Bundle
Edit only existed inside the family page, which ComfyUI's help panel
never shows because it looks docs up by exact node id, and the
SimpleWatermarkRemover compatibility alias had nothing pointing users at
LaMa Inpaint. 21 of 21 mapping keys now have a js/docs page.
Three statements the review verifiers caught as false stay fixed too:
the README said no minimum ComfyUI version is declared while
pyproject.toml declares and Manager enforces 0.27.1; the optional-extras
comment promised a warn-and-fall-back that only Stitch Inpaint actually
does, where Refine Mask deliberately stops with the package name; and
the Load Video tooltip cited 0.3.26 for a VIDEO type that landed in
0.3.31 - moot either way, since every supported core has it.
A feathered paste re-blends the background that the sampler already
mixed into its soft edge, which rims the seam. The new fix_edge_halo
toggle estimates the unmixed foreground color with pymatting and pastes
that instead, spreading on a slightly grown blend mask while
compositing with the ungrown one. The toggle is appended and off by
default; without pymatting the node warns once and pastes unchanged.
Pixels outside the blend region stay bit-identical either way.
New edge_refine combo (off / guided filter / matting, default off) plus
an optional guide_image IMAGE input. 'guided filter' snaps the soft mask
to guide edges via cv2.ximgproc.guidedFilter with a radius derived from
the expand amount; 'matting' builds an erode/dilate trimap and solves
closed-form alpha matting with pymatting, with the levels remap cleaning
the result afterward. Both run per frame with the ComfyUI interrupt
check, broadcast a single guide frame across a mask batch, and fail soft
when their optional dependency is absent with an ASCII message naming
the pip install. Selecting a tier without guide_image errors clearly.
The two libraries are declared under [project.optional-dependencies] as
the guided-filter and matting groups; the required install is untouched.
Project structure modeled on ComfyUI-Pixaroma (MIT) with original code:
fail-soft module loader in __init__.py, one file per node under nodes/,
per-node frontend folders under js/ with shared .mjs utilities, offline
validation script, docs, and a smoke-test workflow.
Phase 1 placeholder nodes: Text Box, Show Text (with JS frontend),
Random Line, Image Dimensions.