Comfy-Org / Comfy-Org/ComfyUI-Manager
Conflict detection uses global extension-node-map instead of locally installed extensions, causing inflated conflict count
- Dominant language
- Python
- Stars
- 16.1k
- Forks
- 2.5k
- Avg merge
- 5d 4h
- Merged PRs (30d)
- 13
Description
## Description
The conflict detection feature in ComfyUI-Manager shows a conflict count that doesn't match the actual runtime conflicts. It compares against ALL known extensions in the global registry rather than just the locally installed ones.
## Steps to Reproduce
1. Install ComfyUI-Manager
2. Install a few custom nodes (e.g. comfyui-reactor-node, ComfyUI-WanVideoWrapper, etc.)
3. Open Manager -> Conflict Detection view
4. Observe the conflict count (e.g. showing 17)
5. Compare with the actual node list in ComfyUI's canvas
## Actual Result
The conflict detection view shows many more conflicts than actually exist at runtime. Conflicts are reported between extensions that the user doesn't even have installed.
## Expected Result
Conflict detection should only compare **currently installed extensions**, or at least clearly separate installed-vs-installed conflicts from installed-vs-global-catalog conflicts.
## Code Analysis
Looking at the source code in custom-nodes-manager.js (~lines 1260-1340):
The conflict detection flow:
1. loadNodes() calls the API endpoint \/v2/customnode/getmappings?mode=\\
2. This returns the data from \xtension-node-map.json\ cache file
3. This cache file contains ALL known extensions from the ComfyUI global registry, not just the locally installed ones
4. The code iterates through ALL entries and builds a \conflictsMap\:
- Key: node class name
- Value: list of extension keys that register this node
5. If a node class name appears in more than one extension entry, ALL those extensions get flagged as conflicting
The problem is that Step 2-3 uses the global extension catalog. If extension A and extension B in the global catalog both register a node called \CLIPTextEncode\ (a built-in ComfyUI node), they both get flagged as conflicting even if neither is installed locally.
## Suggested Fix
**Filter the extension-node-map to only include locally installed extensions before computing conflicts.**
In \custom-nodes-manager.js\, after fetching the mappings data, filter the entries to only include those whose URL matches a locally installed custom node folder (by checking folder names or git remotes in \custom_nodes\ directory).
Alternatively, add a separate API endpoint that returns mappings only for locally installed extensions.
## Environment
- ComfyUI-Manager version: 4.2.2
- ComfyUI: latest
- OS: Windows
---
*Reported after analyzing the source code of comfyui_manager js/custom-nodes-manager.js and the extension-node-map.json cache structure.*
Contributor guide
No contributing guide indexed for this repository
Research direction
Start in custom-nodes-manager.js around lines 1260-1340 and reproduce the Conflict Detection view using the reported installation steps. Inspect the /v2/customnode/getmappings endpoint and compare its mappings with the locally installed custom_nodes entries; done means conflicts are calculated from installed extensions and the displayed count matches the runtime node list.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- frontend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100