Compare commits

..

25 Commits
3.27.2 ... 3.28

Author SHA1 Message Date
Dr.Lt.Data
3de17b2fa6 improve: pip fixer - support missing comfyui_frontend_package fixing 2025-03-05 12:55:39 +09:00
Dr.Lt.Data
22ecb5de95 update db 2025-03-05 08:15:03 +09:00
Dr.Lt.Data
992b8b3cb5 update DB 2025-03-04 22:24:05 +09:00
Dr.Lt.Data
bebc16d5a6 fixed: invalid log message 2025-03-04 22:07:15 +09:00
Dr.Lt.Data
ddb719f866 update DB 2025-03-04 22:05:03 +09:00
Dr.Lt.Data
0bd1bf2605 fixed: cm-cli - crash when comfyui doesn't have .git dir.
(support for desktop version)
2025-03-04 21:35:24 +09:00
Dr.Lt.Data
fd32ba4035 update DB 2025-03-04 12:50:27 +09:00
Dr.Lt.Data
22f723b920 modified: show more detailed info if updating failed 2025-03-04 12:37:39 +09:00
Dr.Lt.Data
1248bd0413 fixed: robust rmtree for windows environment
- reserve for deletion upon restart if a permission error occurs during rmtree

https://github.com/ltdrdata/ComfyUI-Manager/issues/1579
2025-03-03 21:34:38 +09:00
Dr.Lt.Data
c150eec2b6 update DB 2025-03-03 18:27:15 +09:00
Dr.Lt.Data
c7248c2d47 improve: PIPFixer
- now add numpy restriction when fixing opencv
2025-03-03 17:58:22 +09:00
Dr.Lt.Data
e71e68e298 modified: better error log when failed to update comfyui
https://github.com/ltdrdata/ComfyUI-Manager/issues/1576
2025-03-02 17:42:31 +09:00
Dr.Lt.Data
6969557693 fixed: stuck if cnr node cannot be resolved
https://github.com/ltdrdata/ComfyUI-Manager/issues/1596#issuecomment-2692415656
2025-03-02 17:28:53 +09:00
Dr.Lt.Data
f6be5ad839 modified: verbose reporting when initial fecthing is failed.
https://github.com/ltdrdata/ComfyUI-Manager/issues/1594
2025-03-02 17:07:00 +09:00
Dr.Lt.Data
cebe3664fd update DB 2025-03-02 16:08:30 +09:00
mango1010
cdab465c90 Added my custom node to the list (#1598) 2025-03-02 15:26:48 +09:00
keit
144384655c Add ComfyUI-Image-Toolkit node (#1600) 2025-03-02 15:25:41 +09:00
Dr.Lt.Data
0e213d6dab update DB 2025-03-01 01:59:34 +09:00
SirWillance
21294a4e4a Add Force of Will Suite Light to custom-node-list.json for Beginner-Friendly ComfyUI Prompt Refinement (#1592)
* Update custom-node-list.json

* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-03-01 01:48:15 +09:00
Dr.Lt.Data
3ba4d44d9e update DB 2025-03-01 01:47:28 +09:00
Dr.Lt.Data
1f86ef5a37 update DB 2025-03-01 01:44:35 +09:00
Yuan-Man
fac60da333 Add ComfyUI-PhotoDoodle node (#1591) 2025-03-01 01:14:20 +09:00
Dr.Lt.Data
5a5a37dfee fixed: robust initial caching
https://github.com/comfyanonymous/ComfyUI/issues/7003#issuecomment-2690687621

modified: store `db_mode` setting to `config.ini`
https://github.com/ltdrdata/ComfyUI-Manager/issues/1582#issuecomment-2687332355

remove: fetch updates / skip updates
- 'updates' filter will trigger fetching
https://github.com/ltdrdata/ComfyUI-Manager/issues/1584

added: support for `disable_front` or `DISABLE_COMFYUI_MANAGER_FRONT`
2025-03-01 01:06:17 +09:00
Dr.Lt.Data
0d487bc14f update DB 2025-02-27 20:52:07 +09:00
Dr.Lt.Data
a52b4eb5ed update DB 2025-02-27 08:55:00 +09:00
20 changed files with 5700 additions and 4169 deletions

View File

@@ -7,7 +7,10 @@ if not os.path.exists(cli_mode_flag):
sys.path.append(os.path.join(os.path.dirname(__file__), "glob"))
import manager_server # noqa: F401
import share_3rdparty # noqa: F401
WEB_DIRECTORY = "js"
import cm_global
if not cm_global.disable_front and not 'DISABLE_COMFYUI_MANAGER_FRONT' in os.environ:
WEB_DIRECTORY = "js"
else:
print("\n[ComfyUI-Manager] !! cli-only-mode is enabled !!\n")

View File

@@ -61,13 +61,17 @@ if os.path.exists(os.path.join(manager_util.comfyui_manager_path, "pip_blacklist
def check_comfyui_hash():
repo = git.Repo(comfy_path)
core.comfy_ui_revision = len(list(repo.iter_commits('HEAD')))
try:
repo = git.Repo(comfy_path)
core.comfy_ui_revision = len(list(repo.iter_commits('HEAD')))
core.comfy_ui_commit_datetime = repo.head.commit.committed_datetime
except:
print('[bold yellow]INFO: Frozen ComfyUI mode.[/bold yellow]')
core.comfy_ui_revision = 0
core.comfy_ui_commit_datetime = 0
cm_global.variables['comfyui.revision'] = core.comfy_ui_revision
core.comfy_ui_commit_datetime = repo.head.commit.committed_datetime
check_comfyui_hash() # This is a preparation step for manager_core
core.check_invalid_nodes()
@@ -250,7 +254,7 @@ def fix_node(node_spec_str, is_all=False, cnt_msg=''):
res = unified_manager.unified_fix(node_name, version_spec, no_deps=cmd_ctx.no_deps)
if not res.result:
print(f"ERROR: f{res.msg}")
print(f"[bold red]ERROR: f{res.msg}[/bold red]")
def uninstall_node(node_spec_str: str, is_all: bool = False, cnt_msg: str = ''):
@@ -643,7 +647,7 @@ def install(
cmd_ctx.set_channel_mode(channel, mode)
cmd_ctx.set_no_deps(no_deps)
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages())
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path)
for_each_nodes(nodes, act=install_node)
pip_fixer.fix_broken()
@@ -681,7 +685,7 @@ def reinstall(
cmd_ctx.set_channel_mode(channel, mode)
cmd_ctx.set_no_deps(no_deps)
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages())
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path)
for_each_nodes(nodes, act=reinstall_node)
pip_fixer.fix_broken()
@@ -735,7 +739,7 @@ def update(
if 'all' in nodes:
asyncio.run(auto_save_snapshot())
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages())
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path)
for x in nodes:
if x.lower() in ['comfyui', 'comfy', 'all']:
@@ -836,7 +840,7 @@ def fix(
if 'all' in nodes:
asyncio.run(auto_save_snapshot())
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages())
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path)
for_each_nodes(nodes, fix_node, allow_all=True)
pip_fixer.fix_broken()
@@ -1043,13 +1047,17 @@ def save_snapshot(
):
cmd_ctx.set_user_directory(user_directory)
if output is None:
print("[bold red]ERROR: missing output path[/bold red]")
raise typer.Exit(code=1)
if(not output.endswith('.json') and not output.endswith('.yaml')):
print("ERROR: output path should be either '.json' or '.yaml' file.")
print("[bold red]ERROR: output path should be either '.json' or '.yaml' file.[/bold red]")
raise typer.Exit(code=1)
dir_path = os.path.dirname(output)
if(dir_path != '' and not os.path.exists(dir_path)):
print(f"ERROR: {output} path not exists.")
print(f"[bold red]ERROR: {output} path not exists.[/bold red]")
raise typer.Exit(code=1)
path = asyncio.run(core.save_snapshot_with_postfix('snapshot', output, not full_snapshot))
@@ -1111,7 +1119,7 @@ def restore_snapshot(
print(f"[bold red]ERROR: `{snapshot_path}` is not exists.[/bold red]")
exit(1)
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages())
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path)
try:
asyncio.run(core.restore_snapshot(snapshot_path, extras))
except Exception:
@@ -1143,7 +1151,7 @@ def restore_dependencies(
total = len(node_paths)
i = 1
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages())
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path)
for x in node_paths:
print("----------------------------------------------------------------------------------------------------")
print(f"Restoring [{i}/{total}]: {x}")
@@ -1162,7 +1170,7 @@ def post_install(
):
path = os.path.expanduser(path)
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages())
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path)
unified_manager.execute_install_script('', path, instant_execution=True)
pip_fixer.fix_broken()
@@ -1207,7 +1215,7 @@ def install_deps(
exit(1)
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages())
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path)
for k in json_obj['custom_nodes'].keys():
state = core.simple_check_custom_node(k)
if state == 'installed':

View File

