"Fix node (recreate)" looked a node's links, and the nodes at their other end, up in app.graph, the root graph. A subgraph keeps its own links and nodes, so inside a subgraph the lookup found nothing: the entry threw "Cannot read properties of undefined" and, because the original is removed only afterwards, left the wired original and an unwired replacement on the canvas. - Read links and nodes from the graph the node is in - Reconnect a link that starts at an input of the subgraph, or ends at one of its outputs, through that slot; those two are not nodes of the graph - For a link from a subgraph input, skip an input the new node does not have or has with a type that does not fit, as connect() does for a link from a node; a subgraph input's connect() checks neither - Extend the Playwright spec to a node inside a subgraph, a node wired to the inputs and output of a subgraph, an input the new node lacks and an input whose type changed; compare the slot at the other end of every link, and the record on the subgraph slot - Add a CHANGELOG entry Follow-up to #3507. The same change for main is #3513.
ComfyUI-Manager: Frontend (js)
This directory contains the JavaScript frontend implementation for ComfyUI-Manager, providing the user interface components that interact with the backend API.
Core Components
- comfyui-manager.js: Main entry point that initializes the manager UI and integrates with ComfyUI.
- custom-nodes-manager.js: Implements the UI for browsing, installing, and managing custom nodes.
- model-manager.js: Handles the model management interface for downloading and organizing AI models.
- components-manager.js: Manages reusable workflow components system.
- snapshot.js: Implements the snapshot system for backing up and restoring installations.
Sharing Components
- comfyui-share-common.js: Base functionality for workflow sharing features.
- comfyui-share-youml.js: Integration with the YouML sharing platform.
Utility Components
- cm-api.js: Client-side API wrapper for communication with the backend.
- common.js: Shared utilities and helper functions used across the frontend.
- node_fixer.js: Utilities for fixing disconnected links and repairing malformed nodes by recreating them while preserving connections.
- popover-helper.js: UI component for popup tooltips and contextual information.
- turbogrid.esm.js: Grid component library - https://github.com/cenfun/turbogrid
- workflow-metadata.js: Handles workflow metadata parsing, validation and cross-repository compatibility including versioning, dependencies tracking, and resource management.
Architecture
The frontend follows a modular component-based architecture:
- Integration Layer: Connects with ComfyUI's existing UI system
- Manager Components: Individual functional UI components (node manager, model manager, etc.)
- Sharing Components: Platform-specific sharing implementations
- Utility Layer: Reusable UI components and helpers
Implementation Details
- The frontend integrates directly with ComfyUI's UI system through
app.js - Dialog-based UI for most manager functions to avoid cluttering the main interface
- Asynchronous API calls to handle backend operations without blocking the UI
Styling
CSS files are included for specific components:
- custom-nodes-manager.css: Styling for the node management UI
- model-manager.css: Styling for the model management UI
This frontend implementation provides a comprehensive yet user-friendly interface for managing the ComfyUI ecosystem.