Combines two changes to Easy_hdr_VAE_encode/decode (Koolook v2.3.3 fork): 1. Rank-aware dispatch + 5D-output normalization. 5D video tensors paired with a 2D image VAE are iterated frame-by-frame on encode (stack on dim=2) and per-frame decoded on decode (cat on dim=0). 5D output from 3D-aware video VAEs (Wan 2.2, Hunyuan, CogVideoX, LTX — exposed via `vae.latent_dim == 3`) is reshaped (-1, H, W, C) to ComfyUI's standard IMAGE batch, mirroring stock VAEDecode at nodes.py:303-304. Fixes the "1056x41 count=1" symptom where 41-frame Wan 2.2 sequences collapsed to a single squashed image; SaveImage now writes one PNG per frame. 2. Cinema color surface ported from upstream Radiance v2.3.3 (without the broken 4K cosine-blend tile engine that motivated the slim fork in the first place). 12 source/target spaces including six cinema log curves (ARRI LogC3/LogC4, Sony S-Log3, Panasonic V-Log, DaVinci Intermediate, RED Log3G10) plus ACES 2065-1 and Rec.2020 Linear. Compress (Log) HDR mode pairs encode-side log-curve encoding with decode-side per-profile soft-shoulder + log-domain highlight denoise for HDR-clean roundtrips. New latent_sampling parameter (sample/mean/mode). Alpha now surfaces as a real third IMAGE return on encode (the previous flag was a no-op). Exposure is now applied in linear space for all non-Raw source spaces; Raw source still does a raw-domain multiplication so users who know what they are feeding the VAE keep their bytes intact. Helpers extracted to forks/radiance_koolook/versions/v2_3_3/color_helpers.py (log curves, soft-shoulder, log-denoise, sampling-mode helper, color matrices, dispatch tables) so nodes_vae.py stays focused on node wiring. 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/v1_0_1/-> local modified node sourcesforks/radiance_koolook/versions/<version>/UPSTREAM_PIN.yaml-> exact upstream parity pin
External Folder Naming (outside MAIN)
Root: ../ComfyUI-Forks
- Pinned baseline checkout:
radiance-v1.0.1-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:
v1_0_1,v2_3_3, etc.
- Node mapping namespace suffixes must match folder versions:
__koolook_v1_0_1,__koolook_v2_3_3, etc.
- Keep
source_ref+pinned_commitinforks/forks_manifest.yamlandUPSTREAM_PIN.yaml.
Upgrade Flow Example (Radiance)
- Compare current local version (
forks/radiance_koolook/versions/v1_0_1) with pinned raw baseline (../ComfyUI-Forks/radiance-v1.0.1-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_3_3. - Port/validate modifications.
- Namespace node IDs for that version.
- Add new entry/update metadata in
forks/forks_manifest.yaml.
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