Compare commits

..

9 Commits
3.29 ... 3.30.2

Author SHA1 Message Date
Dr.Lt.Data
e983f9ed35 bump version 3.30.2 2025-03-06 21:48:37 +09:00
Alexander Piskun
8b16ef641b small fix for running as py-module on windows (#1615) 2025-03-06 21:48:08 +09:00
Dr.Lt.Data
e87d616b7a fixed: normalize pip name
package name in requirements is 'comfyui-frontend-package'
but, package name from `pip freeze` is 'comfyui_frontend_package'
but, package name from `uv pip freeze` is 'comfyui-frontend-package'

https://github.com/ltdrdata/ComfyUI-Manager/pull/1615#issue-2898212382
2025-03-06 21:41:56 +09:00
Dr.Lt.Data
2220f325fc update DB 2025-03-06 21:30:28 +09:00
S4MUEL
b53ed47ccb Add ComfyUI-Image-Position-Blend (#1617)
* Add ComfyUI-Image-Position-Blend to custom node list

This adds my custom node for image position blending to the ComfyUI Manager list.

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-03-06 21:08:13 +09:00
Alexander Piskun
39df2743fe get_installed_packages: return python packages names in lowercase (#1614) 2025-03-06 21:04:33 +09:00
Dr.Lt.Data
3f729aaf03 update DB 2025-03-06 20:53:26 +09:00
Dr.Lt.Data
b7324621e4 update DB 2025-03-06 07:38:05 +09:00
Dr.Lt.Data
e8c782c8e1 feat: pip_auto_fix.list for custom PIPFixer
fixed: always reinstall comfyui-frontend-package

https://github.com/ltdrdata/ComfyUI-Manager/discussions/980#discussioncomment-12400709
2025-03-05 22:27:24 +09:00
18 changed files with 3458 additions and 3007 deletions

View File

@@ -150,6 +150,7 @@ In `ComfyUI-Manager` V3.0 and later, configuration files and dynamically generat
* Configurable channel lists: `<USER_DIRECTORY>/default/ComfyUI-Manager/channels.ini`
* Configurable pip overrides: `<USER_DIRECTORY>/default/ComfyUI-Manager/pip_overrides.json`
* Configurable pip blacklist: `<USER_DIRECTORY>/default/ComfyUI-Manager/pip_blacklist.list`
* Configurable pip auto fix: `<USER_DIRECTORY>/default/ComfyUI-Manager/pip_auto_fix.list`
* Saved snapshot files: `<USER_DIRECTORY>/default/ComfyUI-Manager/snapshots`
* Startup script files: `<USER_DIRECTORY>/default/ComfyUI-Manager/startup-scripts`
* Component files: `<USER_DIRECTORY>/default/ComfyUI-Manager/components`
@@ -306,6 +307,10 @@ The following settings are applied based on the section marked as `is_default`.
* Prevent the installation of specific pip packages
* List the package names one per line in the `pip_blacklist.list` file.
* Automatically Restoring pip Installation
* If you list pip spec requirements in `pip_auto_fix.list`, similar to `requirements.txt`, it will automatically restore the specified versions when starting ComfyUI or when versions get mismatched during various custom node installations.
* `--index-url` can be used.
* Use `aria2` as downloader
* [howto](docs/en/use_aria2.md)

View File

@@ -647,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(), comfy_path)
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path, core.manager_files_path)
for_each_nodes(nodes, act=install_node)
pip_fixer.fix_broken()
@@ -685,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(), comfy_path)
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path, core.manager_files_path)
for_each_nodes(nodes, act=reinstall_node)
pip_fixer.fix_broken()
@@ -739,7 +739,7 @@ def update(
if 'all' in nodes:
asyncio.run(auto_save_snapshot())
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path)
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path, core.manager_files_path)
for x in nodes:
if x.lower() in ['comfyui', 'comfy', 'all']:
@@ -840,7 +840,7 @@ def fix(
if 'all' in nodes:
asyncio.run(auto_save_snapshot())
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path)
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path, core.manager_files_path)
for_each_nodes(nodes, fix_node, allow_all=True)
pip_fixer.fix_broken()
@@ -1119,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(), comfy_path)
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path, core.manager_files_path)
try:
asyncio.run(core.restore_snapshot(snapshot_path, extras))
except Exception:
@@ -1151,7 +1151,7 @@ def restore_dependencies(
total = len(node_paths)
i = 1
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path)
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path, core.manager_files_path)
for x in node_paths:
print("----------------------------------------------------------------------------------------------------")
print(f"Restoring [{i}/{total}]: {x}")
@@ -1170,7 +1170,7 @@ def post_install(
):
path = os.path.expanduser(path)
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path)
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path, core.manager_files_path)
unified_manager.execute_install_script('', path, instant_execution=True)
pip_fixer.fix_broken()
@@ -1214,8 +1214,7 @@ def install_deps(
print(f"[bold red]Invalid json file: {deps}[/bold red]")
exit(1)
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path)
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path, core.manager_files_path)
for k in json_obj['custom_nodes'].keys():
state = core.simple_check_custom_node(k)
if state == 'installed':

View File

