888 Commits
Author SHA1 Message Date
Dr.Lt.Data 429d0159ad docs(tests): drop dev-only debug note and dead .claude/ path from e2e test docstring 2026-04-20 02:06:44 +09:00
Dr.Lt.Data 5bed9d5545 bump version 2026-04-20 02:01:36 +09:00
Dr.Lt.Data d74c1d0112 fix: cross-version compat for DifferentialDiffusion + E2E test harness
Resolves `AttributeError: 'DifferentialDiffusion' object has no attribute
'execute'` on older ComfyUI (<0.3.63) where the V3 schema migration has
not landed yet. The prior code called `.execute(model)[0]` directly,
breaking anyone still on the legacy `.apply(model)` API.

Introduce `modules/impact/utils.apply_differential_diffusion(model)`
which uses `hasattr` to pick the correct branch at runtime:
- `.execute` -> V3 classmethod (ComfyUI >= 0.3.63)
- `.apply`   -> legacy instance method (older)
- otherwise  -> AttributeError with upgrade guidance

Replace all 7 direct call sites (animatediff_nodes, core x2,
impact_pack x2, segs_nodes, segs_upscaler) with the helper. The
existing import guard in segs_upscaler is preserved; the helper's
deferred import means ImportError still propagates for very old
ComfyUI builds without `comfy_extras.nodes_differential_diffusion`.

Fixes GitHub issue #1177.

Also add an E2E test harness:
- docs/E2E_TEST_STRATEGY.md — isolated-launch workflow with
  --disable-all-custom-nodes + --whitelist-custom-nodes, Playwright
  smoke test, workflow execution via /prompt + /history + /view,
  verification criteria, operational notes.
- tests/e2e_dd_compat.py — reference test that runs SEGSDetailer
  with noise_mask_feather=20 on a real input image, asserting
  status==success and non-zero pixel delta between input and paste
  previews (proves the detailer loop and compat shim actually ran).
