Comfy-Org / Comfy-Org/ComfyUI_frontend
Allow converting compatible node inputs into widgets
- Dominant language
- TypeScript
- Stars
- 2k
- Forks
- 699
- Avg merge
- 1d 7h
- Merged PRs (30d)
- 490
Description
### What problem are you experiencing?
### What would your feature do?
Add a **"Convert input to widget"** option for compatible node inputs, allowing certain inputs to be replaced by the corresponding selector/widget directly inside the node.
A good example is the **Apply ControlNet** node.
Currently, `Apply ControlNet` requires a separate **Load ControlNet Model** node connected to its `control_net` input, even when that loader is only used by a single node.
It would be much more convenient if the `control_net` input could be converted into a widget, providing the same ControlNet model selector directly inside **Apply ControlNet**.
### When does this problem occur?
- Whenever the Apply ControlNet node is needed
### How often do you encounter this problem?
Daily
### How much does this problem affect your workflow?
Minor annoyance
### Current workarounds
Using unreliable third-party plugins,
### Ideas for solutions (Optional)
Right-click the `control_net` input on **Apply ControlNet** → **Convert input to widget**
The input would then become something like:
`control_net: [model.safetensors ▼]`
This would allow a common two-node setup:
`Load ControlNet Model → Apply ControlNet`
to be simplified into a single **Apply ControlNet** node when a separate loader is not needed.
Ideally, the widget could also be converted back into an input at any time.
This would not replace or deprecate **Load ControlNet Model**. Separate loaders would still be useful when sharing the same loaded model between multiple nodes or for more advanced workflows.
### Additional context
While ControlNet is a particularly useful example, a generic **"Convert input to widget"** mechanism could potentially simplify many other loader-backed inputs throughout ComfyUI as well.
Contributor guide
Research direction
Start by tracing how Apply ControlNet inputs and widgets are represented and handled in the frontend, then compare the existing loader-backed input behavior. The work is done when a compatible input can be converted into the corresponding widget, restored to an input, and the Apply ControlNet workflow continues to behave correctly.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100