From e1e95c14d3cf01d233daad81f1eda7584763237b Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Sat, 19 Jul 2025 20:04:46 +0900 Subject: [PATCH] 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 --- js/impact-pack.js | 7 ++++++- modules/impact/config.py | 2 +- modules/impact/util_nodes.py | 26 ++++++++++++-------------- pyproject.toml | 2 +- 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/js/impact-pack.js b/js/impact-pack.js index e32bcfb..60fe66c 100644 --- a/js/impact-pack.js +++ b/js/impact-pack.js @@ -594,7 +594,12 @@ app.registerExtension({ let select_slot = this.inputs.find(x => x.name == "select"); - if (!connected && (this.inputs.length > 3)) { + let widget_count = 0; + if(nodeData.name == 'ImpactSwitch' || nodeData.name == 'LatentSwitch' || nodeData.name == 'SEGSSwitch') { + widget_count += 1; + } + + if (!connected && (this.inputs.length > widget_count+1)) { if( !stackTrace.includes('LGraphNode.prototype.connect') && // for touch device !stackTrace.includes('LGraphNode.connect') && // for mouse device diff --git a/modules/impact/config.py b/modules/impact/config.py index 53b38ef..ebeb1cc 100644 --- a/modules/impact/config.py +++ b/modules/impact/config.py @@ -3,7 +3,7 @@ import os import logging -version_code = [8, 20, 1] +version_code = [8, 21] version = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '') my_path = os.path.dirname(__file__) diff --git a/modules/impact/util_nodes.py b/modules/impact/util_nodes.py index 79719ac..a6c5905 100644 --- a/modules/impact/util_nodes.py +++ b/modules/impact/util_nodes.py @@ -298,7 +298,7 @@ class ImpactDummyInput: class MasksToMaskList: @classmethod def INPUT_TYPES(s): - return {"required": { + return {"optional": { "masks": ("MASK", ), } } @@ -473,7 +473,7 @@ class NthItemOfAnyList: class MakeImageList: @classmethod def INPUT_TYPES(s): - return {"required": {"image1": ("IMAGE",), }} + return {"optional": {"image1": ("IMAGE",), }} RETURN_TYPES = ("IMAGE",) OUTPUT_IS_LIST = (True,) @@ -493,7 +493,7 @@ class MakeImageList: class MakeImageBatch: @classmethod def INPUT_TYPES(s): - return {"required": {"image1": ("IMAGE",), }} + return {"optional": {"image1": ("IMAGE",), }} RETURN_TYPES = ("IMAGE",) FUNCTION = "doit" @@ -501,14 +501,13 @@ class MakeImageBatch: CATEGORY = "ImpactPack/Util" def doit(self, **kwargs): - image1 = kwargs['image1'] - del kwargs['image1'] images = [value for value in kwargs.values()] - if len(images) == 0: - return (image1,) + if len(images) == 1: + return (images[0],) else: - for image2 in images: + image1 = images[0] + for image2 in images[1:]: if image1.shape[1:] != image2.shape[1:]: image2 = comfy.utils.common_upscale(image2.movedim(-1, 1), image1.shape[2], image1.shape[1], "lanczos", "center").movedim(1, -1) image1 = torch.cat((image1, image2), dim=0) @@ -518,7 +517,7 @@ class MakeImageBatch: class MakeMaskBatch: @classmethod def INPUT_TYPES(s): - return {"required": {"mask1": ("MASK",), }} + return {"optional": {"mask1": ("MASK",), }} RETURN_TYPES = ("MASK",) FUNCTION = "doit" @@ -526,14 +525,13 @@ class MakeMaskBatch: CATEGORY = "ImpactPack/Util" def doit(self, **kwargs): - mask1 = kwargs['mask1'] - del kwargs['mask1'] masks = [make_3d_mask(value) for value in kwargs.values()] - if len(masks) == 0: - return (mask1,) + if len(masks) == 1: + return (masks[0],) else: - for mask2 in masks: + mask1 = masks[0] + for mask2 in masks[1:]: if mask1.shape[1:] != mask2.shape[1:]: mask2 = comfy.utils.common_upscale(mask2.movedim(-1, 1), mask1.shape[2], mask1.shape[1], "lanczos", "center").movedim(1, -1) mask1 = torch.cat((mask1, mask2), dim=0) diff --git a/pyproject.toml b/pyproject.toml index e5fadb7..e538794 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "comfyui-impact-pack" description = "This node pack offers various detector nodes and detailer nodes that allow you to configure a workflow that automatically enhances facial details. And provide iterative upscaler." -version = "8.20.1" +version = "8.21" license = { file = "LICENSE.txt" } dependencies = ["segment-anything", "scikit-image", "piexif", "transformers", "opencv-python-headless", "GitPython", "scipy>=1.11.4"]