Adds a Koolook subclass of VHS VideoCombine that bypasses ComfyUI's output-directory sandbox when filename_prefix is an absolute path — the VFX-pipeline missing piece for writing renders into a project tree (e.g. E:/projects/shot01/v003) instead of ComfyUI/output/. Implementation: - k_video_combine.py: ~60 LoC subclass + a pure _resolve_abs_target helper. Scoped-patches folder_paths.get_save_image_path for the duration of one combine_video() call so upstream's encoder, audio mux, batch manager, and progress bar run unchanged. No VHS code copied. Self-skips registration when VHS isn't importable (clean one-line stderr notice). - Discriminator: os.path.isabs(filename_prefix). No new input pin; pattern borrowed from spacepxl/ComfyUI-HQ-Image-Save's SaveEXR. - Optional create_path_if_missing BOOLEAN (default False) so typos surface as FileNotFoundError instead of spawning stray dirs. License audit (2026-05-16): - VHS upstream: GPL-3.0 (verified via raw LICENSE fetch). - HQ-Image-Save pattern source: MIT, copyright 2023 spacepxl. - Koolook: already GPL-3.0; both upstreams are compatible. - No source code from either upstream is incorporated. Verification: 18 pytest cases green (12 existing + 6 new covering relative passthrough, absolute resolution, create-on/off branches, trailing-separator normalization, and empty-basename rejection). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Forks Workflow
This folder is the single source for all fork tracking metadata inside MAIN.
Purpose
- Keep modified forked code in MAIN under versioned paths (for GitHub tracking).
- Keep raw external checkouts outside MAIN under
../ComfyUI-Forks(for upstream reference/sync). - Keep all fork metadata in one place:
forks/forks_manifest.yamlforks/THIRD_PARTY.md
Folder Layout in MAIN
forks/radiance_koolook/__init__.py-> package entrypoint used by root__init__.pyforks/radiance_koolook/versions/v2_3_3/-> local modified node sources (currently the only active version)forks/radiance_koolook/versions/<version>/UPSTREAM_PIN.yaml-> exact upstream parity pin
The earlier v1_0_1 fork was removed in v0.1.5 — see THIRD_PARTY.md
for the rationale and recovery instructions.
External Folder Naming (outside MAIN)
Root: ../ComfyUI-Forks
- Pinned baseline checkout:
radiance-v2.3.3-koolook
- Rolling upstream checkout:
radiance-main-upstream
These names are referenced from forks/forks_manifest.yaml.
Referencing System
For each fork entry in forks/forks_manifest.yaml:
source_repo= canonical upstream URLsource_ref= release/tag (or baseline descriptor)pinned_commit= exact reproducible commit hashexternal_checkout.relative_path_from_forks_root= pinned raw reference folderexternal_checkout.upstream_tracking_path_from_forks_root= rolling upstream folderlocal_paths= files tracked in MAIN
Tagging Policy (from now on)
- MAIN repo tags use SemVer:
vMAJOR.MINOR.PATCH. - Local fork version folders use underscore variant of the same version:
v2_3_3,v2_4_0, etc.
- Node mapping namespace suffixes must match folder versions:
__koolook_v2_3_3,__koolook_v2_4_0, etc.
- Some node IDs opt out of the suffix via
SKIP_VERSION_SUFFIX(seeforks/radiance_koolook/versions/v2_3_3/__init__.py) to keep stable user-facing IDs across upgrades. - Keep
source_ref+pinned_commitinforks/forks_manifest.yamlandUPSTREAM_PIN.yaml.
Upgrade Flow Example (Radiance)
Hypothetical bump from the current v2_3_3 to a future v2_4_0:
- Compare current local version (
forks/radiance_koolook/versions/v2_3_3) with pinned raw baseline (../ComfyUI-Forks/radiance-v2.3.3-koolook). - Pull latest upstream in
../ComfyUI-Forks/radiance-main-upstream. - Create a new local version folder in MAIN, e.g.
forks/radiance_koolook/versions/v2_4_0. - Port/validate modifications.
- Namespace node IDs for that version (or keep them stable via
SKIP_VERSION_SUFFIXwhen upstream IDs are unchanged). - Add new entry/update metadata in
forks/forks_manifest.yaml.
For the underlying mental model — three independent version axes (pack
version / fork wrapper version / upstream pinned commit) — see
docs/reference/versioning.md.
Rule of Thumb
- If it is modified production code -> keep in MAIN under
forks/.../versions/... - If it is raw upstream reference -> keep outside MAIN under
../ComfyUI-Forks