Workflow orchestration node for ComfyUI. Coordinate seed control and execution gates from a single play/pause toggle without re-executing expensive generation steps.
Part of the DazzleNodes collection.
| State | Seed (SmartResCalc) | Gate (Preview Bridge Extended) |
|---|---|---|
| Pause | Configurable (default: one run then random) | Block execution (configurable mode) |
| Play | Configurable (default: reuse last seed) | Unblock execution |
Click Play when you find an image you like. The seed locks and downstream execution resumes. Click Pause to explore with new random seeds while blocking the pipeline.
Cache-transparent: toggling play/pause does NOT re-execute expensive nodes (KSampler, VAE). 83% time savings in typical workflows.
Each mode is configurable independently for pause and play states:
| Mode | Behavior |
|---|---|
| one run then random | Use entered seed once, then revert to random (default for pause) |
| new seed each run | Force fresh random every time |
| reuse last seed | Lock to the seed from previous execution (default for play) |
| keep widget value | Use SmartResCalc's current widget value persistently |
| SmartResCalc decides | Don't interfere — normal widget behavior |
This is the default pause mode and the most common workflow pattern. It handles the case where you want to try a specific seed once, then go back to exploring:
- You see seed
847291038in another workflow and want to test it - Type it into DazzleCommand's seed bar (or SmartResCalc's widget)
- Run → generates with
847291038 - Run again → automatically generates with a new random seed
Without this mode, you'd have to manually switch between "keep widget value" and "new seed each run" every time you test a seed. The "one run" part uses your entered value; the "then random" part cleans up after itself.
If the widget is already set to random (-1), this mode behaves the same as "new seed each run" — each run generates a fresh random.
See Seed Control Guide for the full interaction matrix and transient lock details.
Click the seed bar on Dazzle Command to enter a seed value directly. DazzleCommand-entered seeds take priority over SmartResCalc's widget. Clear the field to return control to SmartResCalc.
Priority order:
- Seed entered in DazzleCommand's seed bar
- Active seed mode (one run then random, etc.)
- SmartResCalc widget value (fallback)
Included in the DazzleNodes aggregate package.
cd ComfyUI/custom_nodes
git clone https://github.com/DazzleNodes/ComfyUI-DazzleCommand.git| Node | Min Version | What It Controls |
|---|---|---|
| Smart Resolution Calculator | v0.11.3 | Seed behavior (random/lock/transient) |
| Preview Bridge Extended | v0.4.2-alpha | Execution blocking (play = unblock, pause = block) |
Dazzle Command uses a cache-transparent architecture:
- Per-node state — each DazzleCommand maintains independent state in a per-node registry. Multiple DazzleCommands in one workflow operate independently (DC-1 Play + DC-2 Pause)
- Signal carries active_state — PBE reads play/pause state from its connected DC's signal via noodle, not from a global
- Seed resolution happens in JS before prompt generation — identical prompt data = ComfyUI cache hit
- Noodle stripping —
dazzle_signalis removed from SmartResCalc's prompt data (cache-transparent) while PBE keeps the noodle for execution ordering
Seed Control Guide - detailed explanation of all 5 seed modes, transient lock behavior, priority order, interaction matrix, and cache architecture
// Browser console
localStorage.setItem('DEBUG_DAZZLE_COMMAND', 'true')# Python (environment variable)
DC_DEBUG=1 python main.pyContributions welcome! Fork, create a feature branch, test in ComfyUI, and submit a PR.
Like the project?
This project is licensed under the GNU General Public License v3.0 - see the LICENSE for details.
