mirror of
https://github.com/Comfy-Org/ComfyUI-Manager.git
synced 2026-11-05 07:47:25 +00:00
[PR #2693] [MERGED] feat(cli): add update-cache command, purge reinstall fallback, and batch failure tracking #2697
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Comfy-Org/ComfyUI-Manager#2697
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/Comfy-Org/ComfyUI-Manager/pull/2693
Author: @ltdrdata
Created: 3/15/2026
Status: ✅ Merged
Merged: 3/15/2026
Merged by: @ltdrdata
Base:
manager-v4← Head:feat/cm-cli-update-cache📝 Commits (1)
dcd5c00feat(cli): add update-cache command, purge reinstall fallback, and batch failure tracking📊 Changes
4 files changed (+243 additions, -12 deletions)
View changed files
📝
cm_cli/__main__.py(+112 -11)📝
comfyui_manager/glob/manager_core.py(+65 -0)📝
comfyui_manager/legacy/manager_core.py(+65 -0)📝
pyproject.toml(+1 -1)📄 Description
Summary
cm-cli update-cachecommand for blocking cache population, bypassing pip/offline guardspurge_node_state()to fix reinstall categorization mismatch (e.g. unknown→nightly)NodeInstallErrorexception and batch failure tracking tofor_each_nodesMotivation
update-cache: pip-installed cm-cli could never populate CNR cache without running the web server first.
get_data_by_mode()hardcodesis_manager_pip_package()to force offline path, andreload()forcesdont_wait=Truefor pip packages, causingget_cnr_data()to return{}permanently. The new command bypasses both guards by directly fetching channel JSON files and callingreload('remote').purge_node_state: When a node's categorization changes between cm-cli invocations (e.g. unknown→nightly),
unified_uninstallmay miss cleaning up state from the wrong category dictionary, leaving stale directories that block reinstallation.batch failure tracking:
for_each_nodespreviously swallowed errors silently. Now it tracks failed nodes and reports an aggregate summary with non-zero exit code.Changes
cm_cli/__main__.pyNodeInstallError(Exception)— dedicated exception for install failure propagationupdate-cachecommand: fetches 5 channel JSON files in parallel + CNR registry + nightly data, with per-item failure tracking andsys.exit(1)on partial failureinstall_node: replaceexit_on_fail/sys.exit(1)withraise_on_fail/raise NodeInstallErrorreinstall_node: addpurge_node_state()fallback afterunified_uninstall, passraise_on_fail=Truefor_each_nodes: catchNodeInstallError+Exception, track failures, report aggregate summarycomfyui_manager/glob/manager_core.py+legacy/manager_core.pyUnifiedManager.purge_node_state()to both packages (cm-cli imports from legacy)os.path.commonpathfinally-guarded dictionary cleanup for all 5 internal state dictspyproject.toml🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.