Addresses verified findings from the /review-pr pass on PR #178. H1 — relay_overrides values are now type-checked - Allowlist of recognised knobs (`video_strength`, `video_window_scale`, `audio_strength`, `audio_window_scale`, `audio_epsilon`) with explicit float-coercion. Numeric strings ("10") coerce silently; non-numeric values (e.g. "ten") now raise a ValueError naming the offending knob and showing a minimal correct example — instead of a TypeError deep inside `build_segments` arithmetic, or a SUCCESS render at upstream defaults that polluted the A/B iteration log. H2 — malformed JSON no longer silently falls back to defaults - `json.JSONDecodeError`, non-dict JSON (arrays, strings, bare numbers, null), and non-numeric values for recognised knobs all now raise `ValueError` with operator-actionable messages. The only silent fallback is the explicit empty/whitespace case — "use upstream defaults" is the operator's intent there. - Typo'd keys (e.g. `viedo_strength`) log a warning naming the unknown keys + the recognised set, then drop the typo. Previously they were silently retained in the cleaned dict but never queried by `build_segments`, indistinguishable from a default render. Architectural side-effect — shrinks the diff vs vendored upstream - `_parse_relay_overrides` extracted into a stdlib-only sibling module `_relay_overrides.py`. `ltx_director.py` shrinks closer to upstream baseline (one import + one alias instead of a 30-line function body) and is easier to diff against `e81223a`. The parser is also now unit-testable without ComfyUI's `comfy_api` runtime. L5 — tests added (31 cases, all passing) - New `tests/forks/__init__.py` + `tests/forks/test_whatdreamscost_v1_3_2_relay_overrides.py`. - Covers every confirmed failure mode (H1 + H2), the happy path, the comment-key convention, the unknown-key warning, and an allowlist- consistency assertion that fails loudly if `build_segments` ever grows a knob without the parser being updated. - Test module uses `importlib.util.spec_from_file_location` so it can load the parser without walking through the package hierarchy (which would trigger the `comfy_api` import inside `ltx_director.py`). L3 — `_build_line` promoted to public `build_line` - `scripts/sync_to_dev.py` renames the private helper. The underscore alias is kept for one release cycle as a deprecation slot. - `scripts/sync_to_dev_audio.py` switches to `_dev.build_line()`. No behaviour change; chat-report shape is bit-identical to before. L2 — `source_ref` clarified in pin metadata - `forks/whatdreamscost_koolook/versions/v1_3_2/UPSTREAM_PIN.yaml` and `forks/forks_manifest.yaml` both now spell out that `e81223a` is the post-v1.3.2 README-only commit on upstream's `main`, not the v1.3.2 release tag itself. Code is byte-identical to the tagged release; the pin differs only in trailing docs. L1, L4 are explicitly left alone (L1 is dead upstream cruft, kept for minimum-diff; L4 is helper duplication tracked for a separate follow-up issue when a third fork lands). Verification - ruff check . → clean - pytest → 204 passed (173 prior + 31 new parser tests) - tools/preflight_release.py --skip manager-meta → all PASS (static AST extraction still picks up LTXDirector from the fork) - scripts/sync_to_dev_audio.py --dry-run → two-line chat report still emits via the renamed `build_line` helper Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ComfyUI-Koolook
Kforge Labs for ComfyUI: a project-kit sidebar plus Koolook nodes for VFX, image, and video workflows.
Start here: KForge Labs ComfyUI-Koolook overview
That overview explains the sidebar, snapshots, saved workflows, modules, recovery tools, and included nodes for new users.
The main experience is the Kforge Labs sidebar. It helps you keep a project setup together: favorite nodes, saved workflows, reusable modules, tags, snapshots, and recovery tools.
Kforge Labs Sidebar
Use the sidebar as a reusable project kit.
| Feature | What it does |
|---|---|
| Snapshots | Save and load the whole Kforge Labs state: favorite nodes, workflows, modules, tags, archive, and recovery data. |
| Search | Find nodes, workflows, directories, and tags from one field. Tags keep exact capitalization, so Depth and depth can be separate folders. |
| Nodes | Keep favorite nodes close, grouped by theme or repository name. |
| Workflows | Save the whole script, save a selection of nodes, load workflows, or insert saved modules into the current canvas. |
| Recovery | Use autosaves, starter presets, snapshot library settings, and missing-pack install helpers. |
New here? Start with the KForge overview. Using it inside ComfyUI? Open the operational guide:
- Browse on the web: malkuthro.github.io/ComfyUI-Koolook/web/guide/
- Inside ComfyUI: Kforge Labs sidebar → Tools row → Help (
Hicon). The in-app button opens the bundled offline copy atweb/guide/index.html.
Included Nodes
| Node ID | Display name | Category |
|---|---|---|
EasyWan22Prompt |
Wan 2.2 Easy Prompt (Koolook) | Koolook/Wan_Video |
EasyResize_Koolook |
Easy Resize (Koolook) | Koolook/Image |
EasyAIPipeline |
Easy AI Pipeline (Koolook) | Koolook/Pipeline |
easy_ImageBatch |
Easy Image Batch (Koolook) | Koolook/Image |
KoolookLoadCameraPosesAbsolute |
Koolook Load Camera Poses (Absolute Path) | Koolook/Camera |
Easy_hdr_VAE_encode |
Easy HDR VAE Encode (Koolook) | Koolook/VAE |
Easy_hdr_VAE_decode |
Easy HDR VAE Decode (Koolook) | Koolook/VAE |
Easy_Pattern |
Easy Pattern (Koolook) | Koolook/Testing |
Easy_VideoCombine |
Easy Video Combine (Koolook) | Koolook/Video |
The root Koolook nodes and the slim Radiance Koolook VAE wrappers have no
extra Python dependencies beyond torch, which ComfyUI already requires.
Install
ComfyUI-Manager
- Open ComfyUI Manager.
- Choose Install Custom Nodes.
- Install by Git URL:
https://github.com/malkuthro/ComfyUI-Koolook.git - Restart ComfyUI.
- Open the Kforge Labs sidebar tab.
Manual
Clone this repository into ComfyUI/custom_nodes/:
git clone https://github.com/malkuthro/ComfyUI-Koolook.git
Restart ComfyUI after installation.
Learn More
- Public overview: kforgelabs.com/comfyui-projects/comfyui-koolook/
- In-app visual guide: malkuthro.github.io/ComfyUI-Koolook/web/guide/
(offline copy:
web/guide/index.html) - Support / bug reports:
SUPPORT.md - User guide:
docs/user_guide/ - Change history:
CHANGELOG.md - Maintainer docs:
docs/maintainers/ - Fork attribution and provenance:
forks/THIRD_PARTY.md - Versioning reference:
docs/reference/versioning.md
Troubleshooting
| What you see | What it usually means | What to do |
|---|---|---|
| The Kforge Labs tab does not appear | ComfyUI needs a restart, or the extension did not load | Restart ComfyUI and check the terminal for [Koolook] messages. |
| The Help guide does not open | The browser blocked the popup | Allow popups for the ComfyUI page, or open web/guide/index.html directly. |
| Missing custom nodes after loading a workflow | One or more node packs used by that workflow are not installed | In Kforge Labs, use Tools → Install missing packs, or use ComfyUI Manager's Install Missing Custom Nodes flow. |
| Snapshot save/load fails | The snapshot library path may be missing, read-only, or unavailable | Use Snapshot → Save to... or Load from... and choose a writable folder. |
| A loaded snapshot looks older than expected | Named saves and auto-saves are intentionally separate | In Snapshot → Load, select the snapshot and check Recovery auto-saves for a newer periodic/pre-load recovery. |
Support
For reproducible bugs, open a
GitHub issue.
For the fastest answer, include your ComfyUI version, Koolook version,
operating system, install method, terminal log, browser console errors, and
steps to reproduce. See SUPPORT.md for the exact checklist.
Stability
For production work, install a pinned release tag or commit instead of following a moving branch head. Node IDs are treated carefully so saved ComfyUI workflows continue to load across compatible updates.
License
GPL-3.0. See LICENSE.
This package incorporates and adapts GPL-3.0 code from
fxtdstudios/radiance under
forks/radiance_koolook/. Attribution and per-fork modification notes are
tracked in forks/THIRD_PARTY.md and
forks/forks_manifest.yaml.