Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
338d7abfa8 | ||
|
|
f8e5f5bcbb |
@@ -3,6 +3,8 @@ import sys
|
|||||||
|
|
||||||
cli_mode_flag = os.path.join(os.path.dirname(__file__), '.enable-cli-only-mode')
|
cli_mode_flag = os.path.join(os.path.dirname(__file__), '.enable-cli-only-mode')
|
||||||
|
|
||||||
|
print("[DBG] point14")
|
||||||
|
|
||||||
if not os.path.exists(cli_mode_flag):
|
if not os.path.exists(cli_mode_flag):
|
||||||
sys.path.append(os.path.join(os.path.dirname(__file__), "glob"))
|
sys.path.append(os.path.join(os.path.dirname(__file__), "glob"))
|
||||||
import manager_server # noqa: F401
|
import manager_server # noqa: F401
|
||||||
|
|||||||
12
cm-cli.py
12
cm-cli.py
@@ -1021,17 +1021,7 @@ def save_snapshot(
|
|||||||
] = True,
|
] = True,
|
||||||
):
|
):
|
||||||
cmd_ctx.set_user_directory(user_directory)
|
cmd_ctx.set_user_directory(user_directory)
|
||||||
|
path = core.save_snapshot_with_postfix('snapshot', output, not full_snapshot)
|
||||||
if(not output.endswith('.json') and not output.endswith('.yaml')):
|
|
||||||
print("ERROR: output path should be either '.json' or '.yaml' file.")
|
|
||||||
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.")
|
|
||||||
raise typer.Exit(code=1)
|
|
||||||
|
|
||||||
path = asyncio.run(core.save_snapshot_with_postfix('snapshot', output, not full_snapshot))
|
|
||||||
print(f"Current snapshot is saved as `{path}`")
|
print(f"Current snapshot is saved as `{path}`")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8745,7 +8745,7 @@
|
|||||||
"https://github.com/olduvai-jp/ComfyUI-HfLoader"
|
"https://github.com/olduvai-jp/ComfyUI-HfLoader"
|
||||||
],
|
],
|
||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "A simple and easy to use Hugging Face model loader."
|
"description": "Nodes:Lora Loader From HF"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "AiMiDi",
|
"author": "AiMiDi",
|
||||||
@@ -13337,16 +13337,6 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "This node for ComfyUI allows saving images with an optional alpha channel (transparency). It supports saving images in formats like PNG, JPEG, and WebP."
|
"description": "This node for ComfyUI allows saving images with an optional alpha channel (transparency). It supports saving images in formats like PNG, JPEG, and WebP."
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"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": "N3rd00d",
|
"author": "N3rd00d",
|
||||||
"title": "ComfyUI-Paint3D-Nodes",
|
"title": "ComfyUI-Paint3D-Nodes",
|
||||||
|
|||||||
@@ -1114,15 +1114,6 @@
|
|||||||
"title_aux": "ComfyUI_yanc"
|
"title_aux": "ComfyUI_yanc"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"https://github.com/APZmedia/APZmedia-comfy-together-lora": [
|
|
||||||
[
|
|
||||||
"TogetherImageGenerator",
|
|
||||||
"TogetherImageGeneratorLoRA"
|
|
||||||
],
|
|
||||||
{
|
|
||||||
"title_aux": "APZmedia Together Image Generator for ComfyUI"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"https://github.com/APZmedia/APZmedia-comfyui-fast-image-save": [
|
"https://github.com/APZmedia/APZmedia-comfyui-fast-image-save": [
|
||||||
[
|
[
|
||||||
"APZmedia Fast image save"
|
"APZmedia Fast image save"
|
||||||
@@ -1916,7 +1907,6 @@
|
|||||||
"ComfyUIDeployExternalAudio",
|
"ComfyUIDeployExternalAudio",
|
||||||
"ComfyUIDeployExternalBoolean",
|
"ComfyUIDeployExternalBoolean",
|
||||||
"ComfyUIDeployExternalCheckpoint",
|
"ComfyUIDeployExternalCheckpoint",
|
||||||
"ComfyUIDeployExternalEXR",
|
|
||||||
"ComfyUIDeployExternalFaceModel",
|
"ComfyUIDeployExternalFaceModel",
|
||||||
"ComfyUIDeployExternalImage",
|
"ComfyUIDeployExternalImage",
|
||||||
"ComfyUIDeployExternalImageAlpha",
|
"ComfyUIDeployExternalImageAlpha",
|
||||||
@@ -6467,7 +6457,6 @@
|
|||||||
"BlackBarsV1",
|
"BlackBarsV1",
|
||||||
"BlackBarsV2",
|
"BlackBarsV2",
|
||||||
"BlackBarsV3",
|
"BlackBarsV3",
|
||||||
"BracketCleaner",
|
|
||||||
"CRT_Effect_v1",
|
"CRT_Effect_v1",
|
||||||
"CathodeRayEffect",
|
"CathodeRayEffect",
|
||||||
"ClassicFilmEffect",
|
"ClassicFilmEffect",
|
||||||
@@ -6520,7 +6509,6 @@
|
|||||||
"ParametricMeshGenV2",
|
"ParametricMeshGenV2",
|
||||||
"ProjectFilePathNode",
|
"ProjectFilePathNode",
|
||||||
"PromptCleaner",
|
"PromptCleaner",
|
||||||
"PromptCleanerV2",
|
|
||||||
"PromptDupeRemover",
|
"PromptDupeRemover",
|
||||||
"PromptDupeRemoverV2",
|
"PromptDupeRemoverV2",
|
||||||
"PromptInject",
|
"PromptInject",
|
||||||
@@ -6562,13 +6550,10 @@
|
|||||||
"VideoTrails",
|
"VideoTrails",
|
||||||
"VideoTrailsV2",
|
"VideoTrailsV2",
|
||||||
"VideoVignettingV1",
|
"VideoVignettingV1",
|
||||||
"VoiceEffects",
|
|
||||||
"VoiceEffects2",
|
|
||||||
"WaveletCompose",
|
"WaveletCompose",
|
||||||
"WaveletDecompose",
|
"WaveletDecompose",
|
||||||
"WinampViz",
|
"WinampViz",
|
||||||
"WinampVizV2",
|
"WinampVizV2",
|
||||||
"ZenkaiPoseMap",
|
|
||||||
"ZenkaiPrompt",
|
"ZenkaiPrompt",
|
||||||
"ZenkaiPromptV2",
|
"ZenkaiPromptV2",
|
||||||
"ZenkaiPromptV3",
|
"ZenkaiPromptV3",
|
||||||
@@ -6981,7 +6966,6 @@
|
|||||||
"SUPIR Sampler \ud83d\udcacED",
|
"SUPIR Sampler \ud83d\udcacED",
|
||||||
"Save Image \ud83d\udd14ED",
|
"Save Image \ud83d\udd14ED",
|
||||||
"Simple Text \ud83d\udcacED",
|
"Simple Text \ud83d\udcacED",
|
||||||
"TIPO Script \ud83d\udcacED",
|
|
||||||
"Ultimate SD Upscale \ud83d\udcacED",
|
"Ultimate SD Upscale \ud83d\udcacED",
|
||||||
"Wildcard Encode \ud83d\udcacED"
|
"Wildcard Encode \ud83d\udcacED"
|
||||||
],
|
],
|
||||||
@@ -10329,7 +10313,6 @@
|
|||||||
"ConvertRasterToVectorBW",
|
"ConvertRasterToVectorBW",
|
||||||
"ConvertRasterToVectorColor",
|
"ConvertRasterToVectorColor",
|
||||||
"ConvertVectorToRaster",
|
"ConvertVectorToRaster",
|
||||||
"SVGPreview",
|
|
||||||
"SaveSVG"
|
"SaveSVG"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
@@ -11665,11 +11648,10 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/austinbrown34/ComfyUI-IO-Helpers": [
|
"https://github.com/austinbrown34/ComfyUI-IO-Helpers": [
|
||||||
[
|
[
|
||||||
"EncodedPromptFromFile",
|
"Encoded Prompt from File",
|
||||||
"EncodedPromptToFile",
|
"Encoded Prompt to File",
|
||||||
"IO_LoadImage",
|
"Sampled Latents from File",
|
||||||
"SampledLatentsFromFile",
|
"Sampled Latents to File"
|
||||||
"SampledLatentsToFile"
|
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI-IO-Helpers"
|
"title_aux": "ComfyUI-IO-Helpers"
|
||||||
@@ -11827,7 +11809,6 @@
|
|||||||
"SP_HiresGen_HiresCfg",
|
"SP_HiresGen_HiresCfg",
|
||||||
"SP_HiresGen_Sharpen",
|
"SP_HiresGen_Sharpen",
|
||||||
"SP_HunyuanLoader",
|
"SP_HunyuanLoader",
|
||||||
"SP_ImpactSwitchCombo",
|
|
||||||
"SP_KSampler",
|
"SP_KSampler",
|
||||||
"SP_KSamplerSelect",
|
"SP_KSamplerSelect",
|
||||||
"SP_KoboldCpp",
|
"SP_KoboldCpp",
|
||||||
@@ -15052,9 +15033,6 @@
|
|||||||
"DavchaCLIPTextEncode",
|
"DavchaCLIPTextEncode",
|
||||||
"DavchaConditioningConcat",
|
"DavchaConditioningConcat",
|
||||||
"DavchaEmptyLatentImage",
|
"DavchaEmptyLatentImage",
|
||||||
"DavchaLLM",
|
|
||||||
"DavchaLLMAdvanced",
|
|
||||||
"DavchaLoadLLM",
|
|
||||||
"DavchaLoadVideo",
|
"DavchaLoadVideo",
|
||||||
"DavchaMaskImage",
|
"DavchaMaskImage",
|
||||||
"DavchaModelMergeSD1",
|
"DavchaModelMergeSD1",
|
||||||
@@ -17576,11 +17554,12 @@
|
|||||||
"BiRefNet",
|
"BiRefNet",
|
||||||
"ControlImagePreprocessor",
|
"ControlImagePreprocessor",
|
||||||
"ControlNetModelLoader",
|
"ControlNetModelLoader",
|
||||||
"DiffusersMVModelMakeup",
|
|
||||||
"DiffusersMVPipelineLoader",
|
|
||||||
"DiffusersMVSampler",
|
"DiffusersMVSampler",
|
||||||
"DiffusersMVSchedulerLoader",
|
"DiffusersModelMakeup",
|
||||||
"DiffusersMVVaeLoader",
|
"DiffusersPipelineLoader",
|
||||||
|
"DiffusersSampler",
|
||||||
|
"DiffusersSchedulerLoader",
|
||||||
|
"DiffusersVaeLoader",
|
||||||
"ImagePreprocessor",
|
"ImagePreprocessor",
|
||||||
"LdmPipelineLoader",
|
"LdmPipelineLoader",
|
||||||
"LdmVaeLoader",
|
"LdmVaeLoader",
|
||||||
@@ -21778,7 +21757,6 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/lum3on/comfyui_LLM_Polymath": [
|
"https://github.com/lum3on/comfyui_LLM_Polymath": [
|
||||||
[
|
[
|
||||||
"polymath_SaveAbsolute",
|
|
||||||
"polymath_chat",
|
"polymath_chat",
|
||||||
"polymath_scraper"
|
"polymath_scraper"
|
||||||
],
|
],
|
||||||
@@ -23308,7 +23286,6 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/olduvai-jp/ComfyUI-HfLoader": [
|
"https://github.com/olduvai-jp/ComfyUI-HfLoader": [
|
||||||
[
|
[
|
||||||
"ControlNet Loader From HF",
|
|
||||||
"Lora Loader From HF"
|
"Lora Loader From HF"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
@@ -24803,7 +24780,6 @@
|
|||||||
"FlipStreamSwitchLatent",
|
"FlipStreamSwitchLatent",
|
||||||
"FlipStreamTextBox",
|
"FlipStreamTextBox",
|
||||||
"FlipStreamTextReplace",
|
"FlipStreamTextReplace",
|
||||||
"FlipStreamVideoInput",
|
|
||||||
"FlipStreamViewer"
|
"FlipStreamViewer"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
|
|||||||
4648
github-stats.json
4648
github-stats.json
File diff suppressed because it is too large
Load Diff
@@ -173,10 +173,7 @@ def read_cnr_info(fullpath):
|
|||||||
|
|
||||||
project = data.get('project', {})
|
project = data.get('project', {})
|
||||||
name = project.get('name').strip().lower()
|
name = project.get('name').strip().lower()
|
||||||
|
version = project.get('version')
|
||||||
# normalize version
|
|
||||||
# for example: 2.5 -> 2.5.0
|
|
||||||
version = str(manager_util.StrictVersion(project.get('version')))
|
|
||||||
|
|
||||||
urls = project.get('urls', {})
|
urls = project.get('urls', {})
|
||||||
repository = urls.get('Repository')
|
repository = urls.get('Repository')
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ import manager_downloader
|
|||||||
from node_package import InstalledNodePackage
|
from node_package import InstalledNodePackage
|
||||||
|
|
||||||
|
|
||||||
version_code = [3, 21, 3]
|
version_code = [3, 21]
|
||||||
version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '')
|
version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '')
|
||||||
|
|
||||||
|
|
||||||
@@ -513,10 +513,7 @@ class UnifiedManager:
|
|||||||
if info:
|
if info:
|
||||||
cnr = self.cnr_map.get(info['id'])
|
cnr = self.cnr_map.get(info['id'])
|
||||||
if cnr:
|
if cnr:
|
||||||
# normalize version
|
return {'id': cnr['id'], 'cnr': cnr, 'ver': info['version']}
|
||||||
# for example: 2.5 -> 2.5.0
|
|
||||||
ver = str(manager_util.StrictVersion(info['version']))
|
|
||||||
return {'id': cnr['id'], 'cnr': cnr, 'ver': ver}
|
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
else:
|
else:
|
||||||
@@ -1586,6 +1583,16 @@ def read_config():
|
|||||||
config = configparser.ConfigParser()
|
config = configparser.ConfigParser()
|
||||||
config.read(manager_config_path)
|
config.read(manager_config_path)
|
||||||
default_conf = config['default']
|
default_conf = config['default']
|
||||||
|
|
||||||
|
# policy migration: disable_unsecure_features -> security_level
|
||||||
|
if 'disable_unsecure_features' in default_conf:
|
||||||
|
if default_conf['disable_unsecure_features'].lower() == 'true':
|
||||||
|
security_level = 'strong'
|
||||||
|
else:
|
||||||
|
security_level = 'normal'
|
||||||
|
else:
|
||||||
|
security_level = default_conf['security_level'] if 'security_level' in default_conf else 'normal'
|
||||||
|
|
||||||
manager_util.use_uv = default_conf['use_uv'].lower() == 'true' if 'use_uv' in default_conf else False
|
manager_util.use_uv = default_conf['use_uv'].lower() == 'true' if 'use_uv' in default_conf else False
|
||||||
|
|
||||||
def get_bool(key, default_value):
|
def get_bool(key, default_value):
|
||||||
@@ -1593,25 +1600,26 @@ def read_config():
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
'http_channel_enabled': get_bool('http_channel_enabled', False),
|
'http_channel_enabled': get_bool('http_channel_enabled', False),
|
||||||
'preview_method': default_conf.get('preview_method', manager_funcs.get_current_preview_method()).lower(),
|
'preview_method': default_conf.get('preview_method', manager_funcs.get_current_preview_method()),
|
||||||
'git_exe': default_conf.get('git_exe', ''),
|
'git_exe': default_conf.get('git_exe', ''),
|
||||||
'use_uv': get_bool('use_uv', False),
|
'use_uv': get_bool('use_uv', False),
|
||||||
'channel_url': default_conf.get('channel_url', DEFAULT_CHANNEL),
|
'channel_url': default_conf.get('channel_url', DEFAULT_CHANNEL),
|
||||||
'default_cache_as_channel_url': get_bool('default_cache_as_channel_url', False),
|
'default_cache_as_channel_url': get_bool('default_cache_as_channel_url', False),
|
||||||
'share_option': default_conf.get('share_option', 'all').lower(),
|
'share_option': default_conf.get('share_option', 'all'),
|
||||||
'bypass_ssl': get_bool('bypass_ssl', False),
|
'bypass_ssl': get_bool('bypass_ssl', False),
|
||||||
'file_logging': get_bool('file_logging', True),
|
'file_logging': get_bool('file_logging', True),
|
||||||
'component_policy': default_conf.get('component_policy', 'workflow').lower(),
|
'component_policy': default_conf.get('component_policy', 'workflow'),
|
||||||
'windows_selector_event_loop_policy': get_bool('windows_selector_event_loop_policy', False),
|
'windows_selector_event_loop_policy': get_bool('windows_selector_event_loop_policy', False),
|
||||||
'model_download_by_agent': get_bool('model_download_by_agent', False),
|
'model_download_by_agent': get_bool('model_download_by_agent', False),
|
||||||
'downgrade_blacklist': default_conf.get('downgrade_blacklist', '').lower(),
|
'downgrade_blacklist': default_conf.get('downgrade_blacklist', ''),
|
||||||
'skip_migration_check': get_bool('skip_migration_check', False),
|
'skip_migration_check': get_bool('skip_migration_check', False),
|
||||||
'always_lazy_install': get_bool('always_lazy_install', False),
|
'always_lazy_install': get_bool('always_lazy_install', False),
|
||||||
'network_mode': default_conf.get('network_mode', 'public').lower(),
|
'network_mode': default_conf.get('network_mode', 'public'),
|
||||||
'security_level': default_conf.get('security_level', 'normal').lower(),
|
'security_level': security_level,
|
||||||
}
|
}
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
|
traceback.print_exc()
|
||||||
manager_util.use_uv = False
|
manager_util.use_uv = False
|
||||||
return {
|
return {
|
||||||
'http_channel_enabled': False,
|
'http_channel_enabled': False,
|
||||||
|
|||||||
@@ -55,14 +55,8 @@ def handle_stream(stream, prefix):
|
|||||||
from comfy.cli_args import args
|
from comfy.cli_args import args
|
||||||
import latent_preview
|
import latent_preview
|
||||||
|
|
||||||
def is_loopback(address):
|
|
||||||
import ipaddress
|
|
||||||
try:
|
|
||||||
return ipaddress.ip_address(address).is_loopback
|
|
||||||
except ValueError:
|
|
||||||
return False
|
|
||||||
|
|
||||||
is_local_mode = is_loopback(args.listen)
|
is_local_mode = args.listen.startswith('127.') or args.listen.startswith('local.')
|
||||||
|
|
||||||
|
|
||||||
model_dir_name_map = {
|
model_dir_name_map = {
|
||||||
@@ -91,11 +85,11 @@ def is_allowed_security_level(level):
|
|||||||
return False
|
return False
|
||||||
elif level == 'high':
|
elif level == 'high':
|
||||||
if is_local_mode:
|
if is_local_mode:
|
||||||
return core.get_config()['security_level'] in ['weak', 'normal-']
|
return core.get_config()['security_level'].lower() in ['weak', 'normal-']
|
||||||
else:
|
else:
|
||||||
return core.get_config()['security_level'] == 'weak'
|
return core.get_config()['security_level'].lower() == 'weak'
|
||||||
elif level == 'middle':
|
elif level == 'middle':
|
||||||
return core.get_config()['security_level'] in ['weak', 'normal', 'normal-']
|
return core.get_config()['security_level'].lower() in ['weak', 'normal', 'normal-']
|
||||||
else:
|
else:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@@ -605,7 +599,6 @@ async def task_worker():
|
|||||||
nodepack_result[ui_id] = msg
|
nodepack_result[ui_id] = msg
|
||||||
ui_target = "main"
|
ui_target = "main"
|
||||||
elif kind == 'update-comfyui':
|
elif kind == 'update-comfyui':
|
||||||
nodepack_result['comfyui'] = msg
|
|
||||||
ui_target = "main"
|
ui_target = "main"
|
||||||
else:
|
else:
|
||||||
nodepack_result[ui_id] = msg
|
nodepack_result[ui_id] = msg
|
||||||
|
|||||||
@@ -269,18 +269,27 @@ class PIPFixer:
|
|||||||
self.prev_pip_versions = { **prev_pip_versions }
|
self.prev_pip_versions = { **prev_pip_versions }
|
||||||
|
|
||||||
def torch_rollback(self):
|
def torch_rollback(self):
|
||||||
|
print("[DBG] point(torch_rollback) 1")
|
||||||
spec = self.prev_pip_versions['torch'].split('+')
|
spec = self.prev_pip_versions['torch'].split('+')
|
||||||
|
print("[DBG] point(torch_rollback) 2")
|
||||||
if len(spec) > 0:
|
if len(spec) > 0:
|
||||||
platform = spec[1]
|
platform = spec[1]
|
||||||
else:
|
else:
|
||||||
|
print("[DBG] point(torch_rollback) 3")
|
||||||
cmd = make_pip_cmd(['install', '--force', 'torch', 'torchvision', 'torchaudio'])
|
cmd = make_pip_cmd(['install', '--force', 'torch', 'torchvision', 'torchaudio'])
|
||||||
subprocess.check_output(cmd, universal_newlines=True)
|
subprocess.check_output(cmd, universal_newlines=True)
|
||||||
|
print("[DBG] point(torch_rollback) 4")
|
||||||
logging.error(cmd)
|
logging.error(cmd)
|
||||||
|
print("[DBG] point(torch_rollback) 5")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
print("[DBG] point(torch_rollback) 6")
|
||||||
torch_ver = StrictVersion(spec[0])
|
torch_ver = StrictVersion(spec[0])
|
||||||
|
print("[DBG] point(torch_rollback) 7")
|
||||||
torch_ver = f"{torch_ver.major}.{torch_ver.minor}.{torch_ver.patch}"
|
torch_ver = f"{torch_ver.major}.{torch_ver.minor}.{torch_ver.patch}"
|
||||||
|
print("[DBG] point(torch_rollback) 8")
|
||||||
torch_torchvision_torchaudio_ver = torch_torchvision_torchaudio_version_map.get(torch_ver)
|
torch_torchvision_torchaudio_ver = torch_torchvision_torchaudio_version_map.get(torch_ver)
|
||||||
|
print("[DBG] point(torch_rollback) 9")
|
||||||
|
|
||||||
if torch_torchvision_torchaudio_ver is None:
|
if torch_torchvision_torchaudio_ver is None:
|
||||||
cmd = make_pip_cmd(['install', '--pre', 'torch', 'torchvision', 'torchaudio',
|
cmd = make_pip_cmd(['install', '--pre', 'torch', 'torchvision', 'torchaudio',
|
||||||
@@ -292,46 +301,64 @@ class PIPFixer:
|
|||||||
'--index-url', f"https://download.pytorch.org/whl/{platform}"])
|
'--index-url', f"https://download.pytorch.org/whl/{platform}"])
|
||||||
logging.info(f"[ComfyUI-Manager] restore PyTorch to {torch_ver}+{platform}")
|
logging.info(f"[ComfyUI-Manager] restore PyTorch to {torch_ver}+{platform}")
|
||||||
|
|
||||||
|
print("[DBG] point(torch_rollback) 10")
|
||||||
subprocess.check_output(cmd, universal_newlines=True)
|
subprocess.check_output(cmd, universal_newlines=True)
|
||||||
|
print("[DBG] point(torch_rollback) 11")
|
||||||
|
|
||||||
def fix_broken(self):
|
def fix_broken(self):
|
||||||
|
print("[DBG] point9-1")
|
||||||
new_pip_versions = get_installed_packages(True)
|
new_pip_versions = get_installed_packages(True)
|
||||||
|
|
||||||
|
print("[DBG] point9-2")
|
||||||
# remove `comfy` python package
|
# remove `comfy` python package
|
||||||
try:
|
try:
|
||||||
|
print("[DBG] point9-3")
|
||||||
if 'comfy' in new_pip_versions:
|
if 'comfy' in new_pip_versions:
|
||||||
|
print("[DBG] point9-3-1")
|
||||||
cmd = make_pip_cmd(['uninstall', 'comfy'])
|
cmd = make_pip_cmd(['uninstall', 'comfy'])
|
||||||
subprocess.check_output(cmd, universal_newlines=True)
|
subprocess.check_output(cmd, universal_newlines=True)
|
||||||
|
|
||||||
logging.warning("[ComfyUI-Manager] 'comfy' python package is uninstalled.\nWARN: The 'comfy' package is completely unrelated to ComfyUI and should never be installed as it causes conflicts with ComfyUI.")
|
logging.warning("[ComfyUI-Manager] 'comfy' python package is uninstalled.\nWARN: The 'comfy' package is completely unrelated to ComfyUI and should never be installed as it causes conflicts with ComfyUI.")
|
||||||
|
print("[DBG] point9-4")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
print("[DBG] point9-5")
|
||||||
logging.error("[ComfyUI-Manager] Failed to uninstall `comfy` python package")
|
logging.error("[ComfyUI-Manager] Failed to uninstall `comfy` python package")
|
||||||
logging.error(e)
|
logging.error(e)
|
||||||
|
|
||||||
# fix torch - reinstall torch packages if version is changed
|
# fix torch - reinstall torch packages if version is changed
|
||||||
|
print("[DBG] point9-6")
|
||||||
try:
|
try:
|
||||||
|
print("[DBG] point9-7")
|
||||||
if 'torch' not in self.prev_pip_versions or 'torchvision' not in self.prev_pip_versions or 'torchaudio' not in self.prev_pip_versions:
|
if 'torch' not in self.prev_pip_versions or 'torchvision' not in self.prev_pip_versions or 'torchaudio' not in self.prev_pip_versions:
|
||||||
|
print("[DBG] point9-8")
|
||||||
logging.error("[ComfyUI-Manager] PyTorch is not installed")
|
logging.error("[ComfyUI-Manager] PyTorch is not installed")
|
||||||
elif self.prev_pip_versions['torch'] != new_pip_versions['torch'] \
|
elif self.prev_pip_versions['torch'] != new_pip_versions['torch'] \
|
||||||
or self.prev_pip_versions['torchvision'] != new_pip_versions['torchvision'] \
|
or self.prev_pip_versions['torchvision'] != new_pip_versions['torchvision'] \
|
||||||
or self.prev_pip_versions['torchaudio'] != new_pip_versions['torchaudio']:
|
or self.prev_pip_versions['torchaudio'] != new_pip_versions['torchaudio']:
|
||||||
|
print("[DBG] point9-9")
|
||||||
self.torch_rollback()
|
self.torch_rollback()
|
||||||
|
print("[DBG] point9-10")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
print("[DBG] point9-11")
|
||||||
logging.error("[ComfyUI-Manager] Failed to restore PyTorch")
|
logging.error("[ComfyUI-Manager] Failed to restore PyTorch")
|
||||||
logging.error(e)
|
logging.error(e)
|
||||||
|
|
||||||
# fix opencv
|
# fix opencv
|
||||||
try:
|
try:
|
||||||
|
print("[DBG] point9-12")
|
||||||
ocp = new_pip_versions.get('opencv-contrib-python')
|
ocp = new_pip_versions.get('opencv-contrib-python')
|
||||||
ocph = new_pip_versions.get('opencv-contrib-python-headless')
|
ocph = new_pip_versions.get('opencv-contrib-python-headless')
|
||||||
op = new_pip_versions.get('opencv-python')
|
op = new_pip_versions.get('opencv-python')
|
||||||
oph = new_pip_versions.get('opencv-python-headless')
|
oph = new_pip_versions.get('opencv-python-headless')
|
||||||
|
|
||||||
|
print("[DBG] point9-13")
|
||||||
versions = [ocp, ocph, op, oph]
|
versions = [ocp, ocph, op, oph]
|
||||||
versions = [StrictVersion(x) for x in versions if x is not None]
|
versions = [StrictVersion(x) for x in versions if x is not None]
|
||||||
versions.sort(reverse=True)
|
versions.sort(reverse=True)
|
||||||
|
|
||||||
|
print("[DBG] point9-14")
|
||||||
if len(versions) > 0:
|
if len(versions) > 0:
|
||||||
|
print("[DBG] point9-15")
|
||||||
# upgrade to maximum version
|
# upgrade to maximum version
|
||||||
targets = []
|
targets = []
|
||||||
cur = versions[0]
|
cur = versions[0]
|
||||||
@@ -344,27 +371,40 @@ class PIPFixer:
|
|||||||
if oph is not None and StrictVersion(oph) != cur:
|
if oph is not None and StrictVersion(oph) != cur:
|
||||||
targets.append('opencv-python-headless')
|
targets.append('opencv-python-headless')
|
||||||
|
|
||||||
|
print("[DBG] point9-16")
|
||||||
if len(targets) > 0:
|
if len(targets) > 0:
|
||||||
|
print("[DBG] point9-17")
|
||||||
for x in targets:
|
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}"])
|
||||||
subprocess.check_output(cmd, universal_newlines=True)
|
subprocess.check_output(cmd, universal_newlines=True)
|
||||||
|
|
||||||
logging.info(f"[ComfyUI-Manager] 'opencv' dependencies were fixed: {targets}")
|
logging.info(f"[ComfyUI-Manager] 'opencv' dependencies were fixed: {targets}")
|
||||||
|
print("[DBG] point9-18")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
print("[DBG] point9-19")
|
||||||
logging.error("[ComfyUI-Manager] Failed to restore opencv")
|
logging.error("[ComfyUI-Manager] Failed to restore opencv")
|
||||||
logging.error(e)
|
logging.error(e)
|
||||||
|
print("[DBG] point9-20")
|
||||||
|
|
||||||
# fix numpy
|
# fix numpy
|
||||||
try:
|
try:
|
||||||
|
print("[DBG] point9-21")
|
||||||
np = new_pip_versions.get('numpy')
|
np = new_pip_versions.get('numpy')
|
||||||
|
print("[DBG] point9-22")
|
||||||
if np is not None:
|
if np is not None:
|
||||||
|
print("[DBG] point9-23")
|
||||||
if StrictVersion(np) >= StrictVersion('2'):
|
if StrictVersion(np) >= StrictVersion('2'):
|
||||||
|
print("[DBG] point9-24")
|
||||||
cmd = make_pip_cmd(['install', "numpy<2"])
|
cmd = make_pip_cmd(['install', "numpy<2"])
|
||||||
subprocess.check_output(cmd , universal_newlines=True)
|
subprocess.check_output(cmd , universal_newlines=True)
|
||||||
|
print("[DBG] point9-25")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
print("[DBG] point9-26")
|
||||||
logging.error("[ComfyUI-Manager] Failed to restore numpy")
|
logging.error("[ComfyUI-Manager] Failed to restore numpy")
|
||||||
logging.error(e)
|
logging.error(e)
|
||||||
|
|
||||||
|
print("[DBG] point9-28")
|
||||||
|
|
||||||
|
|
||||||
def sanitize(data):
|
def sanitize(data):
|
||||||
return data.replace("<", "<").replace(">", ">")
|
return data.replace("<", "<").replace(">", ">")
|
||||||
|
|||||||
@@ -698,24 +698,16 @@ async function onQueueStatus(event) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
is_updating_all = false;
|
|
||||||
|
|
||||||
let success_list = [];
|
let success_list = [];
|
||||||
let failed_list = [];
|
let failed_list = [];
|
||||||
let comfyui_state = null;
|
|
||||||
|
|
||||||
for(let k in event.detail.nodepack_result){
|
for(let k in event.detail.nodepack_result){
|
||||||
let v = event.detail.nodepack_result[k];
|
let v = event.detail.nodepack_result[k];
|
||||||
|
|
||||||
if(v == 'success') {
|
if(v == 'success')
|
||||||
if(k == 'comfyui')
|
success_list.push(k);
|
||||||
comfyui_state = 'success';
|
|
||||||
else
|
|
||||||
success_list.push(k);
|
|
||||||
}
|
|
||||||
else if(v == 'skip') {
|
else if(v == 'skip') {
|
||||||
if(k == 'comfyui')
|
// do nothing
|
||||||
comfyui_state = 'skip';
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
failed_list.push(k);
|
failed_list.push(k);
|
||||||
@@ -723,31 +715,18 @@ async function onQueueStatus(event) {
|
|||||||
|
|
||||||
let msg = "";
|
let msg = "";
|
||||||
|
|
||||||
if(success_list.length == 0 && comfyui_state != 'success') {
|
if(success_list.length == 0) {
|
||||||
if(failed_list.length == 0) {
|
if(failed_list.length == 0) {
|
||||||
msg += "All custom nodes are already up to date.";
|
msg += "All custom nodes are already up to date.";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
msg = "To apply the updates, you need to <button class='cm-small-button' id='cm-reboot-button5'>RESTART</button> ComfyUI.<hr>";
|
msg = "To apply the updates, you need to <button class='cm-small-button' id='cm-reboot-button5'>RESTART</button> ComfyUI.<hr>";
|
||||||
|
msg += "The following custom nodes have been updated:<ul>";
|
||||||
if(comfyui_state == 'success') {
|
for(let x in success_list) {
|
||||||
msg += "ComfyUI is updated.<BR><BR>";
|
msg += '<li>'+success_list[x]+'</li>';
|
||||||
}
|
|
||||||
else if(comfyui_state == 'skip') {
|
|
||||||
msg += "ComfyUI is already up-to-date.<BR><BR>"
|
|
||||||
}
|
|
||||||
|
|
||||||
if(success_list.length > 0) {
|
|
||||||
msg += "The following custom nodes have been updated:<ul>";
|
|
||||||
for(let x in success_list) {
|
|
||||||
if(success_list[x] == 'comfyui')
|
|
||||||
continue;
|
|
||||||
|
|
||||||
msg += '<li>'+success_list[x]+'</li>';
|
|
||||||
}
|
|
||||||
msg += "</ul>";
|
|
||||||
}
|
}
|
||||||
|
msg += "</ul>";
|
||||||
|
|
||||||
setNeedRestart(true);
|
setNeedRestart(true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,16 +13,6 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
{
|
|
||||||
"author": "hiusdev",
|
|
||||||
"title": "ComfyUI_Lah_Toffee",
|
|
||||||
"reference": "https://github.com/hiusdev/ComfyUI_Lah_Toffee",
|
|
||||||
"files": [
|
|
||||||
"https://github.com/hiusdev/ComfyUI_Lah_Toffee"
|
|
||||||
],
|
|
||||||
"install_type": "git-clone",
|
|
||||||
"description": "NODES: Lah LoadVideoRandom"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"author": "hdfhssg",
|
"author": "hdfhssg",
|
||||||
"title": "ComfyUI_pxtool [WIP]",
|
"title": "ComfyUI_pxtool [WIP]",
|
||||||
|
|||||||
@@ -178,6 +178,7 @@
|
|||||||
"https://github.com/807502278/ComfyUI_TensorRT_Merge": [
|
"https://github.com/807502278/ComfyUI_TensorRT_Merge": [
|
||||||
[
|
[
|
||||||
"BiRefNet2_tensort",
|
"BiRefNet2_tensort",
|
||||||
|
"BiRefNet_ModelLoader_TRT",
|
||||||
"BiRefNet_TRT",
|
"BiRefNet_TRT",
|
||||||
"Building_TRT",
|
"Building_TRT",
|
||||||
"Custom_Building_TRT",
|
"Custom_Building_TRT",
|
||||||
@@ -188,7 +189,6 @@
|
|||||||
"UpscalerTensorrt",
|
"UpscalerTensorrt",
|
||||||
"YoloNasPoseTensorrt",
|
"YoloNasPoseTensorrt",
|
||||||
"load_BiRefNet2_tensort",
|
"load_BiRefNet2_tensort",
|
||||||
"load_BiRefNet_TRT",
|
|
||||||
"load_DepthAnything_Tensorrt",
|
"load_DepthAnything_Tensorrt",
|
||||||
"load_Dwpos_Tensorrt"
|
"load_Dwpos_Tensorrt"
|
||||||
],
|
],
|
||||||
@@ -940,11 +940,9 @@
|
|||||||
"DeepSeekImageGeneration",
|
"DeepSeekImageGeneration",
|
||||||
"DeepSeekImageUnderstanding",
|
"DeepSeekImageUnderstanding",
|
||||||
"DeepSeekModelLoader",
|
"DeepSeekModelLoader",
|
||||||
"GoogleDriveUpload",
|
|
||||||
"ImagePreprocessor",
|
"ImagePreprocessor",
|
||||||
"LLM_Loader",
|
"LLM_Loader",
|
||||||
"OpenAICompatibleLoader",
|
"OpenAICompatibleLoader"
|
||||||
"VideoFileUploader"
|
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI-DeepSeek_Toolkit [WIP]"
|
"title_aux": "ComfyUI-DeepSeek_Toolkit [WIP]"
|
||||||
@@ -1429,8 +1427,7 @@
|
|||||||
[
|
[
|
||||||
"List Image Path \ud83d\udc24",
|
"List Image Path \ud83d\udc24",
|
||||||
"List Model Path \ud83d\udc24",
|
"List Model Path \ud83d\udc24",
|
||||||
"List Video Path \ud83d\udc24",
|
"List Video Path \ud83d\udc24"
|
||||||
"Peaks Weights Generator \ud83d\udc24"
|
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "Comfy UI Robe Nodes [UNSAFE]"
|
"title_aux": "Comfy UI Robe Nodes [UNSAFE]"
|
||||||
@@ -3099,7 +3096,6 @@
|
|||||||
"DanbooruCharacterTag",
|
"DanbooruCharacterTag",
|
||||||
"E621CharacterTag",
|
"E621CharacterTag",
|
||||||
"NegativeTag",
|
"NegativeTag",
|
||||||
"PX_Seed",
|
|
||||||
"QualityTag",
|
"QualityTag",
|
||||||
"RandomArtists",
|
"RandomArtists",
|
||||||
"RandomArtistsAdvanced",
|
"RandomArtistsAdvanced",
|
||||||
@@ -3109,14 +3105,6 @@
|
|||||||
"title_aux": "ComfyUI_pxtool [WIP]"
|
"title_aux": "ComfyUI_pxtool [WIP]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"https://github.com/hiusdev/ComfyUI_Lah_Toffee": [
|
|
||||||
[
|
|
||||||
"LoadVideoRandom"
|
|
||||||
],
|
|
||||||
{
|
|
||||||
"title_aux": "ComfyUI_Lah_Toffee"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"https://github.com/horidream/ComfyUI-Horidream": [
|
"https://github.com/horidream/ComfyUI-Horidream": [
|
||||||
[
|
[
|
||||||
"PassThroughWithSound"
|
"PassThroughWithSound"
|
||||||
@@ -4040,7 +4028,6 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/lum3on/comfyui_LLM_Polymath": [
|
"https://github.com/lum3on/comfyui_LLM_Polymath": [
|
||||||
[
|
[
|
||||||
"polymath_SaveAbsolute",
|
|
||||||
"polymath_chat",
|
"polymath_chat",
|
||||||
"polymath_scraper"
|
"polymath_scraper"
|
||||||
],
|
],
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -11,16 +11,6 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
{
|
|
||||||
"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",
|
"author": "lum3on",
|
||||||
"title": "LLM Polymath Chat Node",
|
"title": "LLM Polymath Chat Node",
|
||||||
@@ -693,6 +683,79 @@
|
|||||||
],
|
],
|
||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "A useful comfyui node named LoadArtistTag for selecting artist tags, including 1000+ single-artist tags and 300 mixed-artists tags."
|
"description": "A useful comfyui node named LoadArtistTag for selecting artist tags, including 1000+ single-artist tags and 300 mixed-artists tags."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "852wa",
|
||||||
|
"title": "ComfyUI-ColorshiftColor",
|
||||||
|
"reference": "https://github.com/852wa/ComfyUI-ColorshiftColor",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/852wa/ComfyUI-ColorshiftColor"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "This is a custom node for ComfyUI.\nIt reduces colors based on a specified number and allows for adjustments to hue, saturation, and brightness.\nFeatures:Each parameter can be set to random, You can toggle masking (not changing colors) using color numbers, Mask inversion can also be toggled on or off."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "852wa",
|
||||||
|
"title": "ComfyUI-AdvancedAlphaProcessor",
|
||||||
|
"reference": "https://github.com/852wa/ComfyUI-AAP",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/852wa/ComfyUI-AAP"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "This is a custom node for ComfyUI.\nFeatures:Removes white areas in the input image by making them transparent based on brightness, Outputs in black and transparent, Outputs in gray and transparent.\nThis is a simple node with the above functionalities implemented. It also supports sequential processing."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "jinanlongen",
|
||||||
|
"title": "ComfyUI Prompt Expander Node",
|
||||||
|
"reference": "https://github.com/jinanlongen/ComfyUI-Prompt-Expander",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/jinanlongen/ComfyUI-Prompt-Expander"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A custom node for ComfyUI that expands text prompts using the SuperPrompt-v1 T5 model. This node helps generate more detailed and descriptive prompts from simple input text, which can be particularly useful for image generation workflows."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "Style-Mosaic",
|
||||||
|
"title": "ComfyUI DINO-X Detector Node",
|
||||||
|
"reference": "https://github.com/Style-Mosaic/dino-x-comfyui-node",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/Style-Mosaic/dino-x-comfyui-node"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A ComfyUI node that integrates DINO-X API for object detection and segmentation. This node allows you to detect and segment objects in images using text prompts."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "gmorks",
|
||||||
|
"title": "ComfyUI-SendToDiscord",
|
||||||
|
"reference": "https://github.com/gmorks/ComfyUI-SendToDiscord",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/gmorks/ComfyUI-SendToDiscord"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "ComfyUI-SendToDiscord is a custom node for ComfyUI that simplifies sending preview images to Discord via webhooks. It supports both single-image uploads and batch mode, making it an efficient tool for sharing your generated images directly with your Discord server."
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"author": "CY-CHENYUE",
|
||||||
|
"title": "ComfyUI-Janus-Pro",
|
||||||
|
"id": "ComfyUI-Janus-Pro",
|
||||||
|
"reference": "https://github.com/CY-CHENYUE/ComfyUI-Janus-Pro",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/CY-CHENYUE/ComfyUI-Janus-Pro"
|
||||||
|
],
|
||||||
|
"description": "ComfyUI nodes for Janus-Pro, a unified multimodal understanding and generation framework.",
|
||||||
|
"install_type": "git-clone"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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-Unload, and EBU-LMStudio-Request."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1114,15 +1114,6 @@
|
|||||||
"title_aux": "ComfyUI_yanc"
|
"title_aux": "ComfyUI_yanc"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"https://github.com/APZmedia/APZmedia-comfy-together-lora": [
|
|
||||||
[
|
|
||||||
"TogetherImageGenerator",
|
|
||||||
"TogetherImageGeneratorLoRA"
|
|
||||||
],
|
|
||||||
{
|
|
||||||
"title_aux": "APZmedia Together Image Generator for ComfyUI"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"https://github.com/APZmedia/APZmedia-comfyui-fast-image-save": [
|
"https://github.com/APZmedia/APZmedia-comfyui-fast-image-save": [
|
||||||
[
|
[
|
||||||
"APZmedia Fast image save"
|
"APZmedia Fast image save"
|
||||||
@@ -1916,7 +1907,6 @@
|
|||||||
"ComfyUIDeployExternalAudio",
|
"ComfyUIDeployExternalAudio",
|
||||||
"ComfyUIDeployExternalBoolean",
|
"ComfyUIDeployExternalBoolean",
|
||||||
"ComfyUIDeployExternalCheckpoint",
|
"ComfyUIDeployExternalCheckpoint",
|
||||||
"ComfyUIDeployExternalEXR",
|
|
||||||
"ComfyUIDeployExternalFaceModel",
|
"ComfyUIDeployExternalFaceModel",
|
||||||
"ComfyUIDeployExternalImage",
|
"ComfyUIDeployExternalImage",
|
||||||
"ComfyUIDeployExternalImageAlpha",
|
"ComfyUIDeployExternalImageAlpha",
|
||||||
@@ -6467,7 +6457,6 @@
|
|||||||
"BlackBarsV1",
|
"BlackBarsV1",
|
||||||
"BlackBarsV2",
|
"BlackBarsV2",
|
||||||
"BlackBarsV3",
|
"BlackBarsV3",
|
||||||
"BracketCleaner",
|
|
||||||
"CRT_Effect_v1",
|
"CRT_Effect_v1",
|
||||||
"CathodeRayEffect",
|
"CathodeRayEffect",
|
||||||
"ClassicFilmEffect",
|
"ClassicFilmEffect",
|
||||||
@@ -6520,7 +6509,6 @@
|
|||||||
"ParametricMeshGenV2",
|
"ParametricMeshGenV2",
|
||||||
"ProjectFilePathNode",
|
"ProjectFilePathNode",
|
||||||
"PromptCleaner",
|
"PromptCleaner",
|
||||||
"PromptCleanerV2",
|
|
||||||
"PromptDupeRemover",
|
"PromptDupeRemover",
|
||||||
"PromptDupeRemoverV2",
|
"PromptDupeRemoverV2",
|
||||||
"PromptInject",
|
"PromptInject",
|
||||||
@@ -6562,13 +6550,10 @@
|
|||||||
"VideoTrails",
|
"VideoTrails",
|
||||||
"VideoTrailsV2",
|
"VideoTrailsV2",
|
||||||
"VideoVignettingV1",
|
"VideoVignettingV1",
|
||||||
"VoiceEffects",
|
|
||||||
"VoiceEffects2",
|
|
||||||
"WaveletCompose",
|
"WaveletCompose",
|
||||||
"WaveletDecompose",
|
"WaveletDecompose",
|
||||||
"WinampViz",
|
"WinampViz",
|
||||||
"WinampVizV2",
|
"WinampVizV2",
|
||||||
"ZenkaiPoseMap",
|
|
||||||
"ZenkaiPrompt",
|
"ZenkaiPrompt",
|
||||||
"ZenkaiPromptV2",
|
"ZenkaiPromptV2",
|
||||||
"ZenkaiPromptV3",
|
"ZenkaiPromptV3",
|
||||||
@@ -6981,7 +6966,6 @@
|
|||||||
"SUPIR Sampler \ud83d\udcacED",
|
"SUPIR Sampler \ud83d\udcacED",
|
||||||
"Save Image \ud83d\udd14ED",
|
"Save Image \ud83d\udd14ED",
|
||||||
"Simple Text \ud83d\udcacED",
|
"Simple Text \ud83d\udcacED",
|
||||||
"TIPO Script \ud83d\udcacED",
|
|
||||||
"Ultimate SD Upscale \ud83d\udcacED",
|
"Ultimate SD Upscale \ud83d\udcacED",
|
||||||
"Wildcard Encode \ud83d\udcacED"
|
"Wildcard Encode \ud83d\udcacED"
|
||||||
],
|
],
|
||||||
@@ -10329,7 +10313,6 @@
|
|||||||
"ConvertRasterToVectorBW",
|
"ConvertRasterToVectorBW",
|
||||||
"ConvertRasterToVectorColor",
|
"ConvertRasterToVectorColor",
|
||||||
"ConvertVectorToRaster",
|
"ConvertVectorToRaster",
|
||||||
"SVGPreview",
|
|
||||||
"SaveSVG"
|
"SaveSVG"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
@@ -11665,11 +11648,10 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/austinbrown34/ComfyUI-IO-Helpers": [
|
"https://github.com/austinbrown34/ComfyUI-IO-Helpers": [
|
||||||
[
|
[
|
||||||
"EncodedPromptFromFile",
|
"Encoded Prompt from File",
|
||||||
"EncodedPromptToFile",
|
"Encoded Prompt to File",
|
||||||
"IO_LoadImage",
|
"Sampled Latents from File",
|
||||||
"SampledLatentsFromFile",
|
"Sampled Latents to File"
|
||||||
"SampledLatentsToFile"
|
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI-IO-Helpers"
|
"title_aux": "ComfyUI-IO-Helpers"
|
||||||
@@ -11827,7 +11809,6 @@
|
|||||||
"SP_HiresGen_HiresCfg",
|
"SP_HiresGen_HiresCfg",
|
||||||
"SP_HiresGen_Sharpen",
|
"SP_HiresGen_Sharpen",
|
||||||
"SP_HunyuanLoader",
|
"SP_HunyuanLoader",
|
||||||
"SP_ImpactSwitchCombo",
|
|
||||||
"SP_KSampler",
|
"SP_KSampler",
|
||||||
"SP_KSamplerSelect",
|
"SP_KSamplerSelect",
|
||||||
"SP_KoboldCpp",
|
"SP_KoboldCpp",
|
||||||
@@ -15052,9 +15033,6 @@
|
|||||||
"DavchaCLIPTextEncode",
|
"DavchaCLIPTextEncode",
|
||||||
"DavchaConditioningConcat",
|
"DavchaConditioningConcat",
|
||||||
"DavchaEmptyLatentImage",
|
"DavchaEmptyLatentImage",
|
||||||
"DavchaLLM",
|
|
||||||
"DavchaLLMAdvanced",
|
|
||||||
"DavchaLoadLLM",
|
|
||||||
"DavchaLoadVideo",
|
"DavchaLoadVideo",
|
||||||
"DavchaMaskImage",
|
"DavchaMaskImage",
|
||||||
"DavchaModelMergeSD1",
|
"DavchaModelMergeSD1",
|
||||||
@@ -17576,11 +17554,12 @@
|
|||||||
"BiRefNet",
|
"BiRefNet",
|
||||||
"ControlImagePreprocessor",
|
"ControlImagePreprocessor",
|
||||||
"ControlNetModelLoader",
|
"ControlNetModelLoader",
|
||||||
"DiffusersMVModelMakeup",
|
|
||||||
"DiffusersMVPipelineLoader",
|
|
||||||
"DiffusersMVSampler",
|
"DiffusersMVSampler",
|
||||||
"DiffusersMVSchedulerLoader",
|
"DiffusersModelMakeup",
|
||||||
"DiffusersMVVaeLoader",
|
"DiffusersPipelineLoader",
|
||||||
|
"DiffusersSampler",
|
||||||
|
"DiffusersSchedulerLoader",
|
||||||
|
"DiffusersVaeLoader",
|
||||||
"ImagePreprocessor",
|
"ImagePreprocessor",
|
||||||
"LdmPipelineLoader",
|
"LdmPipelineLoader",
|
||||||
"LdmVaeLoader",
|
"LdmVaeLoader",
|
||||||
@@ -21778,7 +21757,6 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/lum3on/comfyui_LLM_Polymath": [
|
"https://github.com/lum3on/comfyui_LLM_Polymath": [
|
||||||
[
|
[
|
||||||
"polymath_SaveAbsolute",
|
|
||||||
"polymath_chat",
|
"polymath_chat",
|
||||||
"polymath_scraper"
|
"polymath_scraper"
|
||||||
],
|
],
|
||||||
@@ -23308,7 +23286,6 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/olduvai-jp/ComfyUI-HfLoader": [
|
"https://github.com/olduvai-jp/ComfyUI-HfLoader": [
|
||||||
[
|
[
|
||||||
"ControlNet Loader From HF",
|
|
||||||
"Lora Loader From HF"
|
"Lora Loader From HF"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
@@ -24803,7 +24780,6 @@
|
|||||||
"FlipStreamSwitchLatent",
|
"FlipStreamSwitchLatent",
|
||||||
"FlipStreamTextBox",
|
"FlipStreamTextBox",
|
||||||
"FlipStreamTextReplace",
|
"FlipStreamTextReplace",
|
||||||
"FlipStreamVideoInput",
|
|
||||||
"FlipStreamViewer"
|
"FlipStreamViewer"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -291,16 +291,6 @@
|
|||||||
],
|
],
|
||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "Example of using ComfyUI Toolbar to Toggle ComfyUI links on/off"
|
"description": "Example of using ComfyUI Toolbar to Toggle ComfyUI links on/off"
|
||||||
},
|
|
||||||
{
|
|
||||||
"author": "xhiroga",
|
|
||||||
"title": "ComfyUI-TypeScript-CustomNode",
|
|
||||||
"reference": "https://github.com/xhiroga/ComfyUI-TypeScript-CustomNode",
|
|
||||||
"files": [
|
|
||||||
"https://github.com/xhiroga/ComfyUI-TypeScript-CustomNode"
|
|
||||||
],
|
|
||||||
"install_type": "git-clone",
|
|
||||||
"description": "This project is generated from xhiroga/ComfyUI-TypeScript-CustomNode"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -475,6 +475,7 @@ def read_downgrade_blacklist():
|
|||||||
|
|
||||||
read_downgrade_blacklist()
|
read_downgrade_blacklist()
|
||||||
|
|
||||||
|
print("[DBG] point1")
|
||||||
|
|
||||||
def check_bypass_ssl():
|
def check_bypass_ssl():
|
||||||
try:
|
try:
|
||||||
@@ -487,12 +488,14 @@ def check_bypass_ssl():
|
|||||||
|
|
||||||
check_bypass_ssl()
|
check_bypass_ssl()
|
||||||
|
|
||||||
|
print("[DBG] point2")
|
||||||
|
|
||||||
# Perform install
|
# Perform install
|
||||||
processed_install = set()
|
processed_install = set()
|
||||||
script_list_path = os.path.join(folder_paths.user_directory, "default", "ComfyUI-Manager", "startup-scripts", "install-scripts.txt")
|
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())
|
||||||
|
|
||||||
|
print("[DBG] point3")
|
||||||
|
|
||||||
def is_installed(name):
|
def is_installed(name):
|
||||||
name = name.strip()
|
name = name.strip()
|
||||||
@@ -544,6 +547,7 @@ def is_installed(name):
|
|||||||
|
|
||||||
return True # prevent downgrade
|
return True # prevent downgrade
|
||||||
|
|
||||||
|
print("[DBG] point4")
|
||||||
|
|
||||||
if os.path.exists(restore_snapshot_path):
|
if os.path.exists(restore_snapshot_path):
|
||||||
try:
|
try:
|
||||||
@@ -593,6 +597,8 @@ if os.path.exists(restore_snapshot_path):
|
|||||||
def execute_lazy_install_script(repo_path, executable):
|
def execute_lazy_install_script(repo_path, executable):
|
||||||
global processed_install
|
global processed_install
|
||||||
|
|
||||||
|
print("[DBG] point5")
|
||||||
|
|
||||||
install_script_path = os.path.join(repo_path, "install.py")
|
install_script_path = os.path.join(repo_path, "install.py")
|
||||||
requirements_path = os.path.join(repo_path, "requirements.txt")
|
requirements_path = os.path.join(repo_path, "requirements.txt")
|
||||||
|
|
||||||
@@ -625,6 +631,8 @@ def execute_lazy_cnr_switch(target, zip_url, from_path, to_path, no_deps, custom
|
|||||||
import uuid
|
import uuid
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
|
print("[DBG] point6")
|
||||||
|
|
||||||
# 1. download
|
# 1. download
|
||||||
archive_name = f"CNR_temp_{str(uuid.uuid4())}.zip" # should be unpredictable name - security precaution
|
archive_name = f"CNR_temp_{str(uuid.uuid4())}.zip" # should be unpredictable name - security precaution
|
||||||
download_path = os.path.join(custom_nodes_path, archive_name)
|
download_path = os.path.join(custom_nodes_path, archive_name)
|
||||||
@@ -674,12 +682,16 @@ def execute_lazy_cnr_switch(target, zip_url, from_path, to_path, no_deps, custom
|
|||||||
|
|
||||||
def execute_migration(moves):
|
def execute_migration(moves):
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
|
print("[DBG] point7")
|
||||||
|
|
||||||
for x in moves:
|
for x in moves:
|
||||||
if os.path.exists(x[0]) and not os.path.exists(x[1]):
|
if os.path.exists(x[0]) and not os.path.exists(x[1]):
|
||||||
shutil.move(x[0], x[1])
|
shutil.move(x[0], x[1])
|
||||||
print(f"[ComfyUI-Manager] MIGRATION: '{x[0]}' -> '{x[1]}'")
|
print(f"[ComfyUI-Manager] MIGRATION: '{x[0]}' -> '{x[1]}'")
|
||||||
|
|
||||||
script_executed = False
|
|
||||||
|
print("[DBG] point8")
|
||||||
|
|
||||||
# Check if script_list_path exists
|
# Check if script_list_path exists
|
||||||
if os.path.exists(script_list_path):
|
if os.path.exists(script_list_path):
|
||||||
@@ -734,43 +746,25 @@ if os.path.exists(script_list_path):
|
|||||||
|
|
||||||
# Remove the script_list_path file
|
# Remove the script_list_path file
|
||||||
if os.path.exists(script_list_path):
|
if os.path.exists(script_list_path):
|
||||||
script_executed = True
|
|
||||||
os.remove(script_list_path)
|
os.remove(script_list_path)
|
||||||
|
|
||||||
print("\n[ComfyUI-Manager] Startup script completed.")
|
print("\n[ComfyUI-Manager] Startup script completed.")
|
||||||
print("#######################################################################\n")
|
print("#######################################################################\n")
|
||||||
|
|
||||||
|
print("[DBG] point9")
|
||||||
|
|
||||||
pip_fixer.fix_broken()
|
pip_fixer.fix_broken()
|
||||||
|
|
||||||
|
print("[DBG] point10")
|
||||||
|
|
||||||
del processed_install
|
del processed_install
|
||||||
del pip_fixer
|
del pip_fixer
|
||||||
manager_util.clear_pip_cache()
|
manager_util.clear_pip_cache()
|
||||||
|
|
||||||
if script_executed:
|
print("[DBG] point11")
|
||||||
# Restart
|
|
||||||
print("[ComfyUI-Manager] Restarting to reapply dependency installation.")
|
|
||||||
|
|
||||||
if '__COMFY_CLI_SESSION__' in os.environ:
|
|
||||||
with open(os.path.join(os.environ['__COMFY_CLI_SESSION__'] + '.reboot'), 'w'):
|
|
||||||
pass
|
|
||||||
|
|
||||||
print("--------------------------------------------------------------------------\n")
|
|
||||||
exit(0)
|
|
||||||
else:
|
|
||||||
sys_argv = sys.argv.copy()
|
|
||||||
|
|
||||||
if sys.platform.startswith('win32'):
|
|
||||||
cmds = ['"' + sys.executable + '"', '"' + sys_argv[0] + '"'] + sys_argv[1:]
|
|
||||||
else:
|
|
||||||
cmds = [sys.executable] + sys_argv
|
|
||||||
|
|
||||||
print(f"Command: {cmds}", flush=True)
|
|
||||||
print("--------------------------------------------------------------------------\n")
|
|
||||||
|
|
||||||
os.execv(sys.executable, cmds)
|
|
||||||
|
|
||||||
|
|
||||||
def check_windows_event_loop_policy():
|
def check_windows_event_loop_policy():
|
||||||
|
print("[DBG] point12")
|
||||||
try:
|
try:
|
||||||
import configparser
|
import configparser
|
||||||
config = configparser.ConfigParser()
|
config = configparser.ConfigParser()
|
||||||
@@ -788,6 +782,10 @@ def check_windows_event_loop_policy():
|
|||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
print("[DBG] point13")
|
||||||
|
|
||||||
if platform.system() == 'Windows':
|
if platform.system() == 'Windows':
|
||||||
check_windows_event_loop_policy()
|
check_windows_event_loop_policy()
|
||||||
|
|
||||||
|
|
||||||
|
print("[DBG] point14")
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "comfyui-manager"
|
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."
|
description = "ComfyUI-Manager provides features to install and manage custom nodes for ComfyUI, as well as various functionalities to assist with ComfyUI."
|
||||||
version = "3.21.3"
|
version = "3.21"
|
||||||
license = { file = "LICENSE.txt" }
|
license = { file = "LICENSE.txt" }
|
||||||
dependencies = ["GitPython", "PyGithub", "matrix-client==0.4.0", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions"]
|
dependencies = ["GitPython", "PyGithub", "matrix-client==0.4.0", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions"]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user