Releases: DazzleNodes/ComfyUI-DazzleCommand
Release list
v0.2.7-alpha - Cross-Tab State Isolation, Stateless Python
Dazzle Command v0.2.7-alpha
Workflow orchestration node for ComfyUI — coordinate seed control and execution gates from a single play/pause toggle. Part of the DazzleNodes collection.
What's New in v0.2.7-alpha
Cross-Tab State Contamination Fix
Opening a second workflow tab (even the same file, even without running it) used to contaminate the first tab's play/pause state and invalidate its cache. Root cause: node IDs collide across tabs, so every store keyed by bare node ID was cross-tab shared.
The fix removes server-side state entirely:
- State lives on each node object plus
node.properties(persisted per workflow-tab draft — survives tab switches and page reloads) - At queue time, JS injects the live state into the node's prompt inputs as a hidden
dazzle_stateinput — per-queue and per-tab by construction, and part of ComfyUI's cache key (toggling play/pause is exactly the change that should re-execute) - The
nodeStatesmap, workflow-UUID guard,sys._dazzle_command_statesregistry, IS_CHANGED, and the/dazzle-command/set-stateAPI endpoint are all gone (net −79 lines)
Other Fixes
- Reconfigure protection: mid-session graph reconfigures replaying stale snapshots can no longer revert your Play/Pause clicks (per-node-object guard replacing the v0.2.5 workflow-UUID approach)
- Honest seed display: the seed bar no longer adopts seeds from SmartResCalc nodes that aren't noodle-connected to this DazzleCommand — an unconnected node now shows
--instead of masquerading as working orchestration - Seed bar values persist per tab via
node.properties - Headless/API prompts (no JS) default to paused, as before
Installation
Install via ComfyUI Manager or clone:
cd ComfyUI/custom_nodes
git clone https://github.com/DazzleNodes/ComfyUI-DazzleCommand.gitVersion History (0.2.x)
| Version | Key Change |
|---|---|
| v0.2.7-alpha | Current — cross-tab isolation, stateless Python, per-tab persistence |
| v0.2.6-alpha | Reset All button, OUTPUT_NODE restored |
| v0.2.5-alpha | Mid-execution reconfigure state guard (workflow UUID) |
| v0.2.4-alpha | Docs for per-node state architecture |
| v0.2.3-alpha | Per-node state registry (superseded by v0.2.7's per-tab design) |
Companion Versions
- SmartResCalc v0.12.2 — per-tab lastSeed persistence, seed intent override (pairs with this release)
- PBE v0.4.3-alpha — unchanged (noodle path was already per-graph correct)
Platform Support
| Platform | Status |
|---|---|
| Windows 11 + CUDA | Tested |
| Linux / macOS | Expected to work |
Requirements
- Python 3.10+, ComfyUI (latest recommended), no additional dependencies
v0.2.6-alpha - Reset All Button + State Race Fix
Dazzle Command v0.2.6-alpha
Workflow orchestration node for ComfyUI — coordinate seed control and execution gates from a single play/pause toggle. Part of the DazzleNodes collection.
What's New in v0.2.6-alpha
Reset All Button
New button next to Pause that sets ALL DazzleCommand nodes in the workflow back to paused. Useful for resetting a multi-DazzleCommand workflow to a clean starting state before a fresh run.
- Small square button with circular arrow icon, right of Pause
- Only affects DazzleCommand nodes in the active workflow tab
- 2px gap between Play, Pause, and Reset for a compact layout
OUTPUT_NODE Restored
DazzleCommand is marked as an execution entry point again (OUTPUT_NODE = True). Research into ComfyUI's execution engine confirmed this does NOT bypass caching — it only marks which nodes are always included in the execution graph. The actual cache fix was PBE's deterministic preview filenames (v0.4.2-alpha).
Recent Fixes (v0.2.5-alpha)
- State reset race condition — play/pause state no longer reverts during mid-execution workflow reconfigures. Uses workflow UUID to distinguish new workflow loads from same-workflow reconfigures.
Installation
Install via ComfyUI Manager or clone:
cd ComfyUI/custom_nodes
git clone https://github.com/DazzleNodes/ComfyUI-DazzleCommand.gitVersion History (0.2.x)
| Version | Key Change |
|---|---|
| v0.2.6-alpha | Current — Reset All button, OUTPUT_NODE restored |
| v0.2.5-alpha | State reset race condition fix (workflow UUID tracking) |
| v0.2.4-alpha | Docs update (per-node state architecture) |
| v0.2.3-alpha | Per-node state registry, multi-DC support |
Companion Versions
- SmartResCalc v0.11.4 — per-node state lookup
- PBE v0.4.3-alpha — deterministic preview filenames
Platform Support
| Platform | Status |
|---|---|
| Windows 11 + CUDA | Tested |
| Linux | Expected to work |
| macOS | Expected to work |
v0.2.3-alpha - Per-Node State Registry for Multi-DazzleCommand Workflows
Dazzle Command v0.2.3-alpha
Workflow orchestration node for ComfyUI — coordinate seed control and execution gates from a single play/pause toggle. Part of the DazzleNodes collection.
What's New in v0.2.3-alpha
Per-Node State Registry (#5)
The core fix for multi-DazzleCommand workflows. Each DazzleCommand now maintains independent state in a per-node registry (DazzleCommandState class), replacing the global sys._dazzle_command_state singleton that caused cross-talk between DazzleCommand instances.
- DC-1 set to Play and DC-2 set to Pause now operate independently
- Each PBE reads its own connected DazzleCommand's state via the signal noodle
- Each SmartResCalc reads its connected DC's seed intent via
_dazzle_dc_idmarker - API endpoint keys state by
nodeIdfrom JS
Multi-Node Seed Fix (#4)
"Reuse last seed" now works correctly in multi-node workflows. Combined with SmartResCalc v0.11.3's per-node lookup and PBE v0.4.2-alpha's deterministic preview filenames:
- Seed lock verified: same seed across play repeats
- Cache-transparent: repeat runs execute in 0.01s (fully cached)
Example Workflows
Added example workflow JSON files demonstrating DazzleCommand with different KSampler configurations.
Installation
Install via ComfyUI Manager or clone:
cd ComfyUI/custom_nodes
git clone https://github.com/DazzleNodes/ComfyUI-DazzleCommand.gitVersion History (0.2.x)
| Version | Key Change |
|---|---|
| v0.2.3-alpha | Current — per-node state registry, multi-DC support |
| v0.2.2-alpha | Signal carries active_state (interim fix) |
| v0.2.1-alpha | Dynamic JS imports for DazzleNodes aggregate |
| v0.2.0-alpha | 5-mode seed control, cache-transparent orchestration |
Companion Versions
For full multi-pipeline orchestration:
- SmartResCalc v0.11.3 — per-node state lookup
- PBE v0.4.2-alpha — deterministic preview filenames, cache-compatible
Platform Support
| Platform | Status |
|---|---|
| Windows 11 + CUDA | Tested |
| Linux | Expected to work |
| macOS | Expected to work |
Requirements
- Python 3.10+
- ComfyUI (latest recommended)
- No additional pip dependencies
v0.2.1-alpha - 5-Mode Seed Control and Cache-Transparent Orchestration
Dazzle Command v0.2.1-alpha
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.
What's New in v0.2.1-alpha
v0.2.1 fix: Dynamic JS imports for DazzleNodes aggregate compatibility. Static imports failed at depth 3 (inside DazzleNodes), causing play/pause buttons not to appear. Now uses auto-depth detection matching SmartResCalc and PBE pattern.
5-Mode Seed Control
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 |
Seed Bar Entry
Click the seed display bar to enter a seed directly. DazzleCommand-entered seeds take priority over SmartResCalc's widget. Seeds entered with "one run then random" auto-clear after one execution.
- Green text with
*= DazzleCommand is driving the seed - Grey text = displaying SmartResCalc's last-used seed
- Clear the field to return control to SmartResCalc
Cache-Transparent Architecture
Toggling play/pause does NOT re-execute expensive nodes (KSampler, VAE decode). 83% time savings in typical workflows (29s -> 5s).
- Play/pause state communicated via API side-channel, not ComfyUI inputs
- Signal dict is static across toggles -- output never changes
- Seed resolution in JS before prompt generation
dazzle_signalnoodle stripped from prompt data for cache preservation
See docs/seed-control.md for the full interaction matrix and architecture details.
Companion Versions
Full orchestration requires all three nodes:
| Node | Version | Repository |
|---|---|---|
| Smart Resolution Calculator | v0.11.0 | djdarcy/ComfyUI-Smart-Resolution-Calc |
| Preview Bridge Extended | v0.4.0-alpha | DazzleNodes/ComfyUI-PreviewBridgeExtended |
Installation
Via DazzleNodes collection (recommended):
Included in the DazzleNodes aggregate package.
Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/DazzleNodes/ComfyUI-DazzleCommand.gitVersion History
| Version | Key Change |
|---|---|
| v0.2.1-alpha | Current -- Dynamic import fix for DazzleNodes aggregate |
| v0.2.0-alpha | 5-mode seed control, cache-transparent orchestration |
| v0.1.1-alpha | Cache-transparent play/pause, API state management |
| v0.1.0-alpha | Initial scaffolding and DAZZLE_SIGNAL node |
Requirements
- ComfyUI v0.18.0+
- Python 3.10+
- Smart Resolution Calculator v0.11.0+
- Preview Bridge Extended v0.4.0-alpha+