Comfy-Org / Comfy-Org/ComfyUI-Manager

Conflict detection uses global extension-node-map instead of locally installed extensions, causing inflated conflict count

Open
#3,092 0 comments 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.