Commit Graph

31 Commits

Author SHA1 Message Date
d8aa05969a Bump version to 1.1.0 for VACE Mode Select node
Some checks failed
Publish to Comfy Registry / Publish Custom Node to registry (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 20:18:52 +01:00
ec15f2374b Add tooltips to VACE Mode Select node
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 20:09:02 +01:00
508f2ec404 Add VACE Mode Select node for integer-based mode selection
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 19:15:42 +01:00
85acb6d326 Update example workflow: remove unused nodes, reorder, fix links
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 15:35:00 +01:00
bf150133c8 Add example workflow with model download links and explanatory notes
Two-pass distilled VACE extend workflow with 6 notes covering:
pipeline overview, VACE tools, sampling strategy, VRAM optimization,
model downloads (3 options), and decode/merge guidance.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 15:10:52 +01:00
4d3445a3a1 Add ComfyUI Registry publishing setup
Some checks failed
Publish to Comfy Registry / Publish Custom Node to registry (push) Has been cancelled
- pyproject.toml with package metadata (v1.0.0)
- MIT license
- GitHub Actions workflow to auto-publish on pyproject.toml changes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 14:42:06 +01:00
7c584bd0d7 Move SVG diagrams to separate files for GitHub rendering
Inline SVGs are stripped by GitHub's markdown sanitizer. Moved all 11
diagrams to docs/diagrams/*.svg and referenced them with <img> tags.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 13:25:14 +01:00
f71afeeae9 Replace ASCII diagrams with inline SVGs in README
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 13:19:34 +01:00
615599cdfd Optimize merge node RAM usage with pre-allocation and context slicing
Replace torch.cat with pre-allocated tensor + in-place copy.
Clone only small context slices for blending instead of holding
full source/vace tensors during the blend loop.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 16:51:24 +01:00
0f17311199 Update README for target_frames output, 4n+1 snapping, and auto-middle
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 11:24:32 +01:00
5cbe1f1d6a Snap target_frames output to 4n+1 (1, 5, 9, …, 81, …) for VACE encode
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 21:54:52 +01:00
b10fd0691b Replace frames_to_generate output with target_frames for direct VACE encode wiring
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 19:44:44 +01:00
8b5b99a5b0 Add split_index validation, auto-middle mode, and merge bounds checks
- Middle Extend: split_index=0 now auto-splits at B//2 instead of empty first half
- Middle Extend/Replace: raise ValueError when split_index >= frame count
- Merge blend loops: add bounds checks to prevent index-out-of-bounds

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 19:40:30 +01:00
a164fbeb87 Normalize input/output names across nodes
- SourcePrep output: source_clip → trimmed_clip (distinguish from input)
- MergeBack input: original_clip → source_clip (matches SourcePrep's
  input — same video wire from Load Video)
- MergeBack input: original_clip_2 → source_clip_2 (matches SourcePrep)
- Update README wiring diagram and tables

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 10:34:07 +01:00
f369c25b32 Update docs and tooltips for two-clip Join Extend
Add source_clip_2 and original_clip_2 to README input tables, update
Join Extend mode reference with two-clip diagram, update MergeBack
description and behavior section, fix mode output type label.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 10:21:44 +01:00
32e28ac4b4 Add two-clip support for Join Extend mode
SourcePrep gets optional source_clip_2 input — when connected in Join
Extend mode, joins two separate clips instead of splitting one in half.
MergeBack gets optional original_clip_2 to reconstruct the full result
from both originals. Single-clip behavior is unchanged.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 10:19:45 +01:00
08d6f21f18 Swap mask and control_frames output order in MaskGenerator
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 23:26:14 +01:00
6f943bec52 Remove segment outputs and fix mode type for cross-node wiring
- Remove segment_1-4 from both MaskGenerator and SourcePrep outputs
- Define shared VACE_MODES list so SourcePrep's mode output type matches
  MaskGenerator's combo input type (fixes inability to connect mode wire)
- Remove dead helpers: _placeholder, _ensure_nonempty, ph(), safe()
- Clean up dead variables (mid_seg, part_1, part_4, image_b, segment_1)
- Remove segment tables from README mode reference sections

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 23:24:44 +01:00
605279d88e Refactor to VACE_PIPE: bundle merge metadata into single pipe connection
Replace 3 separate forceInput wires (mode, trim_start, trim_end) plus
mask and blend_frames with a single VACE_PIPE dict carrying mode, trim
bounds, and context frame counts. SourcePrep outputs reduced from 12 to
7 (segments removed), MergeBack inputs reduced from 9 to 5. Blending
now auto-derives from context counts instead of manual blend_frames.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 23:08:21 +01:00
89fa3405cb Add VACE Merge Back node for splicing VACE output into original video
Adds a new node that reconstructs full-length video by splicing VACE
sampler output back into the original clip at the trim positions. Supports
optical flow, alpha, and hard-cut blending at context/generated seams.
Also adds trim_start/trim_end INT outputs to VACESourcePrep.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 22:43:07 +01:00
6fa235f26c Add VACE Source Prep node for trimming long source clips
New node that handles frame selection/trimming before the mask generator,
with input_left/input_right controls for per-mode windowing. Adds
B > target_frames validation to the mask generator with a helpful error
message. Includes JS extension for smart widget visibility per mode.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 22:14:03 +01:00
d2f00d1141 Add Save/Load Latent (Absolute Path) nodes from Comfyui-save-latent
Consolidates SaveLatentAbsolute and LoadLatentAbsolute into this project
as latent_node.py. Saves and loads LATENT data to absolute file paths in
safetensors format, preserving device info and non-tensor metadata.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 16:50:24 +01:00
5f59ec34e9 Add WanVideo Save Merged Model node from Comfyui_WW_msave
Consolidates the WanVideoSaveMergedModel node into this project as
save_node.py. Saves WanVideo diffusion models (with merged LoRAs) as
safetensors files with metadata for traceability.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 16:48:47 +01:00
ad98b3d65a Add Keyframe mode for placing keyframe images at positions within output
New generation mode where source_clip keyframes are placed at specific
positions within a target_frames-length output, with everything between
them marked for generation. Supports auto-spread (even distribution) and
manual placement via optional keyframe_positions string input.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 16:24:17 +01:00
f5a3d047a6 Update README clone URL to actual repository
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 14:33:14 +01:00
c171a9c0cf Improve tooltips and add DESCRIPTION help guide
Fix output tooltips that incorrectly assumed target_frames length for all
modes, add per-mode detail to segment outputs, complete the unused-mode
lists on split_index and edge_frames inputs, and add a DESCRIPTION class
attribute for the ComfyUI "?" help button.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 14:15:50 +01:00
c6672c480e Remove logic.json
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 13:41:03 +01:00
87ec7b3938 Add Video Inpaint mode for per-pixel spatial mask regeneration
New 9th mode that works at the pixel level rather than the frame level.
Accepts an optional MASK input (B,H,W) to mark spatial regions for
regeneration, with single-frame broadcast, spatial dimension validation,
and contiguous output tensors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 13:37:04 +01:00
d8143ea889 Add Bidirectional Extend, Frame Interpolation, and Replace/Inpaint modes
Three new modes for the VACE Mask Generator node, bringing the total to 8.
Bidirectional generates before and after the clip, Frame Interpolation
inserts frames between each source pair, and Replace/Inpaint regenerates
a region in-place. All reuse existing inputs with mode-specific semantics.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 13:23:12 +01:00
c44e9dd62a Add README with installation, inputs/outputs, and mode reference
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 13:09:08 +01:00
a49515dc33 Initial commit: VACE Mask Generator custom node
Single ComfyUI node implementing 5 VACE mask generation modes
(End/Pre/Middle/Edge/Join Extend) with zero external dependencies.
Replaces ~149 nodes from the original logic.json workflow.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 13:06:42 +01:00