- Bundle example inputs (example_inputs/: pinhole + fisheye JPEG, example
trajectory .npy); install.py copies them into ComfyUI's input/ folder and
every LoadImage/LoadTrajectory default now points at them, so the shipped
workflows queue on a fresh install.
- Template browser: add same-name .jpg thumbnails for 10 workflows
(workflows/ is already a recognized template dir); drop the stray
workflows/__init__.py.
- Move superseded reference graphs to workflows/legacy/ (SD-checkpoint
outpaint variant, manual multi-view fisheye depth) - out of the template
browser, still documented.
- video_camera.json: remove dead-end BlurMaskFast (radius 0/0 no-op),
easy-mathInt pad math and dangling VHS_VideoInfo; swap KJNodes
GetImageRangeFromBatch for built-in ImageFromBatch. Pack deps cut from
five to two (VideoHelperSuite + Florence2).
- New workflows/record_trajectory.json - produces the .npy trajectory that
PC_enricher and wan_vace_ref_to_video consume.
- Stamp extra.camera_comfyui_rev=1 in all workflows for future migrations;
prune 8 pre-existing stale link references found by a bidirectional
integrity sweep.
- CI: .github/workflows/validate.yml runs the schema validator,
installer-logic tests and 4D smoke suite (CPU torch) on PRs and main.
- README + docs/workflows_review.md updated accordingly.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Migrate widgets_values stored with pre-2026 node schemas (28 nodes across
9 files) to the current INPUT_TYPES: DepthEstimatorNode (+median_blur),
FisheyeDepthEstimator (+mode/median_blur), PointCloudCleaner (new
screen-space schema, reset to defaults), CameraMotionNode (+mask options),
CameraInterpolationNode (+num_steps), PointcloudTrajectoryEnricher
(20->16 widgets). Positionally-shifted values loaded silently wrong before.
Fix broken references:
- outpainting_fisheye.json: patch rotations lived in a removed
ReprojectImage widget slot that now lands on `inverse` (42 -> truthy);
rebuilt with explicit TransformToMatrix (±42°) nodes + inverse flags,
mirroring the flux variant
- outpainting_fisheye_flux.json: normalize inverse widgets stored as 0/45
- wan_vace_ref_to_video.json: UNET filename typo (wan2,1_vace14B ->
wan2.1_vace_14B_fp16.safetensors)
Explain and format every workflow: embedded "About this workflow"
MarkdownNote (purpose, stages, what to set, required packs/models),
meaningful group boxes (incl. retitling six anonymous "Group" boxes in
Fisheye_depth_workflow), titles on user-editable nodes, pretty-printed
JSON. Rename the two spaced filenames (pointcloud_walker,
test_pointcloud_loading). Rewrite the README workflow table with an
extras/dependencies column.
Tooling (notebooks/): validate_workflows.py checks stored widgets against
current INPUT_TYPES (count + combo values); rework_workflows_2026_07.py is
the migration that produced this state. Analysis and proposed improvements
in docs/workflows_review.md.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>