Commit Graph
14 Commits
Author SHA1 Message Date
ausboss 8124c92cd9 Merge main into fix/frame-out-pad-bars-subgraph-packs 2026-10-06 15:43:10 -05:00
ausboss 1ec9359a92 Node text: say what the nodes do today
Tooltips, two labels and one console warning still described older
versions of the nodes. Wording only: no inputs, outputs or saved values
change.

- Latent Size: the gear, its menu and an error said "Resolution".
- Video Crop + Rotate + Pad -> Clip: tooltips said Snap and Limit where
  the node says Frames for and Length, and described dragging a handle
  to move the whole window. IN and OUT trim; Length sets a frame count.
- Run Timer: earlier runs are in the right-click menu, not under the
  number.
- Krea 2 Outpaint Model Patch: the rounding strip the warning names only
  comes from Divisible by on the Crop + Rotate + Pad nodes. Load Image +
  Pad never adds one.
- Save Image: its preview switch said off skips a temp file. It writes
  none, so it gets its own tooltip; the other preview nodes keep theirs.
- Workflow Note: the Banner layout shows the title, subtitle and author.
- LoRA Loader: a docstring said the pack only reads the Civitai file. It
  also writes it on Fetch Civitai info.
2026-10-06 13:15:16 -05:00
ausboss 8f1f22be98 Workflow Note: Detect from this workflow also reads subgraphs
It read the main canvas only, so a pack used only inside a subgraph was not listed.
2026-10-06 12:57:32 -05:00
ausboss 5a4674f5f6 Hold each node's minimum width
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.
2026-10-05 09:35:15 -05:00
ausboss aea32dea2d Workflow Note: Use it covers a LoRA, and writes paths the way the folder lists them
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.
2026-10-05 09:35:15 -05:00
ausboss dce75240d2 Merge remote-tracking branch 'origin/main' into fix/note-model-row-notes
# Conflicts:
#	CHANGELOG.md
2026-10-04 15:43:55 -05:00
ausboss ae2af9db47 Merge branch 'fix/clip-node-ux' into rc/2026-09-30
# Conflicts:
#	CHANGELOG.md
#	example_workflows/LTX 2.3 Video Outpaint (AusBoss).json
#	js/input_preview/index.js
2026-09-29 22:16:33 -05:00
ausboss 40571ce86b Workflow Note: point loaders at a model found in a subfolder
The note said "installed" for a model kept in a subfolder while the
workflow's loader still asked for the bare file name, which ComfyUI could
not find and marked red. Such a row now says where the file is ("in
LTXV 2.3/") and has a Use it button that points those loaders at the found
copy. The check stays on the ComfyUI server's own model lists.
2026-09-29 21:33:25 -05:00
ausboss b71cc0271c Workflow Note: keep each model's note when the editor saves
The editor's model table had columns for file, folder, size and URL but
none for the row's note, and the form read each row back without it. Save
(from the form or the JSON view) wrote every model with an empty note, so
the grey line under each file name was gone after the first edit. On a
note with model notes, Cancel and Escape also asked to discard changes
when nothing had changed, because the form never matched the saved card.

The table now builds its header and cells from MODEL_COLUMNS, which has
one column for every field a model row keeps, and reads rows back with
rowFromCells. That adds a Note column. tests/workflow_note.test.mjs checks
that the columns cover every kept field and that an unchanged table saves
back the same card.

On frontend 1.53.6 (classic canvas and Nodes 2.0), the LTX 2.3 Video
Outpaint example keeps its five model notes through a how-to edit and
Save; Cancel with no edits closes without asking; a note edited in the
new column and a model added with a note both show and survive a save and
reload. The table fits the dialog without scrolling sideways from 700 to
1800 px wide.
2026-09-29 15:04:39 -05:00
ausboss 2bc842bd41 Workflow Note: grow to fit its text in the classic canvas
A note saved a few pixels shorter than its content showed a scrollbar and
hid its last row. The LTX 2.3 Video Outpaint note in the smaller example
layout (440 x 810) was 6 px short, so its links sat behind the scrollbar.
The classic canvas keeps a node's saved height; Nodes 2.0 already sized
the note to its content.

The note now measures its card's natural height at the node's width and
grows the node to fit when a workflow opens, after an edit, after the file
check, and when the node's width changes, since the text rewraps. It never
shrinks the node. The load fit runs before ComfyUI snapshots the opened
workflow, so a note that grows on load does not mark the workflow modified.
A corner drag stops at the fit, as it does in Nodes 2.0: holdNodeMinHeight
lifts the node's computeSize height to the measured floor. A card less
than half a pixel short is left alone, because Chrome rounds that away and
draws no scrollbar. Nodes 2.0 is untouched.
2026-09-29 10:50:57 -05:00
ausboss 2a3268f934 Cards and panels: leave them out of saved workflows
Every card and DOM panel was added with options.serialize = false, which
only keeps a widget out of the queued prompt. The frontend saves each
widget whose own serialize is not false and hands saved values back by
position, so each card and panel saved an empty value of its own after the
node's real values, and an input appended to the node later opened holding
it (Stitch Inpaint's seam, Crop For Inpaint's keep_inside). Every DOM widget
now also sets widget.serialize = false, as the frontend's own previews do,
so new saves carry only real values.

Older saves still end in those empty values, and loading them now skips
the cards and panels. On every node that saves by position they come after
all real values (Save Image's card sits mid-list, but Save Image saves by
name), so nothing moves. On frontend 1.53.6 the examples (the 21 from
before the trim and the 7 now) and 14 older saved workflows queue
byte-identical prompts before and after, keep every value, and save and
reopen cleanly.

An input appended later still needs a fallback for those older saves.
tests/saved_widget_values.test.mjs checks that every DOM widget sets the
flag, that the examples keep their values with the panels skipped, and that
each input appended to a node whose older saves end in an empty value is
declared and, as a widget input, has a card resetUnknown fallback that
fires. tests/test_card_fallbacks.py (ComfyUI's Python) checks each fallback
is the input's own default. AGENTS.md states the rule.
2026-09-29 03:20:45 -05:00
ausboss 235225000c Editors: Cancel with a discard-changes prompt
The Crop + Rotate + Pad editor gains Cancel beside Save & close; Escape
now cancels. Changed edits ask first (shared js/shared/discard_prompt.mjs)
and Discard restores the node to its state when the editor opened. The
Workflow Note editor asks before Cancel, Escape or a backdrop click drops
edits, and a JSON edit carried back to the form no longer outlives Cancel.
2026-09-26 17:59:48 -05:00
ausboss abd899afe2 Report copy results truthfully on Seed and Workflow Note
Over plain http (ComfyUI on a LAN address) the page has no Clipboard
API, and the optional-chained write resolved without copying anything,
so the buttons showed a success they had not earned. One shared helper
now falls back to the copy command and says whether the text really
reached the clipboard; the buttons show a failure mark when it did not.
2026-09-24 00:03:31 -05:00
ausboss 699208dadc Prepare 2.0.0 release candidate 2026-09-07 19:56:23 -05:00