Tags give the ability to mark specific points in history as being important
-
v0.4.0-beta
Release: orb v0.4.0-betaf784b7d7 · ·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 · ·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-rc1be69ccb1 · ·This is how the first Now Departing show ran. orbs premiere as a QLab replacement
-
v0.3.2-alpha
Release: orb v0.3.2-alphadaf6a232 · ·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.1875ea814 · ·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-gammac474b3fb · ·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-betafd0b15e9 · ·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-alpha759e0998 · ·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
28e4615c · ·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
083db0e8 · ·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-rc91d0e2753 · ·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-rc813450de6 · ·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-rc7c139c903 · ·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-rc68fa96edd · ·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-rc57b65f189 · ·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-delta
f8e25186 · ·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)