Commit Graph
47 Commits
Author SHA1 Message Date
Meisoft ff94c32d63 Merge pull request #20 from Meisoftcoltd/feature/recursive-self-queue-1733009829692853919
feat: recursive self-queuing system for sequential execution
2026-03-22 20:40:06 +01:00
Meisoftcoltd 1a28034baf docs: update readme files to reflect v1.0.0 recursive self-queuing architecture
- Rewrite README.md and README_ES.md.
- Document the shift to the "Formula 1" engine architecture with the 6 core nodes.
- Remove references to deprecated batch, sequence, and debug nodes.
- Add setup and usage instructions for the new autonomous machine.
2026-03-22 19:37:11 +00:00
Meisoftcoltd 73581ac582 refactor: clean up repository to v1.0.0 and implement recursive self-queuing architecture
- Delete deprecated modules: `sequence.py`, `paths.py`, `batch.py`, `debug.py`.
- Clean `image.py`, retaining only SessionImageReceiver, SessionImageSender, and auxiliary function.
- Clean `video.py`, retaining only IncrementalVideoStitcher and WanFrameValidator.
- Clean `loop.py`, retaining only SequentialLoopStart and SequentialLoopTrigger.
- Rewrite `__init__.py` mapping explicitly to the 6 core components and bump version to 1.0.0.
2026-03-22 19:25:11 +00:00
Meisoftcoltd 6da4275975 feat: implement recursive self-queuing nodes for autonomous execution
- Add `SequentialLoopStart` and `SequentialLoopTrigger` nodes in `loop.py`.
- Manage global loop index for memory persistence across cycles.
- Implement auto-queue HTTP POST trigger using local ComfyUI API `/prompt`.
- Add non-blocking timeout of 5s on urllib requests.
- Register new nodes in `__init__.py` under NODE_DISPLAY_NAME_MAPPINGS.
2026-03-22 19:12:43 +00:00
Meisoft cb6541a306 Merge pull request #19 from Meisoftcoltd/fix/simplify-loop-index-reset-9730679421414511812
Simplify flow by using current_loop_index for internal state reset
2026-03-22 18:57:26 +01:00
Meisoftcoltd 9a2b4beebc Update documentation for current_loop_index reset logic
Updated `README.md` and `README_ES.md` to document the change from boolean
reset flags to using `current_loop_index` for internal session resets in
the `Incremental Auto-Stitcher` and `Session Image Receiver` nodes.
2026-03-22 17:56:24 +00:00
Meisoftcoltd 12f46287a9 Simplify flow by using current_loop_index for internal state reset
Modified `SessionImageReceiver` in `image.py` and `IncrementalVideoStitcher`
in `video.py` to accept the integer `current_loop_index` instead of external
boolean values. Automatic state clearing is now correctly performed when the
loop index equals 0. List unwrapping logic for inputs was implemented to
defend against ComfyUI `INPUT_IS_LIST = True` iteration behavior while
preserving the robust path resolution checks built in previous iterations.
2026-03-22 17:51:31 +00:00
Meisoft 5254d9c241 Merge pull request #18 from Meisoftcoltd/add-wan-validator-13605443588029445601
Add Wan Frame Validator and Visual UI Debugging
2026-03-22 17:35:29 +01:00
Meisoftcoltd e4e92e4f08 Add Wan Frame Validator and Visual UI Debugging to Image Nodes
- Added WanFrameValidator node in video.py to ensure 4k+1 frame logic.
- Registered WanFrameValidator in __init__.py with "WanFrameValidator": "🛡️ Wan Frame Validator".
- Updated both README.md and README_ES.md to document the Wan Frame Validator.
- Modified SessionImageReceiver and SessionImageSender in image.py to return a UI object mapping for Visual UI Debugging in ComfyUI frontend.
2026-03-22 16:33:49 +00:00
Meisoft 13b2cde008 Merge pull request #17 from Meisoftcoltd/fix-return-names-in-session-image-sender-2688597451786092335
Fix missing RETURN_NAMES attribute on SessionImageSender node
2026-03-22 13:55:25 +01:00
Meisoftcoltd 0156a1b313 fix: add missing RETURN_NAMES to SessionImageSender
The custom `@register_node` decorator requires `RETURN_NAMES` to be explicitly defined as a tuple. `SessionImageSender` had `RETURN_TYPES = ()` but was missing `RETURN_NAMES = ()`, which caused an `AttributeError` upon importing the module, breaking the startup of ComfyUI. This patch adds the missing empty tuple.
2026-03-22 12:54:00 +00:00
Meisoft 55de36b2f0 Merge pull request #16 from Meisoftcoltd/fix-incremental-video-stitcher-12677637160509818319
Update IncrementalVideoStitcher with session memory and strict path extraction
2026-03-22 13:39:04 +01:00
Meisoftcoltd 20eeaf00dc Update READMEs with SessionImageSender/Receiver docs
- Documented the `SessionImageSender` and `SessionImageReceiver` nodes under the "Image & Latent Category" in both `README.md` and `README_ES.md`.
- Described the "Sender/Receiver" pattern functionality: transferring the final frame from one Auto Queue cycle as the first frame to the next without generating ComfyUI cyclic dependency errors.
- Both language versions maintain accurate context regarding infinite/continuous video loop generation.
2026-03-22 12:37:21 +00:00
Meisoftcoltd fc24328c95 Add SessionImageSender and SessionImageReceiver nodes
- Added `SessionImageSender` to save the last frame of an image batch (using `.clone()` to safely decouple the tensor) into a global session variable.
- Added `SessionImageReceiver` to inject the stored image into the start of the next workflow execution cycle.
- Both nodes utilize `IS_CHANGED` returning `NaN` to force execution on every Auto Queue tick.
- Updated `__init__.py` to register the new nodes under the display names "📤 Session Image Sender" and "📥 Session Image Receiver".
- Ensures users can chain frame sequences across independent batch loops without creating cyclic dependencies in ComfyUI.
2026-03-22 12:33:59 +00:00
Meisoftcoltd bcaa17981b Update documentation for Incremental Auto-Stitcher
- Updated README.md and README_ES.md descriptions for the Incremental Auto-Stitcher node.
- Replaced mention of `video_prefix` search (globbing) with strict JSON path extraction (`reset_list` added).
- Explained the session memory behavior that clears on restart and guarantees immunity against old files in the ComfyUI output directory.
2026-03-22 12:14:05 +00:00
Meisoftcoltd 143784fd48 Update IncrementalVideoStitcher to use strict JSON parsing and session memory
- Replaced glob search with strict JSON payload parsing of VHS_FILENAMES
- Added a `session_video_list` global variable to accumulate session-specific videos
- Added a boolean `reset_list` input to optionally clear session memory
- Validated and joined relative paths from VHS with ComfyUI's output directory
- Added `try...finally` block to guarantee automatic cleanup of the temporary FFmpeg concat list file
- Updated related prints/error messages in Spanish to match project conventions
2026-03-22 12:08:48 +00:00
Meisoft d9bb1dd2c1 Merge pull request #15 from Meisoftcoltd/fix-incremental-video-stitcher-11651493821724131751
Fix IncrementalVideoStitcher inputs in video.py
2026-03-22 01:15:19 +01:00
Meisoftcoltd f9100f0727 fix: restore INPUT_IS_LIST and update IncrementalVideoStitcher in video.py
Replaces `IncrementalVideoStitcher` with an updated version to fix issue where ComfyUI iterates over string text inputs like the `VHS_FILENAMES` trigger. Adds `INPUT_IS_LIST = True` to the node and unwraps the newly list-wrapped inputs in `stitch_incremental` to process correctly. Ensures `glob` is imported at the module level.
2026-03-22 00:09:50 +00:00
Meisoft 6bd37b9671 Merge pull request #14 from Meisoftcoltd/feature/incremental-video-stitcher-1024656265801320493
Add IncrementalVideoStitcher for automated intermediate stitching
2026-03-21 23:32:41 +01:00
Meisoftcoltd c0b1fcbea9 docs(video): update READMEs with IncrementalVideoStitcher details
- Added description for "🎞️ Incremental Auto-Stitcher" node in README.md.
- Added equivalent description in Spanish for README_ES.md.
- Explains the expected input behavior and how it differs from the FFmpeg Video Stitcher.
2026-03-21 22:32:15 +00:00
Meisoftcoltd 5171199a61 feat(video): add IncrementalVideoStitcher node
Add IncrementalVideoStitcher to seamlessly join video chunks generated by ComfyUI during Auto Queue cycles.
The node operates efficiently by looking for intermediate chunks generated so far using the supplied video prefix and joining them without re-encoding via FFmpeg.
Registered as "🎞️ Incremental Auto-Stitcher" in the NODE_DISPLAY_NAME_MAPPINGS.
2026-03-21 22:30:50 +00:00
Meisoft ab99598940 Merge pull request #13 from Meisoftcoltd/implement-ffmpeg-stitcher-16344698670511801985
Implement FFmpegVideoStitcher Node
2026-03-21 18:01:46 +01:00
Meisoftcoltd 8351c21219 docs: update READMEs with FFmpegVideoStitcher details
Updated both README.md and README_ES.md to include the newly implemented
FFmpegVideoStitcher node under a new "Video Category" in the Detailed Node Reference section.
2026-03-21 17:01:30 +00:00
Meisoftcoltd 1a29a6974f feat: implement FFmpegVideoStitcher node
Implemented the FFmpegVideoStitcher node in video.py per exact specifications,
including safe type checking and defensive list handling for VHS_FILENAMES.
The node leverages INPUT_IS_LIST = True to act as a sequential loop aggregator
and properly concatenates mp4 videos directly using FFmpeg without re-encoding.
2026-03-21 16:59:14 +00:00
Meisoft 3f9abf4310 Merge pull request #12 from Meisoftcoltd/ffmpeg-video-stitcher-3348528563198334568
feat: Add FFmpeg Video Stitcher for Sequential Batcher
2026-03-21 15:34:37 +01:00
Meisoftcoltd 0773b958cb Add FFmpeg Video Stitcher node and update documentation
- Created `video.py` introducing the `FFmpegVideoStitcher` node to concatenate video chunks generated via sequential batch loops.
- Registered the node into ComfyUI's standard mapping dictionaries in `__init__.py`.
- Added check for FFmpeg installation using `shutil.which` and raising a ComfyUI-friendly error if it's missing.
- Updated node output file saving logic to utilize ComfyUI's native `folder_paths.get_output_directory()`.
- Revised `README.md` and `README_ES.md` with explicit instructions on how to set up the workflow (VHS Combine integration) and provided warnings emphasizing the need for `easy cleanGpuUsed` after VAE decoders to prevent PyTorch OOM exceptions during iterative batching loops.
2026-03-21 14:30:16 +00:00
Meisoft 6c401d7f51 Merge pull request #11 from Meisoftcoltd/perf/optimize-image-slicing-13128165043232194995
⚡ Optimize ImageBatchToList slicing performance
2026-02-06 14:32:50 +01:00
Meisoftcoltd de7b8cfc6e Optimize ImageBatchToList with torch.split 2026-02-06 13:32:28 +00:00
Meisoft 2188a87ee2 Merge pull request #10 from Meisoftcoltd/security-fix-interact-node-9547849465127601152
[Security] Fix arbitrary code execution in Interact node
2026-02-06 14:30:56 +01:00
Meisoftcoltd 5d54025133 security: Gate Interact node debug REPL behind environment variable
This commit addresses a security vulnerability where the `Interact` node
exposed an interactive Python shell (`code.interact`) by default, allowing
arbitrary code execution.

