The card read a row's hover text from the widget, where the frontend does
not keep it, so no row of any card said anything on hover. It now falls
back to the node's definition, which holds the tooltips the backend
declares.
A card whose height changed set its node to its smallest size, so a node
made taller for its picture lost that height whenever More opened or
closed. The node now grows or shrinks by what the card did when the person
changed it by hand, stays as it is when the card changed by itself, and a
loading workflow takes its saved height. A node that sat at its floor
still hugs the new floor.
Fill holes fills gaps that lie fully inside the mask, with the same fill
Mask Refine uses. Free VRAM takes SAM 3 and its text reader out of the
graphics card's memory right after the search, with ComfyUI's own unload
of one model, also when the search found nothing. Both are off by
default.
Registers the node, gives it a widget card and the shared preview panel
with a FIND tool that runs the node alone, a readout of how many things
matched and how sure SAM 3 was, and the stop message on the node's own
face. A stopped run shows the plain picture, not the last find. Each name
asks SAM 3 for up to 16 matches, and Sureness starts at 0.7.
The card took any whole number with a range over 2048 for a pixel size and
stepped it by 8. On the Integer node that made a Steps box go 25, 17, 9, 1:
8 was out of reach without typing. Select Every Nth, Split Batch, Select
Frame and Load Video's frame limit stepped by 8 too.
A whole number now moves by its own increment. A row steps by 8 only when it
is a pixel size (a px unit, or `pixels` on a row that shows no unit, as
Image Resize's W x H), and a row can name its own `step` (Load Image + Pad's
Multiple keeps 8).
Each example keeps its inner steps in two boxes, and nothing on the canvas
said what was in them. A note now sits at the top of "Behind the scenes",
right above the boxes. It says what they do in one sentence, then
"Double-click one to see inside." The text is a heading, so it reads at
the zoom the examples open at.
The boxes and the Models group under them move down 158 px to make room.
In Krea 2 Inpaint Masked and Qwen Image 2.1 Edit + Realign the picture
nodes beside them are that much taller, so every group still ends level,
and the saved view is re-centred (Qwen opens at zoom 0.7, was 0.72) to keep
the whole top level in sight. In the watermark example the group grows
upward instead, where there was free canvas, so its boxes and wires stay
put. The Workflow Note card loses its "The two boxes in the middle do the
work" line and is that much shorter.
What each workflow sends to the server is unchanged apart from the
Workflow Note text. Checked in the classic view and in Nodes 2.0: no
overlaps, nothing outside its group, every note fits its text.
Every node stops at the width it was built for when it is dragged narrower:
the growing panels and the fixed cards. Load Video's IN and OUT boxes stay
whole in a narrow node.
The frontend adds 104 pixels to a growing panel's minimum width and leaves a
fixed-height card's minimum out of its width sum, so a card fell to a 210
pixel default. Panels pass exactMinWidth to fillNodeHeight or call
holdNodeMinWidth, and tests/panel_guards.test.mjs fails a new panel that does
neither.
Qwen Image 2.1's VAE decodes RGBA, so wiring its VAE Decode straight into
Stitch Inpaint failed with "Inpainted channels (4) do not match the cropped
image (3)". A 4-channel patch over a 3-channel stitcher now loses its alpha;
every other channel mismatch still raises.
A LoRA from the note's list that sits in a subfolder only showed as
installed, while the model, text encoder and VAE lines offered Use it. The
LoRA line now shows the folder and offers Use it as well, which writes the
found path into the LoRA Loader row. LoRA Loader follows a row change made
by another node in Nodes 2.0 too.
Use it also wrote the found path with forward slashes. A Windows server
lists files in subfolders with backslashes, and a loader only takes a file
exactly as listed, so the loader kept an unknown value. Use it now writes
the folder's own spelling.
2.6.2 let app shortcuts through from the boxes on a node face. Six more
boxes still stopped every key: the LoRA picker's search box, the trigger
word and template name boxes, the gear menu's boxes, the picture and video
picker's filter, and the server file path box on the video nodes. They use
keepKeyInField now, and a search box no longer treats Ctrl + Enter as a pick.
A test reads every keydown handler under js/ and fails on one that stops a
key before looking at it. The Workflow Note editor and the keep or discard
question are the two that own the keyboard on purpose.
Every field on a node face stopped all key presses, so ComfyUI's shortcuts did nothing while the cursor was in a Text node, a number box, the Seed box or a file name box. Ctrl + Enter only queued a run after a click outside the node.
The fields now keep the keys they type and edit with (so Delete or Ctrl + A never reach the canvas) and pass app shortcuts on to ComfyUI, as its own text boxes do. One helper, keepKeyInField in js/shared/canvas_passthrough.mjs, is used by the shared card's text, multiline and colour fields, the number boxes, the Seed box, Save Image's name fields, Load Video's IN and OUT boxes and LoRA Loader's strength boxes.
Updating the pack in Manager restarts ComfyUI and reloads the workflow, but
not the page. The tab kept running the old AusBoss scripts and nothing said
so: the update guard only looked once, when the page loaded.
The guard now looks again every time the server comes back, asks once per
installed version, and its message stays until it is closed instead of
going away after 30 seconds.
Follow-up to issue #108. The missing LoRA Loader panel reported there was
old browser copies of the shared modules, fixed in 2.5.2.
In Nodes 2.0 a panel sits in the node's own widget area instead of a
.dom-widget, so the pass-through did not recognise it and the drag-zoom
never started there. Both layouts are matched now.
The pack's server still never contacts a host. The info card's button has the
browser ask civitai.com about one file by its SHA256, then the server saves
the answer beside the LoRA as <model>.civitai.info after checking it names the
same file (size, shape and hash). The old Python HTTP call stays gone.
release_preflight now allows a raw fetch() only in js/cache_guard and
js/lora_loader. SECURITY.md, AGENTS.md, the README and the LoRA Loader help
page describe the change.