Compare commits

...
6 Commits
Author SHA1 Message Date
Dr.Lt.Data e2d18c21ba feat: IPAdapterModelHelper - add SDXL FaceID Plus v2
https://github.com/ltdrdata/ComfyUI-Inspire-Pack/issues/224
2025-04-05 18:01:42 +09:00
Dr.Lt.Data 13fda9df3f Merge pull request #222 from eltociear/patch-1
docs: update README.md
2025-04-05 01:08:25 +09:00
Ikko Eltociear Ashimine 035f37d1d1 docs: update README.md
minor fix
2025-03-31 00:31:42 +09:00
Dr.Lt.Data 9d179f0193 Merge pull request #220 from ComfyNodePRs/update-publish-yaml
Update Github Action for Publishing to Comfy Registry
2025-03-29 00:32:18 +09:00
Dr.Lt.Data 5891049f2b feat: DropList node is added
https://github.com/ltdrdata/ComfyUI-Inspire-Pack/issues/219
2025-03-25 23:59:53 +09:00
snomiao f64211c3f3 chore(publish): update GitHub Actions workflow for node publishing
- Add permissions for writing issues
- Update publish-node-action to use version v1
- Add condition to run job only for 'ltdrdata' repository owner
2025-01-21 08:42:07 +00:00
7 changed files with 48 additions and 10 deletions
+6 -2
View File
@@ -7,15 +7,19 @@ on:
paths:
- "pyproject.toml"
permissions:
issues: write
jobs:
publish-node:
name: Publish Custom Node to registry
runs-on: ubuntu-latest
if: ${{ github.repository_owner == 'ltdrdata' }}
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Publish Custom Node
uses: Comfy-Org/publish-node-action@main
uses: Comfy-Org/publish-node-action@v1
with:
## Add your own personal access token to your Github Repository secrets and reference it here.
personal_access_token: ${{ secrets.REGISTRY_ACCESS_TOKEN }}
personal_access_token: ${{ secrets.REGISTRY_ACCESS_TOKEN }}
+2 -1
View File
@@ -172,7 +172,8 @@ This repository offers various extension nodes for ComfyUI. Nodes here have diff
* `Float Range (Inspire)`: Create a float list that increases the value by `step` from `start` to `stop`. A list as large as the maximum limit is created, and when `ensure_end` is enabled, the last value of the list becomes the stop value.
* `Worklist To Item List (Inspire)`: The list in ComfyUI allows for repeated execution of a sub-workflow. This groups these repetitions (a.k.a. list) into a single ITEM_LIST output. ITEM_LIST can then be used in ForeachList.
* `▶Foreach List (Inspire)`: A starting node for performing iterative tasks by retrieving items one by one from the ITEM_LIST.\nGenerate a new intermediate_output using item and intermediate_output as inputs, then connect it to ForeachListEnd.\nNOTE:If initial_input is omitted, the first item in item_list is used as the initial value, and the processing starts from the second item in item_list.
* `Foreach List◀ (Inspire)`: A end node for performing iterative tasks by retrieving items one by one from the ITEM_LIST.\nNOTE:Directly connect the outputs of ForeachListBegin to 'flow_control' and 'remained_list'.
* `Foreach List◀ (Inspire)`: An end node for performing iterative tasks by retrieving items one by one from the ITEM_LIST.\nNOTE:Directly connect the outputs of ForeachListBegin to 'flow_control' and 'remained_list'.
* `Drop List (Inspire)`: Removes all items from the ITEM_LIST. If the ITEM_LIST generated through this node is passed to ForeachListEnd, the process is immediately terminated.
### Util - Utilities
* `ToIPAdapterPipe (Inspire)`, `FromIPAdapterPipe (Inspire)`: These nodes assists in conveniently using the bundled ipadapter_model, clip_vision, and model required for applying IPAdapter.
+1 -1
View File
@@ -8,7 +8,7 @@
import importlib
import logging
version_code = [1, 15]
version_code = [1, 17]
version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '')
logging.info(f"### Loading: ComfyUI-Inspire-Pack ({version_str})")
-2
View File
@@ -1,5 +1,3 @@
import traceback
import comfy
import nodes
from . import utils
+37 -3
View File
@@ -1,3 +1,5 @@
import logging
from comfy_execution.graph_utils import GraphBuilder, is_link
from .libs.utils import any_typ
from .libs.common import update_node_status, ListWrapper
@@ -165,10 +167,13 @@ class ForeachListEnd:
self.collect_contained(child_id, upstream, contained)
def doit(self, flow_control, remained_list, intermediate_output, dynprompt, unique_id):
if remained_list.aux[1] is None:
remained_list.aux = (remained_list.aux[0], unique_id)
if hasattr(remained_list, "aux"):
if remained_list.aux[1] is None:
remained_list.aux = (remained_list.aux[0], unique_id)
update_node_status(remained_list.aux[1], f"{(remained_list.aux[0]-len(remained_list))}/{remained_list.aux[0]} steps", (remained_list.aux[0]-len(remained_list))/remained_list.aux[0])
update_node_status(remained_list.aux[1], f"{(remained_list.aux[0]-len(remained_list))}/{remained_list.aux[0]} steps", (remained_list.aux[0]-len(remained_list))/remained_list.aux[0])
else:
logging.warning("[Inspire Pack] ForeachListEnd: `remained_list` did not come from ForeachList.")
if len(remained_list) == 0:
return (intermediate_output,)
@@ -217,11 +222,39 @@ class ForeachListEnd:
}
class DropItems:
@classmethod
def INPUT_TYPES(s):
return {
"required": { "item_list": ("ITEM_LIST", {"tooltip":"Directly connect the output of ForeachListBegin, the starting node of the iteration."}), },
}
RETURN_TYPES = (any_typ,)
RETURN_NAMES = ("ITEM_LIST",)
OUTPUT_TOOLTIPS = ("This is the final output value.",)
FUNCTION = "doit"
DESCRIPTION = ""
CATEGORY = "InspirePack/List"
def doit(self, item_list):
l = ListWrapper([])
if hasattr(item_list, 'aux'):
l.aux = item_list.aux
else:
logging.warning("[Inspire Pack] DropItems: `item_list` did not come from ForeachList.")
return (l,)
NODE_CLASS_MAPPINGS = {
"FloatRange //Inspire": FloatRange,
"WorklistToItemList //Inspire": WorklistToItemList,
"ForeachListBegin //Inspire": ForeachListBegin,
"ForeachListEnd //Inspire": ForeachListEnd,
"DropItems //Inspire": DropItems,
}
NODE_DISPLAY_NAME_MAPPINGS = {
@@ -229,4 +262,5 @@ NODE_DISPLAY_NAME_MAPPINGS = {
"WorklistToItemList //Inspire": "Worklist To Item List (Inspire)",
"ForeachListBegin //Inspire": "▶Foreach List (Inspire)",
"ForeachListEnd //Inspire": "Foreach List◀ (Inspire)",
"DropItems //Inspire": "Drop Items (Inspire)",
}
+1
View File
@@ -30,6 +30,7 @@ model_preset = {
"SD1.5 FaceID Portrait v11": ("ip-adapter-faceid-portrait-v11_sd15", "CLIP-ViT-H-14-laion2B-s32B-b79K", None, True),
"SD1.5 FaceID Portrait": ("ip-adapter-faceid-portrait_sd15", "CLIP-ViT-H-14-laion2B-s32B-b79K", None, True),
"SDXL FaceID": ("ip-adapter-faceid_sdxl", "CLIP-ViT-H-14-laion2B-s32B-b79K", "ip-adapter-faceid_sdxl_lora", True),
"SDXL FaceID Plus v2": ("ip-adapter-faceid-plusv2_sdxl", "CLIP-ViT-H-14-laion2B-s32B-b79K", "ip-adapter-faceid-plusv2_sdxl_lora", True),
"SDXL FaceID Portrait": ("ip-adapter-faceid-portrait_sdxl", "CLIP-ViT-H-14-laion2B-s32B-b79K", None, True),
"SDXL FaceID Portrait unnorm": ("ip-adapter-faceid-portrait_sdxl_unnorm", "CLIP-ViT-H-14-laion2B-s32B-b79K", None, True),
"Kolors FaceID Plus": ("Kolors-IP-Adapter-FaceID-Plus", "clip-vit-large-patch14-336", None, True),
+1 -1
View File
@@ -1,7 +1,7 @@
[project]
name = "comfyui-inspire-pack"
description = "This extension provides various nodes to support Lora Block Weight, Regional Nodes, Backend Cache, Prompt Utils, List Utils, Noise(Seed) Utils, ... and the Impact Pack."
version = "1.15"
version = "1.17"
license = { file = "LICENSE" }
dependencies = ["matplotlib", "cachetools"]