> 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}.tssrc/features/dmx/fixtures/(full set of 8 built-ins)DmxOutNode+DmxOutInspectorDmxSettingsPanel(under SettingsPanel; lets the user add an Art-Net transmitter)- Topbar
Dmx Outbutton - Source
"dmx"added to logger dmx-outparticipates 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}.tssrc/features/sequences/(PadView, PadEditorModal, EffectGenerator, ClockBar)src/features/dmx/{mixer,mixerInspector}.tsreplacing the placeholder universeBus- 8 built-in sequences seeded on first run
- Pads / Graph view toggle in Topbar
- Tap tempo + named clocks
dmx:set-frameIPC 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 fromfeat/dmx-track-aonceuniverseBusexists. Rebases as Track A merges.
src/store/store.ts(both add discriminants toAnyNodeand fields toSettings)src/components/Topbar.tsx(both add buttons)electron/main.ts(Track A registersdmxhandlers; Track B doesn't)CHANGELOG.md(one entry each)docs/ideas/next-session-handoff.md(final session)
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.