Comfy-Org / Comfy-Org/ComfyUI_frontend

Agent tab: untitled nodes render their class name after a follower reconcile, display name after an add

Open
#17,171 1 comment 0 reactions 1 assignee Claimed by @christian-byrne View on GitHub
Potential Bug
Dominant language
TypeScript
Stars
2k
Forks
699
Avg merge
1d 7h
Merged PRs (30d)
490

Description

### Prerequisites

- [x] I am running the latest version of ComfyUI
- [ ] I have custom nodes enabled

### What happened?

In the agent tab (CRDT follower), a node that carries no title in the document is rendered under its class name when it arrives through the catch-up, but under its display name when the agent adds it later in the same session. Example from one replay: seed nodes show `CheckpointLoaderSimple` and `VAEDecode` while a node added by the next turn shows `CLIP Text Encode (Prompt)`. A normally loaded workflow shows `Load Checkpoint` for the same node.

Cause, traced in the code: the follower's full reconcile (`src/workbench/extensions/agent/crdt/ecsFollowerAdapter.ts`, the `reconcile` branch that calls `batch.reconcileNode` for every node) goes through `prepareNode` in `src/core/graph/graphMutations.ts`, which sets `title: payload.title || payload.type`; for an existing record that value is written back through `nodeDataStore.updateNode`, replacing the title `LGraphNode.configure` had derived from the node class. The incremental add path materializes the node once and keeps the class title. Any full reconcile (reconnect, resubscribe, rebind) therefore renames every untitled node in the tab to its class name.

Evidence: PR #16764 cloud replay run https://github.com/Comfy-Org/ComfyUI_frontend/actions/runs/34265436669, trace snapshots of the agent tab (seed nodes typed, added node display-named). The harness in that PR currently accepts either spelling for an untitled node and will flip back to the display name once this is settled.

@christian-byrne this is inside the CRDT integration (#16198); flagging for your call on whether `prepareNode` should stop falling back to the type, or whether the class-name title is intended.

### Steps to Reproduce

1. Open the agent panel with the CRDT follower enabled and let it bind a workflow whose nodes carry no `title` (any seed workflow exported by ComfyUI: untitled nodes have no title key).
2. Let the follower catch up (or reconnect so a full reconcile runs).
3. Ask the agent to add a node.
4. Compare headers: catch-up nodes show the class name, the added node shows the display name.

### Workflow

N/A (any workflow with untitled nodes; the replay recordings under `browser_tests/fixtures/data/agent/conversations` on PR #16764 reproduce it in CI).

### How is this affecting you?

Visual/UI issue only

### ComfyUI Frontend Version

1.55.1 (main at 4641580efc)

### Browser

Chrome/Chromium

### Console Errors

None.

### Logs

Playwright cloud job on PR #16764: expected "Load Checkpoint", received "CheckpointLoaderSimple" for node 4 (14 of 14 replay cases on head 552f9272fb); expected "CLIPTextEncode", received "CLIP Text Encode (Prompt)" for the agent-added node (9 of 14 on head e68bd8a921's predecessor).

### Additional Context

Found by the visible-title assertion added to the recorded replay harness in PR #16764 at the reviewer's request.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.