Nodes/BV Node Pack/πŸŒ€ BV Dynamic Combo
ComfyUI Node

πŸŒ€ BV Dynamic Combo

A dropdown you can actually edit, that also gives you int and float versions for free

By BlackVortexAIΒ·Created 8 months agoΒ·Updated about 16 hours agoΒ· 6
πŸŒ€ BV Dynamic Combo
    • value_str
    • value_int
    • value_float
    β—„valueoption_aβ–Ί
    β—„optionsoption_a option_b option_cβ–Ί

    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 value must 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_a and wire up value_int and you'll get a clear error saying the value isn't a valid integer - not a silent 0.

    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.

    CategoryπŸŒ€ BV Node Pack/subgraph

    Inputs (2)

    NameTypeDefaultDescription
    valueSTRINGoption_aβ€”
    optionsSTRINGoption_a option_b option_cβ€”

    Outputs (3)

    NameTypeDescription
    value_strSTRINGβ€”
    value_intINTβ€”
    value_floatFLOATβ€”