17 Commits
Author SHA1 Message Date
stuttlepress 68aff828eb Hide internal state widgets in V2 renderer
V2 checks widget.type to decide whether to render; setting only
widget.hidden = true was insufficient. Adding widget.type = "hidden"
matches the V2-compatible pattern used across the ComfyUI ecosystem.
2026-05-12 14:30:41 -05:00
stuttlepress 7501641cd3 Fix VACEOutpaint infinite expand loop in V2 renderer
In ComfyUI's V2 (Vue) renderer, node height is derived from the DOM
widget's rendered size, so setting dom.wrap.style.height inside onResize
creates a feedback loop: each DOM change causes V2 to fire onResize again
with a larger size[1], growing the node without bound.

The fix measures the actual node-height overhead (everything above
dom.wrap) from V2's own first onResize call, where size[1] is DOM-derived
and therefore encodes the exact overhead needed for a zero-change
equilibrium. The handler returns early without touching the DOM until this
measurement is taken, so the loop never starts. A secondary recalibration
step corrects the overhead if V2's internal chrome value shifts post-init
(observed in diagnostic data). The dom.wrap.offsetHeight === h guard is
the terminal condition for both cases.

V1 behavior is unchanged: overhead is pre-seeded with the hardcoded
CTRL_H + NODE_CHROME and no measurement or recalibration runs.

Thank you to @fullthrottler for identifying the root cause and suggesting a temporary fix.
2026-05-12 14:22:19 -05:00
stuttlepress d7f62946f6 Fix outpaint widget becoming unresponsive when node starts offscreen
If a workflow is loaded with the outpaint node outside the visible
viewport, ComfyUI gives the DOM widget clientWidth=0. The double-rAF
initLayout call returned false, and the old code did an early return
that skipped wireInteractions, setupResizeObserver, and the
execution_success listener entirely. The node had no event handlers
and no way to recover.

- Double-rAF no longer returns early on layout failure; interactions
  and the ResizeObserver are always wired up
- ResizeObserver handles !st.initialized by running the full deferred
  init sequence the first time the wrap gets a valid size
- initLayout returns false early when maxW or maxH <= 0, preventing
  degenerate scale values from a partially-visible wrap
2026-05-12 13:20:20 -05:00
stuttlepress 1ad8843044 Add custom pad color support
- Control video pad color is now customizable, allowing direct use with the LTX-2 outpainting lora and any other applications that require a specific color.
- Node renamed to Video Outpaint to reflect its utility beyond VACE.
2026-04-16 14:22:47 -05:00
stuttlepress d21e0916c5 Fix outpaint node state persistence bugs
- Output resolution is now preserved across reloads and re-runs.
  Previously, settings like 720x1280 (9:16) would silently revert to
  1280x720 whenever the node refreshed its preview frames - on page
  load and after every workflow execution.

- Aspect ratio lock button state is now saved with the workflow. If
  you unlocked the AR (showing the open padlock), that choice is
  remembered when you reload. Previously it always came back as locked.

- Aspect ratio chip highlight no longer desyncs when the node scrolls
  off-screen. Scrolling the node out of view and back could cause the
  wrong aspect ratio chip to appear highlighted (e.g. showing 16:9
  active when the crop was actually 9:16). This is now fixed.
2026-04-12 13:45:43 -05:00
stuttlepress 77d216a259 js cleanup 2026-04-06 21:25:10 -05:00
stuttlepress 0971207bfe refactor node naming 2026-04-06 16:42:39 -05:00
stuttlepress 846d6bbc8e Integrate outpaint node 2026-04-06 12:52:19 -05:00
stuttlepress f388477251 Import vace_outpaint node 2026-04-06 12:31:03 -05:00
stuttlepress 3255000910 Code cleanup 2026-03-30 22:34:49 -05:00
stuttlepress 56b19c816b fix: preserve output_all_frames widget value on workflow reload 2026-03-21 23:26:25 -05:00
stuttlepress df5b4b7d62 fixed node resize artifacts 2026-03-19 19:41:32 -05:00
stuttlepress c6f5e9b2e2 feat: add second info bar with resolution and FPS display 2026-03-17 18:22:05 -05:00
stuttlepress 4798922c1a feat: add fps indicator to visual frame selector status line 2026-03-16 11:57:09 -05:00
stuttlepress 2c82064665 VFS bugfixes, polishing 2026-02-28 00:12:14 -06:00
stuttlepress cc8cfff649 Integrated baseline. Still rough around the edges. 2026-02-27 16:16:53 -06:00
stuttlepress a57cae4477 Merge frame selector repo with prep repo
Everything is kind of a mess right now.
2026-02-27 12:29:35 -06:00