Skip to content

Releases: DazzleNodes/ComfyUI-DazzleCommand

v0.2.7-alpha - Cross-Tab State Isolation, Stateless Python

Choose a tag to compare

@djdarcy djdarcy released this 02 Jul 17:07
v0.2.7-alpha
03dfee5

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_state input — 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 nodeStates map, workflow-UUID guard, sys._dazzle_command_states registry, IS_CHANGED, and the /dazzle-command/set-state API 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.git

Version 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

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

Choose a tag to compare

@djdarcy djdarcy released this 31 Mar 18:05
v0.2.6-alpha
2071b60

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.git

Version 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

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

Choose a tag to compare

@djdarcy djdarcy released this 31 Mar 00:30
v0.2.3-alpha
626aa1c

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_id marker
  • API endpoint keys state by nodeId from 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.git

Version 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:

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

Choose a tag to compare

@djdarcy djdarcy released this 28 Mar 13:18
v0.2.1-alpha
4702ca3

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.

Dazzle Command orchestration workflow

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_signal noodle 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.git

Version 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