Replaces the previous "multiple of 4" rule with the `4n + 1` logic across
the AutoLoopCalculatorWan and VAESafeFramePadder nodes. This prevents frame
loss / truncation inside the VAE and ensures absolute consistency for
long generation runs and video reconstruction. Mention of "múltiplo de 4"
in the primary README has also been updated to "regla de 4n + 1".
- Removed `PYTORCH_CUDA_ALLOC_CONF` from `__init__.py` to allow elastic VRAM expansion via `expandable_segments:True`.
- Swapped `torch.cuda.empty_cache()` and `torch.cuda.synchronize()` order in `vram_node.py` to ensure pending operations finish before purging cache.
- Added critical warnings in `README.md` and `README_EN.md` discouraging the use of `--highvram` flag when starting ComfyUI to prevent VRAM Defragmenter sabotage.
Updated README.md with the newly provided v1.6.0 presentation text.
Translated the updated text and updated README_EN.md accordingly.
Bumped __version__ in __init__.py to "1.6.0".
- Enforced a strict memory cleanup sequence in `MeisoftVRAMDefragmenter` (including IPC cleanup and CUDA synchronization).
- Injected `PYTORCH_CUDA_ALLOC_CONF="max_split_size_mb:128"` in `__init__.py` to prevent VRAM micro-fragmentation.
- Added `unload_detector` option to `VideoAnalyzerWithAudio` to eagerly destroy the face detector model and free VRAM.
- Updated README.md with detailed explanations of the new features.
- Added Spanish documentation block to `README.md` explaining how to use the new `bbox_detector` port with Impact Pack.
- Added English documentation block to `README_EN.md` with the same instructions.
- Add optional `bbox_detector` input to `VideoAnalyzerWithAudio`.
- Implement GPU-accelerated face detection using external BBOX_DETECTOR models.
- Support both ImpactPack and standard ONNX bounding box output formats.
- Retain CPU-based OpenCV face detection as a fallback.
- Rename node in UI to "🕵️ Video Analyzer Face detector + Audio".
- Update README.md and README_EN.md to reflect new architecture and wiring.
- Renamed `ResTool32xLTX` to `ResTool64xLTX` and updated DIVISOR to 64 to prevent odd-dimension `ValueError`s when using latent downscale factors of 2.0 (IC-LoRA).
- Updated visual node name in `__init__.py` to accurately reflect the 64x divisor behavior to avoid technical debt.
- Updated documentation in `README.md` and `README_EN.md` to reflect the rename and explain the downscale compatibility logic.
- Implemented `AutoLoopCalculatorLTX` node to enforce `8n + 1` frame chunks.
- Added `ResTool32xLTX` node for strict 32x divisible resolutions with proper minimum pixel scaling.
- Updated `IncrementalVideoStitcher` (in `image.py`) to correctly subtract the overlapping anchor frame from global frame progression when LTX mode is active.
- Added `global_ltx_mode` reset in `SequentialLoopStart` to prevent state leakage to other non-LTX workflows.
- Registered nodes in `__init__.py` and updated `README.md` & `README_EN.md` with new features.
- Added AutoFPSLimiter class in `tools.py` to calculate `select_every_nth` and proportional `new_fps`.
- Registered `AutoFPSLimiter` in `__init__.py` under NODE_DISPLAY_NAME_MAPPINGS.
- Updated `README.md` and `README_EN.md` Architecture sections with details about the new node.
- Añadida sección detallada sobre la nueva característica de Auto-Limpieza de VRAM en SequentialLoopTrigger.
- Añadidos detalles en Changelog (v1.5.3) en los README en español e inglés.
- Improve error handling in video.py to capture and display Torchaudio exceptions.
- Add explicit list of dependencies in requirements.txt.
- Introduce install.py for automated installation of Python and OS dependencies (FFmpeg).
- Complete redesign of Spanish and English READMEs with v1.5.2 Changelog, new features, and professional workflow setup.
- Replaced the predefined dropdown list for `base_resolution` in `tools.py` with an open `INT` input (`min`: 128, `max`: 8192, `step`: 8) for the four Resolution Tools.
- Updated `README.md` and `README_EN.md` to reflect the new user interface change.
- Se actualizaron las versiones de 1.5.0 a 1.5.1.
- Se añadió documentación exhaustiva de las entradas (Inputs) y salidas (Outputs) de todos los nodos según el código (`__init__.py`).
- Se introdujo documentación detallada para el nuevo "Escudo de Megapíxeles" (Megapixel Shield) de la suite de Herramientas.
- Se redactó una guía de conexiones limpia para la Arquitectura Híbrida de Identidad.
- Se mantuvo la paridad entre README.md (Español) y README_EN.md (Inglés).
- Se ha refactorizado `tools.py` para incluir un "Escudo de Área" que evita artefactos visuales en resoluciones bajas extremas escalando matemáticamente usando `MIN_PIXELS`.
- Se han actualizado los archivos `README.md` y `README_EN.md` con la nueva característica en la sección Tools.
- La versión de la suite en `__init__.py` se ha incrementado a 1.5.1.
This commit introduces the Hybrid Identity Architecture's Dynamic Engine:
- `tools.py`: Adds new Math constraint nodes (`ResTool 8x, 16x, 32x, 64x`) to calculate safe resolutions dynamically, preventing VRAM overflow.
- `loop.py`: Replaces the legacy static mathematical state machine with a dynamic performance-based state using `global_accumulated_frames` to progress accurately based on successful generations.
- `image.py`: Overhauls `SessionImageSender` to dynamically truncate generated image tensors using OpenCV if faces are lost, saving the last valid frame, and correctly adjusting the loop progression. `SessionImageReceiver` updated to log dynamic progression.
- `video.py`: Refactors `AutoLoopCalculator` and `IncrementalVideoStitcher` to work under the new dynamic state machine logic.
- `__init__.py`: Registered new nodes, updated imports to include `tools`, and bumped version to v1.5.0.
- `README.md` & `README_EN.md`: Updated documentation to detail the new Dynamic Engine functionality and Tools suite.
This commit introduces a new `tools.py` module containing a `BaseResolutionTool` and its specific derived classes (`ResTool8x`, `ResTool16x`, `ResTool32x`, `ResTool64x`). These nodes calculate safe, model-specific dimensions that strictly conform to divisibility rules using provided aspect ratios and base resolutions.
The `__init__.py` file is updated to import and register these tools along with emojis for UI display. Both the English and Spanish READMEs are updated to document the new `Tools` suite.
Update `calculate` method in `video.py` to dynamically adjust loop lengths
by a 10% margin, absorbing remainders safely and preventing inefficient
micro-cycles at the end of videos. Update both README.md and README_EN.md
to reflect this new capability and bump the version to 1.4.3.
- Bumped version number in README.md and README_EN.md from 1.4.0 to 1.4.1.
- Updated the "Explorer" (`VideoAnalyzerWithAudio`) node description to highlight its new clean interface, native VHS widget integration, and visual Reference Frame generation.
- Updates README.md and README_EN.md.
- Replaces legacy loader references with the new "Explorer", "Brain", and "Worker" logic.
- Adds OpenCV dependency requirement instructions.
- Provides step-by-step setup guides to connect the updated 3-node structure.
- Introduced global state memory (`global_source_frame_count`, `global_target_frames`, `global_stride`) in `loop.py`.
- Removed visual `source_frame_count` wire from `AutoLoopCalculator` in `video.py`
- Upgraded `AutoLoopCalculator` to execute as a blind "Explorer" in Cycle 0.
- Updated `LoadVideoWithSourceAudio` to intercept real `source_frame_count` directly from VHS payloads.
- Added dynamic calculation of total cycles based on intercepted frames at the end of Cycle 0.
- Updated both README.md and README_EN.md with v1.3.1 documentation reflecting the new Cycle 0 features.
- Se actualizaron las descripciones en README.md y README_EN.md para reflejar las nuevas capacidades de LoadVideoWithSourceAudio (widget UI intacto, upload directo) y el Stitcher (INPUT_IS_LIST=False, passthrough directo de audio al último frame).
- Se restauraron los scripts de testing en `tests/` que se habían eliminado accidentalmente.
Changes:
- Documented zero-OOM tensor handling and audio passthrough for IncrementalVideoStitcher in README.md and README_EN.md.
- Added documentation for the new LoadVideoWithSourceAudio node explaining dynamic VHS integration and uncropped audio extraction.
Updated README.md and README_EN.md to version 1.1.0. Documented the new
Anti-Cache Injection mechanism in the Loop Trigger, progressive keyframe
and MP4 saving features, and audio multiplexing using torchaudio and
FFmpeg. Also updated the setup instructions with the new wiring requirements.
- Replaced README.md with the Spanish translation.
- Renamed the old English README to README_EN.md.
- Added cross-links between the two versions.
- Updated documentation to include the new Seed Mutator feature for v1.0.1.
- 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.
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.
- 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.
- 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.
- 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.
- 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.
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.
- 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.
- 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.
- 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.