v0.3.0 — First stable release: light, sound, and microphone 🎉

The first stable Orb release. After 14 phases, a full Python-to-Rust port,
and a long road of release candidates (beta → delta → rc2 through rc10),
the show control system is ready for real work.

What works end-to-end in this release:

🎭 Light
  • Clean ECS core with priority layers (HTP dimmer/strobe, LTP color)
  • Sequence / Cue / Programmer / Executor model
  • Fade engine with easing, auto-advance (timed + song-position + song-end)
  • Fixture profiles (TOML) with typed channel mapping
  • DMX output: ENTTEC Pro serial, Art-Net, sACN/E1.31, BitWizard
  • 40 Hz frame loop: tick → resolve → render → send

🔊 Sound
  • Multi-deck music playback with per-deck fade-in/fade-out cues
  • Providers: local files, librespot (Spotify Connect), Spotify Web API
    search, WiiM stub
  • Per-source OS-mixed audio output with automatic device rebind
  • audio.toml schema v2, canonical 48 kHz internal sample rate
  • Crossfade, level control, transport (play/pause/stop/goto) from REPL,
    REST, MIDI, and motorized faders

🎤 Microphone
  • Multi-mic capture via cpal, named device matching, per-channel split
  • MultiMicMixer routed into the unified MultiLayerSoundDeviceSink
  • DSP graph: noise gate, compressor, limiter, filters
  • Per-channel volume actions and mute dispatch from cues

🎛 Control surfaces
  • Icon P1-M motorized faders with touch-gated bidirectional sync,
    per-strip buttons, V-Pot encoder, and per-executor speed modifier
  • Intech EN16 / PBF4 with hot-plug and a virtual MIDI control surface
  • Flic 2 buttons via vendored flicd (lazy-started)
  • BLE-MIDI, MIDI CC + Note dispatch, song-position events

🐍 Embedded Python
  • orb-daemon hosts CPython 3.13 via PyO3, no IPC
  • IPython REPL with GrandMA3-style command preprocessor
  • SmartLists, project API, fixture importer (OFL + GrandMA3 XML)

🌐 Web
  • actix-web REST + WebSocket
  • Svelte 5 dashboard auto-built and embedded into the daemon binary
  • Auto-open browser, --app mode for a standalone window
  • Playwright e2e suite (opt-in via ORB_TEST_UI=1)

📊 Tests
  • 1821 Rust tests + 363 Python tests = 2184 passing
  • Hardware-gated suites for DMX, Flic, P1-M, and real audio I/O

Used in production for light, sound, and microphone control.
On to v0.4.