@@ -3250,6 +3250,16 @@
"install_type": "git-clone",
"description": "ComfyUI wrapper for [a/StableX normal](https://github.com/Stable-X/StableNormal)/[a/delight](https://github.com/Stable-X/StableDelight) models"
},
{
"author": "kijai",
"title": "ComfyUI-HFRemoteVae",
"reference": "https://github.com/kijai/ComfyUI-HFRemoteVae",
"files": [
"https://github.com/kijai/ComfyUI-HFRemoteVae"
],
"install_type": "git-clone",
"description": "This node allows using Hugginface remote server for latent decoding. Currently supported models: SD, SDXL, Flux, HunyuanVideo"
},
{
"author": "hhhzzyang",
"title": "Comfyui-Lama",
@@ -3565,6 +3575,16 @@
"install_type": "git-clone",
"description": "Unofficial implementation of [a/deepseek-ai/Janus](https://github.com/deepseek-ai/Janus) in ComfyUI."
},
{
"author": "chflame163",
"title": "ComfyUI_CogView4_Wrapper",
"reference": "https://github.com/chflame163/ComfyUI_CogView4_Wrapper",
"files": [
"https://github.com/chflame163/ComfyUI_CogView4_Wrapper"
],
"install_type": "git-clone",
"description": "The unofficial implementation of CogView4 project in ComfyUI."
},
{
"author": "drustan-hawk",
"title": "primitive-types",
@@ -4075,6 +4095,17 @@
"install_type": "git-clone",
"description": "Read and Process data from MIDI devices inside of ComfyUI."
},
{
"author": "amorano",
"title": "Jovi_Capture",
"id": "jovi_capture",
"reference": "https://github.com/Amorano/Jovi_Capture",
"files": [
"https://github.com/Amorano/Jovi_Capture"
],
"install_type": "git-clone",
"description": "Capture Webcamera and URL media streams as ComfyUI images."
},
{
"author": "Umikaze-job",
"title": "select_folder_path_easy",
@@ -6443,6 +6474,16 @@
"install_type": "git-clone",
"description": "This is an extension for ComfyUI. It retains multiple workflow tabs so that they are not lost when reloading or restarting."
},
{
"author": "Taremin",
"title": "comfyui-prompt-config",
"reference": "https://github.com/Taremin/comfyui-prompt-config",
"files": [
"https://github.com/Taremin/comfyui-prompt-config"
],
"install_type": "git-clone",
"description": "This is a custom node for ComfyUI.\nThe PromptGenerationConfig node allows users to configure settings such as image dimensions, step count, and CFGScale through prompts during image generation.\nThe PromptEdit node enables users to add text from the prompt to the negative prompt (or vice versa) and replace parts of the prompt using regular expressions."
},
{
"author": "foxtrot-roger",
"title": "RF Nodes",
@@ -7001,6 +7042,16 @@
"install_type": "git-clone",
"description": "Experimental and mathematically unsound (but fun!) sampling for ComfyUI.\nFeel free create a question in Discussions for usage help: OCS Q&A Discussion[w/Status: In flux, may be useful but likely to change/break workflows frequently. Mainly for advanced users.]"
},
{
"author": "blepping",
"title": "ComfyUI-ApplyResAdapterUnet",
"reference": "https://github.com/blepping/ComfyUI-ApplyResAdapterUnet",
"files": [
"https://github.com/blepping/ComfyUI-ApplyResAdapterUnet"
],
"install_type": "git-clone",
"description": "ComfyUI node to apply the ResAdapter Unet patch for SD1.5 models"
},
{
"author": "JerryOrbachJr",
"title": "Random Size",
@@ -7173,14 +7224,25 @@
},
{
"author": "nosiu",
"title": "ComfyUI InstantID Faceswapper",
"id": "instantid-faceswapper",
"title": "comfyui-instantId-faceswap",
"id": "comfyui-instantid-faceswap",
"reference": "https://github.com/nosiu/comfyui-instantId-faceswap",
"files": [
"https://github.com/nosiu/comfyui-instantId-faceswap"
],
"install_type": "git-clone",
"description": "Implementation of [a/faceswap](https://github.com/nosiu/InstantID-faceswap/tree/main) based on [a/InstantID](https://github.com/InstantID/InstantID) for ComfyUI. Allows usage of [a/LCM Lora](https://huggingface.co/latent-consistency/lcm-lora-sdxl) which can produce good results in only a few generation steps.\nNOTE:Works ONLY with SDXL checkpoints."
"description": "Implementation of [a/faceswap](https://github.com/nosiu/InstantID-faceswap/tree/main) based on [a/InstantID](https://github.com/InstantID/InstantID) for ComfyUI."
},
{
"author": "nosiu",
"title": "comfyui-text-randomizer",
"id": "comfyui-text-randomizer",
"reference": "https://github.com/nosiu/comfyui-text-randomizer",
"files": [
"https://github.com/nosiu/comfyui-text-randomizer"
],
"install_type": "git-clone",
"description": "A simple text randomizer for ComfyUI that can generate random and surprising results"
},
{
"author": "LyazS",
@@ -7265,13 +7327,13 @@
},
{
"author": "dfl",
"title": "CLIP with BREAK syntax",
"title": "comfyui-clip-with-break",
"reference": "https://github.com/dfl/comfyui-clip-with-break",
"files": [
"https://github.com/dfl/comfyui-clip-with-break"
],
"install_type": "git-clone",
"description": "Clip text encoder with BREAK formatting like A1111 (uses conditioning concat)"
"description": "CLIP text encoder with BREAK formatting like A1111 (uses chained ComfyUI conditioning concat)."
},
{
"author": "dfl",
@@ -7619,7 +7681,17 @@
],
"install_type": "git-clone",
"description": "A voice conversion extension node for ComfyUI based on [a/FreeVC](https://github.com/OlaWod/FreeVC), enabling high-quality voice conversion capabilities within the ComfyUI framework."
},
},
{
"author": "ShmuelRonen",
"title": "ComfyUI-WanVideoKsampler",
"reference": "https://github.com/ShmuelRonen/ComfyUI-WanVideoKsampler",
"files": [
"https://github.com/ShmuelRonen/ComfyUI-WanVideoKsampler"
],
"install_type": "git-clone",
"description": "An advanced custom node for ComfyUI that provides optimized access to Wan2.1, a state-of-the-art video foundation model suite. The WanVideoKsampler node features intelligent memory management to enable higher resolution outputs and longer video sequences, even on consumer-grade hardware."
},
{
"author": "redhottensors",
"title": "ComfyUI-Prediction",
@@ -7736,6 +7808,16 @@
"install_type": "git-clone",
"description": "ComfyUI-EdgeTTS is a powerful text-to-speech node for ComfyUI, leveraging Microsoft's Edge TTS capabilities. It enables seamless conversion of text into natural-sounding speech, supporting multiple languages and voices. Ideal for enhancing user interactions, this node is easy to integrate and customize, making it perfect for various applications."
},
{
"author": "1038lab",
"title": "ComfyUI-Pollinations",
"reference": "https://github.com/1038lab/ComfyUI-Pollinations",
"files": [
"https://github.com/1038lab/ComfyUI-Pollinations"
],
"install_type": "git-clone",
"description": "ComfyUI integration for Pollinations API - Generate images and text based on user prompts"
},
{
"author": "Klinter",
"title": "Klinter_nodes",
@@ -9169,6 +9251,16 @@
"install_type": "git-clone",
"description": "Load image from directory."
},
{
"author": "shinich39",
"title": "comfyui-model-metadata",
"reference": "https://github.com/shinich39/comfyui-model-metadata",
"files": [
"https://github.com/shinich39/comfyui-model-metadata"
],
"install_type": "git-clone",
"description": "Print model metadata on note node"
},
{
"author": "shinich39",
"title": "comfyui-parse-image",
@@ -10523,6 +10615,16 @@
"install_type": "git-clone",
"description": "[a/YuE](https://github.com/multimodal-art-projection/YuE) is a groundbreaking series of open-source foundation models designed for music generation, specifically for transforming lyrics into full songs (lyrics2song). you can use it in comfyUI"
},
{
"author": "smthemex",
"title": "ComfyUI_PhotoDoodle",
"reference": "https://github.com/smthemex/ComfyUI_PhotoDoodle",
"files": [
"https://github.com/smthemex/ComfyUI_PhotoDoodle"
],
"install_type": "git-clone",
"description": "PhotoDoodle: Learning Artistic Image Editing from Few-Shot Pairwise Datayou can use it in comfyUI"
},
{
"author": "choey",
"title": "Comfy-Topaz",
@@ -14496,6 +14598,16 @@
"install_type": "git-clone",
"description": "In Flux, the T5 and CLIP in the text branch are weighted separately to regulate the strength of text-side embeddings."
},
{
"author": "leeguandong",
"title": "ComfyUI nodes to use AttentionMask",
"reference": "https://github.com/leeguandong/ComfyUI_FluxAttentionMask",
"files": [
"https://github.com/leeguandong/ComfyUI_FluxAttentionMask"
],
"install_type": "git-clone",
"description": "The attention mask in the T5 part of flux and SD3 utilizes the text-side attention mask to make the model focus more on text embeddings during image generation, thereby enhancing semantic alignment with the text."
},
{
"author": "lenskikh",
"title": "Propmt Worker",
@@ -14826,7 +14938,7 @@
"https://github.com/fairy-root/comfyui-ollama-llms"
],
"install_type": "git-clone",
"description": "Ollama and Llava vision integration for ComfyUI"
"description": "Ollama and Llava / vision integration for ComfyUI"
},
{
"author": "fairy-root",
@@ -15034,7 +15146,7 @@
"https://github.com/aidenli/ComfyUI_NYJY"
],
"install_type": "git-clone",
"description": "Nodes: Translate, JoyTag, JoyCaption."
"description": "A comfyui node that provides translation and image reverse push functions(JoyTag & JoyCaption)."
},
{
"author": "Pseudotools",
@@ -15251,26 +15363,6 @@
"install_type": "git-clone",
"description": "ComfyUI custom node for directly downloading generated images to your local PC with customizable filenames and formats (PNG/JPEG)."
},
{
"author": "Rvage0815",
"title": "ComfyUI-RvTools",
"reference": "https://github.com/Rvage0815/ComfyUI-RvTools",
"files": [
"https://github.com/Rvage0815/ComfyUI-RvTools"
],
"install_type": "git-clone",
"description": "this node contains a lot of small little helpers like switches, passers and selectors that i use a lot to build my workflows."
},
{
"author": "Rvage0815",
"title": "RvTComfyUI-RvTools_v2",
"reference": "https://github.com/Rvage0815/ComfyUI-RvTools_v2",
"files": [
"https://github.com/Rvage0815/ComfyUI-RvTools_v2"
],
"install_type": "git-clone",
"description": "this node contains a lot of small little helpers like switches, passers and selectors that i use a lot to build my workflows."
},
{
"author": "erosDiffusion",
"title": "Compositor Node",
@@ -16616,6 +16708,17 @@
"install_type": "git-clone",
"description": "a lightweight open-source node for ComfyUI, designed to simplify workflows while providing encryption protection for them."
},
{
"author": "RiceRound",
"title": "RiceRound Cloud Node",
"id": "riceround",
"reference": "https://github.com/RiceRound/ComfyUI_RiceRound",
"files": [
"https://github.com/RiceRound/ComfyUI_RiceRound"
],
"install_type": "git-clone",
"description": "This is an imaginative project that allows for one-click deployment, providing both an online page and a ComfyUI cloud node.[w/This custom node is vulnerable because it can dynamically download and execute nodes.]"
},
{
"author": "yvann-ba",
"title": "ComfyUI_Yvann-Nodes",
@@ -16671,9 +16774,9 @@
"author": "LAOGOU-666",
"title": "ComfyUI-LG_HotReload",
"id": "ComfyUI-LG_HotReload",
"reference": "https://github.com/LAOGOU-666/Comfyui-LG_HotReload",
"reference": "https://github.com/LAOGOU-666/ComfyUI-LG_HotReload",
"files": [
"https://github.com/LAOGOU-666/Comfyui-LG_HotReload"
"https://github.com/LAOGOU-666/ComfyUI-LG_HotReload"
],
"install_type": "git-clone",
"description": "An extension for ComfyUI that allows hot reloading. Once installed, you can preview changes in real-time while developing custom nodes or installing plugins without restarting ComfyUI."
@@ -17772,6 +17875,16 @@
"install_type": "git-clone",
"description": "Another comfy implementation for the short video generation project PKU-YuanGroup/Open-Sora-Plan, supporting latest 1.3.0 and 1.2.0 and image to video feature, etc."
},
{
"author": "bombax-xiaoice",
"title": "ComfyUI-DisPose",
"reference": "https://github.com/bombax-xiaoice/ComfyUI-DisPose",
"files": [
"https://github.com/bombax-xiaoice/ComfyUI-DisPose"
],
"install_type": "git-clone",
"description": "ComfyUI supports over lihxxx/DisPose, which generates a new video with a reference video as poses and a reference image as everything else."
},
{
"author": "chenbaiyujason",
"title": "ComfyUI-SCStepFun",
@@ -17976,6 +18089,16 @@
"install_type": "git-clone",
"description": "This repository support processing Comfyui image nodes with ICC profile, load and save images with ICC profile"
},
{
"author": "duhaifeng",
"title": "ComfyUI-MaskEditor-Extension",
"reference": "https://github.com/rubi-du/ComfyUI-MaskEditor-Extension",
"files": [
"https://github.com/rubi-du/ComfyUI-MaskEditor-Extension"
],
"install_type": "git-clone",
"description": "This repository packages the latest BiRefNet model as a ComfyUI node for use, supporting chunked loading on both CPU and GPU, as well as model caching features."
},
{
"author": "vkff5833",
"title": "ComfyUI-PromptConverter",
@@ -18368,6 +18491,16 @@
"install_type": "git-clone",
"description": "ComfyUI nodes for LLaMA-Mesh model."
},
{
"author": "Yuan-ManX",
"title": "ComfyUI-PhotoDoodle",
"reference": "https://github.com/Yuan-ManX/ComfyUI-PhotoDoodle",
"files": [
"https://github.com/Yuan-ManX/ComfyUI-PhotoDoodle"
],
"install_type": "git-clone",
"description": "ComfyUI nodes for PhotoDoodle model."
},
{
"author": "Starnodes2024",
"title": "ComfyUI_StarNodes",
@@ -18479,7 +18612,7 @@
"https://github.com/StableDiffusionVN/SDVN_Comfy_node"
],
"install_type": "git-clone",
"description": "Smart Node Set, Supporting Easier and More Convenient Ways to Use Comfyui.Support Translate, Dynamic Prompt, Wildcard in most nodes.Support API with popular models (Gemini, Dall-E, Chat GPT).Support to download and use models directly at Comfyui.Support sub-folder with input folders.Support Merger Model more intelligently.Support smart, higher customization node and neat, more beautiful.And many other complementary nodes ..."
"description": "Update IC Lora Layout Support Node"
},
{
"author": "Eugene (JEONG-JIWOO)",
@@ -18595,6 +18728,16 @@
"description": "ComfyUI implementation of the [a/InstantX IP-Adapter for SD3.5 Large](https://huggingface.co/InstantX/SD3.5-Large-IP-Adapter).",
"install_type": "git-clone"
},
{
"author": "Slickytail",
"title": "ComfyUI-RegionalAdaptiveSampling",
"reference": "https://github.com/Slickytail/ComfyUI-RegionalAdaptiveSampling",
"files": [
"https://github.com/Slickytail/ComfyUI-RegionalAdaptiveSampling"
],
"description": "ComfyUI implementation of Regional Adaptive Sampling, (original implementation at https://github.com/microsoft/RAS).",
"install_type": "git-clone"
},
{
"author": "sourceful-official",
"title": "LoadLoraModelOnlyWithUrl",
@@ -20451,6 +20594,16 @@
"install_type": "git-clone",
"description": "A ComfyUI plugin library based on [a/https://github.com/stavsap/comfyui-ollama](https://github.com/stavsap/comfyui-ollama), with the Ollama cluster provided by Huixingyun."
},
{
"author": "huixingyun",
"title": "ComfyUI-HX-Pimg",
"reference": "https://github.com/huixingyun/ComfyUI-HX-Pimg",
"files": [
"https://github.com/huixingyun/ComfyUI-HX-Pimg"
],
"install_type": "git-clone",
"description": "Some custom nodes used for pimg (a comfyui controller deployed in huixingyun)."
},
{
"author": "bradsec",
"title": "ComfyUI_StringEssentials",
@@ -21422,13 +21575,14 @@
},
{
"author": "SirWillance",
"title": " FoW_Suite_LIGHT",
"title": "Force of Will Suite Light",
"id": "fow-suite-light",
"reference": "https://github.com/SirWillance/FoW_Suite_LIGHT",
"files": [
"https://github.com/SirWillance/FoW_Suite_LIGHT"
],
"install_type": "git-clone",
"description": "oW_Suite_LIGHT is the beginner-friendly version of the 'FoW' (Force Of Will) suite for ComfyUI, featuring PromptRefinerLight as the flagship node for simple prompt creation. It helps low-spec users craft raw prompts and collaborate with high-spec users for image generation, with a light, stable design—no tokenization or weighing, perfect for newbies! I developed it as my first coding project in 2 months, learning ComfyUIs capabilities along the way."
"description": "Beginner-friendly nodes for prompt refinement in ComfyUI, including custom nodes for weighting, splitting, combining, catalogues, and the PromptRefiner for a simple prompt interface. For more info, join me on https://www.twitch.tv/sirwillance. Be one of the first 50 followers to get a FREE upgrade to the Standard Tier!"
},
{
"author": "KAVVATARE",
@@ -21460,7 +21614,197 @@
"install_type": "git-clone",
"description": "This ComfyUI custom node enhances the standard CLIP text encoding functionality by integrating ethnicity and hairstyle selection into the positive prompt. Designed to work seamlessly with ComfyUI, this node allows you to influence the conditioning process by dynamically appending descriptive modifiers. Users can choose a specific ethnicity or hairstyle, or opt for a 'random' selection that picks an option from a predefined CSV list."
},
{
"author": "moose-lab",
"title": "ComfyUI-GPT",
"reference": "https://github.com/moose-lab/ComfyUI-GPT",
"files": [
"https://github.com/moose-lab/ComfyUI-GPT"
],
"install_type": "git-clone",
"description": "Help comfy deisgner develope custom nodes by foreground GUI without any coding knowledge, complementing the workflow what you design with LLM automatically"
},
{
"author": "zichongc",
"title": "ComfyUI-Attention-Distillation",
"reference": "https://github.com/zichongc/ComfyUI-Attention-Distillation",
"files": [
"https://github.com/zichongc/ComfyUI-Attention-Distillation"
],
"install_type": "git-clone",
"description": "Non-native [a/AttentionDistillation](https://github.com/xugao97/AttentionDistillation) for ComfyUI.\nOfficial ComfyUI demo for the paper AttentionDistillation, implemented as an extension of ComfyUI. Note that this extension incorporates AttentionDistillation using diffusers."
},
{
"author": "PanicTitan",
"title": "ComfyUI-Fooocus-V2-Expansion",
"reference": "https://github.com/PanicTitan/ComfyUI-Fooocus-V2-Expansion",
"files": [
"https://github.com/PanicTitan/ComfyUI-Fooocus-V2-Expansion"
],
"install_type": "git-clone",
"description": "Adaptation of Fooocus Prompt Expansion for ComfyUI\nForked from [a/ComfyUI-Prompt-Expansion](https://github.com/meap158/ComfyUI-Prompt-Expansion) with some updates and changes based on original Fooocus, to be more specific [a/expansion.py](https://github.com/lllyasviel/Fooocus/blob/main/extras/expansion.py) and [a/LykosAI - GPT-Prompt-Expansion-Fooocus-v2](https://huggingface.co/LykosAI/GPT-Prompt-Expansion-Fooocus-v2)"
},
{
"author": "maximclouser",
"title": "ComfyUI-InferenceTimeScaling",
"reference": "https://github.com/YRIKKA/ComfyUI-InferenceTimeScaling",
"files": [
"https://github.com/YRIKKA/ComfyUI-InferenceTimeScaling"
],
"install_type": "git-clone",
"description": "Inference-time techniques to enhance diffusion-based image generation quality through random search and zero-order optimization algorithms"
},
{
"author": "marawan206",
"title": "Face Cropper Node (2:3 Ratio)",
"reference": "https://github.com/marawan206/ComfyUI-FaceCropper",
"files": [
"https://github.com/marawan206/ComfyUI-FaceCropper"
],
"install_type": "git-clone",
"description": "The Face Cropper Node (MarwanFaceCropping) is a custom image processing node designed for ComfyUI. It takes an input image and crops it to a 2:3 aspect ratio, ensuring that most of the subject remains in the frame while maintaining the correct proportions."
},
{
"author": "JiSenHua",
"title": "ComfyUI-TD",
"id": "touchdesigner",
"reference": "https://github.com/JiSenHua/ComfyUI-TD",
"files": [
"https://github.com/JiSenHua/ComfyUI-TD"
],
"install_type": "git-clone",
"description": "A custom node for ComfyUI designed to facilitate the real-time transmission of rendered images, videos, or 3D models to TouchDesigner."
},
{
"author": "InceptionsAI",
"title": "ComfyUI-RunComfy-Helper",
"reference": "https://github.com/InceptionsAI/ComfyUI-RunComfy-Helper",
"files": [
"https://github.com/InceptionsAI/ComfyUI-RunComfy-Helper"
],
"install_type": "git-clone",
"description": "Helper nodes for [a/RunComfy](https://www.runcomfy.com)"
},
{
"author": "fluffydiveX",
"title": "ComfyUI-hvBlockswap",
"reference": "https://github.com/fluffydiveX/ComfyUI-hvBlockswap",
"files": [
"https://github.com/fluffydiveX/ComfyUI-hvBlockswap"
],
"install_type": "git-clone",
"description": "It is a simple HunyuanVideo block swap node for ComfyUI native nodes."
},
{
"author": "keit",
"title": "ComfyUI-Image-Toolkit",
"id": "comfyui-image-toolkit",
"reference": "https://github.com/keit0728/ComfyUI-Image-Toolkit",
"files": [
"https://github.com/keit0728/ComfyUI-Image-Toolkit"
],
"install_type": "git-clone",
"description": "ComfyUI nodes for image processing."
},
{
"author": "Mango1010",
"title": "Mango Node Pack",
"id": "MangoNodePack",
"reference": "https://github.com/mang01010/MangoNodePack",
"files": [
"https://github.com/mang01010/MangoNodePack"
],
"install_type": "git-clone",
"description": "Node pack designed to save images with metadata supported by Civitai."
},
{
"author": "0xRavenBlack",
"title": "ComfyUI-OOP",
"reference": "https://github.com/0xRavenBlack/ComfyUI-OOP",
"files": [
"https://github.com/0xRavenBlack/ComfyUI-OOP"
],
"install_type": "git-clone",
"description": "ComfyUI Node to create Object-Oriented Prompts"
},
{
"author": "Legorobotdude",
"title": "ComfyUI-VariationLab",
"reference": "https://github.com/Legorobotdude/ComfyUI-VariationLab",
"files": [
"https://github.com/Legorobotdude/ComfyUI-VariationLab"
],
"install_type": "git-clone",
"description": "Helps explore different parameters quickly"
},
{
"author": "lthero",
"title": "ComfyUI-GaussianShadingWatermark",
"reference": "https://github.com/lthero-big/ComfyUI-GaussianShadingWatermark",
"files": [
"https://github.com/lthero-big/ComfyUI-GaussianShadingWatermark"
],
"install_type": "git-clone",
"description": "Add invisible watermark to images to protect your images"
},
{
"author": "JohanK66",
"title": "ComfyUI WebhookImage",
"reference": "https://github.com/JohanK66/ComfyUI-WebhookImage",
"files": [
"https://github.com/JohanK66/ComfyUI-WebhookImage"
],
"install_type": "git-clone",
"description": "This package provides a custom node to ComfyUI to send a message and image by means of a webhook"
},
{
"author": "mr7thing",
"title": "Circle Pattern Processor for ComfyUI",
"reference": "https://github.com/mr7thing/circle_pattern_processor",
"files": [
"https://github.com/mr7thing/circle_pattern_processor"
],
"install_type": "git-clone",
"description": "This is a custom node for ComfyUI that can detect circular patterns in an image and generate a standardized circular output."
},
{
"author": "TheWhykiki",
"title": "Whykiki ComfyUI Toolset",
"reference": "https://github.com/TheWhykiki/Whykiki-ComfyUIToolset",
"files": [
"https://github.com/TheWhykiki/Whykiki-ComfyUIToolset"
],
"install_type": "git-clone",
"description": "A collection of useful nodes for ComfyUI that provide various workflow enhancements."
},
{
"author": "Samulebotin",
"title": "ComfyUI-FreeVC_wrapper",
"reference": "https://github.com/Samulebotin/ComfyUI-FreeVC_wrapper",
"files": [
"https://github.com/Samulebotin/ComfyUI-FreeVC_wrapper"
],
"install_type": "git-clone",
"description": "A voice conversion extension node for ComfyUI based on FreeVC, enabling high-quality voice conversion capabilities within the ComfyUI framework."
},
{
"author": "justin-vt",
"title": "ComfyUI-brushstrokes",
"reference": "https://github.com/justin-vt/ComfyUI-brushstrokes",
"files": [
"https://github.com/justin-vt/ComfyUI-brushstrokes"
],
"install_type": "git-clone",
"description": "A ComfyUI node that applies painterly/brush-stroke effects to images, using either ImageMagick (Wand) or G'MIC (gmic-py) under the hood."
},
@@ -21856,6 +22200,16 @@
"install_type": "copy",
"description": "GIS Processing Nodes for ComfyUI"
},
{
"author": "huimengshiguang",
"title": "AspectAwareTiling",
"reference": "https://github.com/huimengshiguang/AspectAwareTiling",
"files": [
"https://raw.githubusercontent.com/huimengshiguang/AspectAwareTiling/refs/heads/main/hmsg-quanjing.py"
],
"install_type": "copy",
"description": "This is an extension script for Stable Diffusion WebUI, modified based on the original functionality. It now supports fixing FLUX panorama seams. It allows users to independently configure seamless image tiling for both the X and Y axes while also being capable of handling FLUX panorama seam issues."
},

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

