Tags

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

    Release: orb v0.4.0-beta
    orb v0.4.0-beta
    
    The first 0.4.0 artifact that exists: the alpha's tag was published with
    nothing attached to it, because a red test stage skips the appimage and
    release jobs silently.
    
    What is new since then, in one line each:
    
    - The room, in 3D, read from photographs of the actual venue -- many images
      per read, measurements first, and the import places the fixtures.
    - Beam angle, aim and gel per fixture, and a colour for a dimmer-only one.
    - A DMX universe can be rebound live from a sectioned gear dialog, instead of
      editing dmx.toml and restarting.
    - The assistant keeps its conversations, shows its progress while a turn runs,
      and takes a model switch in the dashboard.
    - A Spotify sequence playing to its end no longer freezes the desk, along with
      four siblings of the same blocking-under-the-World-lock fault.
    - A multi-pick is one sequence on one deck, named after the track.
    - help, grammar-driven completion, history and Ctrl-R on the command line.
    - Key, downbeat, loudness and structural segmentation in orb-dsp.
    - Every orb serves its own manual at /docs/.
    
    See CHANGELOG.md for the full list.
  • v0.4.0-alpha

    3e9bb9c7 · release: 0.4.0-alpha ·
    orb v0.4.0-alpha
    
    A 3D model of the room, lit by the live rig.
    
    STAGE 3D: venue.toml describes the room and round-trips; the stage-3d
    panel renders it and draws a volumetric beam cone per fixture from the
    live DMX frame. Fixture profiles gained [beam]; rig entries gained
    orientation and mount. A room can be read from a photograph via
    POST /api/venue/ingest, which returns a proposal and never a write, and
    refuses an image with no scale anchor rather than inventing one.
    
    CONSOLE: `sequence` reports instead of creating, `list <thing>` covers
    everything worth listing, completion knows both commands and the show's
    own sequence and cue names, the bar grows to show an answer, and
    `music search` + `play 0, 2, 4` reach every provider.
    
    SHELL: the top bar and edge docks stay put while the canvas scrolls; an
    `empty` layout on l+x; a shared chooser on Shift+A then p, caret already
    in its filter; a layout saves to and loads from browser, project or
    config.
    
    MUSIC: a play with no deck lands on a free one and leaves a sequence and
    an executor to bind. A cue can no longer wedge the desk -- the frame loop
    used to hold the World write lock across provider network I/O.
    
    Also ships everything that had accumulated as Unreleased since 0.3.2-rc0:
    the projects root, virtual MIDI twins, edit mode and binding inspector,
    AI control with an action journal, the console command layer, the unified
    show timeline, show persistence and seamless song looping.
    
    Alpha: stage 3D is new and the venue schema may still move.
  • v0.3.2-rc1

    Release: orb v0.3.2-rc1
    This is how the first Now Departing show ran. orbs premiere as a QLab replacement
  • v0.3.2-rc0

    orb v0.3.2-rc0
  • v0.3.2-alpha

    Release: orb v0.3.2-alpha
    orb v0.3.2-alpha
    
    CUE / CUES cue-editor dashboard widget (cue-centric inspector, song
    waveform with draggable jump-in markers, per-cue Volume 0-150%, live
    apply + surgical setup.py save) plus waveform/WebSocket idle-CPU
    optimization.
  • v0.3.1

    Release: orb v0.3.1
    orb v0.3.1
    
    Load-to-cue reconciliation, cue on_leave hook, multi-deck music control,
    dashboard shell/panel additions, and /command + /show/jump fixes.
    See Changes.md for the full changelog.
  • 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)