[GH-ISSUE #3092] Conflict detection uses global extension-node-map instead of locally installed extensions, causing inflated conflict count #1098

Open
opened 2026-10-27 21:25:45 +00:00 by bsakaguchi · 0 comments
Owner

Originally created by @34262315716 on GitHub (Jul 18, 2026).
Original GitHub issue: https://github.com/Comfy-Org/ComfyUI-Manager/issues/3092

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.

Originally created by @34262315716 on GitHub (Jul 18, 2026). Original GitHub issue: https://github.com/Comfy-Org/ComfyUI-Manager/issues/3092 ## 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.*
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Comfy-Org/ComfyUI-Manager#1098
No description provided.