@@ -8031,16 +8031,6 @@
"install_type": "git-clone",
"description": "ComfyUI nodes to edit videos using Genmo Mochi"
},
{
"author": "logtd",
"title": "ComfyUI-LTXTricks",
"reference": "https://github.com/logtd/ComfyUI-LTXTricks",
"files": [
"https://github.com/logtd/ComfyUI-LTXTricks"
],
"install_type": "git-clone",
"description": "A set of nodes that provide additional controls for the LTX Video model"
},
{
"author": "Big-Idea-Technology",
"title": "ComfyUI-Book-Tools Nodes for ComfyUI",
@@ -14466,6 +14456,16 @@
"install_type": "git-clone",
"description": "GeekyRemB is a powerful and versatile image processing node for ComfyUI, designed to remove backgrounds from images with advanced customization options. This node leverages the rembg library and offers a wide range of features for fine-tuning the background removal process and enhancing the resulting images."
},
{
"author": "GeekyGhost",
"title": "ComfyUI-Geeky-Kokoro-TTS",
"reference": "https://github.com/GeekyGhost/ComfyUI-Geeky-Kokoro-TTS",
"files": [
"https://github.com/GeekyGhost/ComfyUI-Geeky-Kokoro-TTS"
],
"install_type": "git-clone",
"description": "A powerful and feature-rich custom node collection for ComfyUI that integrates the Kokoro TTS (Text-to-Speech) system with advanced voice modification capabilities. This package allows you to generate natural-sounding speech and apply various voice effects within ComfyUI workflows."
},
{
"author": "Dobidop",
"title": "Dobidop ComfyStereo",
@@ -19127,7 +19127,7 @@
},
{
"author": "kazeyori",
"title": "Quick Image Sequence Process",
"title": "ComfyUI-QuickImageSequenceProcess",
"reference": "https://github.com/kazeyori/ComfyUI-QuickImageSequenceProcess",
"files": [
"https://github.com/kazeyori/ComfyUI-QuickImageSequenceProcess"
@@ -19729,6 +19729,16 @@
"install_type": "git-clone",
"description": "A Text To Speech node using Step-Audio-TTS in ComfyUI. Can speak, rap, sing, or clone voice."
},
{
"author": "billwuhao",
"title": "ComfyUI_KokoroTTS_MW",
"reference": "https://github.com/billwuhao/ComfyUI_KokoroTTS_MW",
"files": [
"https://github.com/billwuhao/ComfyUI_KokoroTTS_MW"
],
"install_type": "git-clone",
"description": "A Text To Speech node using Kokoro TTS in ComfyUI. Supports 8 languages and 150 voices"
},
{
"author": "pandaer119",
"title": "ComfyUI_pandai",
@@ -21827,6 +21837,26 @@
"install_type": "git-clone",
"description": "GlitchNodes is a collection of image processing nodes designed for ComfyUI that specializes in creating glitch art and retro effects."
},
{
"author": "S4MUEL404",
"title": "Image Position Blend",
"id": "ComfyUI-Image-Position-Blend",
"reference": "https://github.com/S4MUEL-404/ComfyUI-Image-Position-Blend",
"files": [
"https://github.com/S4MUEL-404/ComfyUI-Image-Position-Blend"
],
"install_type": "git-clone",
"description": "A custom node for conveniently adjusting the overlay position of two images."
},

View File

@@ -2547,6 +2547,7 @@
"Base64ToConditioning",
"CLIPTextEncodeFluxUnguided",
"ClownRegionalConditioning",
"ClownRegionalConditioning3",
"Conditioning Recast FP64",
"ConditioningAdd",
"ConditioningAverageScheduler",
@@ -4151,6 +4152,15 @@
"title_aux": "ComfyUI-SD3LatentSelectRes"
}
],
"https://github.com/GeekyGhost/ComfyUI-Geeky-Kokoro-TTS": [
[
"GeekyKokoroAdvancedVoice",
"GeekyKokoroTTS"
],
{
"title_aux": "ComfyUI-Geeky-Kokoro-TTS"
}
],
"https://github.com/GeekyGhost/ComfyUI-GeekyRemB": [
[
"GeekyRemB"
@@ -5970,6 +5980,27 @@
"title_aux": "ComfyUI-LivePortraitNode (Replicate API)"
}
],
"https://github.com/Lightricks/ComfyUI-LTXVideo": [
[
"AddLatentGuide",
"LTXAttentioOverride",
"LTXAttentionBank",
"LTXAttnOverride",
"LTXFetaEnhance",
"LTXFlowEditCFGGuider",
"LTXFlowEditSampler",
"LTXForwardModelSamplingPred",
"LTXPerturbedAttention",
"LTXPrepareAttnInjections",
"LTXRFForwardODESampler",
"LTXRFReverseODESampler",
"LTXReverseModelSamplingPred",
"ModifyLTXModel"
],
{
"title_aux": "ComfyUI-LTXVideo"
}
],
"https://github.com/Limitex/ComfyUI-Calculation": [
[
"CenterCalculation",
@@ -7862,6 +7893,14 @@
"title_aux": "comfyui_io_helpers"
}
],
"https://github.com/S4MUEL-404/ComfyUI-Image-Position-Blend": [
[
"ImagePositionBlend"
],
{
"title_aux": "Image Position Blend"
}
],
"https://github.com/SEkINVR/ComfyUI-SaveAs": [
[
"ComfyUISaveAs"
@@ -11442,7 +11481,8 @@
"https://github.com/aidenli/ComfyUI_NYJY": [
[
"CivitaiPrompt",
"ConverAnyToString",
"ConvertAnyToString",
"ConvertStringToNumber",
"CustomLatentImage-NYJY",
"CustomLatentImageSimple",
"FloatSlider-NYJY",
@@ -12613,6 +12653,15 @@
"title_aux": "ComfyUI_TextAssets"
}
],
"https://github.com/billwuhao/ComfyUI_KokoroTTS_MW": [
[
"Kokoro Run",
"Kokoro ZH Run"
],
{
"title_aux": "ComfyUI_KokoroTTS_MW"
}
],
"https://github.com/billwuhao/ComfyUI_OneButtonPrompt_Flux": [
[
"DeepseekRun",
@@ -14700,6 +14749,7 @@
"GLIGENLoader",
"GLIGENTextBoxApply",
"GrowMask",
"HunyuanImageToVideo",
"HyperTile",
"HypernetworkLoader",
"ImageBatch",
@@ -14889,6 +14939,7 @@
"TestVariadicAverage",
"TestWhileLoopClose",
"TestWhileLoopOpen",
"TextEncodeHunyuanVideo_ImageToVideo",
"ThresholdMask",
"TomePatchModel",
"TorchCompileModel",
@@ -20005,7 +20056,7 @@
"description": "A ComfyUI plugin for efficient image sequence processing. Features frame insertion, duplication, and removal with intuitive controls.",
"nickname": "QuickSeq",
"title": "Quick Image Sequence Process",
"title_aux": "Quick Image Sequence Process"
"title_aux": "ComfyUI-QuickImageSequenceProcess"
}
],
"https://github.com/kealiu/ComfyUI-S3-Tools": [
@@ -20040,7 +20091,8 @@
"BinarizeImage",
"BinarizeImageUsingOtsu",
"BrightnessTransparency",
"GrayscaleImage"
"GrayscaleImage",
"RemoveWhiteBackgroundNoise"
],
{
"title_aux": "ComfyUI-Image-Toolkit"
@@ -20339,6 +20391,8 @@
"HyVideoEmptyTextEmbeds",
"HyVideoEncode",
"HyVideoEnhanceAVideo",
"HyVideoGetClosestBucketSize",
"HyVideoI2VEncode",
"HyVideoInverseSampler",
"HyVideoLatentPreview",
"HyVideoLoraBlockEdit",
@@ -21807,27 +21861,6 @@
"title_aux": "ComfyUI-InversedNoise"
}
],
"https://github.com/logtd/ComfyUI-LTXTricks": [
[
"AddLatentGuide",
"LTXAttentioOverride",
"LTXAttentionBank",
"LTXAttnOverride",
"LTXFetaEnhance",
"LTXFlowEditCFGGuider",
"LTXFlowEditSampler",
"LTXForwardModelSamplingPred",
"LTXPerturbedAttention",
"LTXPrepareAttnInjections",
"LTXRFForwardODESampler",
"LTXRFReverseODESampler",
"LTXReverseModelSamplingPred",
"ModifyLTXModel"
],
{
"title_aux": "ComfyUI-LTXTricks"
}
],
"https://github.com/logtd/ComfyUI-MochiEdit": [
[
"MochiPrepareSigmas",
@@ -23297,7 +23330,7 @@
"SingleBooleanTrigger",
"SixBooleanTrigger",
"StepsAndCfg",
"TextBox",
"TextBoxMira",
"TextCombinerSix",
"TextCombinerTwo",
"TextLoopCombiner",
@@ -27188,6 +27221,7 @@
],
"https://github.com/sugarkwork/comfyui_tag_fillter": [
[
"TagCategory",
"TagCategoryEnhance",
"TagComparator",
"TagEnhance",

View File

File diff suppressed because it is too large Load Diff

View File

@@ -43,7 +43,7 @@ import manager_downloader
from node_package import InstalledNodePackage
version_code = [3, 29]
version_code = [3, 30, 2]
version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '')
@@ -847,7 +847,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(), comfy_path)
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path, manager_files_path)
res = True
lines = manager_util.robust_readlines(requirements_path)
for line in lines:
@@ -1902,7 +1902,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(), comfy_path)
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path, manager_files_path)
with open(requirements_path, "r") as requirements_file:
for line in requirements_file:
#handle comments