@@ -112,4 +112,6 @@ def add_on_revision_detected(k, f):
variables['cm.on_revision_detected_handler'].append((k, f))
error_dict = {}
error_dict = {}
disable_front = False

View File

@@ -42,7 +42,7 @@ import manager_downloader
from node_package import InstalledNodePackage
version_code = [3, 27, 2]
version_code = [3, 28]
version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '')
@@ -828,7 +828,7 @@ class UnifiedManager:
else:
if os.path.exists(requirements_path) and not no_deps:
print("Install: pip packages")
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages())
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path)
res = True
lines = manager_util.robust_readlines(requirements_path)
for line in lines:
@@ -1173,14 +1173,14 @@ class UnifiedManager:
ver_and_path = self.active_nodes.get(node_id)
if ver_and_path is not None and os.path.exists(ver_and_path[1]):
shutil.rmtree(ver_and_path[1])
try_rmtree(node_id, ver_and_path[1])
result.items.append(ver_and_path)
del self.active_nodes[node_id]
# remove from nightly inactives
fullpath = self.nightly_inactive_nodes.get(node_id)
if fullpath is not None and os.path.exists(fullpath):
shutil.rmtree(fullpath)
try_rmtree(node_id, fullpath)
result.items.append(('nightly', fullpath))
del self.nightly_inactive_nodes[node_id]
@@ -1188,7 +1188,7 @@ class UnifiedManager:
ver_map = self.cnr_inactive_nodes.get(node_id)
if ver_map is not None:
for key, fullpath in ver_map.items():
shutil.rmtree(fullpath)
try_rmtree(node_id, fullpath)
result.items.append((key, fullpath))
del self.cnr_inactive_nodes[node_id]
@@ -1614,7 +1614,8 @@ def write_config():
'security_level': get_config()['security_level'],
'skip_migration_check': get_config()['skip_migration_check'],
'always_lazy_install': get_config()['always_lazy_install'],
'network_mode': get_config()['network_mode']
'network_mode': get_config()['network_mode'],
'db_mode': get_config()['db_mode'],
}
directory = os.path.dirname(manager_config_path)
@@ -1654,6 +1655,7 @@ def read_config():
'always_lazy_install': get_bool('always_lazy_install', False),
'network_mode': default_conf.get('network_mode', 'public').lower(),
'security_level': default_conf.get('security_level', 'normal').lower(),
'db_mode': default_conf.get('db_mode', 'cache').lower(),
}
except Exception:
@@ -1677,6 +1679,7 @@ def read_config():
'always_lazy_install': False,
'network_mode': 'public', # public | private | offline
'security_level': 'normal', # strong | normal | normal- | weak
'db_mode': 'cache', # local | cache | remote
}
@@ -1747,18 +1750,29 @@ def switch_to_default_branch(repo):
return False
def reserve_script(repo_path, install_cmds):
if not os.path.exists(manager_startup_script_path):
os.makedirs(manager_startup_script_path)
script_path = os.path.join(manager_startup_script_path, "install-scripts.txt")
with open(script_path, "a") as file:
obj = [repo_path] + install_cmds
file.write(f"{obj}\n")
def try_rmtree(title, fullpath):
try:
shutil.rmtree(fullpath)
except Exception as e:
logging.warning(f"[ComfyUI-Manager] An error occurred while deleting '{fullpath}', so it has been scheduled for deletion upon restart.\nEXCEPTION: {e}")
reserve_script(title, ["#LAZY-DELETE-NODEPACK", fullpath])
def try_install_script(url, repo_path, install_cmd, instant_execution=False):
if not instant_execution and (
(len(install_cmd) > 0 and install_cmd[0].startswith('#')) or platform.system() == "Windows" or get_config()['always_lazy_install']
):
if not os.path.exists(manager_startup_script_path):
os.makedirs(manager_startup_script_path)
script_path = os.path.join(manager_startup_script_path, "install-scripts.txt")
with open(script_path, "a") as file:
obj = [repo_path] + install_cmd
file.write(f"{obj}\n")
reserve_script(repo_path, install_cmd)
return True
else:
if len(install_cmd) == 5 and install_cmd[2:4] == ['pip', 'install']:
@@ -1869,7 +1883,7 @@ def execute_install_script(url, repo_path, lazy_mode=False, instant_execution=Fa
else:
if os.path.exists(requirements_path) and not no_deps:
print("Install: pip packages")
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages())
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path)
with open(requirements_path, "r") as requirements_file:
for line in requirements_file:
#handle comments
@@ -2396,7 +2410,14 @@ def gitclone_update(files, instant_execution=False, skip_script=False, msg_prefi
def update_to_stable_comfyui(repo_path):
try:
repo = git.Repo(repo_path)
repo.git.checkout(repo.heads.master)
try:
repo.git.checkout(repo.heads.master)
except:
logging.error(f"[ComfyUI-Manager] Failed to checkout 'master' branch.\nrepo_path={repo_path}\nAvailable branches:")
for branch in repo.branches:
logging.error('\t'+branch.name)
return "fail", None
versions, current_tag, _ = get_comfyui_versions(repo)
if len(versions) == 0 or (len(versions) == 1 and versions[0] == 'nightly'):
@@ -2569,15 +2590,12 @@ async def get_current_snapshot(custom_nodes_only = False):
# Get ComfyUI hash
repo_path = comfy_path
if not os.path.exists(os.path.join(repo_path, '.git')):
print("ComfyUI update fail: The installed ComfyUI does not have a Git repository.")
return {}
comfyui_commit_hash = None
if not custom_nodes_only:
repo = git.Repo(repo_path)
comfyui_commit_hash = repo.head.commit.hexsha
if os.path.exists(os.path.join(repo_path, '.git')):
repo = git.Repo(repo_path)
comfyui_commit_hash = repo.head.commit.hexsha
git_custom_nodes = {}
cnr_custom_nodes = {}
file_custom_nodes = []

View File

@@ -190,6 +190,9 @@ def set_component_policy(mode):
def set_update_policy(mode):
core.get_config()['update_policy'] = mode
def set_db_mode(mode):
core.get_config()['db_mode'] = mode
def print_comfyui_version():
global comfy_ui_hash
global comfyui_tag
@@ -447,7 +450,7 @@ async def task_worker():
return base_res
base_res['msg'] = f"An error occurred while updating '{node_name}'."
logging.error(f"\nERROR: An error occurred while updating '{node_name}'.")
logging.error(f"\nERROR: An error occurred while updating '{node_name}'. (res.result={res.result}, res.action={res.action})")
return base_res
except Exception:
traceback.print_exc()
@@ -464,8 +467,8 @@ async def task_worker():
res = core.update_path(repo_path)
if res == "fail":
logging.error("ComfyUI update fail: The installed ComfyUI does not have a Git repository.")
return "The installed ComfyUI does not have a Git repository."
logging.error("ComfyUI update failed")
return "fail"
elif res == "updated":
if is_stable:
logging.info("ComfyUI is updated to latest stable version.")
@@ -816,7 +819,7 @@ async def fetch_customnode_list(request):
"""
provide unified custom node list
"""
if "skip_update" in request.rel_url.query and request.rel_url.query["skip_update"] == "true":
if request.rel_url.query.get("skip_update", '').lower() == "true":
skip_update = True
else:
skip_update = False
@@ -833,7 +836,7 @@ async def fetch_customnode_list(request):
core.populate_github_stats(node_packs, await json_obj_github)
core.populate_favorites(node_packs, await json_obj_extras)
check_state_of_git_node_pack(node_packs, False, do_update_check=not skip_update)
check_state_of_git_node_pack(node_packs, not skip_update, do_update_check=not skip_update)
for v in node_packs.values():
populate_markdown(v)
@@ -1455,6 +1458,18 @@ async def preview_method(request):
return web.Response(status=200)
@routes.get("/manager/db_mode")
async def db_mode(request):
if "value" in request.rel_url.query:
set_db_mode(request.rel_url.query['value'])
core.write_config()
else:
return web.Response(text=core.get_config()['db_mode'], status=200)
return web.Response(status=200)
@routes.get("/manager/policy/component")
async def component_policy(request):
if "value" in request.rel_url.query:
@@ -1681,20 +1696,24 @@ cm_global.register_api('cm.try-install-custom-node', confirm_try_install)
async def default_cache_update():
channel_url = core.get_config()['channel_url']
async def get_cache(filename):
if core.get_config()['default_cache_as_channel_url']:
uri = f"{channel_url}/{filename}"
else:
uri = f"{core.DEFAULT_CHANNEL}/{filename}"
try:
if core.get_config()['default_cache_as_channel_url']:
uri = f"{channel_url}/{filename}"
else:
uri = f"{core.DEFAULT_CHANNEL}/{filename}"
cache_uri = str(manager_util.simple_hash(uri)) + '_' + filename
cache_uri = os.path.join(manager_util.cache_dir, cache_uri)
cache_uri = str(manager_util.simple_hash(uri)) + '_' + filename
cache_uri = os.path.join(manager_util.cache_dir, cache_uri)
json_obj = await manager_util.get_data(uri, True)
json_obj = await manager_util.get_data(uri, True)
with manager_util.cache_lock:
with open(cache_uri, "w", encoding='utf-8') as file:
json.dump(json_obj, file, indent=4, sort_keys=True)
logging.info(f"[ComfyUI-Manager] default cache updated: {uri}")
with manager_util.cache_lock:
with open(cache_uri, "w", encoding='utf-8') as file:
json.dump(json_obj, file, indent=4, sort_keys=True)
logging.info(f"[ComfyUI-Manager] default cache updated: {uri}")
except Exception as e:
logging.error(f"[ComfyUI-Manager] Failed to perform initial fetching '{filename}': {e}")
traceback.print_exc()
if core.get_config()['network_mode'] != 'offline':
a = get_cache("custom-node-list.json")

View File

@@ -276,8 +276,9 @@ torch_torchvision_torchaudio_version_map = {
class PIPFixer:
def __init__(self, prev_pip_versions):
def __init__(self, prev_pip_versions, comfyui_path):
self.prev_pip_versions = { **prev_pip_versions }
self.comfyui_path = comfyui_path
def torch_rollback(self):
spec = self.prev_pip_versions['torch'].split('+')
@@ -357,7 +358,7 @@ class PIPFixer:
if len(targets) > 0:
for x in targets:
cmd = make_pip_cmd(['install', f"{x}=={versions[0].version_string}"])
cmd = make_pip_cmd(['install', f"{x}=={versions[0].version_string}", "numpy<2"])
subprocess.check_output(cmd, universal_newlines=True)
logging.info(f"[ComfyUI-Manager] 'opencv' dependencies were fixed: {targets}")
@@ -376,6 +377,22 @@ class PIPFixer:
logging.error("[ComfyUI-Manager] Failed to restore numpy")
logging.error(e)
# fix missing frontend
try:
front = new_pip_versions.get('comfyui_frontend_package')
if front is None:
requirements_path = os.path.join(self.comfyui_path, 'requirements.txt')
with open(requirements_path, 'r') as file:
lines = file.readlines()
front_line = next((line.strip() for line in lines if line.startswith('comfyui-frontend-package')), None)
cmd = make_pip_cmd(['install', front_line])
subprocess.check_output(cmd , universal_newlines=True)
except Exception as e:
logging.error("[ComfyUI-Manager] Failed to restore comfyui_frontend_package")
logging.error(e)
def sanitize(data):
return data.replace("<", "&lt;").replace(">", "&gt;")

View File

@@ -227,7 +227,6 @@ document.head.appendChild(docStyle);
var update_comfyui_button = null;
var switch_comfyui_button = null;
var fetch_updates_button = null;
var update_all_button = null;
var restart_stop_button = null;
var update_policy_combo = null;
@@ -653,57 +652,6 @@ async function switchComfyUI() {
}
}
async function fetchUpdates(update_check_checkbox) {
let prev_text = fetch_updates_button.innerText;
fetch_updates_button.innerText = "Fetching updates...";
fetch_updates_button.disabled = true;
fetch_updates_button.style.backgroundColor = "gray";
try {
var mode = manager_instance.datasrc_combo.value;
const response = await api.fetchApi(`/customnode/fetch_updates?mode=${mode}`);
if (response.status != 200 && response.status != 201) {
show_message('Failed to fetch updates.');
return false;
}
if (response.status == 201) {
show_message("There is an updated extension available.<BR><BR><P><B>NOTE:<BR>Fetch Updates is not an update.<BR>Please update from <button id='cm-install-customnodes-button'>Install Custom Nodes</button> </B></P>");
const button = document.getElementById('cm-install-customnodes-button');
button.addEventListener("click",
async function() {
app.ui.dialog.close();
if(!CustomNodesManager.instance) {
CustomNodesManager.instance = new CustomNodesManager(app, self);
}
await CustomNodesManager.instance.show(CustomNodesManager.ShowMode.UPDATE);
}
);
update_check_checkbox.checked = false;
}
else {
show_message('All extensions are already up-to-date with the latest versions.');
}
return true;
}
catch (exception) {
show_message(`Failed to update custom nodes / ${exception}`);
return false;
}
finally {
fetch_updates_button.disabled = false;
fetch_updates_button.innerText = prev_text;
fetch_updates_button.style.backgroundColor = "";
}
}
async function onQueueStatus(event) {
const isElectron = 'electronAPI' in window;
@@ -741,7 +689,7 @@ async function onQueueStatus(event) {
let msg = "";
if(success_list.length == 0 && !comfyui_state.startsWith('success')) {
if(success_list.length == 0 && comfyui_state.startsWith('skip')) {
if(failed_list.length == 0) {
msg += "You are already up to date.";
}
@@ -816,8 +764,7 @@ async function onQueueStatus(event) {
api.addEventListener("cm-queue-status", onQueueStatus);
async function updateAll(update_comfyui, manager_dialog) {
let prev_text = update_all_button.innerText;
async function updateAll(update_comfyui) {
update_all_button.innerText = "Updating...";
set_inprogress_mode();
@@ -900,14 +847,6 @@ class ManagerMenuDialog extends ComfyDialog {
() => switchComfyUI()
});
fetch_updates_button =
$el("button.cm-button", {
type: "button",
textContent: "Fetch Updates",
onclick:
() => fetchUpdates(this.update_check_checkbox)
});
restart_stop_button =
$el("button.cm-button-red", {
type: "button",
@@ -921,7 +860,7 @@ class ManagerMenuDialog extends ComfyDialog {
type: "button",
textContent: "Update All Custom Nodes",
onclick:
() => updateAll(false, self)
() => updateAll(false)
});
}
else {
@@ -930,7 +869,7 @@ class ManagerMenuDialog extends ComfyDialog {
type: "button",
textContent: "Update All",
onclick:
() => updateAll(true, self)
() => updateAll(true)
});
}
@@ -1037,12 +976,6 @@ class ManagerMenuDialog extends ComfyDialog {
let self = this;
this.update_check_checkbox = $el("input",{type:'checkbox', id:"skip_update_check"},[])
const uc_checkbox_text = $el("label",{for:"skip_update_check"},[" Skip update check"])
uc_checkbox_text.style.color = "var(--fg-color)";
uc_checkbox_text.style.cursor = "pointer";
this.update_check_checkbox.checked = true;
// db mode
this.datasrc_combo = document.createElement("select");
this.datasrc_combo.setAttribute("title", "Configure where to retrieve node/model information. If set to 'local,' the channel is ignored, and if set to 'channel (remote),' it fetches the latest information each time the list is opened.");
@@ -1051,6 +984,14 @@ class ManagerMenuDialog extends ComfyDialog {
this.datasrc_combo.appendChild($el('option', { value: 'local', text: 'DB: Local' }, []));
this.datasrc_combo.appendChild($el('option', { value: 'remote', text: 'DB: Channel (remote)' }, []));
api.fetchApi('/manager/db_mode')
.then(response => response.text())
.then(data => { this.datasrc_combo.value = data; });
this.datasrc_combo.addEventListener('change', function (event) {
api.fetchApi(`/manager/db_mode?value=${event.target.value}`);
});
// preview method
let preview_combo = document.createElement("select");
preview_combo.setAttribute("title", "Configure how latent variables will be decoded during preview in the sampling process.");
@@ -1170,7 +1111,6 @@ class ManagerMenuDialog extends ComfyDialog {
});
return [
$el("div", {}, [this.update_check_checkbox, uc_checkbox_text]),
$el("br", {}, []),
this.datasrc_combo,
channel_combo,

View File

@@ -676,7 +676,7 @@ export class CustomNodesManager {
"invalid-installation": ["reinstall"],
}
if (!manager_instance.update_check_checkbox.checked) {
if (!installGroups.updatable) {
installGroups.enabled = installGroups.enabled.filter(it => it !== "try-update");
}
@@ -1584,6 +1584,7 @@ export class CustomNodesManager {
let unresolved_aux_ids = {};
let outdated_comfyui = false;
let unresolved_cnr_list = [];
for(let k in allUsedNodes) {
let node = allUsedNodes[k];
@@ -1596,7 +1597,14 @@ export class CustomNodesManager {
}
let item = this.custom_nodes[node.properties.cnr_id];
hashMap[item.hash] = true;
if(item) {
hashMap[item.hash] = true;
}
else {
console.log(`CM: cannot find '${node.properties.cnr_id}' from cnr list.`);
unresolved_aux_ids[node.properties.cnr_id] = node.type;
unresolved_cnr_list.push(node.properties.cnr_id);
}
}
else if(node.properties.aux_id) {
unresolved_aux_ids[node.properties.aux_id] = node.type;
@@ -1607,6 +1615,16 @@ export class CustomNodesManager {
}
}
if(unresolved_cnr_list.length > 0) {
let error_msg = "Failed to find the following ComfyRegistry list.\nThe cache may be outdated, or the nodes may have been removed from ComfyRegistry.<HR>";
for(let i in unresolved_cnr_list) {
error_msg += '<li>'+unresolved_cnr_list[i]+'</li>';
}
show_message(error_msg);
}
if(outdated_comfyui) {
customAlert('ComfyUI is outdated, so some built-in nodes cannot be used.');
}
@@ -1809,11 +1827,16 @@ export class CustomNodesManager {
this.showStatus(`Loading custom nodes (${mode}) ...`);
const skip_update = this.show_mode === ShowMode.UPDATE ? "" : "&skip_update=true";
if(this.show_mode === ShowMode.UPDATE) {
infoToast('Fetching updated information. This may take some time if many custom nodes are installed.');
}
const res = await fetchData(`/customnode/getlist?mode=${mode}${skip_update}`);
if (res.error) {
this.showError("Failed to get custom node list.");
this.hideLoading();
return
return;
}
const { channel, node_packs } = res.data;

View File

@@ -1068,18 +1068,28 @@
"size": "19.1GB"
},
{
"name": "comfyanonymous/clip_l",
"name": "Comfy-Org/clip_l",
"type": "clip",
"base": "clip",
"save_path": "default",
"description": "clip_l model",
"reference": "https://huggingface.co/comfyanonymous/flux_text_encoders/tree/main",
"description": "clip_l model (for SD1.x, SD2.x, SDXL, SD3.5, FLUX.1, HunyuanVideo, ...) ",
"reference": "https://huggingface.co/Comfy-Org/stable-diffusion-3.5-fp8",
"filename": "clip_l.safetensors",
"url": "https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/clip_l.safetensors",
"url": "https://huggingface.co/Comfy-Org/stable-diffusion-3.5-fp8/resolve/main/text_encoders/clip_l.safetensors",
"size": "246MB"
},
{
"name": "Comfy-Org/clip_g",
"type": "clip",
"base": "clip",
"save_path": "default",
"description": "clip_g model (for SDXL, SD3.5)",
"reference": "https://huggingface.co/Comfy-Org/stable-diffusion-3.5-fp8",
"filename": "clip_g.safetensors",
"url": "https://huggingface.co/Comfy-Org/stable-diffusion-3.5-fp8/resolve/main/text_encoders/clip_g.safetensors",
"size": "1.39GB"
},
{
"name": "v1-5-pruned-emaonly.ckpt",

View File

@@ -12,7 +12,126 @@
{
"author": "Elypha",
"title": "ComfyUI-Prompt-Helper [WIP]",
"reference": "https://github.com/Elypha/ComfyUI-Prompt-Helper",
"files": [
"https://github.com/Elypha/ComfyUI-Prompt-Helper"
],
"install_type": "git-clone",
"description": "Concat conditions and prompts for ComfyUI"
},
{
"author": "StoryWalker",
"title": "comfyui_flux_collection_advanced [WIP]",
"reference": "https://github.com/StoryWalker/comfyui_flux_collection_advanced",
"files": [
"https://github.com/StoryWalker/comfyui_flux_collection_advanced"
],
"install_type": "git-clone",
"description": "This is a collection focused in give a little more flexibility in the use of Flux models."
},
{
"author": "KurtHokke",
"title": "ComfyUI_KurtHokke-Nodes",
"reference": "https://github.com/KurtHokke/ComfyUI_KurtHokke-Nodes",
"files": [
"https://github.com/KurtHokke/ComfyUI_KurtHokke-Nodes"
],
"install_type": "git-clone",
"description": "ComfyUI_KurtHokke-Nodes"
},
{
"author": "OSAnimate",
"title": "ComfyUI-SpriteSheetMaker [WIP]",
"reference": "https://github.com/OSAnimate/ComfyUI-SpriteSheetMaker",
"files": [
"https://github.com/OSAnimate/ComfyUI-SpriteSheetMaker"
],
"install_type": "git-clone",
"description": "The sprite sheet maker node is a simple way to create sprite sheets and image grids.\nNOTE: The files in the repo are not organized."
},
{
"author": "BuffMcBigHuge",
"title": "ComfyUI-Buff-Nodes [WIP]",
"reference": "https://github.com/BuffMcBigHuge/ComfyUI-Buff-Nodes",
"files": [
"https://github.com/BuffMcBigHuge/ComfyUI-Buff-Nodes"
],
"install_type": "git-clone",
"description": "Assorted Nodes by BuffMcBigHuge"
},
{
"author": "ritikvirus",
"title": "ComfyUI Terminal Command Node [UNSAFE]",
"reference": "https://github.com/ritikvirus/comfyui-terminal-modal-node",
"files": [
"https://github.com/ritikvirus/comfyui-terminal-modal-node"
],
"install_type": "git-clone",
"description": "This repository provides a custom ComfyUI node that lets you execute arbitrary terminal commands directly from the ComfyUI interface. [w/This extension allows remote command execution.]"
},
{
"author": "pixuai",
"title": "ComfyUI-PixuAI",
"reference": "https://github.com/pixuai/ComfyUI-PixuAI",
"files": [
"https://github.com/pixuai/ComfyUI-PixuAI"
],
"install_type": "git-clone",
"description": "A collection of ComfyUI nodes designed to streamline prompt creation, organization, and discovery - making your workflows faster and more intuitive."
},
{
"author": "techidsk",
"title": "comfyui_molook_nodes [WIP]",
"reference": "https://github.com/techidsk/comfyui_molook_nodes",
"files": [
"https://github.com/techidsk/comfyui_molook_nodes"
],
"install_type": "git-clone",
"description": "Some extra nodes"
},
{
"author": "Northerner1",
"title": "ComfyUI_North_Noise [WIP]",
"reference": "https://github.com/Northerner1/ComfyUI_North_Noise",
"files": [
"https://github.com/Northerner1/ComfyUI_North_Noise"
],
"install_type": "git-clone",
"description": "NODES: North Noise"
},
{
"author": "ManuShamil",
"title": "ComfyUI_BodyEstimation_Nodes",
"reference": "https://github.com/ManuShamil/ComfyUI_BodyEstimation_Nodes",
"files": [
"https://github.com/ManuShamil/ComfyUI_BodyEstimation_Nodes"
],
"install_type": "git-clone",
"description": "NODES: CogitareLabsPoseIDExtractor"
},
{
"author": "MockbaTheBorg",
"title": "ComfyUI-Mockba",
"reference": "https://github.com/MockbaTheBorg/ComfyUI-Mockba",
"files": [
"https://github.com/MockbaTheBorg/ComfyUI-Mockba"
],
"install_type": "git-clone",
"description": "NODES: Image Batch/Flip/Rotate/Subtract/Dither, Barcode, Select, ..."
},
{
"author": "jcomeme",
"title": "AsunaroTools",
"reference": "https://github.com/jcomeme/ComfyUI-AsunaroTools",
"files": [
"https://github.com/jcomeme/ComfyUI-AsunaroTools"
],
"install_type": "git-clone",
"description": "A collection of custom nodes for ComfyUI"
},
{
"author": "ZHO-ZHO-ZHO",
"title": "ComfyUI Wan2.1 [WIP]",
@@ -73,17 +192,6 @@
"install_type": "git-clone",
"description": "A comfy node to find faces and output a mask"
},
{
"author": "RiceRound",
"title": "RiceRound Cloud Node [UNSAFE]",
"id": "riceround",
"reference": "https://github.com/RiceRound/ComfyUI_RiceRound",
"files": [
"https://github.com/RiceRound/ComfyUI_RiceRound"
],
"install_type": "git-clone",
"description": "This is an imaginative project that allows for one-click deployment, providing both an online page and a ComfyUI cloud node.[w/This custom node is vulnerable because it can dynamically download and execute nodes.]"
},
{
"author": "Yeonri",
"title": "ComfyUI_LLM_Are_You_Listening [WIP]",
@@ -558,13 +666,13 @@
},
{
"author": "HuangYuChuh",
"title": "ComfyUI-DeepSeek_Toolkit [WIP]",
"reference": "https://github.com/HuangYuChuh/ComfyUI-DeepSeek_Toolkit",
"title": "ComfyUI-DeepSeek-Toolkit [WIP]",
"reference": "https://github.com/HuangYuChuh/ComfyUI-DeepSeek-Toolkit",
"files": [
"https://github.com/HuangYuChuh/ComfyUI-DeepSeek_Toolkit"
"https://github.com/HuangYuChuh/ComfyUI-DeepSeek-Toolkit"
],
"install_type": "git-clone",
"description": "ComfyUI-DeepSeek_Toolkit is a deep learning toolkit for ComfyUI that integrates the DeepSeek Janus model, offering functionalities for image generation and image understanding.\nNOTE: The files in the repo are not organized."
"description": "ComfyUI-DeepSeek-Toolkit is a deep learning toolkit for ComfyUI that integrates the DeepSeek Janus model, offering functionalities for image generation and image understanding.\nNOTE: The files in the repo are not organized."
},
{
"author": "comfyuiblog",
@@ -1207,16 +1315,6 @@
"install_type": "git-clone",
"description": "NODES: File Mv, File Path, File Dir.\n[w/This is dangerous as it provides the ability to manipulate arbitrary user files.]"
},
{
"author": "scottmudge",
"title": "ComfyUI_BiscuitNodes",
"reference": "https://github.com/scottmudge/ComfyUI_BiscuitNodes",
"files": [
"https://github.com/scottmudge/ComfyUI_BiscuitNodes"
],
"install_type": "git-clone",
"description": "Load Image From Path Using File Selector"
},
{
"author": "JissiChoi",
"title": "ComfyUI-Jissi-List [WIP]",
@@ -1931,7 +2029,7 @@
"https://github.com/oshtz/ComfyUI-oshtz-nodes"
],
"install_type": "git-clone",
"description": "Custom nodes for ComfyUI created for some of my workflows.\nLLM All-in-One Node, String Splitter Node, LoRA Switcher Node, Image Overlay Node"
"description": "Custom nodes for ComfyUI created for some of my workflows.\nLLM All-in-One Node, String Splitter Node, LoRA Switcher Node, Image Overlay Node\nNOTE: The files in the repo are not organized."
},
{
"author": "m-ai-studio",
@@ -2769,13 +2867,14 @@
},
{
"author": "chrisdreid",
"title": "ComfyUI_EnvAutopsyAPI [UNSAFE]",
"title": "ComfyUI_EnvAutopsyAPI Debugger [UNSAFE]",
"id": "chrisdreid",
"reference": "https://github.com/chrisdreid/ComfyUI_EnvAutopsyAPI",
"files": [
"https://github.com/chrisdreid/ComfyUI_EnvAutopsyAPI"
],
"install_type": "git-clone",
"description": "ComfyUI_EnvAutopsyAPI is a powerful debugging tool designed for ComfyUI that provides in-depth analysis of your environment and dependencies through an API interface. This tool allows you to inspect environment variables, pip packages, and dependency trees, making it easier to diagnose and resolve issues in your ComfyUI setup.[w/This tool may expose sensitive system information if used on a public server. MUST READ [a/THIS](https://github.com/chrisdreid/ComfyUI_EnvAutopsyAPI#%EF%B8%8F-warning-security-risk-%EF%B8%8F) before install.]"
"description": "A powerful debugging tool designed to provide in-depth analysis of your environment and dependencies by exposing API endpoints. This tool allows you to inspect environment variables, pip packages, python info and dependency trees, making it easier to diagnose and resolve issues in your ComfyUI setup.[w/This tool may expose sensitive system information if used on a public server]"
},
{
"author": "Futureversecom",

View File

@@ -169,6 +169,7 @@
"PD_ImageConcanate",
"PD_Image_Crop_Location",
"PD_RemoveColorWords",
"ReadTxtFiles",
"json_group_fontsize"
],
{
@@ -582,6 +583,16 @@
"title_aux": "ComfyUI_bd_customNodes"
}
],
"https://github.com/BuffMcBigHuge/ComfyUI-Buff-Nodes": [
[
"ConsoleOutput",
"FilePathSelectorFromDirectory",
"StringProcessor"
],
{
"title_aux": "ComfyUI-Buff-Nodes [WIP]"
}
],
"https://github.com/Chargeuk/ComfyUI-vts-nodes": [
[
"VTS Clean Text",
@@ -644,6 +655,7 @@
"DevToolsNodeWithOnlyOptionalInput",
"DevToolsNodeWithOptionalComboInput",
"DevToolsNodeWithOptionalInput",
"DevToolsNodeWithOutputCombo",
"DevToolsNodeWithOutputList",
"DevToolsNodeWithSeedInput",
"DevToolsNodeWithStringInput",
@@ -810,6 +822,23 @@
"title_aux": "ComfyUI-MusicGen [WIP]"
}
],
"https://github.com/Elypha/ComfyUI-Prompt-Helper": [
[
"PromptHelper_CombineConditioning",
"PromptHelper_ConcatConditioning",
"PromptHelper_ConcatString",
"PromptHelper_EncodeMultiStringCombine",
"PromptHelper_FormatString",
"PromptHelper_LoadPreset",
"PromptHelper_LoadPresetAdvanced",
"PromptHelper_String",
"PromptHelper_StringMultiLine",
"PromptHelper_WeightedPrompt"
],
{
"title_aux": "ComfyUI-Prompt-Helper [WIP]"
}
],
"https://github.com/EmanueleUniroma2/ComfyUI-FLAC-to-WAV": [
[
"AudioToWavConverter"
@@ -952,10 +981,10 @@
"title_aux": "comfyui_HavocsCall_Custom_Nodes"
}
],
"https://github.com/HuangYuChuh/ComfyUI-DeepSeek_Toolkit": [
"https://github.com/HuangYuChuh/ComfyUI-DeepSeek-Toolkit": [
[
"DeepSeekImageAnalyst",
"DeepSeekImageGeneration",
"DeepSeekImageUnderstanding",
"DeepSeekModelLoader",
"GoogleDriveUpload",
"ImagePreprocessor",
@@ -964,7 +993,7 @@
"VideoFileUploader"
],
{
"title_aux": "ComfyUI-DeepSeek_Toolkit [WIP]"
"title_aux": "ComfyUI-DeepSeek-Toolkit [WIP]"
}
],
"https://github.com/IfnotFr/ComfyUI-Ifnot-Pack": [
@@ -1201,6 +1230,7 @@
],
"https://github.com/LotzF/ComfyUI-Simple-Chat-GPT-completion": [
[
"AzureChatGptCompletion",
"ChatGPTCompletion"
],
{
@@ -1289,6 +1319,14 @@
"title_aux": "comfy-tif-support"
}
],
"https://github.com/ManuShamil/ComfyUI_BodyEstimation_Nodes": [
[
"CogitareLabsPoseIDExtractor"
],
{
"title_aux": "ComfyUI_BodyEstimation_Nodes"
}
],
"https://github.com/Matrix-King-Studio/ComfyUI-MoviePy": [
[
"AudioDurationNode",
@@ -1320,6 +1358,41 @@
"title_aux": "ComfyUI_mickster_nodes [WIP]"
}
],
"https://github.com/MockbaTheBorg/ComfyUI-Mockba": [
[
"mb Barcode",
"mb CLIP Text Encoder",
"mb Debug",
"mb Demux",
"mb Empty Latent Image",
"mb Eval",
"mb Exec",
"mb File to Image",
"mb File to Text",
"mb Hash Generator",
"mb Image Batch",
"mb Image Dimensions",
"mb Image Dither",
"mb Image Flip",
"mb Image Load",
"mb Image Load from URL",
"mb Image Preview",
"mb Image Rotate",
"mb Image Size",
"mb Image Subtract",
"mb Image to File",
"mb KSampler",
"mb Select",
"mb String",
"mb Text",
"mb Text or File",
"mb Text to File",
"mb Textbox"
],
{
"title_aux": "ComfyUI-Mockba"
}
],
"https://github.com/MrAdamBlack/CheckProgress": [
[
"CHECK_PROGRESS"
@@ -1346,7 +1419,6 @@
"FolderIteratorNODE",
"Get_cookies_Node",
"Get_json_value_Node",
"Get_video_Node",
"HashCalculationsNode",
"HuggingFaceUploadNode",
"IMG2URLNode",
@@ -1366,7 +1438,6 @@
"TranslateAPINode",
"ZIPwith7zNode",
"img_understanding_Node",
"klingai_video_Node",
"path_join_Node",
"save_img_NODE",
"set_api_Node"
@@ -1377,14 +1448,23 @@
],
"https://github.com/Northerner1/ComfyUI_North_Noise": [
[
"North_Unsampler"
"North_Noise"
],
{
"title_aux": "ComfyUI_North_Noise [WIP]"
}
],
"https://github.com/OSAnimate/ComfyUI-SpriteSheetMaker": [
[
"SpriteSheetMaker"
],
{
"title_aux": "ComfyUI-SpriteSheetMaker [WIP]"
}
],
"https://github.com/PATATAJEC/Patatajec-Nodes": [
[
"FilePrefixSwitcher",
"HyvidSwitcher",
"ImageSequenceFromBatch",
"MidiReader",
@@ -1474,41 +1554,6 @@
"title_aux": "comfyui-promptbymood [WIP]"
}
],
"https://github.com/RiceRound/ComfyUI_RiceRound": [
[
"RiceRoundAdvancedChoiceNode",
"RiceRoundBooleanNode",
"RiceRoundDecryptNode",
"RiceRoundDownloadImageAndMaskNode",
"RiceRoundDownloadImageNode",
"RiceRoundDownloadMaskNode",
"RiceRoundEncryptNode",
"RiceRoundFloatNode",
"RiceRoundImageBridgeNode",
"RiceRoundImageNode",
"RiceRoundImageUrlNode",
"RiceRoundInputTextNode",
"RiceRoundIntNode",
"RiceRoundMaskBridgeNode",
"RiceRoundOutputBooleanNode",
"RiceRoundOutputFloatNode",
"RiceRoundOutputImageBridgeNode",
"RiceRoundOutputImageNode",
"RiceRoundOutputIntNode",
"RiceRoundOutputMaskBridgeNode",
"RiceRoundOutputTextNode",
"RiceRoundRandomSeedNode",
"RiceRoundSimpleChoiceNode",
"RiceRoundSimpleImageNode",
"RiceRoundStrToBooleanNode",
"RiceRoundStrToFloatNode",
"RiceRoundStrToIntNode",
"RiceRoundUploadImageNode"
],
{
"title_aux": "RiceRound Cloud Node [UNSAFE]"
}
],
"https://github.com/RicherdLee/comfyui-oss-image-save": [
[
"SaveImageOSS"
@@ -1756,6 +1801,16 @@
"title_aux": "Comfyui_leffa"
}
],
"https://github.com/StoryWalker/comfyui_flux_collection_advanced": [
[
"Example",
"FluxImageUpscaler",
"FluxLoader"
],
{
"title_aux": "comfyui_flux_collection_advanced [WIP]"
}
],
"https://github.com/TSFSean/ComfyUI-TSFNodes": [
[
"GyroOSC"
@@ -2522,6 +2577,7 @@
"ConditioningConcat",
"ConditioningSetArea",
"ConditioningSetAreaPercentage",
"ConditioningSetAreaPercentageVideo",
"ConditioningSetAreaStrength",
"ConditioningSetMask",
"ConditioningSetTimestepRange",
@@ -3256,6 +3312,7 @@
"ACE_ImageSaveToCloud",
"ACE_Integer",
"ACE_MaskBlur",
"ACE_OpenAI_GPT_Chat",
"ACE_Seed",
"ACE_Text",
"ACE_TextConcatenate",
@@ -3264,7 +3321,9 @@
"ACE_TextInputSwitch4Way",
"ACE_TextInputSwitch8Way",
"ACE_TextList",
"ACE_TextLoad",
"ACE_TextPreview",
"ACE_TextSave",
"ACE_TextSelector",
"ACE_TextToResolution",
"ACE_TextTranslate",
@@ -3510,6 +3569,27 @@
"title_aux": "ComfyUI PaintingCoderUtils Nodes [WIP]"
}
],
"https://github.com/jcomeme/ComfyUI-AsunaroTools": [
[
"AsunaroAnd",
"AsunaroAutomaticSexPrompter",
"AsunaroBatchImageLoader",
"AsunaroIfBiggerThanZero",
"AsunaroIfContain",
"AsunaroIfSame",
"AsunaroImageLoader",
"AsunaroIntToStr",
"AsunaroOr",
"AsunaroPromptStripper",
"AsunaroRandomDice",
"AsunaroSave",
"AsunaroTextConcatenator",
"AsunaroWildCard"
],
{
"title_aux": "AsunaroTools"
}
],
"https://github.com/jgbrblmd/ComfyUI-ComfyFluxSize": [
[
"ComfyFluxSize"
@@ -3928,17 +4008,23 @@
"LoadWanVideoClipTextEncoder",
"LoadWanVideoT5TextEncoder",
"WanVideoBlockSwap",
"WanVideoContextOptions",
"WanVideoDecode",
"WanVideoEmptyEmbeds",
"WanVideoEncode",
"WanVideoEnhanceAVideo",
"WanVideoImageClipEncode",
"WanVideoLatentPreview",
"WanVideoLoraBlockEdit",
"WanVideoLoraSelect",
"WanVideoModelLoader",
"WanVideoSampler",
"WanVideoTeaCache",
"WanVideoTextEmbedBridge",
"WanVideoTextEncode",
"WanVideoTorchCompileSettings",
"WanVideoVAELoader"
"WanVideoVAELoader",
"WanVideoVRAMManagement"
],
{
"title_aux": "ComfyUI-WanVideoWrapper [WIP]"
@@ -3966,13 +4052,23 @@
"AIO_Translater",
"Abc_Math",
"Baidu_Translater",
"BiRefNet_Loader",
"Color_Adjustment",
"Custom_Save_Image",
"Display_Any",
"Image_Size_Extractor",
"Mask_Blur_Plus",
"Preview_Mask",
"Preview_Mask_Plus",
"RemBG_Loader",
"Remove_BG",
"Slider_10",
"Slider_100",
"Slider_1000",
"Strong_Prompt",
"Tencent_Translater",
"Text"
"Text",
"To_Int"
],
{
"title_aux": "KayTool"
@@ -4282,10 +4378,11 @@
],
"https://github.com/lum3on/comfyui_LLM_Polymath": [
[
"Helper",
"UCEEraserNode",
"ConceptEraserNode",
"polymath_SaveAbsolute",
"polymath_chat",
"polymath_concept_eraser",
"polymath_helper",
"polymath_scraper"
],
{
@@ -4688,9 +4785,17 @@
],
"https://github.com/nomcycle/ComfyUI_Cluster": [
[
"ClusterFanInImages",
"ClusterFanInLatents",
"ClusterInstanceIndex"
"ClusterBroadcastTensor",
"ClusterExecuteCurrentWorkflow",
"ClusterExecuteWorkflow",
"ClusterFanOutImage",
"ClusterFanOutLatent",
"ClusterFanOutMask",
"ClusterGatherImages",
"ClusterGatherLatents",
"ClusterGatherMasks",
"ClusterInstanceIndex",
"ClusterListenTensorBroadcast"
],
{
"title_aux": "ComfyUI_Cluster [WIP]"
@@ -4698,6 +4803,7 @@
],
"https://github.com/oshtz/ComfyUI-oshtz-nodes": [
[
"EasyAspectRatioNode",
"ImageOverlayNode",
"LLMAIONode",
"LoRASwitcherNode",
@@ -4832,6 +4938,14 @@
"title_aux": "ComyUI-Tupham"
}
],
"https://github.com/pixuai/ComfyUI-PixuAI": [
[
"PromptSearch"
],
{
"title_aux": "ComfyUI-PixuAI"
}
],
"https://github.com/poisenbery/NudeNet-Detector-Provider": [
[
"NudeNetDetectorProvider"
@@ -4946,6 +5060,14 @@
"title_aux": "ComfyUI_HEXtoRGB"
}
],
"https://github.com/ritikvirus/comfyui-terminal-modal-node": [
[
"terminal_node"
],
{
"title_aux": "ComfyUI Terminal Command Node [UNSAFE]"
}
],
"https://github.com/rouxianmantou/comfyui-rxmt-nodes": [
[
"CheckValueTypeNode",
@@ -4972,14 +5094,6 @@
"title_aux": "ComfyUI_YoloNasObjectDetection_Tensorrt [WIP]"
}
],
"https://github.com/scottmudge/ComfyUI_BiscuitNodes": [
[
"LoadImagePrompted"
],
{
"title_aux": "ComfyUI_BiscuitNodes"
}
],
"https://github.com/sdfxai/SDFXBridgeForComfyUI": [
[
"SDFXClipTextEncode"
@@ -5237,6 +5351,15 @@
"title_aux": "ComfyUI_Save_Flux_Image"
}
],
"https://github.com/techidsk/comfyui_molook_nodes": [
[
"MaskExpand(Molook)",
"OpenAIProvider(Molook)"
],
{
"title_aux": "comfyui_molook_nodes [WIP]"
}
],
"https://github.com/techzuhaib/ComfyUI-CacheImageNode": [
[
"CacheImageNode"

View File

File diff suppressed because it is too large Load Diff

View File

@@ -11,6 +11,36 @@
{
"author": "Rvage0815",
"title": "ComfyUI-RvTools [REMOVED]",
"reference": "https://github.com/Rvage0815/ComfyUI-RvTools",
"files": [
"https://github.com/Rvage0815/ComfyUI-RvTools"
],
"install_type": "git-clone",
"description": "this node contains a lot of small little helpers like switches, passers and selectors that i use a lot to build my workflows."
},
{
"author": "Rvage0815",
"title": "RvTComfyUI-RvTools_v2 [REMOVED]",
"reference": "https://github.com/Rvage0815/ComfyUI-RvTools_v2",
"files": [
"https://github.com/Rvage0815/ComfyUI-RvTools_v2"
],
"install_type": "git-clone",
"description": "this node contains a lot of small little helpers like switches, passers and selectors that i use a lot to build my workflows."
},
{
"author": "scottmudge",
"title": "ComfyUI_BiscuitNodes [REMOVED]",
"reference": "https://github.com/scottmudge/ComfyUI_BiscuitNodes",
"files": [
"https://github.com/scottmudge/ComfyUI_BiscuitNodes"
],
"install_type": "git-clone",
"description": "Load Image From Path Using File Selector"
},
{
"author": "thanhduong0213929",
"title": "ComfyUI-DeepUnlock [REMOVED]",
@@ -115,7 +145,7 @@
},
{
"author": "myAiLemon",
"title": "MagicGetPromptAutomatically",
"title": "MagicGetPromptAutomatically [REMOVED]",
"reference": "https://github.com/myAiLemon/MagicGetPromptAutomatically",
"files": [
"https://github.com/myAiLemon/MagicGetPromptAutomatically"

View File

@@ -11,6 +11,372 @@
{
"author": "1038lab",
"title": "ComfyUI-Pollinations",
"reference": "https://github.com/1038lab/ComfyUI-Pollinations",
"files": [
"https://github.com/1038lab/ComfyUI-Pollinations"
],
"install_type": "git-clone",
"description": "ComfyUI integration for Pollinations API - Generate images and text based on user prompts"
},
{
"author": "Samulebotin",
"title": "ComfyUI-FreeVC_wrapper",
"reference": "https://github.com/Samulebotin/ComfyUI-FreeVC_wrapper",
"files": [
"https://github.com/Samulebotin/ComfyUI-FreeVC_wrapper"
],
"install_type": "git-clone",
"description": "A voice conversion extension node for ComfyUI based on FreeVC, enabling high-quality voice conversion capabilities within the ComfyUI framework."
},
{
"author": "chflame163",
"title": "ComfyUI_CogView4_Wrapper",
"reference": "https://github.com/chflame163/ComfyUI_CogView4_Wrapper",
"files": [
"https://github.com/chflame163/ComfyUI_CogView4_Wrapper"
],
"install_type": "git-clone",
"description": "The unofficial implementation of CogView4 project in ComfyUI."
},
{
"author": "justin-vt",
"title": "ComfyUI-brushstrokes",
"reference": "https://github.com/justin-vt/ComfyUI-brushstrokes",
"files": [
"https://github.com/justin-vt/ComfyUI-brushstrokes"
],
"install_type": "git-clone",
"description": "A ComfyUI node that applies painterly/brush-stroke effects to images, using either ImageMagick (Wand) or G'MIC (gmic-py) under the hood."
},
{
"author": "huixingyun",
"title": "ComfyUI-HX-Pimg",
"reference": "https://github.com/huixingyun/ComfyUI-HX-Pimg",
"files": [
"https://github.com/huixingyun/ComfyUI-HX-Pimg"
],
"install_type": "git-clone",
"description": "Some custom nodes used for pimg (a comfyui controller deployed in huixingyun)."
},
{
"author": "bombax-xiaoice",
"title": "ComfyUI-DisPose",
"reference": "https://github.com/bombax-xiaoice/ComfyUI-DisPose",
"files": [
"https://github.com/bombax-xiaoice/ComfyUI-DisPose"
],
"install_type": "git-clone",
"description": "ComfyUI supports over lihxxx/DisPose, which generates a new video with a reference video as poses and a reference image as everything else."
},
{
"author": "TheWhykiki",
"title": "Whykiki ComfyUI Toolset",
"reference": "https://github.com/TheWhykiki/Whykiki-ComfyUIToolset",
"files": [
"https://github.com/TheWhykiki/Whykiki-ComfyUIToolset"
],
"install_type": "git-clone",
"description": "A collection of useful nodes for ComfyUI that provide various workflow enhancements."
},
{
"author": "nosiu",
"title": "comfyui-text-randomizer",
"id": "comfyui-text-randomizer",
"reference": "https://github.com/nosiu/comfyui-text-randomizer",
"files": [
"https://github.com/nosiu/comfyui-text-randomizer"
],
"install_type": "git-clone",
"description": "A simple text randomizer for ComfyUI that can generate random and surprising results"
},
{
"author": "mr7thing",
"title": "Circle Pattern Processor for ComfyUI",
"reference": "https://github.com/mr7thing/circle_pattern_processor",
"files": [
"https://github.com/mr7thing/circle_pattern_processor"
],
"install_type": "git-clone",
"description": "This is a custom node for ComfyUI that can detect circular patterns in an image and generate a standardized circular output."
},
{
"author": "keit",
"title": "ComfyUI-Image-Toolkit",
"id": "comfyui-image-toolkit",
"reference": "https://github.com/keit0728/ComfyUI-Image-Toolkit",
"files": [
"https://github.com/keit0728/ComfyUI-Image-Toolkit"
],
"install_type": "git-clone",
"description": "ComfyUI nodes for image processing."
},
{
"author": "Mango1010",
"title": "Mango Node Pack",
"id": "MangoNodePack",
"reference": "https://github.com/mang01010/MangoNodePack",
"files": [
"https://github.com/mang01010/MangoNodePack"
],
"install_type": "git-clone",
"description": "Node pack designed to save images with metadata supported by Civitai."
},
{
"author": "0xRavenBlack",
"title": "ComfyUI-OOP",
"reference": "https://github.com/0xRavenBlack/ComfyUI-OOP",
"files": [
"https://github.com/0xRavenBlack/ComfyUI-OOP"
],
"install_type": "git-clone",
"description": "ComfyUI Node to create Object-Oriented Prompts"
},
{
"author": "Legorobotdude",
"title": "ComfyUI-VariationLab",
"reference": "https://github.com/Legorobotdude/ComfyUI-VariationLab",
"files": [
"https://github.com/Legorobotdude/ComfyUI-VariationLab"
],
"install_type": "git-clone",
"description": "Helps explore different parameters quickly"
},
{
"author": "lthero",
"title": "ComfyUI-GaussianShadingWatermark",
"reference": "https://github.com/lthero-big/ComfyUI-GaussianShadingWatermark",
"files": [
"https://github.com/lthero-big/ComfyUI-GaussianShadingWatermark"
],
"install_type": "git-clone",
"description": "Add invisible watermark to images to protect your images"
},
{
"author": "ajbergh",
"title": "ComfyUI Intelligent Detail Detector",
"reference": "https://github.com/ajbergh/comfyui-IntelligentDetailDetector",
"files": [
"https://github.com/ajbergh/comfyui-IntelligentDetailDetector"
],
"install_type": "git-clone",
"description": "A custom node for ComfyUI that intelligently analyzes images to detect areas that would benefit from detail enhancement, outputting a weighted mask highlighting regions needing enhancement.A custom node for ComfyUI that intelligently analyzes images to detect areas that would benefit from detail enhancement, outputting a weighted mask highlighting regions needing enhancement."
},
{
"author": "kijai",
"title": "ComfyUI-HFRemoteVae",
"reference": "https://github.com/kijai/ComfyUI-HFRemoteVae",
"files": [
"https://github.com/kijai/ComfyUI-HFRemoteVae"
],
"install_type": "git-clone",
"description": "This node allows using Hugginface remote server for latent decoding. Currently supported models: SD, SDXL, Flux, HunyuanVideo"
},
{
"author": "JohanK66",
"title": "ComfyUI WebhookImage",
"reference": "https://github.com/JohanK66/ComfyUI-WebhookImage",
"files": [
"https://github.com/JohanK66/ComfyUI-WebhookImage"
],
"install_type": "git-clone",
"description": "This package provides a custom node to ComfyUI to send a message and image by means of a webhook"
},
{
"author": "huimengshiguang",
"title": "AspectAwareTiling",
"reference": "https://github.com/huimengshiguang/AspectAwareTiling",
"files": [
"https://raw.githubusercontent.com/huimengshiguang/AspectAwareTiling/refs/heads/main/hmsg-quanjing.py"
],
"install_type": "copy",
"description": "This is an extension script for Stable Diffusion WebUI, modified based on the original functionality. It now supports fixing FLUX panorama seams. It allows users to independently configure seamless image tiling for both the X and Y axes while also being capable of handling FLUX panorama seam issues."
},
{
"author": "Yuan-ManX",
"title": "ComfyUI-PhotoDoodle",
"reference": "https://github.com/Yuan-ManX/ComfyUI-PhotoDoodle",
"files": [
"https://github.com/Yuan-ManX/ComfyUI-PhotoDoodle"
],
"install_type": "git-clone",
"description": "ComfyUI nodes for PhotoDoodle model."
},
{
"author": "JiSenHua",
"title": "ComfyUI-TD",
"id": "touchdesigner",
"reference": "https://github.com/JiSenHua/ComfyUI-TD",
"files": [
"https://github.com/JiSenHua/ComfyUI-TD"
],
"install_type": "git-clone",
"description": "A custom node for ComfyUI designed to facilitate the real-time transmission of rendered images, videos, or 3D models to TouchDesigner."
},
{
"author": "Slickytail",
"title": "ComfyUI-RegionalAdaptiveSampling",
"reference": "https://github.com/Slickytail/ComfyUI-RegionalAdaptiveSampling",
"files": [
"https://github.com/Slickytail/ComfyUI-RegionalAdaptiveSampling"
],
"description": "ComfyUI implementation of Regional Adaptive Sampling, (original implementation at https://github.com/microsoft/RAS).",
"install_type": "git-clone"
},
{
"author": "ShmuelRonen",
"title": "ComfyUI-WanVideoKsampler",
"reference": "https://github.com/ShmuelRonen/ComfyUI-WanVideoKsampler",
"files": [
"https://github.com/ShmuelRonen/ComfyUI-WanVideoKsampler"
],
"install_type": "git-clone",
"description": "An advanced custom node for ComfyUI that provides optimized access to Wan2.1, a state-of-the-art video foundation model suite. The WanVideoKsampler node features intelligent memory management to enable higher resolution outputs and longer video sequences, even on consumer-grade hardware."
},
{
"author": "fluffydiveX",
"title": "ComfyUI-hvBlockswap",
"reference": "https://github.com/fluffydiveX/ComfyUI-hvBlockswap",
"files": [
"https://github.com/fluffydiveX/ComfyUI-hvBlockswap"
],
"install_type": "git-clone",
"description": "It is a simple HunyuanVideo block swap node for ComfyUI native nodes."
},
{
"author": "blepping",
"title": "ComfyUI-ApplyResAdapterUnet",
"reference": "https://github.com/blepping/ComfyUI-ApplyResAdapterUnet",
"files": [
"https://github.com/blepping/ComfyUI-ApplyResAdapterUnet"
],
"install_type": "git-clone",
"description": "ComfyUI node to apply the ResAdapter Unet patch for SD1.5 models"
},
{
"author": "RiceRound",
"title": "RiceRound Cloud Node",
"id": "riceround",
"reference": "https://github.com/RiceRound/ComfyUI_RiceRound",
"files": [
"https://github.com/RiceRound/ComfyUI_RiceRound"
],
"install_type": "git-clone",
"description": "This is an imaginative project that allows for one-click deployment, providing both an online page and a ComfyUI cloud node.[w/This custom node is vulnerable because it can dynamically download and execute nodes.]"
},
{
"author": "Taremin",
"title": "comfyui-prompt-config",
"reference": "https://github.com/Taremin/comfyui-prompt-config",
"files": [
"https://github.com/Taremin/comfyui-prompt-config"
],
"install_type": "git-clone",
"description": "This is a custom node for ComfyUI.\nThe PromptGenerationConfig node allows users to configure settings such as image dimensions, step count, and CFGScale through prompts during image generation.\nThe PromptEdit node enables users to add text from the prompt to the negative prompt (or vice versa) and replace parts of the prompt using regular expressions."
},
{
"author": "InceptionsAI",
"title": "ComfyUI-RunComfy-Helper",
"reference": "https://github.com/InceptionsAI/ComfyUI-RunComfy-Helper",
"files": [
"https://github.com/InceptionsAI/ComfyUI-RunComfy-Helper"
],
"install_type": "git-clone",
"description": "Helper nodes for [a/RunComfy](https://www.runcomfy.com)"
},
{
"author": "zichongc",
"title": "ComfyUI-Attention-Distillation",
"reference": "https://github.com/zichongc/ComfyUI-Attention-Distillation",
"files": [
"https://github.com/zichongc/ComfyUI-Attention-Distillation"
],
"install_type": "git-clone",
"description": "Non-native [a/AttentionDistillation](https://github.com/xugao97/AttentionDistillation) for ComfyUI.\nOfficial ComfyUI demo for the paper AttentionDistillation, implemented as an extension of ComfyUI. Note that this extension incorporates AttentionDistillation using diffusers."
},
{
"author": "maximclouser",
"title": "ComfyUI-InferenceTimeScaling",
"reference": "https://github.com/YRIKKA/ComfyUI-InferenceTimeScaling",
"files": [
"https://github.com/YRIKKA/ComfyUI-InferenceTimeScaling"
],
"install_type": "git-clone",
"description": "Inference-time techniques to enhance diffusion-based image generation quality through random search and zero-order optimization algorithms"
},
{
"author": "smthemex",
"title": "ComfyUI_PhotoDoodle",
"reference": "https://github.com/smthemex/ComfyUI_PhotoDoodle",
"files": [
"https://github.com/smthemex/ComfyUI_PhotoDoodle"
],
"install_type": "git-clone",
"description": "PhotoDoodle: Learning Artistic Image Editing from Few-Shot Pairwise Datayou can use it in comfyUI"
},
{
"author": "duhaifeng",
"title": "ComfyUI-MaskEditor-Extension",
"reference": "https://github.com/rubi-du/ComfyUI-MaskEditor-Extension",
"files": [
"https://github.com/rubi-du/ComfyUI-MaskEditor-Extension"
],
"install_type": "git-clone",
"description": "This repository packages the latest BiRefNet model as a ComfyUI node for use, supporting chunked loading on both CPU and GPU, as well as model caching features."
},
{
"author": "PanicTitan",
"title": "ComfyUI-Fooocus-V2-Expansion",
"reference": "https://github.com/PanicTitan/ComfyUI-Fooocus-V2-Expansion",
"files": [
"https://github.com/PanicTitan/ComfyUI-Fooocus-V2-Expansion"
],
"install_type": "git-clone",
"description": "Adaptation of Fooocus Prompt Expansion for ComfyUI\nForked from [a/ComfyUI-Prompt-Expansion](https://github.com/meap158/ComfyUI-Prompt-Expansion) with some updates and changes based on original Fooocus, to be more specific [a/expansion.py](https://github.com/lllyasviel/Fooocus/blob/main/extras/expansion.py) and [a/LykosAI - GPT-Prompt-Expansion-Fooocus-v2](https://huggingface.co/LykosAI/GPT-Prompt-Expansion-Fooocus-v2)"
},
{
"author": "moose-lab",
"title": "ComfyUI-GPT",
"reference": "https://github.com/moose-lab/ComfyUI-GPT",
"files": [
"https://github.com/moose-lab/ComfyUI-GPT"
],
"install_type": "git-clone",
"description": "Help comfy deisgner develope custom nodes by foreground GUI without any coding knowledge, complementing the workflow what you design with LLM automatically"
},
{
"author": "shinich39",
"title": "comfyui-model-metadata",
"reference": "https://github.com/shinich39/comfyui-model-metadata",
"files": [
"https://github.com/shinich39/comfyui-model-metadata"
],
"install_type": "git-clone",
"description": "Print model metadata on note node"
},
{
"author": "leeguandong",
"title": "ComfyUI nodes to use AttentionMask",
"reference": "https://github.com/leeguandong/ComfyUI_FluxAttentionMask",
"files": [
"https://github.com/leeguandong/ComfyUI_FluxAttentionMask"
],
"install_type": "git-clone",
"description": "The attention mask in the T5 part of flux and SD3 utilizes the text-side attention mask to make the model focus more on text embeddings during image generation, thereby enhancing semantic alignment with the text."
},
{
"author": "marawan206",
"title": "Face Cropper Node (2:3 Ratio)",
"reference": "https://github.com/marawan206/ComfyUI-FaceCropper",
"files": [
"https://github.com/marawan206/ComfyUI-FaceCropper"
],
"install_type": "git-clone",
"description": "The Face Cropper Node (MarwanFaceCropping) is a custom image processing node designed for ComfyUI. It takes an input image and crops it to a 2:3 aspect ratio, ensuring that most of the subject remains in the frame while maintaining the correct proportions."
},
{
"author": "Easymode-ai",
"title": "ComfyUI-BPT",
@@ -53,13 +419,14 @@
},
{
"author": "SirWillance",
"title": " FoW_Suite_LIGHT",
"title": "Force of Will Suite Light",
"id": "fow-suite-light",
"reference": "https://github.com/SirWillance/FoW_Suite_LIGHT",
"files": [
"https://github.com/SirWillance/FoW_Suite_LIGHT"
],
"install_type": "git-clone",
"description": "oW_Suite_LIGHT is the beginner-friendly version of the 'FoW' (Force Of Will) suite for ComfyUI, featuring PromptRefinerLight as the flagship node for simple prompt creation. It helps low-spec users craft raw prompts and collaborate with high-spec users for image generation, with a light, stable design—no tokenization or weighing, perfect for newbies! I developed it as my first coding project in 2 months, learning ComfyUIs capabilities along the way."
"description": "Beginner-friendly nodes for prompt refinement in ComfyUI, including custom nodes for weighting, splitting, combining, catalogues, and the PromptRefiner for a simple prompt interface. For more info, join me on https://www.twitch.tv/sirwillance. Be one of the first 50 followers to get a FREE upgrade to the Standard Tier!"
},
{
"author": "KAVVATARE",
@@ -156,9 +523,9 @@
"author": "LAOGOU-666",
"title": "ComfyUI-LG_HotReload",
"id": "ComfyUI-LG_HotReload",
"reference": "https://github.com/LAOGOU-666/Comfyui-LG_HotReload",
"reference": "https://github.com/LAOGOU-666/ComfyUI-LG_HotReload",
"files": [
"https://github.com/LAOGOU-666/Comfyui-LG_HotReload"
"https://github.com/LAOGOU-666/ComfyUI-LG_HotReload"
],
"install_type": "git-clone",
"description": "An extension for ComfyUI that allows hot reloading. Once installed, you can preview changes in real-time while developing custom nodes or installing plugins without restarting ComfyUI."
@@ -324,435 +691,6 @@
],
"install_type": "git-clone",
"description": "A ComfyUI custom node for loading images sequentially from a directory. Loops back to the first image when reaching the end"
},
{
"author": "AEmotionStudio",
"title": "ComfyUI-EnhancedLinksandNodes 🎨✨",
"reference": "https://github.com/AEmotionStudio/ComfyUI-EnhancedLinksandNodes",
"files": [
"https://github.com/AEmotionStudio/ComfyUI-EnhancedLinksandNodes"
],
"install_type": "git-clone",
"description": "A visually stunning extension for ComfyUI that adds beautiful, customizable animations to both links and nodes in your workflow, with a focus on performance and customization. Includes an end-of-render animation and a text visibility tool for nodes. No extra packages are required, works with the latest version of ComfyUI, and should be compatible with most workflows. Larger workflows may experience performance issues, especially if you have a lot of nodes and are using a lower end system."
},
{
"author": "pathway8-sudo",
"title": "ComfyUI-Pathway-CutPNG-Node",
"reference": "https://github.com/pathway8-sudo/ComfyUI-Pathway-CutPNG-Node",
"files": [
"https://github.com/pathway8-sudo/ComfyUI-Pathway-CutPNG-Node"
],
"install_type": "git-clone",
"description": "Custom ComfyUI node that uses BRIA RMBG v1.4 for background removal and PNG cutting."
},
{
"author": "quadmoon",
"title": "ComfyUI-UltimateSDUpscale-GGUF",
"reference": "https://github.com/traugdor/ComfyUI-UltimateSDUpscale-GGUF",
"files": [
"https://github.com/traugdor/ComfyUI-UltimateSDUpscale-GGUF"
],
"install_type": "git-clone",
"description": "GGUF implementation for the ComfyUI Ultimate SD Upscale node."
},
{
"author": "dasilva333",
"title": "ComfyUI_MarkdownImage",
"reference": "https://github.com/dasilva333/ComfyUI_MarkdownImage",
"files": [
"https://github.com/dasilva333/ComfyUI_MarkdownImage"
],
"install_type": "git-clone",
"description": "This project generates an image from Markdown text using imgkit and wkhtmltoimage. It automatically scales the text to fit within the specified image dimensions."
},
{
"author": "GamingDaveUk",
"title": "Daves Nodes",
"id": "davesnodes",
"reference": "https://github.com/GamingDaveUk/daves_nodes",
"files": [
"https://github.com/GamingDaveUk/daves_nodes"
],
"install_type": "git-clone",
"description": "Nodes that I needed but couldnt find, so ended up making."
},
{
"author": "AIFSH",
"title": "SemiChat-ComfyUI",
"reference": "https://github.com/AIFSH/SemiChat-ComfyUI",
"files": [
"https://github.com/AIFSH/SemiChat-ComfyUI"
],
"install_type": "git-clone",
"description": "A ComfyUI chat node based on SemiUI."
},
{
"author": "AIDC-AI",
"title": "ComfyUI-Copilot",
"id": "ComfyUI-Copilot",
"reference": "https://github.com/AIDC-AI/ComfyUI-Copilot",
"files": [
"https://github.com/AIDC-AI/ComfyUI-Copilot"
],
"install_type": "git-clone",
"description": "Your Intelligent Assistant for Comfy-UI."
},
{
"author": "RodrigoSKohl",
"title": "Interior Design for Comfyui",
"reference": "https://github.com/RodrigoSKohl/StableDesign-for-ComfyUI",
"files": [
"https://github.com/RodrigoSKohl/StableDesign-for-ComfyUI"
],
"install_type": "git-clone",
"description": "This node is based on MykolaL/StableDesign"
},
{
"author": "attashe",
"title": "ComfyUI-FluxRegionAttention",
"reference": "https://github.com/attashe/ComfyUI-FluxRegionAttention",
"files": [
"https://github.com/attashe/ComfyUI-FluxRegionAttention"
],
"install_type": "git-clone",
"description": "Implement Region Attention for Flux model. Add node RegionAttention that takes a regions - mask + condition, mask could be set from comfyui masks or bbox in FluxRegionBBOX node.\nThis code is not optimized and has a memory leak. If you caught a OOM just try run a query againg - works on my RTX3080. For generation it uses a usual prompt that have influence to all picture and a regions that have their own prompts.\nBase prompt good for setup background and style of image. This is train-free technique and results not always stable - sometimes need to try several seeds or change prompt."
},
{
"author": "yas-ponotech",
"title": "ComfyUI-Stability-AI-API",
"reference": "https://github.com/yhayano-ponotech/comfyui-stability-ai-api",
"files": [
"https://github.com/yhayano-ponotech/comfyui-stability-ai-api"
],
"install_type": "git-clone",
"description": "A collection of custom nodes for using the Stability AI API in ComfyUI."
},
{
"author": "HJH-AILab",
"title": "ComfyUI_StableAnimator",
"reference": "https://github.com/HJH-AILab/ComfyUI_StableAnimator",
"files": [
"https://github.com/HJH-AILab/ComfyUI_StableAnimator"
],
"install_type": "git-clone",
"description": "ComfyUI nodes for StableAnimator"
},
{
"author": "kevinmcmahondev",
"title": "KMCDev Nodes",
"reference": "https://github.com/kevinmcmahondev/comfyui-kmcdev-image-filter-adjustments",
"files": [
"https://github.com/kevinmcmahondev/comfyui-kmcdev-image-filter-adjustments"
],
"install_type": "git-clone",
"description": "A ComfyUI node that provides advanced image adjustment filters and controls for image manipulation"
},
{
"author": "lunarring",
"title": "bitalino_comfy",
"reference": "https://github.com/lunarring/bitalino_comfy",
"files": [
"https://github.com/lunarring/bitalino_comfy"
],
"install_type": "git-clone",
"description": "A package implementing a Bitalino device ComfyUI custom node."
},
{
"author": "Hellfiredragon",
"title": "comfyui-image-manipulation",
"reference": "https://github.com/Hellfiredragon/comfyui-image-manipulation",
"files": [
"https://github.com/Hellfiredragon/comfyui-image-manipulation"
],
"install_type": "git-clone",
"description": "Custom nodes to manipulate images in ComfyUI"
},
{
"author": "Mohammadreza Mohseni",
"title": "ComfyUI Mohseni Kit",
"id": "mohseni-kit",
"reference": "https://github.com/mohseni-mr/ComfyUI-Mohseni-Kit",
"files": [
"https://github.com/mohseni-mr/ComfyUI-Mohseni-Kit"
],
"install_type": "git-clone",
"description": "A collection of useful nodes for ComfyUI, including Float Preview for live image visualization."
},
{
"author": "TheAIDoctor",
"title": "The AI Doctors Clinical Tools",
"id": "AIDocCT",
"reference": "https://github.com/BlueprintCoding/ComfyUI_AIDocsClinicalTools",
"files": [
"https://github.com/BlueprintCoding/ComfyUI_AIDocsClinicalTools"
],
"install_type": "git-clone",
"description": "Nodes: Multi Int and Multi Text; allows for the creation of multiple int and multiple string storage and output from a single node. Multi Float coming soon."
},
{
"author": "CY-CHENYUE",
"title": "ComfyUI-Free-GPU",
"id": "ComfyUI-Free-GPU",
"reference": "https://github.com/CY-CHENYUE/ComfyUI-Free-GPU",
"files": [
"https://github.com/CY-CHENYUE/ComfyUI-Free-GPU"
],
"description": "ComfyUI-Free-GPU provides a node for releasing RAM and VRAM in ComfyUI.",
"install_type": "git-clone"
},
{
"author": "BuffMcBigHuge",
"title": "ComfyUI-Zonos",
"reference": "https://github.com/BuffMcBigHuge/ComfyUI-Zonos",
"files": [
"https://github.com/BuffMcBigHuge/ComfyUI-Zonos"
],
"install_type": "git-clone",
"description": "TTS with Zyphra Zonos"
},
{
"author": "RodrigoSKohl",
"title": "TryOff Anyone",
"reference": "https://github.com/RodrigoSKohl/comfyui-tryoff-anyone",
"files": [
"https://github.com/RodrigoSKohl/comfyui-tryoff-anyone"
],
"install_type": "git-clone",
"description": "Node to tryoff clothes"
},
{
"author": "BahaC",
"title": "ComfyUI Zonos TTS Node",
"reference": "https://github.com/BahaC/ComfyUI-ZonosTTS",
"files": [
"https://github.com/BahaC/ComfyUI-ZonosTTS"
],
"install_type": "git-clone",
"description": "A ComfyUI custom node that brings Zonos Text-to-Speech capabilities to your workflows, featuring high-quality speech synthesis and voice cloning."
},
{
"author": "dzqdzq",
"title": "ComfyUI-crop-alpha",
"reference": "https://github.com/dzqdzq/ComfyUI-crop-alpha",
"files": [
"https://github.com/dzqdzq/ComfyUI-crop-alpha"
],
"install_type": "git-clone",
"description": "Automatic cropping of transparent areas to prevent images from being too large, while also supporting resizing to prevent image dimensions from being too large."
},
{
"author": "yichengup",
"title": "ComfyUI-VideoBlender",
"reference": "https://github.com/yichengup/ComfyUI-VideoBlender",
"files": [
"https://github.com/yichengup/ComfyUI-VideoBlender"
],
"install_type": "git-clone",
"description": "Video clip mixing"
},
{
"author": "bbtaivi",
"title": "AIV ComfyUI Node",
"reference": "https://github.com/bbtaivi/ComfyUI-Aiv-Param",
"files": [
"https://github.com/bbtaivi/ComfyUI-Aiv-Param"
],
"install_type": "git-clone",
"description": "Used to convert workflow node settings into AIV mini-program parameters."
},
{
"author": "PrunaAI",
"title": "Pruna nodes for ComfyUI",
"reference": "https://github.com/PrunaAI/ComfyUI_pruna",
"files": [
"https://github.com/PrunaAI/ComfyUI_pruna"
],
"install_type": "git-clone",
"description": "This repository explains how to accelerate image generation in ComfyUI using Pruna, an inference optimization engine that makes AI models faster, smaller, cheaper, and greener. ComfyUI is a popular node-based GUI for image generation models, for which we provide a custom compilation node that accelerates Stable Diffusion (SD) and Flux inference, while preserving output quality."
},
{
"author": "quadmoon",
"title": "ComfyUI-Riffusion",
"reference": "https://github.com/traugdor/ComfyUI-Riffusion",
"files": [
"https://github.com/traugdor/ComfyUI-Riffusion"
],
"install_type": "git-clone",
"description": "A ComfyUI extension for Riffusion audio generation."
},
{
"author": "SSsnap",
"title": "ComfyUI-LBW_flux",
"reference": "https://github.com/SS-snap/ComfyUI-LBW_flux",
"files": [
"https://github.com/SS-snap/ComfyUI-LBW_flux"
],
"install_type": "git-clone",
"description": "Through this node, you can more easily test the impact of different blocks in flux_lora on the final result."
},
{
"author": "thanhduong0213929",
"title": "ComfyUI-DeepUnlock",
"reference": "https://github.com/thanhduong0213929/ComfyUI-DeepUnlock",
"files": [
"https://github.com/thanhduong0213929/ComfyUI-DeepUnlock"
],
"install_type": "git-clone",
"description": "DeepFuze is a state-of-the-art deep learning tool that seamlessly integrates with ComfyUI to revolutionize facial transformations, lipsyncing, video generation, voice cloning, face swapping, and lipsync translation. Leveraging advanced algorithms, DeepFuze enables users to combine audio and video with unparalleled realism, ensuring perfectly synchronized facial movements. This innovative solution is ideal for content creators, animators, developers, and anyone seeking to elevate their video editing projects with sophisticated AI-driven features."
},
{
"author": "MushroomFleet",
"title": "DJZ-Pedalboard",
"reference": "https://github.com/MushroomFleet/DJZ-Pedalboard",
"files": [
"https://github.com/MushroomFleet/DJZ-Pedalboard"
],
"install_type": "git-clone",
"description": "This project provides a collection of custom nodes designed for enhanced audio effects in ComfyUI. With an intuitive pedalboard interface, users can easily integrate and manipulate various audio effects within their workflows."
},
{
"author": "mie",
"title": "ComfyUI_CaptionThis",
"reference": "https://github.com/MieMieeeee/ComfyUI-CaptionThis",
"files": [
"https://github.com/MieMieeeee/ComfyUI-CaptionThis"
],
"install_type": "git-clone",
"description": "Describe a single image or all images in a directory using models such as Janus Pro, Florence2 (coming soon), or JoyCaption (coming soon), with a particular focus on building datasets for training LoRA."
},
{
"author": "APZmedia",
"title": "APZmedia Together Image Generator for ComfyUI",
"reference": "https://github.com/APZmedia/APZmedia-comfy-together-lora",
"files": [
"https://github.com/APZmedia/APZmedia-comfy-together-lora"
],
"install_type": "git-clone",
"description": "A ComfyUI node to implement Together AI API image generation"
},
{
"author": "lum3on",
"title": "LLM Polymath Chat Node",
"id": "polymath",
"reference": "https://github.com/lum3on/comfyui_LLM_Polymath",
"files": [
"https://github.com/lum3on/comfyui_LLM_Polymath"
],
"install_type": "git-clone",
"description": "Advanced LLM driven node with many custom instructions, including node finder, expert prompter and json converter."
},
{
"author": "austinbrown34",
"title": "ComfyUI-IO-Helpers",
"reference": "https://github.com/austinbrown34/ComfyUI-IO-Helpers",
"files": [
"https://github.com/austinbrown34/ComfyUI-IO-Helpers"
],
"install_type": "git-clone",
"description": "A custom nodes package for ComfyUI that enhances workflow flexibility by providing specialized nodes for saving and loading intermediate data (encoded prompts and sampled latents) in multiple formats. This package leverages helper classes for file I/O, supports gzip compression for efficient storage, and integrates progress feedback via a progress bar to improve user experience during long operations."
},
{
"author": "HowToSD",
"title": "ComfyUI-Data-Analysis",
"reference": "https://github.com/HowToSD/ComfyUI-Data-Analysis",
"files": [
"https://github.com/HowToSD/ComfyUI-Data-Analysis"
],
"install_type": "git-clone",
"description": "Data analysis custom modules for ComfyUI - Use Pandas & Matplotlib from within ComfyUI"
},
{
"author": "dasilva333",
"title": "ComfyUI_ContrastingColor",
"reference": "https://github.com/dasilva333/ComfyUI_ContrastingColor",
"files": [
"https://github.com/dasilva333/ComfyUI_ContrastingColor"
],
"install_type": "git-clone",
"description": "This node calculates a contrasting complementary color based on an input RGB color. The goal is to ensure visibility and contrast when overlaying text, UI elements, or graphical components against a given background color."
},
{
"author": "moon7star9",
"title": "ComfyUI_BiRefNet_Universal",
"reference": "https://github.com/moon7star9/ComfyUI_BiRefNet_Universal",
"files": [
"https://github.com/moon7star9/ComfyUI_BiRefNet_Universal"
],
"install_type": "git-clone",
"description": "A comprehensive node package that seamlessly integrates all BiRefNet series models into ComfyUI"
},
{
"author": "ShunL12324",
"title": "comfy-portal-endpoint",
"reference": "https://github.com/ShunL12324/comfy-portal-endpoint",
"files": [
"https://github.com/ShunL12324/comfy-portal-endpoint"
],
"install_type": "git-clone",
"description": "This is a ComfyUI extension that provides additional API endpoints functionality, primarily designed to support Comfy Portal - a modern iOS client application for ComfyUI."
},
{
"author": "burnsbert",
"title": "EBU LMStudio LLM Integration",
"id": "ebu-lmstudio",
"reference": "https://github.com/burnsbert/ComfyUI-EBU-LMStudio",
"files": [
"https://github.com/burnsbert/ComfyUI-EBU-LMStudio"
],
"install_type": "git-clone",
"description": "Custom nodes for integrating LM Studio's LLM functionality into ComfyUI. Includes EBU LMStudio Load, EBU LMStudio UnloadAll, and EBU LMStudio Make Request."
},
{
"author": "burnsbert",
"title": "EBU PromptHelper",
"id": "ebu-prompthelper",
"reference": "https://github.com/burnsbert/ComfyUI-EBU-PromptHelper",
"files": [
"https://github.com/burnsbert/ComfyUI-EBU-PromptHelper"
],
"install_type": "git-clone",
"description": "Custom nodes for enhancing and manipulating prompts in ComfyUI. Includes nodes for random color palette generation following different color theory methodologies, prompt text replacement and randomization, list sampling, loading files into strings, and season/weather/time-of-day generation."
},
{
"author": "vkff5833",
"title": "ComfyUI-MobileClient",
"reference": "https://github.com/vkff5833/ComfyUI-MobileClient",
"files": [
"https://github.com/vkff5833/ComfyUI-MobileClient"
],
"install_type": "git-clone",
"description": "Add a mobile-friendly web interface to ComfyUI."
},
{
"author": "zentrocdot",
"title": "ComfyUI-Simple_Image_To_Prompt",
"reference": "https://github.com/zentrocdot/ComfyUI-Simple_Image_To_Prompt",
"files": [
"https://github.com/zentrocdot/ComfyUI-Simple_Image_To_Prompt"
],
"description": "ComfyUI simple Image To Prompt node.",
"install_type": "git-clone"
},
{
"author": "mediocreatmybest",
"title": "ComfyUI-Transformers-Pipeline",
"reference": "https://github.com/mediocreatmybest/ComfyUI-Transformers-Pipeline",
"files": [
"https://github.com/mediocreatmybest/ComfyUI-Transformers-Pipeline"
],
"install_type": "git-clone",
"description": "Some additional ComfyUI nodes allowing tasks via the Huggingface Transformers Pipeline."
},
{
"author": "mie",
"title": "ComfyUI_MieNodes",
"reference": "https://github.com/MieMieeeee/ComfyUI-MieNodes",
"files": [
"https://github.com/MieMieeeee/ComfyUI-MieNodes"
],
"install_type": "git-clone",
"description": "Offering a series of utility nodes designed to simplify workflows and enhance efficiency"
}
]
}

View File

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,5 @@
import os
import shutil
import subprocess
import sys
import atexit
@@ -506,7 +507,7 @@ check_bypass_ssl()
# Perform install
processed_install = set()
script_list_path = os.path.join(folder_paths.user_directory, "default", "ComfyUI-Manager", "startup-scripts", "install-scripts.txt")
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages())
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path)
def is_installed(name):
@@ -695,13 +696,44 @@ def execute_migration(moves):
shutil.move(x[0], x[1])
print(f"[ComfyUI-Manager] MIGRATION: '{x[0]}' -> '{x[1]}'")
script_executed = False
# Check if script_list_path exists
if os.path.exists(script_list_path):
def execute_startup_script():
global script_executed
print("\n#######################################################################")
print("[ComfyUI-Manager] Starting dependency installation/(de)activation for the extension\n")
custom_nodelist_cache = None
def get_custom_node_paths():
nonlocal custom_nodelist_cache
if custom_nodelist_cache is None:
custom_nodelist_cache = set()
for base in folder_paths.get_folder_paths('custom_nodes'):
for x in os.listdir(base):
fullpath = os.path.join(base, x)
if os.path.isdir(fullpath):
custom_nodelist_cache.add(fullpath)
return custom_nodelist_cache
def execute_lazy_delete(path):
# Validate to prevent arbitrary paths from being deleted
if path not in get_custom_node_paths():
logging.error(f"## ComfyUI-Manager: The scheduled '{path}' is not a custom node path, so the deletion has been canceled.")
return
if not os.path.exists(path):
logging.info(f"## ComfyUI-Manager: SKIP-DELETE => '{path}' (already deleted)")
return
try:
shutil.rmtree(path)
logging.info(f"## ComfyUI-Manager: DELETE => '{path}'")
except Exception as e:
logging.error(f"## ComfyUI-Manager: Failed to delete '{path}' ({e})")
executed = set()
# Read each line from the file and convert it to a list using eval
with open(script_list_path, 'r', encoding="UTF-8", errors="ignore") as file:
@@ -725,6 +757,9 @@ if os.path.exists(script_list_path):
elif script[1] == "#LAZY-MIGRATION":
execute_migration(script[2])
elif script[1] == "#LAZY-DELETE-NODEPACK":
execute_lazy_delete(script[2])
elif os.path.exists(script[0]):
if script[1] == "#FORCE":
del script[1]
@@ -733,7 +768,7 @@ if os.path.exists(script_list_path):
continue
print(f"\n## ComfyUI-Manager: EXECUTE => {script[1:]}")
print(f"\n## Execute install/(de)activation script for '{script[0]}'")
print(f"\n## Execute management script for '{script[0]}'")
new_env = os.environ.copy()
if 'COMFYUI_FOLDERS_BASE_PATH' not in new_env:
@@ -741,12 +776,12 @@ if os.path.exists(script_list_path):
exit_code = process_wrap(script[1:], script[0], env=new_env)
if exit_code != 0:
print(f"install/(de)activation script failed: {script[0]}")
print(f"management script failed: {script[0]}")
else:
print(f"\n## ComfyUI-Manager: CANCELED => {script[1:]}")
except Exception as e:
print(f"[ERROR] Failed to execute install/(de)activation script: {line} / {e}")
print(f"[ERROR] Failed to execute management script: {line} / {e}")
# Remove the script_list_path file
if os.path.exists(script_list_path):
@@ -756,6 +791,12 @@ if os.path.exists(script_list_path):
print("\n[ComfyUI-Manager] Startup script completed.")
print("#######################################################################\n")
# Check if script_list_path exists
if os.path.exists(script_list_path):
execute_startup_script()
pip_fixer.fix_broken()
del processed_install

View File

@@ -1,7 +1,7 @@
[project]
name = "comfyui-manager"
description = "ComfyUI-Manager provides features to install and manage custom nodes for ComfyUI, as well as various functionalities to assist with ComfyUI."
version = "3.27.2"
version = "3.28"
license = { file = "LICENSE.txt" }
dependencies = ["GitPython", "PyGithub", "matrix-client==0.4.0", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions", "toml", "uv", "chardet"]