Commit Graph
9 Commits
Author SHA1 Message Date
ausboss ac9cc58592 Report each failed input check once, and let ComfyUI check the rest
A VALIDATE_INPUTS that takes **kwargs makes ComfyUI skip its own range
and list checks for every input, and a failed check comes back once per
input: Image Crop + Rotate + Pad without a picture showed 20 copies of
"Select or upload a source file first". Each validator now names only
what it reads.

- Image Crop + Rotate + Pad, Load Video and LaMa Inpaint read one input
  and report one error, on it. Video Crop + Rotate + Pad (Frame and
  Clip) read the three that choose the source. LoRA Loader reads the
  stack and on_missing; Save Image reads its two names and output_dir.
- Save Video has no validator any more: ComfyUI's own check holds a
  typed fps to 0.01-240.
- Load Video and the Clip node check the trim window, force_rate and
  Fixed frames as they run, where a wired bound has its value. They are
  async, so ComfyUI starts them ahead of other nodes.
- The sources still skip ComfyUI's list check on purpose, so uploads,
  subfolders, MaskEditor saves and a stale video choice in local path
  mode keep working. The path checks behind them are unchanged.
- crop_aspect_ratio accepts any whole-number W:H, as the transform
  always has, so a workflow made with someone else's presets still runs;
  anything else is now refused before the run.

tests/test_validate_inputs.py pins what each validator names (runs in
CI) and, with ComfyUI, drives ComfyUI's own validation.
2026-09-29 21:43:01 -05:00
ausboss c046d973c5 Drop the unused names ruff reports
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.
2026-09-24 00:20:11 -05:00
ausboss f45b565a16 Name the Clip node in its decode errors and memory advice
Video Crop + Rotate + Pad -> Clip decodes through Load Video's helper,
whose errors hard-coded "Load Video" and, when a trim would not fit in
memory, told the user to set custom_width/custom_height - inputs the
Clip node does not have. The decode now takes the calling node's name
and its own advice; the Clip node suggests every_nth, max_frames and
fixed_frames. Load Video's messages are unchanged.
2026-09-24 00:20:11 -05:00
ausboss f5cf891661 Trim Stitch Inpaint's blend mask to the frames that came back
apply_stitch already keeps the leading frames when a video model returns
fewer than the stitcher holds (LTX keeps 8n+1, Wan 4n+1), but
stitch_blend_mask still demanded the full per-frame mask, so the node
printed "stitching the first 49" and then failed building its blend_mask
output. Both paths reproduced it: the Clip node's per-frame stitcher and
Crop For Inpaint with a per-frame mask. The mask now follows the stitch;
asking for more frames than the stitcher holds is still an error.
2026-09-24 00:20:11 -05:00
ausboss 4cb2af204a Release 2.1.0: Qwen workflows and polished image/video controls 2026-09-22 15:23:07 -05:00
ausboss 3fd4d37f85 Contain media reads and saves within ComfyUI folders 2026-09-10 09:45:40 -05:00
ausboss 0be940f8dc Gate local path mode behind the operator's opt-in for queued runs too
The video transform nodes' local_path widget was read by every queued run,
so any client that can reach the unauthenticated /prompt route could make
the server open any video on the disk. Local path mode now reaches only
ComfyUI's input, output and temp folders unless ComfyUI is started with
AUSBOSS_TRANSFORM_LOCAL_PREVIEW=1, for queued runs and editor previews
alike. Tooltips, help pages, README and CHANGELOG say so; the clip node's
test fixture opts in explicitly.
2026-09-09 17:08:18 -05:00
ausboss beb98ad6a8 Video timeline overhaul, outpaint-ready clip canvas, example styling
Video Crop + Rotate + Pad -> Clip / -> Frame:
- The rail under the preview is a timeline: playhead scrubbing on the node
  face, frame-accurate IN/OUT handles that carry the playhead, Set IN/OUT
  and I/O keys in the editor; js/shared/timeline_math.mjs mirrors the
  backend's inclusion rule and emits hundredth-grid seconds.
- Scrubbing no longer flickers: storyboard tiles only stand in when nearer
  than the frame on stage and are decoded at their target times; the scrub
  session returns the frame it already decoded instead of the next one;
  served previews are cached.
- Aspect lock on the format chips (pad, lock, clear) with lockPadding in
  transform_geometry; Lock aspect in the editor.
- A new source keeps fill, feather, resize, Snap and Limit and re-pads to
  the lit chip; a canvas row (fill, feather, resize) sits on the node face.
- The clip node declares a black fill and feather 0 as its defaults and the
  editor's Reset all follows the node's own declaration, so a fresh node or
  a reset never lands on the grey, feathered canvas the LTX IC-LoRA cannot
  paint; image nodes keep grey/24.

Examples:
- LTX 2.3 Video Outpaint: Select Frame -> core Generate Text writes the
  positive prompt; note rewritten with the tested rules (53 renders over
  six clips: only fill #000000 + feather 0 decide painting).
- Core model loaders coloured and Workflow Notes grown to fit across the
  other examples.
2026-09-09 17:03:01 -05:00
ausboss 699208dadc Prepare 2.0.0 release candidate 2026-09-07 19:56:23 -05:00