- Fix batch bypass tuple handling, memory budget device-awareness, grain
RNG device, roto payload limits, preview temp-file cleanup, and route
double-registration.
- Add native VIDEO output (fps/audio) to effect nodes that previously
only returned IMAGE/MASK when fed a VIDEO input.
- Split the oversized src/preview/ops/geometry.ts and add a starting
golden-fixture test harness (spherize, transform) comparing backend
and frontend math.
- Remove ImageOpsAppendV2 (Autogrow) and ImageOpsLensArtifacts; inline
Append's helper back into its single caller.
- Collapse the Color Correct curve widget behind a toggle so the node
no longer grows too tall.
- Fix Crop/generic-node video preview playback running at the RAF rate
instead of the source video's real fps.
- Fix Crop losing its saved output size after a workflow reload:
syncCropWidgets recomputed height from width and a preset aspect
ratio on every resync (including onConfigure on load), discarding
the restored value. It now only refreshes aspect-ratio bookkeeping
on a resync.
Build example/All Nodes MIO.json from the node schemas with
scripts/generate_example_workflow.py: 32 nodes plus Load Image, 39
links, executed end to end in ComfyUI. An integration test fails when
the file goes stale.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Refactor 26 nodes to io.ComfyNode with define_schema and execute\n- Implement ComfyExtension subclass with async comfy_entrypoint\n- Preserve majoor_imageops synthetic namespace loader to avoid nodes module collision\n- Update and validate unit, registry and frontend test suites\n- Rebuild frontend dist files