2026-04-20 02:01:32 +09:00
Dr.Lt.Data 6a517ebe06 bump version 2026-01-02 21:05:11 +09:00
Terry Jia 762fecd970 Frontend vueNode (node 2.0) support for mask rect area nodes (#1167) 2026-01-02 20:46:59 +09:00
Dr.Lt.Data 51b7dcdffa refactor(js): extract shared utilities from MaskRectArea modules
- Move readLinkedNumber, getDrawColor, computeCanvasSize to common.js
- Import shared functions in mask-rect-area.js and mask-rect-area-advanced.js
- Remove duplicate implementations from both MaskRectArea modules
- Clean up unused debug parameter in syncLinkedInputsToProperties
2025-12-30 18:30:53 +09:00
Andrés Zsögön 4c864fafb0 Enable INT node inputs and fix live preview sync for MaskRectArea nodes (#1168)
## Overview

This PR improves both MaskRectArea and MaskRectAreaAdvanced nodes by allowing them to accept values from connected INT nodes, while preserving backward compatibility with existing workflows.

It also fixes several UI and preview issues that prevented the canvas from updating correctly when values were driven by links.

Fixes #1126

## Key changes

### 1. Typed INT inputs support (backend)

- Both MaskRectArea and MaskRectAreaAdvanced now declare proper INT inputs in INPUT_TYPES.
- This allows parameters such as x, y, width, height, and blur_radius to be driven directly by other nodes.
- Existing workflows that relied on node properties remain supported via fallback logic using extra_pnginfo.

### 2. Live preview correctly updates when inputs are linked (frontend)

- The canvas preview now updates immediately when values come from linked INT nodes.
- This is achieved by synchronizing linked input values into node.properties during canvas rendering, avoiding reliance on widget callbacks or execution timing.
- This directly resolves the behavior reported in issue #1126.

### 3. Node height and layout fix (frontend)

- The node height calculation was corrected to use the actual widget layout (last_y) instead of input/output counts.
- Nodes can now both grow and shrink correctly when resized or when widget content changes.
- This removes excessive empty space below the widgets and canvas.

### 4. Widget duplication prevention

- Frontend logic now detects when widgets are already created by Python and avoids recreating them in JavaScript.
- This prevents duplicated widgets and keeps the node UI consistent.

### 5. Comment cleanup

- Remaining comments in Spanish were translated to English for consistency and maintainability.

## Backward compatibility

- Existing workflows continue to work without modification.
- Default behavior and mask output remain unchanged unless inputs are explicitly linked.

## Motivation

These changes make the nodes composable with the rest of the graph (especially math and control nodes), improve the reliability of the preview, and fix UI inconsistencies without introducing breaking changes.
2025-12-30 18:26:50 +09:00
Dr.Lt.Data 61bd8397a1 Update the dependencies in pyproject.toml to match requirements.txt 2025-11-19 00:30:20 +09:00
Dr.Lt.Data ba09fbc4c0 bump version 8.28 2025-11-19 00:28:03 +09:00
poipoi300 2717053166 Add support for 5D tensors in iterative upscale(Qwen / WAN VAE) (#1094)
* Update dims getting logic in IterativeLatentUpscale to assume that
height and width are at the end of the latent's dimensions.

* Update dims getting logic in IterativeLatentUpscale to assume that
height and width are at the end of the latent's dimensions.

* re-order args
2025-11-19 00:26:45 +09:00
Carrington Junior 4564406212 Update util_nodes.py (#1143)
Fix Reactor Masking Helper tensor concatenation issues

- Ensure all tensors are on the same device before concatenation.
- Add batch dimension to single images to support batched concatenation.
- Enforce height and width matching via upscaling to prevent dim mismatch.
- Handle channel mismatches by truncating to the minimum channel count.
- Remove unsafe tensor repetition to avoid excessive RAM usage.
- Prevent RuntimeErrors when concatenating images of varying sizes or devices.
2025-11-19 00:17:10 +09:00
Douglas Griffith 20275d1af9 onprompt patch (#1139) 2025-11-18 23:51:45 +09:00
wzgrx 9dc9700dca Update requirements.txt (#1134) 2025-11-18 23:47:23 +09:00
Dr.Lt.DataandClaude 9da76f839c fixed: Wildcard system bugs - pattern matching and config paths
- Fixed __*/pattern__ not matching wildcards at any directory depth
- Fixed config.py to handle quoted paths in impact-pack.ini
- Fixed empty line filtering in wildcards.py
- Added comprehensive test suite (86 tests) and documentation

Closes https://github.com/ltdrdata/ComfyUI-Impact-Pack/issues/1133

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 23:42:53 +09:00
Dr.Lt.Data 3d238589ed docs: Update wildcard system documentation 2025-11-18 09:01:50 +09:00
Dr.Lt.DataandClaude fd1b40bee5 feat: Progressive on-demand wildcard loading system
Implement memory-efficient progressive loading for large wildcard collections (10GB+).

Closes #1137

## Key Changes

- **LazyWildcardLoader**: On-demand loading proxy with thread-safe caching
- **Auto mode detection**: Full cache (<50MB) or on-demand (≥50MB), configurable via `wildcard_cache_limit_mb`
- **Performance**: Startup 20-60min → <1min, Memory 5-10GB → <100MB, Size calc <1sec
- **API**: `/impact/wildcards/list/loaded` - Progressive tracking endpoint
- **UI**: Real-time status (🔵 On-Demand / 🟢 Full Cache) with loaded count
- **Compatibility**: Backward compatible, all existing features work unchanged

## Implementation

- YAML pre-loaded (keys in content), TXT on-demand (path = key)
- Early termination size calculation, transitive wildcard support maintained
- 15 test files with comprehensive documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 01:57:24 +09:00
Dr.Lt.Data 2804f7944f bump version 2025-10-10 01:44:20 +09:00
Dr.Lt.Data a3eb8d775f fixed: v3 node compatibility patch - ImageUpscaleWithModel
https://github.com/ltdrdata/ComfyUI-Impact-Pack/issues/1116

fixed: v3 node compatilbity patch - LTXVScheduler
https://github.com/ltdrdata/ComfyUI-Impact-Pack/issues/1110

fixed: v3 node compatibility patch - GITSScheduler
https://github.com/ltdrdata/ComfyUI-Impact-Pack/issues/1106

fixed: v3 node compatibility patch - OptimalStepsScheduler
https://github.com/ltdrdata/ComfyUI-Impact-Pack/issues/1109
2025-10-10 01:43:28 +09:00
Dr.Lt.Data b7cb2d0cb8 bump version 2025-10-09 11:30:24 +09:00
hcygnawandDr.Lt.Data 6173c0cb16 Optimize MaskListToMaskBatch (#1084)
* Optimize MaskListToMaskBatch

The complexity of the original implementation is O(n^2). Optimize it to O(n).

* Update util_nodes.py

robust mask upscale

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-10-09 11:27:52 +09:00
Alexopus 190ca9a6fe NthItemOfAnyList: allow negative index (#1085) 2025-10-09 11:00:26 +09:00
Danamir dc304e2dff Use a generic input value finder for wildcard populate seed input (#1092) 2025-10-08 12:05:07 +09:00
Dr.Lt.Data 2a23b07b2a bump version 2025-10-08 12:00:36 +09:00
ec31d21760 Optimized SEGSPaste memory usage (#1105)
* Optimized SEGSPaste to reduce memory usage

* Optimized SEGSPaste to reduce memory usage

* Changed behavior of SAM2VideoDetectorSEGS when BBOX doesn't return any segs

* changed behavior of SegsVideoDetector again. It will now try to detect bboxes on the reversed video if no bboxes are found. It will only give up once even the reversed run doesn't yield any bboxes

* changed Videodetector behavior to predict reverse when not finding any bboxes

* Update segs_nodes.py

---------

Co-authored-by: Kaski <23-23enterprise@gmx.de>
Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-10-08 11:53:16 +09:00
JonasandJonas Krauss 50736b276b change Differential Diffusion method from apply to execute (#1118)
Co-authored-by: Jonas Krauss <jonas.krauss@stockpulse.de>
2025-10-08 11:34:53 +09:00
Dr.Lt.Data 4186fbd4f4 bump version 2025-10-01 00:59:28 +09:00
Dr.Lt.Data 7a81d5adbf modified: Improved the behavior so that the core scheduler is retrieved dynamically instead of statically.
- Some nodepacks also insert custom schedulers into the scheduler.
2025-10-01 00:58:45 +09:00
Dr.Lt.Data cb0655f9a1 fixed: Control Bridge - robust patch
https://github.com/ltdrdata/ComfyUI-Impact-Pack/issues/1076#issuecomment-3218327527
2025-09-25 18:32:53 +09:00
Dr.Lt.Data f86c5afc68 fixed: switch nodes – compatibility fix from subgraph feature
https://github.com/ltdrdata/ComfyUI-Impact-Pack/issues/1071
2025-08-20 05:08:23 +09:00
Dr.Lt.Data 329d05b3e4 fixed: switch nodes – compatibility fix from subgraph feature
https://github.com/ltdrdata/ComfyUI-Impact-Pack/issues/1071
2025-08-19 07:13:59 +09:00
Dr.Lt.Data a1d8446670 fixed: switch nodes – compatibility fix from subgraph feature
refactor: ruff check

https://github.com/ltdrdata/ComfyUI-Impact-Pack/issues/1071
2025-08-19 07:01:53 +09:00
Laurent ErignouxandErignoux Laurent 2569e25772 Fixing js files app.js import in case Comfy is served behind a url-prfixing proxy (#1078)
Co-authored-by: Erignoux Laurent <laurent.erignoux@ubisoft.com>
2025-08-13 18:21:54 +09:00
chutchatut e22f68fb97 update node to use function under utils namespace (#1070) 2025-07-31 18:10:04 +09:00
Dr.Lt.Data 00c3731616 fixed: PreviewDetailerHookProvider - event loop error 2025-07-30 12:29:15 +09:00
chutchatutandDr.Lt.Data 91c881c794 feat:added new node detailer with auto retry (#1039)
* added new node detailer with auto retry

* added modular should retry hook

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-07-30 12:27:22 +09:00
Dr.Lt.Data 48a814315f modified: detailer - allow 5D latent model (WAN)
- assuming it's a single-frame latent, not a video latent

https://github.com/ltdrdata/ComfyUI-Impact-Pack/issues/1066
8.21.2
2025-07-27 15:53:40 +09:00
Dr.Lt.Data 3d90c579e8 bump version 2025-07-25 12:35:06 +09:00
Dustin f03dd5e79e Fix: PreviewBridge mask editor KeyError with clipspace files + restore fresh image behavior (#1009)
* fix: Handle clipspace files in PreviewBridge mask editor and restore fresh image behavior

- Fix KeyError when using mask editor multiple times
- Add register_clipspace_image() method to detect and register clipspace files
- Resolve timing issue between frontend JS conversion and backend processing
- Restore original "fresh start" behavior for new image generations
- Clear mask cache when images/latents change to ensure clean slate for new content
- Maintain backwards compatibility with existing preview bridge functionality
- Add dual registration for clipspace paths and preview IDs

Fixes issue where second+ mask saves would fail with:
KeyError: 'clipspace/clipspace-mask-XXXXX.png [input]'

Also fixed regression where new images would retain previous masks instead of starting fresh.

* Fix restore_mask 'always' and 'if_same_size' modes in PreviewBridge

- Fixed 'always' mode to properly preserve masks when changing input images/latents
- Fixed 'if_same_size' mode to preserve masks when switching between same-sized images
- Modified cache clearing logic to preserve cache for both 'always' and 'if_same_size' modes
- Updated restoration logic to handle size comparison correctly for 'if_same_size'

This addresses the issue where masks were being cleared even when restore_mask was set to 'always' or when switching between same-sized images with 'if_same_size'.

Fixes the issue discussed in PR #1009
2025-07-25 12:34:23 +09:00
Dr.Lt.Data e1e95c14d3 improved: Muted inputs are now allowed for Make...List and Make...Batch.
fixed: A bug where the number of input slots did not decrease below 3 when disconnected in `Make...List` and `Make...Batch`.

https://github.com/ltdrdata/ComfyUI-Impact-Pack/issues/1052
2025-07-19 20:04:46 +09:00
Dr.Lt.Data 17e0a05769 fixed: The {n$$...}` wildcard pattern was not working properly.
https://github.com/ltdrdata/ComfyUI-Impact-Pack/issues/1055
8.20.1
2025-07-19 19:09:49 +09:00
meneraing b3a815b43d Update impact_pack.py (#1047)
Change the scale factor step to 0.05 for better parity with "Upscale Latent By" node from ComfyUI
2025-07-16 17:51:11 +09:00
Miguel C 8ab2e168f7 fix: update mask combination to use utils module (#1048) 2025-07-16 16:43:57 +09:00
Dr.Lt.Data b980035588 feat: extra schedulers - support OSS Chroma 8.20 2025-07-15 12:28:01 +09:00
Dr.Lt.Data df330c1b06 fixed: an invalid namespace issue introduced by refactoring.
fixed: ruff check

https://github.com/ltdrdata/ComfyUI-Impact-Pack/issues/1042
8.19.1
2025-07-09 23:51:49 +09:00
Dr.Lt.Data 6d438d8b5d removed: mmdet and legacy nodes
removed: disable.py, uninstall.py
fixed: ruff check
refactored
8.19
2025-07-08 00:15:16 +09:00
Dr.Lt.Data 7d565d1f7a fixed: Even if the installation of the SAM2 dependency fails, the Impact Pack remains usable in a robust manner. Instead, a SAM2 installation guide is displayed.
https://github.com/ltdrdata/ComfyUI-Impact-Pack/issues/1035#issuecomment-3044202981
2025-07-07 22:01:45 +09:00
Dr.Lt.Data 27c5368bcc Support SAM2 models.
https://github.com/ltdrdata/ComfyUI-Impact-Pack/issues/684
8.18
2025-07-07 00:34:10 +09:00
Dr.Lt.Data 705698faf2 bump version 8.17.1 2025-06-19 12:40:42 +09:00
Dr.Lt.Data cf43fc4e3c fix: typo in locales 2025-06-19 12:39:30 +09:00
robo 4c292e684e change wildcard {} regex to allow escaping (#968) 2025-06-19 12:39:06 +09:00