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>
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>
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>
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>
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>