The previous cache-bust commit renamed the file but the README edit was
dropped (atomic git add failed on the deleted path), leaving a broken
image link. Update the reference.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The README image kept showing the old node via GitHub's image cache even
though the file was updated. Rename the file so the new URL bypasses the
cache and the current v1.0.3 layout displays immediately.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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>
After creating a circle, rectangle, or finishing a bezier path, switch
the active tool to Select/Move so the new shape can be adjusted right
away instead of stamping another shape on the next click.
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>