* docs+tooling: VAE user guide + versioning ref + 3 skills + preflight CI
Documentation
- New user-guide tree: docs/user_guide/nodes/radiance_koolook_v2_3_3/
with README, per-node pages for Easy_hdr_VAE_encode/decode, an
encode/decode pairing guide (4 worked examples + ASCII connectivity
diagram), and an HDR modes deep-dive (per-pixel comparison table).
Folder name mirrors the code path under forks/radiance_koolook/versions/.
- New cross-cutting reference: docs/reference/versioning.md explains the
three independent version axes (pack version, fork wrapper version,
upstream pinned commit), when each one bumps, and which skill/doc
owns it. Plus the v1/v2 node-ID suffix policy.
- Cross-links updated in docs/user_guide/README.md, docs/reference/
README.md, docs/maintainers/README.md.
Skills (all under .claude/skills/)
- docs-sync — controlled find-and-replace for version tags across docs,
code, and manifests; --scope and --dry-run flags.
- menu — lists all project skills with one-liners.
- preflight-release — companion doc for tools/preflight_release.py.
Pre-flight tooling
- tools/preflight_release.py — four checks, exit-code-driven for CI:
(1) static AST extraction of NODE_CLASS_MAPPINGS keys (no torch needed),
(2) stub-VAE dispatch test verifying all 5 rank/VAE-type branches,
(3) drift check against ComfyUI-Manager's extension-node-map.json
(catches the issue #44 phantom-nodes class of bug automatically),
(4) saved-workflow regression check across tests/workflows/*.json.
- .github/workflows/ci.yml — new "Pre-flight Release" job runs checks
1, 2, and 4 on every PR; check 3 (manager-meta) skipped pending the
upstream issue #44 fix.
- tests/workflows/ — 2 starter fixtures (Depth-Anything3, Hires-FIX-wanT2V)
+ README documenting the contribution convention. Coverage grows as
new fixtures are added; no code changes needed.
All four offline pre-flight checks pass on this branch. The
manager-meta check correctly identifies the 39 phantom IDs documented
in issue #44.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix(preflight): satisfy ruff lint + bandit security gate
* fix(preflight): address blocking review findings
Three fixes from /review-pr feedback on this PR:
1. Sanitize tests/workflows/*.json — removed 4 unique absolute paths that
leaked internal job/client info ('baconx/Toy-Hix/9110',
'menneskehavn_3029', etc.). Replaced with placeholders like
'path/to/sequence_a' and 'path/to/source_video'. Both fixtures still
parse as valid JSON; grep for the old patterns returns zero hits.
2. Broaden the Koolook-ID heuristic regex from '^easy_[a-z]' to
'^easy_[A-Za-z]'. The old pattern excluded 'easy_ImageBatch' (capital I
after the underscore), which would have silently bypassed the
workflow-fixture stability check for that node. Verified the new
pattern correctly matches it.
3. Wrap check_dispatch() body in try/finally and track every sys.modules
key the function injects in a list, so cleanup runs on the success
path AND on any exception during exec_module / VAE-constructor
execution. Previously only the three torch* stubs were popped, never
the three _pf_pkg* entries — and even those weren't popped on
exception paths. Verified zero leaked modules after the function
returns.
The five dispatch test cases were factored into a helper
_check_dispatch_run_cases() so the try/finally wrapping stays focused on
module injection.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix(preflight): address remaining review findings
Follow-up to 7844037 — picks up all the HIGH / MEDIUM / LOW review
findings that were deferred. Pre-flight still passes locally.
HIGH
- Extract check_dispatch (~195 lines) to tools/_preflight_dispatch.py.
Main script drops from 680 → 508 lines. Module exposes a single
run(verbose, repo_root) -> (bool, list[str]) entry; main script keeps
the [2/4] header + PASS/FAIL line.
- Install _HttpsOnlyRedirectHandler that re-validates each redirect
hop's scheme. Closes the gap that urlopen would otherwise follow a
30x to http:// or file:// silently. The Bandit B310 suppression
comment now accurately describes the protection.
- check_static docstring now honestly states it only walks
NODE_CLASS_MAPPINGS literal dicts and does NOT apply
NAMESPACE_SUFFIX / SKIP_VERSION_SUFFIX logic. Notes that the workflow
check (4) is the safety net that surfaces drift the day a non-skipped
ID lands.
- check_workflows now FAILS when the fixtures dir exists with a README
but contains no *.json files — previously silently SKIPPED. If
someone deletes fixtures or typoes the dir, that's a regression in
test coverage and should fail loudly.
MEDIUM
- check_manager_meta validates the upstream entry shape before diffing.
Previous code silently produced an empty set if the schema changed,
reporting every one of our IDs as 'missing'. Now SKIPs with a clear
message when shape is unexpected.
- check_workflows accumulates total_koolook_refs inside the main loop;
drops the redundant second-pass that re-read every fixture file just
to compute the summary count.
- _extract_workflow_node_types uses explicit detection: a canvas-format
file with nodes: null no longer falls through to API-format and pulls
class_type from unrelated keys.
- check_static return type simplified from (bool, set, list) to
(bool, set). Third element was discarded at every call site.
- check_workflows now does two-pronged Koolook-ID matching: heuristic
(catches drift even if static missed an ID) plus actual_ids (catches
IDs that don't fit the heuristic, e.g. a future Koolook node without
Easy / easy_ / koolook in its name).
LOW
- ANSI escape codes named in a constants dict (_ANSI["green"] etc.)
instead of bare string literals.
- Removed dead 'cases: list[tuple[str, callable]] = []' initializer
(was shadowed three statements later).
- check_static's per-ID listing now gated behind --verbose, matching
check_dispatch and check_workflows.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
611 lines
12 KiB
JSON
611 lines
12 KiB
JSON
{
|
|
"id": "2b0a8c0c-abe2-423b-99a6-ac7940f66066",
|
|
"revision": 0,
|
|
"last_node_id": 1266,
|
|
"last_link_id": 1981,
|
|
"nodes": [
|
|
{
|
|
"id": 992,
|
|
"type": "PreviewImage",
|
|
"pos": [
|
|
-7932.9859136470905,
|
|
9673.132708942472
|
|
],
|
|
"size": [
|
|
259.8657531738281,
|
|
246.0000000000001
|
|
],
|
|
"flags": {},
|
|
"order": 8,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"name": "images",
|
|
"type": "IMAGE",
|
|
"link": 1583
|
|
}
|
|
],
|
|
"outputs": [],
|
|
"properties": {
|
|
"cnr_id": "comfy-core",
|
|
"ver": "0.3.64",
|
|
"Node name for S&R": "PreviewImage",
|
|
"ue_properties": {
|
|
"widget_ue_connectable": {},
|
|
"version": "7.2.2",
|
|
"input_ue_unconnectable": {}
|
|
}
|
|
},
|
|
"widgets_values": []
|
|
},
|
|
{
|
|
"id": 993,
|
|
"type": "LoadEXR",
|
|
"pos": [
|
|
-7936.962735728316,
|
|
9406.273945790455
|
|
],
|
|
"size": [
|
|
270,
|
|
194
|
|
],
|
|
"flags": {},
|
|
"order": 4,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"name": "filepath",
|
|
"type": "STRING",
|
|
"widget": {
|
|
"name": "filepath"
|
|
},
|
|
"link": 1603
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"name": "RGB",
|
|
"type": "IMAGE",
|
|
"links": [
|
|
1583
|
|
]
|
|
},
|
|
{
|
|
"name": "alpha",
|
|
"type": "MASK",
|
|
"links": null
|
|
},
|
|
{
|
|
"name": "batch_size",
|
|
"type": "INT",
|
|
"links": null
|
|
}
|
|
],
|
|
"title": "ONE frame",
|
|
"properties": {
|
|
"cnr_id": "ComfyUI-HQ-Image-Save",
|
|
"ver": "52b4579a195727729bf768032737a67220512128",
|
|
"Node name for S&R": "LoadEXR",
|
|
"ue_properties": {
|
|
"widget_ue_connectable": {
|
|
"filepath": true
|
|
},
|
|
"version": "7.2.2",
|
|
"input_ue_unconnectable": {}
|
|
}
|
|
},
|
|
"widgets_values": [
|
|
"path to directory or .exr file",
|
|
"linear",
|
|
1,
|
|
0,
|
|
1
|
|
]
|
|
},
|
|
{
|
|
"id": 997,
|
|
"type": "Label (rgthree)",
|
|
"pos": [
|
|
-7873.6231611078665,
|
|
8978.78128013376
|
|
],
|
|
"size": [
|
|
352.9296875,
|
|
50
|
|
],
|
|
"flags": {
|
|
"allow_interaction": true
|
|
},
|
|
"order": 0,
|
|
"mode": 0,
|
|
"inputs": [],
|
|
"outputs": [],
|
|
"title": "SOURCE depth",
|
|
"properties": {
|
|
"fontSize": 50,
|
|
"fontFamily": "Arial",
|
|
"fontColor": "#ffffff",
|
|
"textAlign": "left",
|
|
"backgroundColor": "transparent",
|
|
"padding": 0,
|
|
"borderRadius": 0,
|
|
"angle": 0,
|
|
"ue_properties": {
|
|
"widget_ue_connectable": {},
|
|
"version": "7.2.2",
|
|
"input_ue_unconnectable": {}
|
|
}
|
|
},
|
|
"color": "#fff0",
|
|
"bgcolor": "#fff0"
|
|
},
|
|
{
|
|
"id": 1006,
|
|
"type": "LoadEXR",
|
|
"pos": [
|
|
-7606.047936758987,
|
|
9397.38306603451
|
|
],
|
|
"size": [
|
|
285.9300537109375,
|
|
349.7812194824219
|
|
],
|
|
"flags": {},
|
|
"order": 3,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"name": "filepath",
|
|
"type": "STRING",
|
|
"widget": {
|
|
"name": "filepath"
|
|
},
|
|
"link": 1602
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"name": "RGB",
|
|
"type": "IMAGE",
|
|
"links": [
|
|
1587,
|
|
1635
|
|
]
|
|
},
|
|
{
|
|
"name": "alpha",
|
|
"type": "MASK",
|
|
"links": null
|
|
},
|
|
{
|
|
"name": "batch_size",
|
|
"type": "INT",
|
|
"links": null
|
|
}
|
|
],
|
|
"properties": {
|
|
"cnr_id": "ComfyUI-HQ-Image-Save",
|
|
"ver": "52b4579a195727729bf768032737a67220512128",
|
|
"Node name for S&R": "LoadEXR",
|
|
"ue_properties": {
|
|
"version": "7.1",
|
|
"widget_ue_connectable": {},
|
|
"input_ue_unconnectable": {}
|
|
}
|
|
},
|
|
"widgets_values": [
|
|
"path to directory or .exr file",
|
|
"linear",
|
|
0,
|
|
0,
|
|
1
|
|
],
|
|
"color": "#232",
|
|
"bgcolor": "#353"
|
|
},
|
|
{
|
|
"id": 1018,
|
|
"type": "Text Multiline",
|
|
"pos": [
|
|
-7933.365538801957,
|
|
9209.448315354415
|
|
],
|
|
"size": [
|
|
593.5753886350403,
|
|
123.31427023937988
|
|
],
|
|
"flags": {},
|
|
"order": 1,
|
|
"mode": 0,
|
|
"inputs": [],
|
|
"outputs": [
|
|
{
|
|
"name": "STRING",
|
|
"type": "STRING",
|
|
"links": [
|
|
1602,
|
|
1603,
|
|
1604
|
|
]
|
|
}
|
|
],
|
|
"properties": {
|
|
"cnr_id": "was-node-suite-comfyui",
|
|
"ver": "1.0.2",
|
|
"Node name for S&R": "Text Multiline",
|
|
"ue_properties": {
|
|
"widget_ue_connectable": {
|
|
"text": true
|
|
},
|
|
"version": "7.1",
|
|
"input_ue_unconnectable": {}
|
|
}
|
|
},
|
|
"widgets_values": [
|
|
"path/to/sequence_b"
|
|
],
|
|
"color": "#232",
|
|
"bgcolor": "#353"
|
|
},
|
|
{
|
|
"id": 1036,
|
|
"type": "PreviewImage",
|
|
"pos": [
|
|
-7195.925843067886,
|
|
8728.97470868871
|
|
],
|
|
"size": [
|
|
728.4322134178647,
|
|
394.6436280241378
|
|
],
|
|
"flags": {},
|
|
"order": 7,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"name": "images",
|
|
"type": "IMAGE",
|
|
"link": 1635
|
|
}
|
|
],
|
|
"outputs": [],
|
|
"properties": {
|
|
"cnr_id": "comfy-core",
|
|
"ver": "0.8.2",
|
|
"Node name for S&R": "PreviewImage"
|
|
},
|
|
"widgets_values": []
|
|
},
|
|
{
|
|
"id": 1002,
|
|
"type": "EasyAIPipeline",
|
|
"pos": [
|
|
-6976.199736846407,
|
|
9648.149788665098
|
|
],
|
|
"size": [
|
|
421.5911559488459,
|
|
642.1453522689535
|
|
],
|
|
"flags": {},
|
|
"order": 5,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"name": "base_directory_path",
|
|
"type": "STRING",
|
|
"widget": {
|
|
"name": "base_directory_path"
|
|
},
|
|
"link": 1604
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"name": "WRITE_file_path",
|
|
"type": "STRING",
|
|
"links": [
|
|
1591
|
|
]
|
|
},
|
|
{
|
|
"name": "output_name",
|
|
"type": "STRING",
|
|
"links": null
|
|
},
|
|
{
|
|
"name": "version_string",
|
|
"type": "STRING",
|
|
"links": null
|
|
},
|
|
{
|
|
"name": "output_directory",
|
|
"type": "STRING",
|
|
"links": null
|
|
},
|
|
{
|
|
"name": "shot_duration",
|
|
"type": "INT",
|
|
"links": null
|
|
},
|
|
{
|
|
"name": "seed_value",
|
|
"type": "INT",
|
|
"links": null
|
|
},
|
|
{
|
|
"name": "shot_name",
|
|
"type": "STRING",
|
|
"links": null
|
|
}
|
|
],
|
|
"properties": {
|
|
"cnr_id": "koolook",
|
|
"ver": "f24db5ce965cd22ccad7a4af850dd7e212d6a791",
|
|
"Node name for S&R": "EasyAIPipeline",
|
|
"aux_id": "malkuthro/Koolook_Wan_22",
|
|
"ue_properties": {
|
|
"widget_ue_connectable": {},
|
|
"input_ue_unconnectable": {},
|
|
"version": "7.2.2"
|
|
}
|
|
},
|
|
"widgets_values": [
|
|
81,
|
|
453453453,
|
|
"Place your base folder path in the FIELD below",
|
|
"path/to/source_video",
|
|
".%04d.exr",
|
|
"Source-depth",
|
|
"v2-vikitti",
|
|
1,
|
|
true,
|
|
true,
|
|
"path/to/source_depth",
|
|
null,
|
|
null
|
|
],
|
|
"color": "#2a363b",
|
|
"bgcolor": "#3f5159"
|
|
},
|
|
{
|
|
"id": 998,
|
|
"type": "DepthAnything_V2",
|
|
"pos": [
|
|
-6827.780390691215,
|
|
9375.615594844607
|
|
],
|
|
"size": [
|
|
214.82899913241127,
|
|
53.8174710455969
|
|
],
|
|
"flags": {},
|
|
"order": 6,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"name": "da_model",
|
|
"type": "DAMODEL",
|
|
"link": 1586
|
|
},
|
|
{
|
|
"name": "images",
|
|
"type": "IMAGE",
|
|
"link": 1587
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"name": "image",
|
|
"type": "IMAGE",
|
|
"links": [
|
|
1590
|
|
]
|
|
}
|
|
],
|
|
"properties": {
|
|
"cnr_id": "comfyui-depthanythingv2",
|
|
"ver": "d505cbca99803fc63327b8305618a23e59a18b42",
|
|
"Node name for S&R": "DepthAnything_V2",
|
|
"ue_properties": {
|
|
"version": "7.1",
|
|
"widget_ue_connectable": {},
|
|
"input_ue_unconnectable": {}
|
|
}
|
|
},
|
|
"widgets_values": [],
|
|
"color": "#223",
|
|
"bgcolor": "#335"
|
|
},
|
|
{
|
|
"id": 1001,
|
|
"type": "DownloadAndLoadDepthAnythingV2Model",
|
|
"pos": [
|
|
-7080.8878988856995,
|
|
9213.36792146106
|
|
],
|
|
"size": [
|
|
451.25884409922674,
|
|
87.58390788971155
|
|
],
|
|
"flags": {},
|
|
"order": 2,
|
|
"mode": 0,
|
|
"inputs": [],
|
|
"outputs": [
|
|
{
|
|
"name": "da_v2_model",
|
|
"type": "DAMODEL",
|
|
"links": [
|
|
1586
|
|
]
|
|
}
|
|
],
|
|
"properties": {
|
|
"cnr_id": "comfyui-depthanythingv2",
|
|
"ver": "d505cbca99803fc63327b8305618a23e59a18b42",
|
|
"Node name for S&R": "DownloadAndLoadDepthAnythingV2Model",
|
|
"ue_properties": {
|
|
"version": "7.1",
|
|
"widget_ue_connectable": {},
|
|
"input_ue_unconnectable": {}
|
|
}
|
|
},
|
|
"widgets_values": [
|
|
"depth_anything_v2_metric_vkitti_vitl_fp32.safetensors"
|
|
],
|
|
"color": "#223",
|
|
"bgcolor": "#335"
|
|
},
|
|
{
|
|
"id": 1000,
|
|
"type": "SaveEXRFrames",
|
|
"pos": [
|
|
-6511.004406427462,
|
|
9375.22296859613
|
|
],
|
|
"size": [
|
|
338.36407470703125,
|
|
615.3633422851562
|
|
],
|
|
"flags": {},
|
|
"order": 9,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"name": "images",
|
|
"type": "IMAGE",
|
|
"link": 1590
|
|
},
|
|
{
|
|
"name": "filepath",
|
|
"type": "STRING",
|
|
"widget": {
|
|
"name": "filepath"
|
|
},
|
|
"link": 1591
|
|
}
|
|
],
|
|
"outputs": [],
|
|
"properties": {
|
|
"cnr_id": "ComfyUI-HQ-Image-Save",
|
|
"ver": "52b4579a195727729bf768032737a67220512128",
|
|
"Node name for S&R": "SaveEXRFrames",
|
|
"ue_properties": {
|
|
"version": "7.1",
|
|
"widget_ue_connectable": {},
|
|
"input_ue_unconnectable": {}
|
|
}
|
|
},
|
|
"widgets_values": [
|
|
"path/to/frame%04d.exr",
|
|
"linear",
|
|
1001,
|
|
false,
|
|
"ui"
|
|
],
|
|
"color": "#323",
|
|
"bgcolor": "#535"
|
|
}
|
|
],
|
|
"links": [
|
|
[
|
|
1583,
|
|
993,
|
|
0,
|
|
992,
|
|
0,
|
|
"IMAGE"
|
|
],
|
|
[
|
|
1586,
|
|
1001,
|
|
0,
|
|
998,
|
|
0,
|
|
"DAMODEL"
|
|
],
|
|
[
|
|
1587,
|
|
1006,
|
|
0,
|
|
998,
|
|
1,
|
|
"IMAGE"
|
|
],
|
|
[
|
|
1590,
|
|
998,
|
|
0,
|
|
1000,
|
|
0,
|
|
"IMAGE"
|
|
],
|
|
[
|
|
1591,
|
|
1002,
|
|
0,
|
|
1000,
|
|
1,
|
|
"STRING"
|
|
],
|
|
[
|
|
1602,
|
|
1018,
|
|
0,
|
|
1006,
|
|
0,
|
|
"STRING"
|
|
],
|
|
[
|
|
1603,
|
|
1018,
|
|
0,
|
|
993,
|
|
0,
|
|
"STRING"
|
|
],
|
|
[
|
|
1604,
|
|
1018,
|
|
0,
|
|
1002,
|
|
0,
|
|
"STRING"
|
|
],
|
|
[
|
|
1635,
|
|
1006,
|
|
0,
|
|
1036,
|
|
0,
|
|
"IMAGE"
|
|
]
|
|
],
|
|
"groups": [],
|
|
"config": {},
|
|
"extra": {
|
|
"ds": {
|
|
"scale": 0.505447028499295,
|
|
"offset": [
|
|
8829.571508342653,
|
|
-7999.799463578146
|
|
]
|
|
},
|
|
"frontendVersion": "1.35.9",
|
|
"workflowRendererVersion": "LG",
|
|
"node_versions": {
|
|
"ComfyUI-WanVideoWrapper": "5a2383621a05825d0d0437781afcb8552d9590fd",
|
|
"comfy-core": "0.3.26",
|
|
"ComfyUI-KJNodes": "a5bd3c86c8ed6b83c55c2d0e7a59515b15a0137f",
|
|
"ComfyUI-VideoHelperSuite": "0a75c7958fe320efcb052f1d9f8451fd20c730a8"
|
|
},
|
|
"VHS_latentpreview": false,
|
|
"VHS_latentpreviewrate": 0,
|
|
"VHS_MetadataImage": true,
|
|
"VHS_KeepIntermediate": true,
|
|
"ue_links": [],
|
|
"links_added_by_ue": []
|
|
},
|
|
"version": 0.4
|
|
} |