View File

@@ -1599,11 +1599,11 @@ def restart(self):
if '--windows-standalone-build' in sys_argv:
sys_argv.remove('--windows-standalone-build')
if sys.platform.startswith('win32'):
cmds = ['"' + sys.executable + '"', '"' + sys_argv[0] + '"'] + sys_argv[1:]
elif sys_argv[0].endswith("__main__.py"): # this is a python module
if sys_argv[0].endswith("__main__.py"): # this is a python module
module_name = os.path.basename(os.path.dirname(sys_argv[0]))
cmds = [sys.executable, '-m', module_name] + sys_argv[1:]
elif sys.platform.startswith('win32'):
cmds = ['"' + sys.executable + '"', '"' + sys_argv[0] + '"'] + sys_argv[1:]
else:
cmds = [sys.executable] + sys_argv

View File

@@ -2,6 +2,7 @@
description:
`manager_util` is the lightest module shared across the prestartup_script, main code, and cm-cli of ComfyUI-Manager.
"""
import traceback
import aiohttp
import json
@@ -13,6 +14,7 @@ import sys
import re
import logging
import platform
import shlex
cache_lock = threading.Lock()
@@ -244,7 +246,8 @@ def get_installed_packages(renew=False):
if y[0] == 'Package' or y[0].startswith('-'):
continue
pip_map[y[0]] = y[1]
normalized_name = y[0].lower().replace('-', '_')
pip_map[normalized_name] = y[1]
except subprocess.CalledProcessError:
logging.error("[ComfyUI-Manager] Failed to retrieve the information of installed pip packages.")
return set()
@@ -257,6 +260,46 @@ def clear_pip_cache():
pip_map = None
def parse_requirement_line(line):
tokens = shlex.split(line)
if not tokens:
return None
package_spec = tokens[0]
pattern = re.compile(
r'^(?P<package>[A-Za-z0-9_.+-]+)'
r'(?P<operator>==|>=|<=|!=|~=|>|<)?'
r'(?P<version>[A-Za-z0-9_.+-]*)$'
)
m = pattern.match(package_spec)
if not m:
return None
package = m.group('package')
operator = m.group('operator') or None
version = m.group('version') or None
index_url = None
if '--index-url' in tokens:
idx = tokens.index('--index-url')
if idx + 1 < len(tokens):
index_url = tokens[idx + 1]
res = {'package': package}
if operator is not None:
res['operator'] = operator
if version is not None:
res['version'] = StrictVersion(version)
if index_url is not None:
res['index_url'] = index_url
return res
torch_torchvision_torchaudio_version_map = {
'2.6.0': ('0.21.0', '2.6.0'),
'2.5.1': ('0.20.0', '2.5.0'),
@@ -276,10 +319,12 @@ torch_torchvision_torchaudio_version_map = {
}
class PIPFixer:
def __init__(self, prev_pip_versions, comfyui_path):
def __init__(self, prev_pip_versions, comfyui_path, manager_files_path):
self.prev_pip_versions = { **prev_pip_versions }
self.comfyui_path = comfyui_path
self.manager_files_path = manager_files_path
def torch_rollback(self):
spec = self.prev_pip_versions['torch'].split('+')
@@ -374,14 +419,20 @@ class PIPFixer:
if StrictVersion(np) >= StrictVersion('2'):
cmd = make_pip_cmd(['install', "numpy<2"])
subprocess.check_output(cmd , universal_newlines=True)
logging.info("[ComfyUI-Manager] 'numpy' dependency were fixed")
except Exception as e:
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:
# NOTE: package name in requirements is 'comfyui-frontend-package'
# but, package name from `pip freeze` is 'comfyui_frontend_package'
# but, package name from `uv pip freeze` is 'comfyui-frontend-package'
#
# get_installed_packages returns normalized name (i.e. comfyui_frontend_package)
if 'comfyui_frontend_package' not in new_pip_versions:
requirements_path = os.path.join(self.comfyui_path, 'requirements.txt')
with open(requirements_path, 'r') as file:
@@ -390,10 +441,59 @@ class PIPFixer:
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)
logging.info("[ComfyUI-Manager] 'comfyui-frontend-package' dependency were fixed")
except Exception as e:
logging.error("[ComfyUI-Manager] Failed to restore comfyui_frontend_package")
logging.error("[ComfyUI-Manager] Failed to restore comfyui-frontend-package")
logging.error(e)
# restore based on custom list
pip_auto_fix_path = os.path.join(self.manager_files_path, "pip_auto_fix.list")
if os.path.exists(pip_auto_fix_path):
with open(pip_auto_fix_path, 'r', encoding="UTF-8", errors="ignore") as f:
fixed_list = []
for x in f.readlines():
try:
parsed = parse_requirement_line(x)
need_to_reinstall = True
normalized_name = parsed['package'].lower().replace('-', '_')
if normalized_name in new_pip_versions:
if 'version' in parsed and 'operator' in parsed:
cur = StrictVersion(new_pip_versions[parsed['package']])
dest = parsed['version']
op = parsed['operator']
if cur == dest:
if op in ['==', '>=', '<=']:
need_to_reinstall = False
elif cur < dest:
if op in ['<=', '<', '~=', '!=']:
need_to_reinstall = False
elif cur > dest:
if op in ['>=', '>', '~=', '!=']:
need_to_reinstall = False
if need_to_reinstall:
cmd_args = ['install']
if 'version' in parsed and 'operator' in parsed:
cmd_args.append(parsed['package']+parsed['operator']+parsed['version'].version_string)
if 'index_url' in parsed:
cmd_args.append('--index-url')
cmd_args.append(parsed['index_url'])
cmd = make_pip_cmd(cmd_args)
subprocess.check_output(cmd, universal_newlines=True)
fixed_list.append(parsed['package'])
except Exception as e:
traceback.print_exc()
logging.error(f"[ComfyUI-Manager] Failed to restore '{x}'")
logging.error(e)
if len(fixed_list) > 0:
logging.info(f"[ComfyUI-Manager] dependencies in pip_auto_fix.json were fixed: {fixed_list}")
def sanitize(data):
return data.replace("<", "&lt;").replace(">", "&gt;")

View File

@@ -3960,6 +3960,17 @@
"url": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/vae/hunyuan_video_vae_bf16.safetensors",
"size": "493MB"
},
{
"name": "Comfy-Org/hunyuan_video_image_to_video_720p_bf16.safetensors",
"type": "diffusion_model",
"base": "Hunyuan Video",
"save_path": "diffusion_models/hunyuan_video",
"description": "Huyuan Video Image2Video diffusion model. repackaged version.",
"reference": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged",
"filename": "hunyuan_video_image_to_video_720p_bf16.safetensors",
"url": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/diffusion_models/hunyuan_video_image_to_video_720p_bf16.safetensors",
"size": "25.6GB"
},
{
"name": "Comfy-Org/llava_llama3_fp8_scaled.safetensors",
@@ -3983,6 +3994,17 @@
"url": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/text_encoders/llava_llama3_fp16.safetensors",
"size": "16.1GB"
},
{
"name": "Comfy-Org/llava_llama3_vision.safetensors",
"type": "clip_vision",
"base": "LLaVA-Llama-3",
"save_path": "text_encoders",
"description": "llava_llama3_vision clip vison model. This is required for using Hunyuan Video Image2Video.",
"reference": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged",
"filename": "llava_llama3_vision.safetensors",
"url": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/clip_vision/llava_llama3_vision.safetensors",
"size": "649MB"
},
{
"name": "FLUX.1 [Schnell] Diffusion model",
@@ -4547,6 +4569,17 @@
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltx-video-2b-v0.9.1.safetensors",
"size": "5.72GB"
},
{
"name": "LTX-Video 2B v0.9.5 Checkpoint",
"type": "checkpoint",
"base": "LTX-Video",
"save_path": "checkpoints/LTXV",
"description": "LTX-Video is the first DiT-based video generation model capable of generating high-quality videos in real-time. It produces 24 FPS videos at a 768x512 resolution faster than they can be watched. Trained on a large-scale dataset of diverse videos, the model generates high-resolution videos with realistic and varied content.",
"reference": "https://huggingface.co/Lightricks/LTX-Video",
"filename": "ltx-video-2b-v0.9.5.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltx-video-2b-v0.9.5.safetensors",
"size": "6.34GB"
},
{
"name": "XLabs-AI/flux-canny-controlnet-v3.safetensors",

View File

@@ -12,6 +12,56 @@
{
"author": "aria1th",
"title": "ComfyUI-camietagger-onnx",
"reference": "https://github.com/aria1th/ComfyUI-camietagger-onnx",
"files": [
"https://github.com/aria1th/ComfyUI-camietagger-onnx"
],
"install_type": "git-clone",
"description": "NODES: Camie Tagger"
},
{
"author": "zjkhurry",
"title": "comfyui_MetalFX [WIP]",
"reference": "https://github.com/zjkhurry/comfyui_MetalFX",
"files": [
"https://github.com/zjkhurry/comfyui_MetalFX"
],
"install_type": "git-clone",
"description": "A custom node for ComfyUI that enables high-quality image and video upscaling using Apple MetalFX technology.\nNOTE: The files in the repo are not organized."
},
{
"author": "IfnotFr",
"title": "ComfyUI-Connect [WIP]",
"reference": "https://github.com/IfnotFr/ComfyUI-Connect",
"files": [
"https://github.com/IfnotFr/ComfyUI-Connect"
],
"install_type": "git-clone",
"description": "Transform your ComfyUI into a powerful API, exposing all your saved workflows as ready-to-use HTTP endpoints."
},
{
"author": "RoyKillington",
"title": "Miscomfy Nodes [WIP]",
"reference": "https://github.com/RoyKillington/miscomfy-nodes",
"files": [
"https://github.com/RoyKillington/miscomfy-nodes"
],
"install_type": "git-clone",
"description": "A repo of custom nodes for ComfyUI, from interacting with certain APIs to whatever other miscellanea I end up making"
},
{
"author": "xmarked-ai",
"title": "ComfyUI_misc",
"reference": "https://github.com/xmarked-ai/ComfyUI_misc",
"files": [
"https://github.com/xmarked-ai/ComfyUI_misc"
],
"install_type": "git-clone",
"description": "NODES: Ace IntegerX, Ace FloatX, Ace Color FixX, White Balance X, Depth Displace X, Empty Latent X, KSampler Combo X, ..."
},
{
"author": "Elypha",
"title": "ComfyUI-Prompt-Helper [WIP]",
@@ -804,16 +854,6 @@
"install_type": "git-clone",
"description": "nodes for deepseek api\nNOTE: The files in the repo are not organized."
},
{
"author": "807502278",
"title": "ComfyUI_TensorRT_Merge [WIP]",
"reference": "https://github.com/807502278/ComfyUI_TensorRT_Merge",
"files": [
"https://github.com/807502278/ComfyUI_TensorRT_Merge"
],
"install_type": "git-clone",
"description": "Non diffusion models supported by TensorRT, merged Comfyui plugin, added onnx automatic download and trt model conversion nodes."
},
{
"author": "IfnotFr",
"title": "ComfyUI-Ifnot-Pack",

View File

@@ -176,27 +176,6 @@
"title_aux": "comfyui-promptbymood [WIP]"
}
],
"https://github.com/807502278/ComfyUI_TensorRT_Merge": [
[
"BiRefNet2_tensort",
"BiRefNet_TRT",
"Building_TRT",
"Custom_Building_TRT",
"DepthAnything_Tensorrt",
"Dwpose_Tensorrt",
"FaceRestoreTensorrt",
"RifeTensorrt",
"UpscalerTensorrt",
"YoloNasPoseTensorrt",
"load_BiRefNet2_tensort",
"load_BiRefNet_TRT",
"load_DepthAnything_Tensorrt",
"load_Dwpos_Tensorrt"
],
{
"title_aux": "ComfyUI_TensorRT_Merge [WIP]"
}
],
"https://github.com/A4P7J1N7M05OT/ComfyUI-ManualSigma": [
[
"ManualSigma"
@@ -987,7 +966,6 @@
"DeepSeekImageAnalyst",
"DeepSeekImageGeneration",
"DeepSeekModelLoader",
"GoogleDriveUpload",
"ImagePreprocessor",
"LLM_Loader",
"OpenAICompatibleLoader",
@@ -1376,22 +1354,28 @@
[
"A1111_FLUX_DATA_NODE",
"CategorizeNode",
"Data_handle_Node",
"DeepSeek_Node",
"Delay_node",
"DongShowTextNode",
"Dong_Pixelate_Node",
"Dong_Text_Node",
"Downloader",
"FileMoveNode",
"FolderIteratorNODE",
"Get_cookies_Node",
"Get_json_value_Node",
"Get_video_Node",
"HashCalculationsNode",
"HuggingFaceUploadNode",
"IMG2URLNode",
"Image2GIFNode",
"ImageDownloader",
"InputDetectionNode",
"LLM_Node",
"ImageResizeNode",
"LibLib_upload_Node",
"LogicToolsNode",
"LoraIterator",
"PromptConcatNode",
"RandomNumbersNode",
"RenameNode",
"ResolutionNode",
@@ -1401,6 +1385,7 @@
"TranslateAPINode",
"ZIPwith7zNode",
"img_understanding_Node",
"klingai_video_Node",
"path_join_Node",
"save_img_NODE",
"set_api_Node"
@@ -1538,6 +1523,14 @@
"title_aux": "Comfy UI Robe Nodes [UNSAFE]"
}
],
"https://github.com/RoyKillington/miscomfy-nodes": [
[
"VeniceUpscale"
],
{
"title_aux": "Miscomfy Nodes [WIP]"
}
],
"https://github.com/SS-snap/ComfyUI-Snap_Processing": [
[
"AreaCalculator",
@@ -2097,6 +2090,14 @@
"title_aux": "ComfyUI-SkipCFGSigmas"
}
],
"https://github.com/aria1th/ComfyUI-camietagger-onnx": [
[
"CamieTagger"
],
{
"title_aux": "ComfyUI-camietagger-onnx"
}
],
"https://github.com/artem-konevskikh/comfyui-split-merge-video": [
[
"VideoMerger",
@@ -2578,6 +2579,7 @@
"GLIGENLoader",
"GLIGENTextBoxApply",
"GrowMask",
"HunyuanImageToVideo",
"HyperTile",
"HypernetworkLoader",
"ImageBatch",
@@ -2767,6 +2769,7 @@
"TestVariadicAverage",
"TestWhileLoopClose",
"TestWhileLoopOpen",
"TextEncodeHunyuanVideo_ImageToVideo",
"ThresholdMask",
"TomePatchModel",
"TorchCompileModel",
@@ -3217,8 +3220,12 @@
"XIS_FromListGet1Model",
"XIS_FromListGet1String",
"XIS_INT_Slider",
"XIS_ImageMaskMirror",
"XIS_InvertMask",
"XIS_IsThereAnyData",
"XIS_PromptsWithSwitches",
"XIS_ResizeImageOrMask"
"XIS_ResizeImageOrMask",
"XIS_ResizeToDivisible"
],
{
"title_aux": "Xiser_Nodes [WIP]"
@@ -3898,6 +3905,8 @@
"HyVideoEmptyTextEmbeds",
"HyVideoEncode",
"HyVideoEnhanceAVideo",
"HyVideoGetClosestBucketSize",
"HyVideoI2VEncode",
"HyVideoInverseSampler",
"HyVideoLatentPreview",
"HyVideoLoraBlockEdit",
@@ -5591,6 +5600,31 @@
"title_aux": "CombineMasksNode"
}
],
"https://github.com/xmarked-ai/ComfyUI_misc": [
[
"AceColorFixX",
"AceFloatX",
"AceIntegerX",
"CheckpointLoaderBNB_X",
"CheckpointLoaderNF4_X",
"DepthDisplaceX",
"EmptyLatentX",
"IfConditionX",
"ImageTileSquare",
"ImageUntileSquare",
"KSamplerComboX",
"LoopCloseX",
"LoopOpenX",
"LoraBatchSamplerX",
"RelightX",
"RemoveBackgroundX",
"UnetLoaderBNB_X",
"WhiteBalanceX"
],
{
"title_aux": "ComfyUI_misc"
}
],
"https://github.com/yanhuifair/ComfyUI-FairLab": [
[
"CLIPTranslatedNode",
@@ -5674,6 +5708,14 @@
"title_aux": "Comfyui_image2prompt"
}
],
"https://github.com/zjkhurry/comfyui_MetalFX": [
[
"metalFXImg"
],
{
"title_aux": "comfyui_MetalFX [WIP]"
}
],
"https://github.com/zyd232/ComfyUI-zyd232-Nodes": [
[
"zyd232 ImagesPixelsCompare",

View File

File diff suppressed because it is too large Load Diff

View File

@@ -11,6 +11,26 @@
{
"author": "807502278",
"title": "ComfyUI_TensorRT_Merge [REMOVED]",
"reference": "https://github.com/807502278/ComfyUI_TensorRT_Merge",
"files": [
"https://github.com/807502278/ComfyUI_TensorRT_Merge"
],
"install_type": "git-clone",
"description": "Non diffusion models supported by TensorRT, merged Comfyui plugin, added onnx automatic download and trt model conversion nodes."
},
{
"author": "logtd",
"title": "ComfyUI-LTXTricks [DEPRECATED]",
"reference": "https://github.com/logtd/ComfyUI-LTXTricks",
"files": [
"https://github.com/logtd/ComfyUI-LTXTricks"
],
"install_type": "git-clone",
"description": "A set of nodes that provide additional controls for the LTX Video model"
},
{
"author": "JichaoLiang",
"title": "Immortal_comfyUI [REMOVED]",

View File

@@ -10,7 +10,37 @@
{
"author": "GeekyGhost",
"title": "ComfyUI-Geeky-Kokoro-TTS",
"reference": "https://github.com/GeekyGhost/ComfyUI-Geeky-Kokoro-TTS",
"files": [
"https://github.com/GeekyGhost/ComfyUI-Geeky-Kokoro-TTS"
],
"install_type": "git-clone",
"description": "A powerful and feature-rich custom node collection for ComfyUI that integrates the Kokoro TTS (Text-to-Speech) system with advanced voice modification capabilities. This package allows you to generate natural-sounding speech and apply various voice effects within ComfyUI workflows."
},
{
"author": "billwuhao",
"title": "ComfyUI_KokoroTTS_MW",
"reference": "https://github.com/billwuhao/ComfyUI_KokoroTTS_MW",
"files": [
"https://github.com/billwuhao/ComfyUI_KokoroTTS_MW"
],
"install_type": "git-clone",
"description": "A Text To Speech node using Kokoro TTS in ComfyUI. Supports 8 languages and 150 voices"
},
{
"author": "S4MUEL404",
"title": "Image Position Blend",
"id": "ComfyUI-Image-Position-Blend",
"reference": "https://github.com/S4MUEL-404/ComfyUI-Image-Position-Blend",
"files": [
"https://github.com/S4MUEL-404/ComfyUI-Image-Position-Blend"
],
"install_type": "git-clone",
"description": "A custom node for conveniently adjusting the overlay position of two images."
},
{
"author": "pxl-pshr",
"title": "GlitchNodes",

View File

@@ -2547,6 +2547,7 @@
"Base64ToConditioning",
"CLIPTextEncodeFluxUnguided",
"ClownRegionalConditioning",
"ClownRegionalConditioning3",
"Conditioning Recast FP64",
"ConditioningAdd",
"ConditioningAverageScheduler",
@@ -4151,6 +4152,15 @@
"title_aux": "ComfyUI-SD3LatentSelectRes"
}
],
"https://github.com/GeekyGhost/ComfyUI-Geeky-Kokoro-TTS": [
[
"GeekyKokoroAdvancedVoice",
"GeekyKokoroTTS"
],
{
"title_aux": "ComfyUI-Geeky-Kokoro-TTS"
}
],
"https://github.com/GeekyGhost/ComfyUI-GeekyRemB": [
[
"GeekyRemB"
@@ -5970,6 +5980,27 @@
"title_aux": "ComfyUI-LivePortraitNode (Replicate API)"
}
],
"https://github.com/Lightricks/ComfyUI-LTXVideo": [
[
"AddLatentGuide",
"LTXAttentioOverride",
"LTXAttentionBank",
"LTXAttnOverride",
"LTXFetaEnhance",
"LTXFlowEditCFGGuider",
"LTXFlowEditSampler",
"LTXForwardModelSamplingPred",
"LTXPerturbedAttention",
"LTXPrepareAttnInjections",
"LTXRFForwardODESampler",
"LTXRFReverseODESampler",
"LTXReverseModelSamplingPred",
"ModifyLTXModel"
],
{
"title_aux": "ComfyUI-LTXVideo"
}
],
"https://github.com/Limitex/ComfyUI-Calculation": [
[
"CenterCalculation",
@@ -7862,6 +7893,14 @@
"title_aux": "comfyui_io_helpers"
}
],
"https://github.com/S4MUEL-404/ComfyUI-Image-Position-Blend": [
[
"ImagePositionBlend"
],
{
"title_aux": "Image Position Blend"
}
],
"https://github.com/SEkINVR/ComfyUI-SaveAs": [
[
"ComfyUISaveAs"
@@ -11442,7 +11481,8 @@
"https://github.com/aidenli/ComfyUI_NYJY": [
[
"CivitaiPrompt",
"ConverAnyToString",
"ConvertAnyToString",
"ConvertStringToNumber",
"CustomLatentImage-NYJY",
"CustomLatentImageSimple",
"FloatSlider-NYJY",
@@ -12613,6 +12653,15 @@
"title_aux": "ComfyUI_TextAssets"
}
],
"https://github.com/billwuhao/ComfyUI_KokoroTTS_MW": [
[
"Kokoro Run",
"Kokoro ZH Run"
],
{
"title_aux": "ComfyUI_KokoroTTS_MW"
}
],
"https://github.com/billwuhao/ComfyUI_OneButtonPrompt_Flux": [
[
"DeepseekRun",
@@ -14700,6 +14749,7 @@
"GLIGENLoader",
"GLIGENTextBoxApply",
"GrowMask",
"HunyuanImageToVideo",
"HyperTile",
"HypernetworkLoader",
"ImageBatch",
@@ -14889,6 +14939,7 @@
"TestVariadicAverage",
"TestWhileLoopClose",
"TestWhileLoopOpen",
"TextEncodeHunyuanVideo_ImageToVideo",
"ThresholdMask",
"TomePatchModel",
"TorchCompileModel",
@@ -20005,7 +20056,7 @@
"description": "A ComfyUI plugin for efficient image sequence processing. Features frame insertion, duplication, and removal with intuitive controls.",
"nickname": "QuickSeq",
"title": "Quick Image Sequence Process",
"title_aux": "Quick Image Sequence Process"
"title_aux": "ComfyUI-QuickImageSequenceProcess"
}
],
"https://github.com/kealiu/ComfyUI-S3-Tools": [
@@ -20040,7 +20091,8 @@
"BinarizeImage",
"BinarizeImageUsingOtsu",
"BrightnessTransparency",
"GrayscaleImage"
"GrayscaleImage",
"RemoveWhiteBackgroundNoise"
],
{
"title_aux": "ComfyUI-Image-Toolkit"
@@ -20339,6 +20391,8 @@
"HyVideoEmptyTextEmbeds",
"HyVideoEncode",
"HyVideoEnhanceAVideo",
"HyVideoGetClosestBucketSize",
"HyVideoI2VEncode",
"HyVideoInverseSampler",
"HyVideoLatentPreview",
"HyVideoLoraBlockEdit",
@@ -21807,27 +21861,6 @@
"title_aux": "ComfyUI-InversedNoise"
}
],
"https://github.com/logtd/ComfyUI-LTXTricks": [
[
"AddLatentGuide",
"LTXAttentioOverride",
"LTXAttentionBank",
"LTXAttnOverride",
"LTXFetaEnhance",
"LTXFlowEditCFGGuider",
"LTXFlowEditSampler",
"LTXForwardModelSamplingPred",
"LTXPerturbedAttention",
"LTXPrepareAttnInjections",
"LTXRFForwardODESampler",
"LTXRFReverseODESampler",
"LTXReverseModelSamplingPred",
"ModifyLTXModel"
],
{
"title_aux": "ComfyUI-LTXTricks"
}
],
"https://github.com/logtd/ComfyUI-MochiEdit": [
[
"MochiPrepareSigmas",
@@ -23297,7 +23330,7 @@
"SingleBooleanTrigger",
"SixBooleanTrigger",
"StepsAndCfg",
"TextBox",
"TextBoxMira",
"TextCombinerSix",
"TextCombinerTwo",
"TextLoopCombiner",
@@ -27188,6 +27221,7 @@
],
"https://github.com/sugarkwork/comfyui_tag_fillter": [
[
"TagCategory",
"TagCategoryEnhance",
"TagComparator",
"TagEnhance",

View File

@@ -1,5 +1,39 @@
{
"models": [
{
"name": "Comfy-Org/hunyuan_video_image_to_video_720p_bf16.safetensors",
"type": "diffusion_model",
"base": "Hunyuan Video",
"save_path": "diffusion_models/hunyuan_video",
"description": "Huyuan Video Image2Video diffusion model. repackaged version.",
"reference": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged",
"filename": "hunyuan_video_image_to_video_720p_bf16.safetensors",
"url": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/diffusion_models/hunyuan_video_image_to_video_720p_bf16.safetensors",
"size": "25.6GB"
},
{
"name": "Comfy-Org/llava_llama3_vision.safetensors",
"type": "clip_vision",
"base": "LLaVA-Llama-3",
"save_path": "text_encoders",
"description": "llava_llama3_vision clip vison model. This is required for using Hunyuan Video Image2Video.",
"reference": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged",
"filename": "llava_llama3_vision.safetensors",
"url": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/clip_vision/llava_llama3_vision.safetensors",
"size": "649MB"
},
{
"name": "LTX-Video 2B v0.9.5 Checkpoint",
"type": "checkpoint",
"base": "LTX-Video",
"save_path": "checkpoints/LTXV",
"description": "LTX-Video is the first DiT-based video generation model capable of generating high-quality videos in real-time. It produces 24 FPS videos at a 768x512 resolution faster than they can be watched. Trained on a large-scale dataset of diverse videos, the model generates high-resolution videos with realistic and varied content.",
"reference": "https://huggingface.co/Lightricks/LTX-Video",
"filename": "ltx-video-2b-v0.9.5.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltx-video-2b-v0.9.5.safetensors",
"size": "6.34GB"
},
{
"name": "kolors/vae/diffusion_pytorch_model.fp16.safetensors",
"type": "VAE",

View File

@@ -507,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(), comfy_path)
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path, manager_files_path)
def is_installed(name):
@@ -816,11 +816,11 @@ if script_executed:
else:
sys_argv = sys.argv.copy()
if sys.platform.startswith('win32'):
cmds = ['"' + sys.executable + '"', '"' + sys_argv[0] + '"'] + sys_argv[1:]
elif sys_argv[0].endswith("__main__.py"): # this is a python module
if sys_argv[0].endswith("__main__.py"): # this is a python module
module_name = os.path.basename(os.path.dirname(sys_argv[0]))
cmds = [sys.executable, '-m', module_name] + sys_argv[1:]
elif sys.platform.startswith('win32'):
cmds = ['"' + sys.executable + '"', '"' + sys_argv[0] + '"'] + sys_argv[1:]
else:
cmds = [sys.executable] + sys_argv

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.29"
version = "3.30.2"
license = { file = "LICENSE.txt" }
dependencies = ["GitPython", "PyGithub", "matrix-client==0.4.0", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions", "toml", "uv", "chardet"]