Compare commits

...

5 Commits

Author SHA1 Message Date
Dr.Lt.Data
abc26cf906 fixed: pre_startup - restart if script is executed
fixed: normalize cnr versions via StrictVersion
- 2.5 and 2.5.0 were regarded as different version
2025-02-15 17:27:09 +09:00
Dr.Lt.Data
12351bada7 improved: is_local_mode - use ipaddress module instead of string match
refactor: get_config() - ensure lowercase option when returning dict

https://github.com/ltdrdata/ComfyUI-Manager/issues/1546
2025-02-15 10:02:25 +09:00
Dr.Lt.Data
a6816d53d7 update DB 2025-02-15 09:47:42 +09:00
Dr.Lt.Data
3b0709f5f2 improved: cm-cli.py save-snapshot - validate output path
fixed: Update all - Properly display the results of the ComfyUI update.
fixed: Update all - An issue where the action results of the custom nodes manager were reflected in the main dialog.

https://github.com/ltdrdata/ComfyUI-Manager/issues/1548
2025-02-15 09:23:04 +09:00
Dr.Lt.Data
d7af7e2917 update DB 2025-02-14 07:43:16 +09:00
16 changed files with 2973 additions and 2902 deletions

View File

@@ -1021,7 +1021,17 @@ def save_snapshot(
] = True,
):
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}`")

View File

@@ -8745,7 +8745,7 @@
"https://github.com/olduvai-jp/ComfyUI-HfLoader"
],
"install_type": "git-clone",
"description": "Nodes:Lora Loader From HF"
"description": "A simple and easy to use Hugging Face model loader."
},
{
"author": "AiMiDi",
@@ -13337,6 +13337,16 @@
"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."
},
{
"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",
"title": "ComfyUI-Paint3D-Nodes",

View File

@@ -1114,6 +1114,15 @@
"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": [
[
"APZmedia Fast image save"
@@ -1907,6 +1916,7 @@
"ComfyUIDeployExternalAudio",
"ComfyUIDeployExternalBoolean",
"ComfyUIDeployExternalCheckpoint",
"ComfyUIDeployExternalEXR",
"ComfyUIDeployExternalFaceModel",
"ComfyUIDeployExternalImage",
"ComfyUIDeployExternalImageAlpha",
@@ -6457,6 +6467,7 @@
"BlackBarsV1",
"BlackBarsV2",
"BlackBarsV3",
"BracketCleaner",
"CRT_Effect_v1",
"CathodeRayEffect",
"ClassicFilmEffect",
@@ -6509,6 +6520,7 @@
"ParametricMeshGenV2",
"ProjectFilePathNode",
"PromptCleaner",
"PromptCleanerV2",
"PromptDupeRemover",
"PromptDupeRemoverV2",
"PromptInject",
@@ -6550,10 +6562,13 @@
"VideoTrails",
"VideoTrailsV2",
"VideoVignettingV1",
"VoiceEffects",
"VoiceEffects2",
"WaveletCompose",
"WaveletDecompose",
"WinampViz",
"WinampVizV2",
"ZenkaiPoseMap",
"ZenkaiPrompt",
"ZenkaiPromptV2",
"ZenkaiPromptV3",
@@ -6966,6 +6981,7 @@
"SUPIR Sampler \ud83d\udcacED",
"Save Image \ud83d\udd14ED",
"Simple Text \ud83d\udcacED",
"TIPO Script \ud83d\udcacED",
"Ultimate SD Upscale \ud83d\udcacED",
"Wildcard Encode \ud83d\udcacED"
],
@@ -10313,6 +10329,7 @@
"ConvertRasterToVectorBW",
"ConvertRasterToVectorColor",
"ConvertVectorToRaster",
"SVGPreview",
"SaveSVG"
],
{
@@ -11648,10 +11665,11 @@
],
"https://github.com/austinbrown34/ComfyUI-IO-Helpers": [
[
"Encoded Prompt from File",
"Encoded Prompt to File",
"Sampled Latents from File",
"Sampled Latents to File"
"EncodedPromptFromFile",
"EncodedPromptToFile",
"IO_LoadImage",
"SampledLatentsFromFile",
"SampledLatentsToFile"
],
{
"title_aux": "ComfyUI-IO-Helpers"
@@ -11809,6 +11827,7 @@
"SP_HiresGen_HiresCfg",
"SP_HiresGen_Sharpen",
"SP_HunyuanLoader",
"SP_ImpactSwitchCombo",
"SP_KSampler",
"SP_KSamplerSelect",
"SP_KoboldCpp",
@@ -15033,6 +15052,9 @@
"DavchaCLIPTextEncode",
"DavchaConditioningConcat",
"DavchaEmptyLatentImage",
"DavchaLLM",
"DavchaLLMAdvanced",
"DavchaLoadLLM",
"DavchaLoadVideo",
"DavchaMaskImage",
"DavchaModelMergeSD1",
@@ -17554,12 +17576,11 @@
"BiRefNet",
"ControlImagePreprocessor",
"ControlNetModelLoader",
"DiffusersMVModelMakeup",
"DiffusersMVPipelineLoader",
"DiffusersMVSampler",
"DiffusersModelMakeup",
"DiffusersPipelineLoader",
"DiffusersSampler",
"DiffusersSchedulerLoader",
"DiffusersVaeLoader",
"DiffusersMVSchedulerLoader",
"DiffusersMVVaeLoader",
"ImagePreprocessor",
"LdmPipelineLoader",
"LdmVaeLoader",
@@ -21757,6 +21778,7 @@
],
"https://github.com/lum3on/comfyui_LLM_Polymath": [
[
"polymath_SaveAbsolute",
"polymath_chat",
"polymath_scraper"
],
@@ -23286,6 +23308,7 @@
],
"https://github.com/olduvai-jp/ComfyUI-HfLoader": [
[
"ControlNet Loader From HF",
"Lora Loader From HF"
],
{
@@ -24780,6 +24803,7 @@
"FlipStreamSwitchLatent",
"FlipStreamTextBox",
"FlipStreamTextReplace",
"FlipStreamVideoInput",
"FlipStreamViewer"
],
{

View File

File diff suppressed because it is too large Load Diff

View File

@@ -173,7 +173,10 @@ def read_cnr_info(fullpath):
project = data.get('project', {})
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', {})
repository = urls.get('Repository')

View File

@@ -42,7 +42,7 @@ import manager_downloader
from node_package import InstalledNodePackage
version_code = [3, 21]
version_code = [3, 21, 3]
version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '')
@@ -513,7 +513,10 @@ class UnifiedManager:
if info:
cnr = self.cnr_map.get(info['id'])
if cnr:
return {'id': cnr['id'], 'cnr': cnr, 'ver': info['version']}
# normalize version
# for example: 2.5 -> 2.5.0
ver = str(manager_util.StrictVersion(info['version']))
return {'id': cnr['id'], 'cnr': cnr, 'ver': ver}
else:
return None
else:
@@ -1583,16 +1586,6 @@ def read_config():
config = configparser.ConfigParser()
config.read(manager_config_path)
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
def get_bool(key, default_value):
@@ -1600,26 +1593,25 @@ def read_config():
return {
'http_channel_enabled': get_bool('http_channel_enabled', False),
'preview_method': default_conf.get('preview_method', manager_funcs.get_current_preview_method()),
'preview_method': default_conf.get('preview_method', manager_funcs.get_current_preview_method()).lower(),
'git_exe': default_conf.get('git_exe', ''),
'use_uv': get_bool('use_uv', False),
'channel_url': default_conf.get('channel_url', DEFAULT_CHANNEL),
'default_cache_as_channel_url': get_bool('default_cache_as_channel_url', False),
'share_option': default_conf.get('share_option', 'all'),
'share_option': default_conf.get('share_option', 'all').lower(),
'bypass_ssl': get_bool('bypass_ssl', False),
'file_logging': get_bool('file_logging', True),
'component_policy': default_conf.get('component_policy', 'workflow'),
'component_policy': default_conf.get('component_policy', 'workflow').lower(),
'windows_selector_event_loop_policy': get_bool('windows_selector_event_loop_policy', False),
'model_download_by_agent': get_bool('model_download_by_agent', False),
'downgrade_blacklist': default_conf.get('downgrade_blacklist', ''),
'downgrade_blacklist': default_conf.get('downgrade_blacklist', '').lower(),
'skip_migration_check': get_bool('skip_migration_check', False),
'always_lazy_install': get_bool('always_lazy_install', False),
'network_mode': default_conf.get('network_mode', 'public'),
'security_level': security_level,
'network_mode': default_conf.get('network_mode', 'public').lower(),
'security_level': default_conf.get('security_level', 'normal').lower(),
}
except Exception:
traceback.print_exc()
manager_util.use_uv = False
return {
'http_channel_enabled': False,

View File

@@ -55,8 +55,14 @@ def handle_stream(stream, prefix):
from comfy.cli_args import args
import latent_preview
def is_loopback(address):
import ipaddress
try:
return ipaddress.ip_address(address).is_loopback
except ValueError:
return False
is_local_mode = args.listen.startswith('127.') or args.listen.startswith('local.')
is_local_mode = is_loopback(args.listen)
model_dir_name_map = {
@@ -85,11 +91,11 @@ def is_allowed_security_level(level):
return False
elif level == 'high':
if is_local_mode:
return core.get_config()['security_level'].lower() in ['weak', 'normal-']
return core.get_config()['security_level'] in ['weak', 'normal-']
else:
return core.get_config()['security_level'].lower() == 'weak'
return core.get_config()['security_level'] == 'weak'
elif level == 'middle':
return core.get_config()['security_level'].lower() in ['weak', 'normal', 'normal-']
return core.get_config()['security_level'] in ['weak', 'normal', 'normal-']
else:
return True
@@ -599,6 +605,7 @@ async def task_worker():
nodepack_result[ui_id] = msg
ui_target = "main"
elif kind == 'update-comfyui':
nodepack_result['comfyui'] = msg
ui_target = "main"
else:
nodepack_result[ui_id] = msg

View File

@@ -698,16 +698,24 @@ async function onQueueStatus(event) {
return;
}
is_updating_all = false;
let success_list = [];
let failed_list = [];
let comfyui_state = null;
for(let k in event.detail.nodepack_result){
let v = event.detail.nodepack_result[k];
if(v == 'success')
success_list.push(k);
if(v == 'success') {
if(k == 'comfyui')
comfyui_state = 'success';
else
success_list.push(k);
}
else if(v == 'skip') {
// do nothing
if(k == 'comfyui')
comfyui_state = 'skip';
}
else
failed_list.push(k);
@@ -715,18 +723,31 @@ async function onQueueStatus(event) {
let msg = "";
if(success_list.length == 0) {
if(success_list.length == 0 && comfyui_state != 'success') {
if(failed_list.length == 0) {
msg += "All custom nodes are already up to date.";
}
}
else {
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>";
for(let x in success_list) {
msg += '<li>'+success_list[x]+'</li>';
if(comfyui_state == 'success') {
msg += "ComfyUI is updated.<BR><BR>";
}
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);
}

View File

@@ -13,6 +13,16 @@
{
"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",
"title": "ComfyUI_pxtool [WIP]",

View File

@@ -178,7 +178,6 @@
"https://github.com/807502278/ComfyUI_TensorRT_Merge": [
[
"BiRefNet2_tensort",
"BiRefNet_ModelLoader_TRT",
"BiRefNet_TRT",
"Building_TRT",
"Custom_Building_TRT",
@@ -189,6 +188,7 @@
"UpscalerTensorrt",
"YoloNasPoseTensorrt",
"load_BiRefNet2_tensort",
"load_BiRefNet_TRT",
"load_DepthAnything_Tensorrt",
"load_Dwpos_Tensorrt"
],
@@ -940,9 +940,11 @@
"DeepSeekImageGeneration",
"DeepSeekImageUnderstanding",
"DeepSeekModelLoader",
"GoogleDriveUpload",
"ImagePreprocessor",
"LLM_Loader",
"OpenAICompatibleLoader"
"OpenAICompatibleLoader",
"VideoFileUploader"
],
{
"title_aux": "ComfyUI-DeepSeek_Toolkit [WIP]"
@@ -1427,7 +1429,8 @@
[
"List Image 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]"
@@ -3096,6 +3099,7 @@
"DanbooruCharacterTag",
"E621CharacterTag",
"NegativeTag",
"PX_Seed",
"QualityTag",
"RandomArtists",
"RandomArtistsAdvanced",
@@ -3105,6 +3109,14 @@
"title_aux": "ComfyUI_pxtool [WIP]"
}
],
"https://github.com/hiusdev/ComfyUI_Lah_Toffee": [
[
"LoadVideoRandom"
],
{
"title_aux": "ComfyUI_Lah_Toffee"
}
],
"https://github.com/horidream/ComfyUI-Horidream": [
[
"PassThroughWithSound"
@@ -4028,6 +4040,7 @@
],
"https://github.com/lum3on/comfyui_LLM_Polymath": [
[
"polymath_SaveAbsolute",
"polymath_chat",
"polymath_scraper"
],

View File

File diff suppressed because it is too large Load Diff

View File

@@ -11,6 +11,16 @@
{
"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",
@@ -683,79 +693,6 @@
],
"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."
},
{
"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."
}
]
}

View File

@@ -1114,6 +1114,15 @@
"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": [
[
"APZmedia Fast image save"
@@ -1907,6 +1916,7 @@
"ComfyUIDeployExternalAudio",
"ComfyUIDeployExternalBoolean",
"ComfyUIDeployExternalCheckpoint",
"ComfyUIDeployExternalEXR",
"ComfyUIDeployExternalFaceModel",
"ComfyUIDeployExternalImage",
"ComfyUIDeployExternalImageAlpha",
@@ -6457,6 +6467,7 @@
"BlackBarsV1",
"BlackBarsV2",
"BlackBarsV3",
"BracketCleaner",
"CRT_Effect_v1",
"CathodeRayEffect",
"ClassicFilmEffect",
@@ -6509,6 +6520,7 @@
"ParametricMeshGenV2",
"ProjectFilePathNode",
"PromptCleaner",
"PromptCleanerV2",
"PromptDupeRemover",
"PromptDupeRemoverV2",
"PromptInject",
@@ -6550,10 +6562,13 @@
"VideoTrails",
"VideoTrailsV2",
"VideoVignettingV1",
"VoiceEffects",
"VoiceEffects2",
"WaveletCompose",
"WaveletDecompose",
"WinampViz",
"WinampVizV2",
"ZenkaiPoseMap",
"ZenkaiPrompt",
"ZenkaiPromptV2",
"ZenkaiPromptV3",
@@ -6966,6 +6981,7 @@
"SUPIR Sampler \ud83d\udcacED",
"Save Image \ud83d\udd14ED",
"Simple Text \ud83d\udcacED",
"TIPO Script \ud83d\udcacED",
"Ultimate SD Upscale \ud83d\udcacED",
"Wildcard Encode \ud83d\udcacED"
],
@@ -10313,6 +10329,7 @@
"ConvertRasterToVectorBW",
"ConvertRasterToVectorColor",
"ConvertVectorToRaster",
"SVGPreview",
"SaveSVG"
],
{
@@ -11648,10 +11665,11 @@
],
"https://github.com/austinbrown34/ComfyUI-IO-Helpers": [
[
"Encoded Prompt from File",
"Encoded Prompt to File",
"Sampled Latents from File",
"Sampled Latents to File"
"EncodedPromptFromFile",
"EncodedPromptToFile",
"IO_LoadImage",
"SampledLatentsFromFile",
"SampledLatentsToFile"
],
{
"title_aux": "ComfyUI-IO-Helpers"
@@ -11809,6 +11827,7 @@
"SP_HiresGen_HiresCfg",
"SP_HiresGen_Sharpen",
"SP_HunyuanLoader",
"SP_ImpactSwitchCombo",
"SP_KSampler",
"SP_KSamplerSelect",
"SP_KoboldCpp",
@@ -15033,6 +15052,9 @@
"DavchaCLIPTextEncode",
"DavchaConditioningConcat",
"DavchaEmptyLatentImage",
"DavchaLLM",
"DavchaLLMAdvanced",
"DavchaLoadLLM",
"DavchaLoadVideo",
"DavchaMaskImage",
"DavchaModelMergeSD1",
@@ -17554,12 +17576,11 @@
"BiRefNet",
"ControlImagePreprocessor",
"ControlNetModelLoader",
"DiffusersMVModelMakeup",
"DiffusersMVPipelineLoader",
"DiffusersMVSampler",
"DiffusersModelMakeup",
"DiffusersPipelineLoader",
"DiffusersSampler",
"DiffusersSchedulerLoader",
"DiffusersVaeLoader",
"DiffusersMVSchedulerLoader",
"DiffusersMVVaeLoader",
"ImagePreprocessor",
"LdmPipelineLoader",
"LdmVaeLoader",
@@ -21757,6 +21778,7 @@
],
"https://github.com/lum3on/comfyui_LLM_Polymath": [
[
"polymath_SaveAbsolute",
"polymath_chat",
"polymath_scraper"
],
@@ -23286,6 +23308,7 @@
],
"https://github.com/olduvai-jp/ComfyUI-HfLoader": [
[
"ControlNet Loader From HF",
"Lora Loader From HF"
],
{
@@ -24780,6 +24803,7 @@
"FlipStreamSwitchLatent",
"FlipStreamTextBox",
"FlipStreamTextReplace",
"FlipStreamVideoInput",
"FlipStreamViewer"
],
{

View File

@@ -291,6 +291,16 @@
],
"install_type": "git-clone",
"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"
}
]
}

View File

@@ -679,6 +679,7 @@ 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):
@@ -733,6 +734,7 @@ if os.path.exists(script_list_path):
# Remove the script_list_path file
if os.path.exists(script_list_path):
script_executed = True
os.remove(script_list_path)
print("\n[ComfyUI-Manager] Startup script completed.")
@@ -744,6 +746,29 @@ del processed_install
del pip_fixer
manager_util.clear_pip_cache()
if script_executed:
# 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():
try:

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