Changes:
- Modified `debug.Interact.interact` to check for `COMFYUI_SB_ENABLE_INTERACTIVE_DEBUG` environment variable.
- The REPL is now disabled by default. It only activates if the variable is set to "1", "true", or "yes".
- Added a warning message when the node is executed without the flag.
- Updated the node's docstring to include a security warning and instructions.

Verification:
- Verified that `code.interact` is not called by default.
- Verified that `code.interact` is called when the environment variable is set.
- Confirmed `import os` exists in `debug.py`.
2026-02-06 13:30:19 +00:00
Meisoft 7fcd204130 Merge pull request #8 from Meisoftcoltd/security/fix-loadcsv-file-read-6247077405557821064
Secure LoadCSV node against arbitrary file read
2026-02-06 14:28:15 +01:00
Meisoft af4a40eece Merge pull request #9 from Meisoftcoltd/perf-optimize-batch-keys-1659602565111197201
⚡ Optimize unique key extraction in batch table formatting
2026-02-06 14:25:28 +01:00
Meisoftcoltd bbc5faa672 Optimize unique key extraction in format_batch_as_table 2026-02-06 13:24:12 +00:00
Meisoftcoltd 62c212a485 Secure LoadCSV node against arbitrary file read 2026-02-06 13:23:43 +00:00
Meisoft 3aa4361c63 Merge pull request #5 from Meisoftcoltd/perf/optimize-permutations-14959950268971519840
⚡ Optimize Permutations Memory and Speed
2026-02-06 14:17:56 +01:00
Meisoft 05f6f0a170 Merge pull request #7 from Meisoftcoltd/perf/optimize-image-imports-8246609572147105443
Optimize imports in image.py
2026-02-06 14:16:11 +01:00
Meisoftcoltd 5c0e75b8dd perf: optimize Permutations node to use iterator
Modified `Permutations.go` to return an `itertools.permutations` iterator instead of materializing a list. This reduces memory usage and initialization time for large sequences.
Measured improvement:
- Time to generate and process 3.6M items: 38s -> 12.6s (3x speedup)
- Eliminated intermediate list allocation (~445MB for 3.6M items)
2026-02-06 13:11:26 +00:00
Meisoft 6805ca1257 Merge pull request #6 from Meisoftcoltd/perf/optimize-modelfinder-5826303226175631384
⚡ Optimize ModelFinder by separating scanning from matching
2026-02-06 14:10:22 +01:00
Meisoftcoltd ebcf007111 Optimize imports in image.py to top-level scope 2026-02-06 10:18:32 +00:00
Meisoftcoltd 9a0905724d Optimize ModelFinder directory scanning
Refactored ModelFinder.go to scan directories once and build an in-memory index of filenames. This avoids repetitive I/O operations for each input filename.

