Tags

Tags give the ability to mark specific points in history as being important
  • v0.3.1-gamma

    Release: orb v0.3.1-gamma
    v0.3.1-gamma
    
    Dashboard: shared fixture selection store, Color panel, StagePlan wiring.
    48/40 grid + 6 workflow presets (layout v2).
    Sequences panel: NowPlayingCard + AffectsOverlay.
    
    Also includes 0.3.1-beta content: SetMicEffectBypass per-effect mic DSP
    bypass CueAction.
    
    AppImage build verified locally in orb-appimage-builder Docker image
    before tagging. See Changes.md for the full changelog.
  • v0.3.1-beta

    Release: orb v0.3.1-beta
    v0.3.1-beta
    
    Per-effect mic DSP bypass via SetMicEffectBypass.
    
    A new CueAction variant lets cues flip a single DSP effect on a mic's
    chain on or off without bypassing the entire chain. Use case: bypass
    the head-mic compressor for non-vocal performance cues while keeping
    HPF / gate / de-esser / EQ / gain engaged.
    
    Sticky state — pair every bypass=true with a matching bypass=false on
    the cue that should re-engage the effect.
    
    Runtime only; setup.py wiring lives in show projects.
  • v0.3.1-alpha

    Release: Release v0.3.1-alpha
    Release v0.3.1-alpha
    
    Added: project-level dmx.toml universe → device mapping.
    
    See Changes.md for details. Highlights:
    - <project>/dmx.toml encodes which DMX adapter drives which universe
    - 'serial:<USB_SERIAL>' resolves to a stable /dev/serial/by-id path
    - Two-pass resolution prevents auto-detect from stealing explicit bindings
    - --print-dmx-resolution CLI flag for verifying wiring
    - Workspace 0.3.0-rc2 -> 0.3.1-alpha
  • v0.3.0

    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.
  • v0.3.0-rc10

    v0.3.0-rc10
    
    - fix(web): AppImage/on-disk dashboard now serves consistently; embedded and
      on-disk dist no longer mix (blank-page fix); embed can't go stale/empty.
    - feat(daemon): --app desktop app-window mode (Chromium --app), default for
      GUI launches, off in a terminal / on headless boxes.
    - feat(daemon): primary binary renamed to 'orb' (orb-daemon alias retained).
  • v0.3.0-rc9

    Release: orb v0.3.0-rc9
    orb-daemon v0.3.0-rc9
    
    fix(web): serve embedded dashboard at / inside the AppImage (handle_root
    fell back to JSON when no on-disk frontend/dashboard/dist existed).
  • v0.3.0-rc8

    Release: orb v0.3.0-rc8
    v0.3.0-rc8 — Raspberry Pi (homy) deploy + aarch64 release asset
    
    Same as rc7 plus:
    - ci(release): aarch64 Raspberry Pi bundle (orb-daemon-aarch64.tar.gz) is now
      a first-class GitLab Release asset (release_appimage needs build_aarch64)
    - chore(projects): homy audio.toml migrated to schema v2
    
    Release assets: x86_64 AppImage + aarch64 Pi bundle (binary + libpython3.13 +
    stdlib + dashboard), each with SHA256.
  • v0.3.0-rc7

    Release: orb v0.3.0-rc7
    v0.3.0-rc7 — Raspberry Pi (homy) deploy + aarch64 CI build
    
    - fix(midi): dispatch CC mappings via the World-resource registry, so
      PyO3/REPL-registered CC bindings (incl. Grid fader -> executor blend)
      actually dispatch on the daemon (+ regression tests)
    - feat(projects): homy project; rightmost Intech Grid fader (CC 39) ->
      warm_white executor blend; headless systemd unit (dashboard control surface)
    - ci(aarch64): Docker cross-build for Raspberry Pi as a GitLab pipeline job
      (orb-daemon-aarch64.tar.gz: binary + libpython3.13 + matching stdlib + dist)
    - chore(deploy): pin flake-cross.nix to flake.lock revs
  • v0.3.0-rc6

    Release: orb v0.3.0-rc6
    orb 0.3.0-rc6
    
    Fixes the AppImage 'Dashboard not built' bug: the dashboard is now reliably
    embedded (prebuild + ORB_SKIP_FRONTEND_BUILD; build fails loudly if the embed
    is empty). Includes rc5's GUI/browser/last-project fixes.
  • v0.3.0-rc5

    Release: orb v0.3.0-rc5
    orb 0.3.0-rc5
    
    AppImage desktop launch fixes:
    - GUI double-click runs headless + opens the dashboard in the browser
      (no longer exits immediately on missing terminal).
    - xdg-open no longer inherits the AppImage's LD_LIBRARY_PATH.
    - Reopens the last-loaded project on launch.
    
    Also: CI test_python/test_rust green, mkdocs --strict fixed.
  • v0.3.0-rc3

    Audio Pipeline
    Flicd fixes
  • v0.3.0-rc2

    f167f19c · chore(release): 0.3.0-rc2 ·
    0.3.0-rc2 — rehearsal scrub (nudge)
  • v0.3.0-delta

    Release 0.3.0-delta
    
    DSP audio routing graph editor — major feature release.
    
    UI:
    - New 'Audio Routing' panel in dashboard
    - Rete.js v2 + Svelte 4 node-graph editor
    - 14 DSP effects + draggable palette
    - Live param inspector + per-node level meters
    - WebSocket-driven live updates with origin echo suppression
    - Bus creation flow
    
    Backend:
    - audio.toml schema v1 (replaces mic_config.toml; auto-migrates on boot)
    - Per-bus DSP chains via BusEffectChainRegistry (zero-alloc hot path)
    - Multi-deck MusicManager (4 decks, ≤1 librespot)
    - Deck-aware OnSongEnd / FireAtSongPosition cue triggers
    - Music routing through RoutingMatrix
    - 13 REST mutation endpoints + 5 new Audio* WS Event variants
    - All 10 fixture projects boot from audio.toml
    - Perf bench: full workload at 236µs (under 1% of 25ms frame budget)