- 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.
Defining NODE_CLASS_MAPPINGS made ComfyUI skip comfy_entrypoint, so
/imageops/viewmedia and node replacements were never registered. Load
as a V3 extension only, move server.py to routes.py so it stops
shadowing ComfyUI's server module, and transcode animated previews
with PyAV instead of an external ffmpeg.
- Require ComfyUI 0.19.0 (has_intermediate_output); CI floor updated.
- Process 11 nodes on ComfyUI's torch device when the frames fit in
free memory (IMAGEOPS_COMPUTE_DEVICE=cpu disables it).
- Add core CURVE input to Color Correct, BOUNDING_BOX output/input to
Crop and Crop Stitch, LAYERS output to Comp (ComfyUI 0.31+),
essentials_category, and Merge blend modes with golden parity.
- Report progress through the public set_progress API and drop the
hidden unique_id input.
- Add ImageOps settings and a refresh-previews command.
- Fix ImageOpsComp rotation and preview saving (undefined
to_display_range) and masked Transform edge colors.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>