- Implemented pre-scanning of search paths.
- Added filename-based index for O(1) lookup of non-wildcard queries.
- Retained wildcard support via linear scan of cached paths.
- Improved performance significantly (benchmark indicates ~16x speedup).
2026-02-06 10:15:20 +00:00
Meisoftcoltd 3dd59956f3 perf: optimize Permutations node to use iterator
Modified `Permutations.go` to return an `itertools.permutations` iterator instead of materializing a list. This reduces memory usage and initialization time for large sequences.
Measured improvement:
- Time to generate and process 3.6M items: 38s -> 12.6s (3x speedup)
- Eliminated intermediate list allocation (~445MB for 3.6M items)
2026-02-06 10:13:37 +00:00
Meisoft 4e7dfabc3f Merge pull request #2 from Meisoftcoltd/feature/csv-table-preview-14046922710863208222
Add CSV table preview and Preview Batch node
2026-01-27 00:05:53 +01:00
google-labs-jules[bot] b6f8c16b0b feat: add CSV table preview and Preview Batch node
- Implemented a text-based table formatter for batches.
- Updated Load CSV node to show a table preview in the workflow.
- Added a new Preview Batch node for visualizing any batch data.
- Added a JavaScript extension to handle node visualization.
- Updated English and Spanish documentation.
2026-01-26 17:52:22 +00:00
Meisoft d777599adb Merge pull request #1 from Meisoftcoltd/feature/batch-rename-and-csv-node-961407042528458233
Rename Job to Batch and add LoadCSV node
2026-01-26 04:14:16 +01:00
google-labs-jules[bot] 27bf0d70e3 Rename 'Job' to 'Batch' and add LoadCSV node
- Renamed all 'Job' terminology to 'Batch' across the codebase.
- Renamed job.py to batch.py.
- Added LoadCSV node to support loading batch parameters from CSV files.
- Maintained backward compatibility for existing workflows using legacy names.
- Updated README.md and README_ES.md with new version and documentation.
- Fixed a potential index-out-of-bounds bug in GetBatchStep clamping logic.
2026-01-26 02:50:13 +00:00
Meisoft ecc6836a41 Add files via upload 2026-01-26 03:32:33 +01:00
Meisoft ef6d30e6a5 Initial commit 2026-01-26 03:30:41 +01:00