🎭 ComfyUI Dynamic Dropdowns & Assistant
A self-contained, high-efficiency custom node system and Windows desktop companion app for ComfyUI. This tool eliminates canvas clutter by consolidating multiple text attribute dropdowns (e.g., hair lengths, colors, styles, outfits, lighting) into a single, cohesive comma-separated output block—serving it simultaneously as a raw string and an encoded conditioning prompt.
✨ Features
- 📦 100% Self-Contained Architecture: No messy global asset paths. The custom node scans its own local
lists/subfolder, ensuring absolute portability. If you copy the node folder to another machine, it works instantly. - 🧠 Dual Prompt Injection Engine: Outputs both a raw
STRING(for prompt text stacking/debugging) and a pre-tokenizedCONDITIONINGblock (to wire directly into KSampler slots, bypassing separate Text Encode nodes). - 💻 Desktop Companion Utility (
Node Builder Assistant.exe): A zero-dependency, hardware-accelerated Windows UI tool that lets you visually build, update, and manage your custom node structures offline without writing a single line of Python. - 🧼 Automatic Formatting & Cleaning: The node backend strips out double quotes (
"), trailing backslashes (\), empty rows, and handles string concatenation automatically, preventing messy trailing commas in your generation prompts.
📂 Repository Architecture
When properly deployed, your project folder maintains this modular layout:
ComfyUI-Dynamic-Dropdowns/
├── Node Builder Assistant.exe # Standalone node generator app
├── __init__.py # The active ComfyUI custom node script
├── README.md # Project documentation
├── .gitignore # Dev exclusion rules
├── lists/ # Put your choice text assets here!
│ ├── hair_length.txt
│ ├── hair_color.txt
│ └── hairstyle.txt
└── generator/ # Companion App source folder (for updates)
├── app.py # PyWebView window engine wrapper
├── generator.html # Desktop interface panel
├── requirements.txt # Dev build dependencies
└── build.py # Isolated one-click .exe compiler
⚙️ Installation Guide
Standard User Quick Start
- Clone this repository directly into your ComfyUI nodes directory:
git clone [https://github.com/0velia/ComfyUI-Dynamic-Dropdowns.git](https://github.com/0velia/ComfyUI-Dynamic-Dropdowns.git)
Launch or restart ComfyUI. A 🎭 Dynamic Dropdowns (Demo Mode) node will immediately be available on your canvas to show you how the pipeline routes text choices.
🛠️ Customizing and Building Your Own Nodes Once you see how the demo works, you can build your own fully customized menu layouts:
Open the repository folder and double-click Node Builder Assistant.exe.
Design your custom dropdown panels and match them to your own text files inside the lists/ folder.
Click Build Custom Node, download the new code, and save it as __init__.py to overwrite the demo placeholder!
🚀 How to Use
1. Generating or Updating Nodes via the Companion App
If you want to configure what dropdown columns display inside ComfyUI:
- Double-click
Node Builder Assistant.exeright in the root directory. - Click + Add Dropdown Menu for each menu attribute slot you wish to manage.
- Assign the text label name (e.g.,
hair_color) and match it exactly to the.txtfile name located inside yourlists/folder. - Click Build Custom Node to generate the node logic.
- Click Download Code, save the file, and name it exactly
__init__.py, replacing the existing script in the root folder.
2. Canvas Workflow Mapping (Daisy-Chaining)
Thanks to the optional input stacking architecture, you can link multiple dynamic dropdown nodes sequentially to keep your canvas beautifully organized:
- Add Node 1 (e.g., Character Attributes): Leave
input_stringempty. Select your core details (e.g., hair, clothing). - Add Node 2 (e.g., Environment & Framing): Connect the
PROMPT_STRINGoutput from Node 1 directly into theinput_stringslot of Node 2. - Connect Pipeline Engines: Wire your checkpoint's
CLIPoutput directly into Node 2'sclipslot. - Final Delivery: Route Node 2's
CONDITIONINGdot directly into your KSampler. The backend seamlessly combines the outputs (character traits, framing choices, lighting styles) into a single comma-separated string without duplicate punctuation artifacts, even if inputs are left unlinked.
🛠️ Developer / Compilation Setup
If you want to modify the companion app layout styles or tweak the core source generation engine:
- Make your code alterations inside
generator/generator.htmlorgenerator/app.py. - Open your command terminal inside the
/generatorfolder and execute the one-click compilation automator script: python build.py
This script dynamically sets up an isolated Python virtual environment, installs the compression assets, strips module bloat, compiles the new optimized binary, moves it directly to the root path as Node Builder Assistant.exe, and purges temporary cache files automatically.
