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>
Core (nodes/core/): alpha, masks, batch consolidation, blend, transform
matrix, bbox, parameters, validation engines shared across nodes, each with
unit tests.
Fix an unconditional RGB clamp to [0,1] that silently destroyed HDR/negative
values in Merge, Transform, Color Correct, Comp, CornerPin, Distort,
Spherize, Crop Stitch, and the shared masked-compositing helpers. Alpha
stays clamped everywhere; RGB no longer does.
Fix Grain applying `amount` twice in overlay/soft_light modes (quadratic
instead of linear falloff).
Add STMap mode to Distort (absolute UV remap vs relative displacement).
Add bbox output/input wiring between Crop and Crop Stitch. Add edge_grow
and edge_color_match to Crop Stitch. Add despill to Keyer. Add shuffle mode
to Channel (R/G/B/A routed from any source). Add size/luma_response to
Grain. Add grid mode to Constant. Add frame/layer accumulation limits to
Preview and Draw, plus a font-path containment fix and supersampling in
Text.
Make Frame Range and Append recognize a real ComfyUI VIDEO input (not only
this pack's internal media wrapper), preserving true fps/audio instead of
silently dropping them, and add a native VIDEO output alongside the
existing IMAGE output on both.
Add node_replacements.py (empty registry, wired into the extension
lifecycle) for future schema migrations.
Add a CI matrix pinning the verified requires-comfyui floor, and
.comfyignore for Registry packaging.
- Updated the render function to accept an optional outputSlot parameter.
- Modified renderNode to handle output slots and gather input information.
- Introduced RenderInputInfo interface to encapsulate details about each input.
- Added logic to create placeholder canvases for missing upstream nodes.
- Updated signature function to include outputSlot in cache key.
ci: add nightly build and stable release workflows
- Created nightly.yml for automated nightly builds and uploads to GitHub.
- Added release-on-tag.yml for creating stable releases on version tags.
- Implemented steps to create zip archives excluding unnecessary files.
- Configured GitHub Actions to publish releases and custom nodes to the registry.
- Implemented `computeScopes`, `drawHistogram`, `drawWaveform`, `drawRgbWaveform`, and `drawVectorscope` functions for image analysis.
- Created `parseAnnotated`, `makeViewUrl`, `ensureBitmap`, and `ensureVideoFrameCanvas` functions for media source handling.
- Added TypeScript definitions for ComfyUI integration, including node state, media state, and scopes options.
- Established project structure with `package.json`, `tsconfig.json`, and `package-lock.json` for dependency management and TypeScript configuration.