← All docs
Ideas

Rollout plan & milestones

> Both tracks. The rollout assumes one Track A agent and one Track B agent working in parallel, but it works for a single agent doing both serially too.

v0.6.0-alpha — Track A core

Scope: Direct-graph DMX. No pads. One transmitter type (start with Art-Net — UDP only, no native module gotchas). Two new node kinds. Last-write-wins universeBus.

What ships:

  • electron/dmx/{engine,transmitter,artNet,universeBus,diag}.ts
  • src/features/dmx/fixtures/ (full set of 8 built-ins)
  • DmxOutNode + DmxOutInspector
  • DmxSettingsPanel (under SettingsPanel; lets the user add an Art-Net transmitter)
  • Topbar Dmx Out button
  • Source "dmx" added to logger
  • dmx-out participates in cycle detector + sink-rate gauge

Useful for: anyone with Art-Net hardware (most modern lighting interfaces). Maybe 40% of the eventual user base. Ships in ~3 days for a single Track A agent.

v0.6.0-beta — Track A complete

Adds:

  • The four other transmitter kinds (sACN, Open DMX, Enttec Pro, Slow-break)
  • Inbound Art-Net (dmx-in) + listener + reconciler
  • DMX settings panel: serial port picker, "test pattern" button, full diagnostics row

Useful for: anyone with USB DMX too. Bumps coverage to ~95%. Ships ~3–4 days after alpha for the same agent.

v0.6.0 — Track B layered on

Adds:

  • src/features/dmx/{sequenceEngine,sequenceOps,sequenceFade,sequencePresets,sequenceTypes}.ts
  • src/features/sequences/ (PadView, PadEditorModal, EffectGenerator, ClockBar)
  • src/features/dmx/{mixer,mixerInspector}.ts replacing the placeholder universeBus
  • 8 built-in sequences seeded on first run
  • Pads / Graph view toggle in Topbar
  • Tap tempo + named clocks
  • dmx:set-frame IPC for batched universe pushes

Useful for: the full beat-pad / cue-list use case. Ships ~5–7 days after beta for a Track B agent.

v0.6.1 — polish from real-hardware testing

The user is the QA. Once they wire actual DMX hardware to v0.6.0, log every issue under docs/ideas/dmx/issues-from-testing.md and fix in patch releases.

Likely issues:

  • Open DMX BREAK timing on specific FTDI chip revisions
  • Art-Net unicast vs broadcast preference per network
  • Slow-break baud-switch failures on cheap CH340 boards
  • Fixture profiles not matching specific real fixtures (users edit JSON or we add presets)

v0.7+ candidates (not in this milestone)

  • Fixture profile editor (modal). v0.6 ships JSON-only.
  • Beat-locked sequence playback (sequences re-derive duration from BPM).
  • Sequence recorder (record live channel writes into a cue list).
  • MIDI Clock + OSC Clock external sync.
  • Multi-window canvas (still pending user yes/no, doesn't depend on DMX).

Branch strategy

  • Track A and Track B each work on their own feature branch off main.
  • Track A: feat/dmx-track-a. Lands when alpha ships.
  • Track B: feat/dmx-track-b. Branches from feat/dmx-track-a once universeBus exists. Rebases as Track A merges.
If both agents are in the same repo and the user doesn't want feature branches, the work is still linearly mergeable — Track A only edits files that don't exist in Track B, and vice versa. Conflicts will be limited to:
  • src/store/store.ts (both add discriminants to AnyNode and fields to Settings)
  • src/components/Topbar.tsx (both add buttons)
  • electron/main.ts (Track A registers dmx handlers; Track B doesn't)
  • CHANGELOG.md (one entry each)
  • docs/ideas/next-session-handoff.md (final session)
These are small, predictable conflicts. Standard merge resolution.

Order of operations for a single agent (no parallel)

1. 01-hardware-backends.md → Art-Net only first.
2. 02-fixtures.md → all 8 builtins + types.
3. 03-graph-integration.md → DmxOut + DmxIn end-to-end.
4. Ship v0.6.0-alpha as a real release; let the user smoke-test on Windows.
5. The other 4 transmitter backends.
6. Ship v0.6.0-beta.
7. 04-sequence-engine.md → engine + presets.
8. 06-mixer.md → swap out the last-write-wins placeholder.
9. 05-pad-launcher.md → PadView + Pad + editor.
10. 07-clock-and-tempo.md → clocks + tap.
11. Ship v0.6.0.

Roughly 12–18 working days for one agent. ~7–10 working days with two parallel agents.

Acceptance for "DMX is done"

A user can sit down, plug in:

  • A USB DMX adapter (any of the 5 supported types) OR an Art-Net interface
  • A Resolume composition
  • A USB MIDI controller

And in under 10 minutes wire:
  • A MIDI knob to a moving-head's tilt channel
  • A pad button to fire a Resolume clip + start a chase sequence
  • A Resolume parameter to dim every fixture in a slot

Without writing JSON or reading docs deeper than the inspector. That's when DMX is done.