* [bugfix] Fix widget disconnection issue in subgraphs
When disconnecting a node from a SubgraphInput, the target input's link
reference was not being cleared in LLink.disconnect(). This caused
widgets to remain greyed out because they still thought they were
connected (slot.link was not null).
The fix ensures that when a link is disconnected, the target node's
input slot is properly cleaned up by setting input.link = null.
Fixes#4922🤖 Generated with [Claude Code](https://claude.ai/code)
* [test] Add tests for LLink disconnect fix for widget issue
Add comprehensive tests for the LLink.disconnect() method to verify
that target input link references are properly cleared when disconnecting.
This prevents widgets from remaining greyed out after disconnection.
Tests cover:
- Basic disconnect functionality with link reference cleanup
- Edge cases with invalid target nodes
- Preventing interference between different connections
Related to #4922🤖 Generated with [Claude Code](https://claude.ai/code)
---------
Co-authored-by: Christian Byrne <cbyrne@comfy.org>
Co-authored-by: Claude <noreply@anthropic.com>
- Add comprehensive test coverage for the new --disable-api-nodes argument handling
- Tests verify release fetching is properly skipped when argument is present
- Cover edge cases including multiple args, null argv, and missing system stats
- Ensures backward compatibility when argument is not present
Co-authored-by: Yoland Yan <4950057+yoland68@users.noreply.github.com>
* Correct some translations that use traditional Chinese to simplified Chinese.
* Update locales [skip ci]
* Correct the rest of the translations
---------
Co-authored-by: ComfyUI Wiki <contact@comfyui-wiki.com>
Co-authored-by: github-actions <github-actions@github.com>
* [feat] Restore group node conversion menu with deprecated label (#4967)
* Fix screenshot conflicts - use core/1.25 baseline versions
* Revert screenshots to PR version with deprecated menu item
When a node is bypassed from the selection toolbox or by pressing a
keybind for bypass, it will also recursively bypass the contents of a
subgraph. This effect was not applied when clicking the bypass button
from the context menu. The context menu option has been updated to
perform the same action as the others so that behaviour is consistent.
Co-authored-by: AustinMroz <austin@comfy.org>
When loading workflows, SubgraphNode would throw an error if an input
exists in the serialized data that doesn't exist in the current subgraph
definition. This can happen when:
- Subgraph definitions change after workflows are saved
- Workflows are shared between users with different subgraph versions
- Dynamic inputs were added that don't exist in the base definition
This change converts the hard error to a warning and continues processing,
allowing workflows to load even with mismatched subgraph configurations.
Fixes#4905
Co-authored-by: Christian Byrne <cbyrne@comfy.org>
Prior to this commit, subgraphNode inconsistently refers to either the
parent graph, or to indicate the current node is a subgraph.
This corrects the usage of subgraphNode to consistently refer to the
subgraph instance as defined in the constructor.
This solves a bug where graph serialization fails due to an incorrectly
reported infinite loop.
Port of https://github.com/Comfy-Org/litegraph.js/pull/1193
Subgraphs are loaded in order of creation. Under most circumstances,
this means newer subgraphs are loaded first. With nested subgraphs, this
means a subgraph node has it's inputs connected before it's inside is
loaded. When the inner subgraph is loaded, input-added events are
triggered even though inputs already exist on the subgraph node.
This is resolved by adding a check for if an input of the corresponding
name already exists when adding an input.
Port of https://github.com/Comfy-Org/litegraph.js/pull/1192