Changelog
All notable changes to ComfyUI Eclipse are documented in this file.
A quick note regarding the repackaging allegations: Eclipse does not contain a single repackaged node. Anyone who claims to have looked under the hood and found someone else's code is lying—and is only proving that they have no idea what they're talking about.
Entries follow conventional commit prefixes:
2026-07-11
Version: 4.1.13
Fix
Image Transform & FX Nodes: Enabled native list-wise output support (
is_output_list=Truein schemas) forUpscale With Model (v1),Upscale w/wo Model (v2),Image Rescale,Color Match,Filter Adjustments,Filter Adjustments Advanced,Inset & Crop,Soften, andImage Crop by Mask. Returning processed frames as a list rather than stacking them to a single batch tensor preserves list mapping structures downstream. This prevents downstream nodes (such as KSampler) from executing with batched latents (which caused tensor mismatch errors with models like Krea2).Image Loader Nodes: Enabled native list-wise output support (
is_output_list=Truein schemas) forLoad Batch From FolderandLoad Batch From Folder (Step/Advanced). Returning loaded images/masks as lists directly rather than stacking them into batches avoids huge contiguous RAM/VRAM allocation overheads and prevents list-flattening bugs.
Version: 4.1.12
Fix
KSampler (Pipe) & KSampler (Kargim): Implemented automatic batch-splitting support to process batched image/latent inputs sequentially. This prevents tensor dimension mismatch exceptions (
Sizes of tensors must match except in dimension 1) during sampling initialization with models that use custom attention wrappers (such as Krea2 and HunyuanVideo).
Version: 4.1.11
Fix
Save Prompt: Fixed AttributeError exception when processing None/empty text inputs passed from upstream switch nodes or empty sliced text outputs in the IO Slicer node.
Save Prompt: Fixed base folder resolution fallback when using
filename_optdirectly (without a connected pipe), enabling%source_base_folderto resolve correctly for nested folder structures.
Version: 4.1.10
Feat
Pipe Slicer: Introduced a new node
IO Slicer (Slice & Dice)(RvPipe_IO_SliceDice.py) that slices all connected inputs directly using a providedindicesinput (supporting lists, strings, and tensors) and passes the indices downstream.Image Selector: Changed second output from
pipetoindices(type LIST) so users can connect selection indices directly to the newIO Slicernode.Switch Nodes & Router Nodes: Migrated router and switch nodes (
Any Multi-Switch,Any Multi-Switch Purge,Any Dual-Switch,Any Dual-Switch Purge,Any Multi-Switch Lazy,Any Multi-Switch Lazy Purge) to support list-wise execution usingis_input_list=Trueandis_output_list=True. This prevents ComfyUI from looping/broadcasting switch nodes and resolves slot merging/duplication when mismatching list lengths are connected.Pass-Through Nodes: Migrated
Any PasserandAny Passer Purgeto useis_input_list=Trueandis_output_list=Trueto execute list transfers efficiently in a single pass.List Fallbacks: Updated all modified switches and passer nodes to return
[None]when no inputs are connected/active, resolving type iteration merging errors in the ComfyUI executor.
Fix
Pipe Selector: Fixed batch-slicing logic for latents, conditioning, and image lists. The selector now correctly slices batched tensors down to the actual selected indices count (e.g. 1 instead of 4) even when the list length
M == 1matches the indices length.Pipe Selector: Resolved conditioning tuple unpacking error in single-tuple batch slicing.
Pipe Selector: Added automatic total batch size detection and expansion factor calculation to correctly align and repeat upstream elements (e.g. 4 prompts) with downstream generated batches (e.g. 12 images/latents) when slicing selected subsets.
Pipe Selector: Implemented a direct pass-through bypass for
imageandimage_listwhen resolved directly from the upstreampipe(where they have already been sliced), resolving double-slicing duplication issues.Pipe Selector & Pipe Slicer: Implemented robust recursive list/batch flattening for
imageandimage_listinputs to resolve unpacking/concatenation exceptions when inputs are wrapped in outer lists (e.g. from folder/batch loaders).Image Selector: Fixed state discard behaviors during selection toggles. Deselecting all items or clicking "Discard" now performs a selection reset without deleting cached preview files on disk, avoiding image reloading/flashing on the next run.
Breaking
Pipe Selector: Deprecated and deleted the legacy
IO Selectornode (RvPipe_IO_Selector.py). Users should use the newIO Slicer (Slice & Dice)node instead.
Deprecated nodes:
IO Selector
Version: 4.1.9
Feat
Convert Primitive: Implemented automatic complete recursive flattening for list and tuple inputs.
Convert Primitive: Implemented element-wise type conversions for list/tuple inputs when targeting scalar types (STRING, INT, FLOAT, BOOLEAN).
Convert Primitive: Implemented boolean-fallback logic for INT and FLOAT target conversions if inputs are not directly convertible to numbers (returns 1/1.0 for truthy/non-empty values and 0/0.0 for falsy/empty values).
Convert to List: Added string-to-list splitting behavior (prioritizing newlines over commas) so that connecting a string splits it into list items instead of wrapping it as a single-element list.
Smart Model Loader: Changed Prompt Variations task output format to use newline-only separation (no hyphens) for easier list conversion.
Fix
Convert Primitive: Resolved RuntimeError boolean ambiguity crash when converting multi-element PyTorch tensors to BOOLEAN by using the tensor's .any() state.
Convert Primitive: Catch general Exceptions (including RuntimeErrors) in the execution block to provide graceful fallbacks instead of crashing the pipeline.
2026-07-10
Version: 4.1.8
Fix
IO Selector: Resolved a bug in
slice_textwhere single text prompt strings containing commas were incorrectly split and sliced, resulting in truncated prompts. Slicing now only applies when the input is an actual list of strings.
Version: 4.1.7
Feat
Smart Model Loader: Added an option when deleting a loader template to also permanently delete its associated core model file (such as checkpoints, UNets, GGUFs, or Nunchaku files, excluding CLIP, VAE, or LoRA files) from local disk, prompting the user with a confirmation list of the specific files to be removed.
Fix
Image Selector: Resolved an infinite resize and layout flickering loop when using fixed images-per-row preview modes (such as "2 Images per Row") by calculating cell dimensions based on the stable
container.clientWidthinstead of the dynamically-shiftinggrid.clientWidth, and updatingResizeObserverto observe the container while managing its lifecycle on the node.Image Selector: Resolved a caching issue where stale selections are passed downstream because the fingerprint signature does not update when upstream images change (despite identical size and count) by dynamically retrieving the upstream node's cached image output from
outputs_cacheduring stack inspection and including its statistical pixel fingerprint in the md5 signature.Load Batch From Folder: Added a stuck-title check to prevent node titles from getting permanently locked into progress states (such as "Scanning...", "Loading 45%", or "Resizing 80%") if previous runs were interrupted or errored, dynamically falling back to clean default titles derived from node schemas.
Vision System Prompts: Added explicit camera angle and vantage point instructions to all vision-related system prompts (Simple Description, Detailed Description, Ultra Detailed Description, Image Analysis, Detailed Analysis, Tags) so the LLM describes the actual camera perspective direction (e.g. "from a low angle looking up", "from eye level at a three-quarter angle") instead of vague shot-size labels like "medium shot".
Version: 4.1.6
Fix
Image Selector: Replaced unstable memory pointer-based tensor signature generation with a stable, shape-and-sampled-stats-based fingerprint to prevent input-images signature mismatch loops when loaders reload on queue runs.
Load Batch From Folder: Added python-level memory caches to the standard, Step Advanced, and legacy Advanced loaders (
py/RvImage_LoadBatchFromFolder.py,py/RvImage_LoadBatchFromFolderStepAdvanced.py,py/_legacy/legacy_LoadBatchFromFolderAdvanced.py) linked toFileListCacheinvalidation to completely bypass repeated folder reading/decoding when queues are re-triggered after interruptions.
Version: 4.1.5
Feat (New)
Added
Load Batch From Folder (Step Advanced)featuring advanced resizing, sorting, abatch_indexwidget (positioned belowframe_end) withcontrol_after_generatesupport for auto-increment paging on queues, and afilesstring list output containing the source absolute file paths matching loaded frames.Extended the
IO Selectornode (py/RvPipe_IO_Selector.py) to support slicing afilenamesinput list, preservingbase_pathhierarchies, and updating active file details (filepath,filename,source_name,path,base_path) in its output pipe context for loop-based prompt saving compatibility.Converted
Save Prompt(py/RvText_SavePrompt.py) tois_input_list=Trueto support internal iteration for batch/list execution, with thread-safe list-unwrapping safety on context pipes.Added support to
Save Promptto allow saving outside of the ComfyUI output directory when paths are anchored via source folder placeholders (e.g.%source_base_folder/../prompts), while keeping un-anchored relative paths sanitized and confined.Added dual-layer CPU fallback protection with persistent state tracking for the WD14 ONNX tagger model (
core/sml/backend_wd14.py) to automatically handle CUDA/cuDNN mismatches/errors gracefully and prevent repeated fallback attempts in loops.
Chore
Deprecated
Load Batch From Folder (Advanced)(py/_legacy/legacy_LoadBatchFromFolderAdvanced.py) in favor of the newLoad Batch From Folder (Step Advanced)node.
Deprecated nodes:
Load Batch From Folder (Advanced)
Version: 4.1.4
Feat
Redesigned the
Image Selectortoolbar layout by stacking status hints above the buttons, and added a new "All" button to select all images.Optimized memory footprint in both standard and advanced
Load Batch From Foldernodes by parsing image dimensions from headers and resizing in PIL via high-quality Lanczos downsampling before converting to PyTorch tensors.
Fix
Image Selector: Resolved a bug preventing the "1 Image per Row" preview mode from applying correct layout styles.
Version: 4.1.3
Feat
Added a progress bar and dynamic percentage-based node title updates to the Smart Model Loader (LM) node during batch execution and WD14 tagging, resolving display names or custom user-assigned titles rather than internal node IDs.
Chore
Corrected factual details in 4.1.2 release notes regarding
To Batch,Image Selector, and legacy deprecations.
2026-07-09
Version: 4.1.2
Feat (New)
Added new
To ListandTo Batchconversion nodes (py/RvConversion_ToList.py,py/RvConversion_ToBatch.py) using dynamic MatchType to convert/consolidate between lists and batches.Added
Pipe Selectornode (py/RvPipe_IO_Selector.py) to handle lockstep slicing, broadcasting, and standard context alignments. Outputs are configured as list-outputs except forimage(batch tensor) andpipe(context dict).Added optional
pipeoutput toImage Selector(py/RvImage_Selector.py) to output confirmed selection indices inside the pipe context.
Feat
Refactored all switches, routers, conditionals, and passer nodes (such as
Any Dual-Switch,IF A Else B,Stop,Show Any, and 14 typed passer nodes) to use ComfyUI V3 Generic Type Matching (io.MatchType) instead of legacy wildcards, enabling strict type safety and dynamic list/batch propagation.Added in-memory preview image caching (
_stored_ui_images) toImage Selectorto bypass disk writes and prevent browser reloading/flickering.Optimized
Image Selectorsignature calculation using fast O(N)O(N) data pointers (data_ptr()) and shapes instead of CPU-heavy mean/std tensor operations.Added batch image splitting support to
Tile Split(py/RvImage_TileSplit.py) to split batch frames and output tile pipes.Marked legacy
Convert To ListandConvert To Batchnodes as Deprecated, moving them topy/_legacy/under nameslegacy_ConvertToListandlegacy_ConvertToBatch.
Fix
Image Selector: Removed legacy
listoutput (routing variables through pipe), implemented strict workflow interrupt/stop, added stack-frame cache-busting when no selection is confirmed, updated toolbar warning when count is 0, and resolved nested 4D image batch extraction bugs.Pipe Selector: Implemented factor-division indexing mapping and singleton pass-through fallbacks to slice conditioning, text, images, and latents matching selected indices, and fixed slicing checks for both list-based and tuple-based conditioning chunks.
Smart Model Loader (LM): Aligned node to fully support list-inputs and list-outputs natively, running the generation loop aligned to input list dimensions.
Conditioning & Image Lists: Implemented input conditioning normalization inside KSampler and Passer nodes to wrap raw tuples, and added recursive nested list/tuple flattening to
_normalize_to_listin all 9 image processing nodes to prevent direct type errors on list structures.Configured
Show AnyandShow Any Stopnodes to print raw PyTorch tensor values directly instead of calculating stats.
Chore
Reformatted the entire codebase (
py/,core/,extern/) usingblackfor PEP 8 compliance.Moved legacy Convert To List and Convert To Batch nodes to
py/_legacy/folder.
Deprecated nodes:
Convert To List [Eclipse]
Convert To Batch [Eclipse]
2026-07-07
Version: 4.1.1
Feat
added
Image Resolution Pipenode (py/RvSettings_Image_ResolutionPipe.py) to output custom resolution and batch_size values in a custom pipe (e.g. for connection toPipe Out Smart Folder).added
Image Resolution Simple Pipenode (py/RvSettings_Image_ResolutionSimplePipe.py) which acts likeImage Resolution Pipebut without thebatch_sizeparameter.added slot-shifting submenus ("Move Up By...", "Move Down By..." up to 10 slots) to the variable reordering context menus of both
GetAllActiveandGetFirstnodes.
Version: 4.1.0
Fix
resolved batch/list reconstruction issues in both
Tile AssemblyandTile Decode & Assemblynodes by declaringis_input_list=True/is_output_list=Trueand implementing flat-loops to correctly rebuild and return a list of reconstructed images.
Version: 4.0.0
Feat (New)
Show Any Stop [Eclipse]node (py/RvTools_ShowAnyStop.py) which acts as a text/data viewer with a socketless "Stop (Result Review)" review interruption toggle.Image Filter Adjustments Advanced [Eclipse] node (
py/RvImage_FilterAdjustmentsAdvanced.py) with Hue Shift, Temperature, Tint, Solarize, Vignette, Chromatic Aberration, and GPU-accelerated LUT (.cube) loading.Workflow Migration Tool [Eclipse] node (
py/RvTools_WorkflowMigration.py) supporting workflow JSON scanning, validation, and in-place upgrade of legacy [Eclipse] and [RvTools] nodes.standalone
Preview Image (DOM) [Stop](py/RvImage_PreviewDom_Stop.py) andShow Text [Stop](py/RvTools_ShowText_Stop.py) nodes with socketless active/bypass stop toggles to halt execution for manual review.
Feat
refactored
Show Any [Eclipse]node (py/RvTools_ShowAny.py) to act as a simple text/data viewer (matchingShow Any Stopbut without the stop review button).added legacy // RvTools node naming support to the workflow migration systems, splitting mappings into v1 and v2 files, and adding explicit legacy mappings.
added standalone command-line Python script
tools/migrate_workflow.pyfor headless workflow JSON folder/file migration.added interactive large preview overlay to Image Selector with cycling, Space/S/Enter selection toggles, and viewport focus sync.
added grid layout modes, toolbar status layout, preview mode combo dropdown, and double-click high-resolution zoom gesture to Image Selector.
structured Image Selector preview outputs in uid-specific temp folders with automatic cleanup to prevent filesystem bloat.
added native list-of-images and list-of-masks input support to various nodes (Resize, Rescale, Soften, Filter Adjustments, Inset & Crop, Color Match, Upscale, Save, Smart Model Loader, Batch Slice/Strip/Interleave).
added progress bar support (
comfy.utils.ProgressBar) inside the workflow migration execute loops.added floating close button in DOM Preview single image mode to return to grid layout.
updated repository reset scripts under
scripts/to include safety confirmation prompts and preserveconfig.jsonoption.
Fix
resolved a PIL data type
TypeError: Cannot handle this data type: (1, 1, 832, 3)inPreview Image (DOM)(RvImage_PreviewDom.py) by implementing robust list/batch flattening and squeezing logic.updated
Save Images [Eclipse](RvImage_Save.py) to declareis_input_list=Trueandis_output_list=Trueon outputs, wrapping single output elements into lists to resolve downstream list compatibility issues.resolved a list nesting bug in
Save Images [Eclipse](RvImage_Save.py) where returning single-element lists wrapped the output tensor in a nested list[[tensor]], causing downstream SaveImage nodes to fail.resolved execution crashes and schema mapping issues for list connections on Image Selector, Image Comparer, Save Images, Mask to SEGS, and the Stop node.
resolved a frontend configuration bug in Seed node where clicking "New Fixed Random" or randomizing generated a 64-bit seed value when in 32-bit mode.
resolved image display inside Image Selector's One Image per Row mode to calculate dynamic cell heights based on natural aspect ratios.
Docs
added descriptive parameter tooltips with recommended values for advanced photographic parameters to ensure ease of use.
Chore
completely removed all hardcoded static fallback node name mappings from the Python codebase, relying fully on loading external configuration files.
renamed
RvImage_Preview_MasktoRvMask_Previewand moved it under a new Mask node category.reorganized all
RvImage_nodes into Loaders, Save & Preview, Batch Operations, Transforms, and FX & Color subcategory menus.renamed video nodes starting with
RvImage_to start withRvVideo_.complete removal of all deprecated legacy nodes, legacy files, and registry imports for the v4.0.0 cleanup.
Breaking
removed all deprecated legacy nodes, breaking older saved workflows using legacy nodes.
removed compatibility configurations and output connection checks for the rgthree-comfy node pack.
combined Seed and Seed 32-bit nodes into one using a bit_depth combo selector (defaulting to 64-bit).
removed Lora Stack to String node from the codebase.
removed VRAM CleanUp custom node and JS helper.
removed old v21 and v22 Pipe IO Sampler Settings nodes, renamed v23 to Pipe IO Sampler Settings, and removed
prompt_seed,upscale_steps, andupscale_denoiseoptions.removed deprecated Pipe Out VC Name Generator node.
removed Sampler Selection and Custom Size nodes.
removed RAM Cleanup node.
removed version tag suffixes from active node IDs: Smart Model Loader v2 [Eclipse] -> Smart Model Loader [Eclipse], IO Checkpoint Loader v2 [Eclipse] -> IO Checkpoint Loader [Eclipse], Smart Folder v2 [Eclipse] -> Smart Folder [Eclipse], and Save Images v2 [Eclipse] -> Save Images [Eclipse].
2026-07-02
Version: 3.7.28
feat: renamed text conditioning zero out node to RvCond_ConditioningZeroOut and expanded model token mappings to support SD20, SDXLRefiner, HunyuanDiT, GenmoMochi, Cosmos, and CogVideoX.
feat: renamed KSampler (Pipe Data) to KSampler (Kargim), outputting a merged pipe context alongside individual pass-through slots, resolving parameters with custom widget overwrite and external link priorities.
chore: deprecated and moved Basic Pipe, From Basic Pipe, and To Basic Pipe nodes into the legacy module under the Deprecated category.
chore: deleted standard non-pipe KSampler node and cleaned up all backend/frontend references
See the full changelog here

