diff --git a/cm-cli.py b/cm-cli.py
index 52ca8424..f92b1d22 100644
--- a/cm-cli.py
+++ b/cm-cli.py
@@ -31,8 +31,7 @@ if comfy_path is None:
except:
print("\n[bold yellow]WARN: The `COMFYUI_PATH` environment variable is not set. Assuming `custom_nodes/ComfyUI-Manager/../../` as the ComfyUI path.[/bold yellow]", file=sys.stderr)
comfy_path = os.path.abspath(os.path.join(manager_util.comfyui_manager_path, '..', '..'))
-
-sys.path.append(comfy_path)
+ sys.path.append(comfy_path)
import utils.extra_config
import cm_global
diff --git a/custom-node-list.json b/custom-node-list.json
index 90866af2..17360546 100755
--- a/custom-node-list.json
+++ b/custom-node-list.json
@@ -14202,17 +14202,6 @@
"install_type": "git-clone",
"description": "multiline text node that strips c-style comments (i.e.'//' and '/* ... */') before passing output string downstream"
},
- {
- "author": "noarche",
- "title": "noarche/Color Enhance",
- "id": "color-enhance",
- "reference": "https://github.com/noarche/sd-webui-color-enhance",
- "files": [
- "https://github.com/noarche/sd-webui-color-enhance"
- ],
- "install_type": "git-clone",
- "description": "Script for [a/AUTOMATIC1111/stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui) and node for ComfyUI to enhance colors.\nThis is the same algorithm GIMP/GEGL uses for color enhancement. The gist of this implementation is that it converts the color space to [CIELCh(ab) and normalizes the chroma (or '[a/colorfulness](https://en.wikipedia.org/wiki/Colorfulness)') component. Original source can be found in the link below."
- },
{
"author": "emojiiii",
"title": "ComfyUI_Emojiiii_Custom_Nodes",
diff --git a/glob/manager_core.py b/glob/manager_core.py
index 5a21f462..dbdb0b7c 100644
--- a/glob/manager_core.py
+++ b/glob/manager_core.py
@@ -42,7 +42,7 @@ import manager_downloader
from node_package import InstalledNodePackage
-version_code = [3, 21, 5]
+version_code = [3, 22]
version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '')
@@ -345,6 +345,7 @@ class ManagedResult:
self.msg = None
self.target = None
self.postinstall = lambda: True
+ self.ver = None
def append(self, item):
self.items.append(item)
@@ -366,6 +367,10 @@ class ManagedResult:
self.postinstall = postinstall
return self
+ def with_ver(self, ver):
+ self.ver = ver
+ return self
+
class UnifiedManager:
def __init__(self):
@@ -789,6 +794,7 @@ class UnifiedManager:
node_id = v['id']
else:
node_id = v['files'][0].split('/')[-1]
+ v['repository'] = v['files'][0]
res[node_id] = v
elif len(v['files']) > 1:
res[v['files'][0]] = v # A custom node composed of multiple url is treated as a single repository with one representative path
@@ -1334,14 +1340,14 @@ class UnifiedManager:
version_spec = self.resolve_unspecified_version(node_id, guess_mode='active')
if version_spec is None:
- return ManagedResult('update').fail(f'Update not available: {node_id}@{version_spec}')
+ return ManagedResult('update').fail(f'Update not available: {node_id}@{version_spec}').with_ver(version_spec)
if version_spec == 'nightly':
- return self.repo_update(self.active_nodes[node_id][1], instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall).with_target('nightly')
+ return self.repo_update(self.active_nodes[node_id][1], instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall).with_target('nightly').with_ver('nightly')
elif version_spec == 'unknown':
- return self.repo_update(self.unknown_active_nodes[node_id][1], instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall).with_target('unknown')
+ return self.repo_update(self.unknown_active_nodes[node_id][1], instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall).with_target('unknown').with_ver('unknown')
else:
- return self.cnr_switch_version(node_id, instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall)
+ return self.cnr_switch_version(node_id, instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall).with_ver('cnr')
async def install_by_id(self, node_id, version_spec=None, channel=None, mode=None, instant_execution=False, no_deps=False, return_postinstall=False):
"""
diff --git a/glob/manager_server.py b/glob/manager_server.py
index 9be37b64..85c224f8 100644
--- a/glob/manager_server.py
+++ b/glob/manager_server.py
@@ -416,25 +416,41 @@ async def task_worker():
traceback.print_exc()
return f"Installation failed:\n{node_spec_str}"
- async def do_update(item) -> str:
+ async def do_update(item):
ui_id, node_name, node_ver = item
try:
res = core.unified_manager.unified_update(node_name, node_ver)
+ if res.ver == 'unknown':
+ url = core.unified_manager.unknown_active_nodes[node_name][0]
+ title = os.path.basename(url)
+ else:
+ url = core.unified_manager.cnr_map[node_name].get('repository')
+ title = core.unified_manager.cnr_map[node_name]['name']
+
manager_util.clear_pip_cache()
+ if url is not None:
+ base_res = {'url': url, 'title': title}
+ else:
+ base_res = {'title': title}
+
if res.result:
if res.action == 'skip':
- return 'skip'
+ base_res['msg'] = 'skip'
+ return base_res
else:
- return 'success'
+ base_res['msg'] = 'success'
+ return base_res
+ base_res['msg'] = f"An error occurred while updating '{node_name}'."
logging.error(f"\nERROR: An error occurred while updating '{node_name}'.")
+ return base_res
except Exception:
traceback.print_exc()
- return f"An error occurred while updating '{node_name}'."
+ return {'msg':f"An error occurred while updating '{node_name}'."}
async def do_update_comfyui() -> str:
try:
@@ -607,6 +623,9 @@ async def task_worker():
elif kind == 'update-comfyui':
nodepack_result['comfyui'] = msg
ui_target = "main"
+ elif kind == 'update':
+ nodepack_result[ui_id] = msg['msg']
+ ui_target = "nodepack_manager"
else:
nodepack_result[ui_id] = msg
ui_target = "nodepack_manager"
@@ -711,6 +730,15 @@ async def update_all(request):
update_item = k, k, v[0]
task_queue.put(("update-main", update_item))
+ for k, v in core.unified_manager.unknown_active_nodes.items():
+ if k == 'comfyui-manager':
+ # skip updating comfyui-manager if desktop version
+ if os.environ.get('__COMFYUI_DESKTOP_VERSION__'):
+ continue
+
+ update_item = k, k, 'unknown'
+ task_queue.put(("update-main", update_item))
+
return web.Response(status=200)
diff --git a/js/comfyui-manager.js b/js/comfyui-manager.js
index 414f726d..4d070c32 100644
--- a/js/comfyui-manager.js
+++ b/js/comfyui-manager.js
@@ -707,17 +707,15 @@ async function onQueueStatus(event) {
for(let k in event.detail.nodepack_result){
let v = event.detail.nodepack_result[k];
- if(v == 'success') {
- if(k == 'comfyui')
- comfyui_state = 'success';
- else
- success_list.push(k);
+ if(k == 'comfyui') {
+ comfyui_state = v;
+ continue;
}
- else if(v == 'skip') {
- if(k == 'comfyui')
- comfyui_state = 'skip';
+
+ if(v.msg == 'success') {
+ success_list.push(k);
}
- else
+ else if(v.msg != 'skip')
failed_list.push(k);
}
@@ -737,14 +735,22 @@ async function onQueueStatus(event) {
else if(comfyui_state == 'skip') {
msg += "ComfyUI is already up-to-date.
"
}
+ else if(comfyui_state != null) {
+ msg += "Failed to update ComfyUI.
"
+ }
if(success_list.length > 0) {
msg += "The following custom nodes have been updated: