π BV Dynamic Combo
A dropdown you can actually edit, that also gives you int and float versions for free
- value_str
- value_int
- value_float
BV Dynamic Combo is a dropdown whose options you edit as plain text - no code, no restart - and it hands you the selected value as a string, an int, and a float all at once. If you've ever wanted a "preset picker" in the middle of a workflow without writing a switch node, this is the one.
The ecosystem context matters here. ComfyUI's built-in combo inputs (think checkpoint loaders) get their options from backend code or from the files on disk. If you want a custom dropdown of your own - model presets, prompt templates, aspect-ratio choices - vanilla ComfyUI makes you write a custom node or awkwardly fake it with a text field. This node lets you type the options yourself and renders a real combo box. The README calls it a "dynamic combo box from a list of strings," and that's exactly right: the option list is a widget, not code.
How it works
The backend is deliberately dumb - which is good. It has two required inputs: value (the currently selected option, default option_a) and options (a multiline list of choices, one per line, default option_a\noption_b\noption_c). A JavaScript extension swaps the plain value widget for a dropdown populated from options. When the prompt runs, the node just validates and mirrors your selection out.
Three validations keep you from foot-gunning:
- Options must be non-empty and unique - duplicates raise an error rather than silently misbehaving.
- The selected
valuemust actually be in the options list. - The int/float conversions only happen if you actually connect those outputs, and only if the selected text parses. Pick
option_aand wire upvalue_intand you'll get a clear error saying the value isn't a valid integer - not a silent0.
The lazy-conversion behavior is a thoughtful touch: unconnected numeric outputs are never parsed, so you can keep a dropdown of human-readable names and only convert when a downstream node genuinely needs a number.
Inputs and outputs
The two that matter:
options- the list of choices, one per line. Edit this to change the dropdown.value- becomes the dropdown itself once the JS extension loads; pick the active choice.
Outputs: value_str (STRING, the exact selected text), value_int (INT), value_float (FLOAT).
That's a genuinely handy triad: run one dropdown into a prompt string and into a seed or strength input, and they can never drift out of sync.
Install & gotchas
Same as the rest of the pack: ComfyUI Manager β BV Node Pack, or clone https://github.com/BlackVortexAI/bv_nodepack into ComfyUI/custom_nodes, restart, and hard-refresh (Ctrl + F5). The hard refresh is where people get bitten - the combo rendering is a JS extension, so a cached frontend shows a plain text field instead of a dropdown. No models, no Python dependencies; the whole pack is just Python plus JS.
If your dropdown shows up as a text box, you've either not hard-refreshed or you're on ComfyUI's Nodes 2.0 frontend, which the pack's own notes say may render these nodes with standard widgets. Duplicate options are the most common real error - copy-pasting a list from somewhere usually drags in a trailing blank line or a repeat. Keep options unique and one-per-line and it's boring in the best way.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| value | STRING | option_a | β |
| options | STRING | option_a option_b option_c | β |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| value_str | STRING | β |
| value_int | INT | β |
| value_float | FLOAT | β |