5 Commits
Author SHA1 Message Date
BISAM20andClaude Opus 4.8 5ac1aed2a8 Remove status widget and refresh input from the node
Drop the "status" text widget (editor JS) and the "refresh" int input
(Python node) to declutter the node. generate_masks gains **kwargs to
absorb stray values from older saved workflows.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 11:25:12 +02:00
BISAM20andClaude Opus 4.8 ed8bc92eaf Fix refresh=None crash: move auto_resolution widget to the end
ComfyUI serializes widget values positionally, so adding auto_resolution
mid-list in v1.0.1 shifted every saved value in existing workflows and
left refresh as None (int(None) crash). Move the new widget to the end so
saved values realign, and default auto_resolution to True when missing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 11:01:42 +02:00
BISAM20andClaude Opus 4.8 8ec36a89ad Auto-detect output resolution from the input video
Add an auto_resolution toggle (default on) that matches the mask output
to the input video's resolution. width/height become manual overrides
used only when it's off; 0/None/legacy-512 fall back to the video dims,
so existing workflows keep auto-detecting.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 10:51:19 +02:00
BISAM20andClaude Opus 4.8 d2352f13ad Fix mask sizes shrinking at higher render resolution
Shape sizes (radius/width/height) were stored as absolute editor pixels
while positions were normalized, so masks rendered at a resolution other
than the editor's video came out the wrong size. Store sizes normalized
(0-1 fraction of the frame) and scale by the output dims at render time,
with backward compatibility for existing absolute-pixel data.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 10:48:47 +02:00
BISAM20andClaude Opus 4.8 dfa3298392 Persistent Roto-style masks + real-time opacity + modern dark UI
Persistence (shapes survive ComfyUI restart, per-node, travel with workflow):
- Store shapes/keyframes in a hidden serialized mask_data widget on the node
- Per-node disk backup in roto_data/ (not temp dir); resolution order:
  widget JSON -> disk backup -> empty
- Key all video state + HTTP routes per-node via UNIQUE_ID / ?node=
- BroadcastChannel bridge + /stash route between popup editor and graph

Editor:
- Opacity slider now applies live to selected shapes (keyframes at current frame)
- Removed "Import from Nuke" button and orphaned paste-to-import handler
- Refreshed UI to a modern dark theme (CSS variables, accent gradients,
  custom sliders, restyled panels/scrollbars/badges)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 16:48:39 +02:00