Skip to content

Roadmap

Stagewright is a commercial live-performance plugin host for macOS (Windows planned). This page is the source of truth for: what's shipped, what's next, what ships in 1.x dot-releases (free updates for every licence holder), and what's a real v2 conversation.

This page is read by the product page, the marketing copy, and the support team. Keep it accurate, if it ships, mark it shipped; if it's deferred, say so.

Marketing-facing scope lives here; the long-form implementation roadmap is kept internally to the team.

Current limitations

  • macOS only. Apple Silicon + Intel universal. A Windows build is planned; engine and frontend compile cross-platform today but haven't been smoke-tested on a real Windows machine yet.
  • Sample rate by tier. The Stage tier runs at 48 kHz (standard for live); the Studio tier unlocks 88.2 / 96 / 192 kHz.

Try Stagewright free for 30 days, then choose a Stage or Studio licence. Projects load identically across tiers and releases.

What's shipped

App shell

  • ✅ In-window loading overlay (no separate splash window; maximise / fullscreen during boot apply to the real window).
  • ✅ Help menu (Documentation, Report an Issue, About).
  • ✅ Settings modal (back-panel mode, start-locked, default wire mode, XR-monitor opt-in). Per-installation, never written to the project file.
  • ✅ Unsaved-changes badge in the statusbar; quit confirmation on ⌘Q / red traffic-light / system shutdown when dirty.
  • ✅ NSPasteboard-backed clipboard (no WKWebView "Allow paste?" popover, including Monaco's right-click menu).
  • ✅ Tooltip dismiss on document-wide pointerdown / blur.

Back panel, Blueprint

  • ✅ Node-graph wiring with type-aware audio + MIDI cables.
  • ✅ Auto-arrange (signal-flow depth + barycentric).
  • ✅ Cursor-anchored zoom + wheel-passthrough on card controls.
  • ✅ Drop-on-wire splice + stitch-around-removed-node.
  • ✅ Marquee select + group drag.
  • ✅ Wire visualization modes (Simple / Activity / Levels); simple is the default for new installs.
  • ✅ dBFS hover tooltip on every audio wire.
  • ✅ Chain-trace highlight.
  • ✅ Channel-mixer per-strip user labels (round-tripped in project).
  • ✅ Back-canvas lock / edit toggle protects wires + card moves from accidental drags; configurable in Settings.
  • ✅ Mixer EQ enable / bass / treble round-tripped in project.

Front panel, Performer

  • ✅ Grid-snapped layout, strip bands, edit vs. performance mode.
  • ✅ Full widget catalog (knob, fader, button, toggle, led, led-button, pad, bargraph, vumeter, meter, label, panel, expression-pedal, sustain-pedal, drawbar, tuner, metronome).
  • ✅ Iconic toggles with on / off Phosphor icons.
  • ✅ Bindings: plugin-param, plugin-bypass, plugin-peak, tuner-node, metronome-node, unbound (script-only).
  • ✅ Per-control scaling curves (linear / log / exp / s-curve).
  • ✅ Locked controls (mouse off, MIDI on).
  • ✅ Anti-misclick drag threshold.
  • ✅ Control groups + radio groups (with lock-on for radio).
  • ✅ MIDI Learn (CC + note), with boolean latching for momentary-button hardware.
  • ✅ Widget-target MIDI Learn for script-driven macros (tilt EQ, cross-faders) without a plugin-param binding.

Logic panel, Script

  • ✅ TypeScript authoring in Monaco with IntelliSense + hover docs.
  • ✅ Sandboxed QuickJS runtime in the engine.
  • ✅ One-script-per-project model.
  • ✅ Widget API, MIDI in/out, persistent KV, hooks (onInit, onCC, onProgramChange, onTimer, onRackChange, onVariation, onShutdown).

Engine

  • ✅ Two-process architecture (engine sidecar isolated from GUI).
  • ✅ VST3 + AudioUnit hosting.
  • ✅ Out-of-process plugin scanning, content-hash cached.
  • ✅ Rack switching (without crossfade, see "v2").
  • ✅ Variations within a rack.
  • ✅ MIDI binding latching for momentary controllers.
  • ✅ FTZ / DAZ across the whole graph render (ScopedNoDenormals at MasterMute, the outermost AudioProcessor); subnormal floats no longer hit the slow path on signal tails / quiet passages.
  • ✅ Lock-free plugin parameter monitoring; the audio thread does an atomic store and the message thread drains listeners at the metrics-tick rate. No callAsync from the audio thread.
  • ✅ Aggregate Device drift-correction hint surfaced in the Devices inspector (most-common cause of input-channel crackle in any host).

Diagnostics

  • ✅ Engine log with per-line color taxonomy + Cmd-C copy.
  • ✅ Engine log noise filter (macOS / plugin stderr noise that isn't actionable is dropped from the panel).
  • ✅ MIDI Monitor (per-device picker, default off, with defence-in-depth dedupe for double-delivery paths).
  • ✅ XR (audio-dropout) counter — opt-in, in Settings.
  • ✅ Combined under one "Diagnostics" bottom panel.

Distribution

  • ✅ macOS 11+ universal binary (Apple Silicon + Intel).
  • ✅ Hardened-runtime entitlements for 3rd-party AU/VST3.
  • ✅ Embedded engine Info.plist (LSUIElement background agent).
  • ✅ Perpetual commercial licence, sold direct, no licence server in the audio path.
  • ✅ Developer ID code-signing + Apple notarisation (macOS app + dmg, stapled). Windows signing still pending.

Shipped in 1.0.0 (macOS commercial launch)

macOS-first; Windows parity is a 1.x release (below).

  • Developer ID code-signing + Apple notarisation. App + DMG signed, notarized, stapled — no Gatekeeper warning; distributed from nubisco.io.
  • Paddle checkout. Buy a Stage or Studio licence (Founders / Standard) from the product page; Paddle (Merchant of Record) handles payment + global tax/VAT; key delivered by email + on the success page.
  • In-app licence + 30-day trial. Offline Ed25519 validation with engine-enforced tier caps (sample rate + I/O), an engine-tracked 30-day trial, an entry modal, and an always-on tier chip + upgrade CTA. Free hardship grants via scripts/license/.

Planned for 1.x (free dot-releases)

These ship in 1.0.x or 1.x.0 point releases. Every Founders / Standard licence holder gets them free.

Audio polish

  • 🛠 Parallel graph executor. JUCE's AudioProcessorGraph renders sequentially on the audio thread; independent branches (vocal chain vs. guitar chain vs. piano chain) all run on one core while the others sit idle. Mature hosts distribute branch work across cores via a thread pool. Building this is the biggest single CPU-headroom win available to us at small buffers and the largest engineering gap vs. other live performance hosts. Scope: a custom graph runner replacing the JUCE sequential render loop, with per-edge audio buffers and lock-free signaling.
  • 🛠 Default block size 256 for new installs.
  • 🛠 Audio-callback allocation audit.

Platform

  • 🛠 Windows 11 parity. Engine + frontend already compile cross-platform; needs a real Windows test pass + code-signing (signtool + an OV cert) wired into the release build.

Distribution

  • 🛠 Auto-updater plumbing.

UX cleanup

  • 🛠 Idle-wire-fade investigation (reported; no repro yet).
  • 🛠 Rack clone + rename + confirm-delete + real UNDO.
  • 🛠 Plugin grid: vendor multi-select filter.
  • 🛠 Real undo across card removal / graph mutations.

Rack presets / scenes

  • 📋 Per-rack named presets that snapshot a tunable subset of state (channel-mixer gains / pans / mutes, plugin parameters, bypass-gate states) so the user can save "drums-louder" or "vocal-hard-left" variants and recall them per-song without duplicating the whole rack. Distinct from racks: a rack is a signal-routing topology, a preset is a settings overlay on top of it. Scope to design alongside the Song / Setlist v2 work since the recall trigger will most likely be a song-part change.

Hosting

  • 🛠 CLAP plugin format.

Planned for v2 (paid upgrade)

These are big features that warrant a new major release with upgrade discounts for existing owners.

Songs / Setlists / ChordPro

  • 📋 Song + Song Part model in the engine. Owns the variation pointer, the active rack, and the lyrics.
  • 📋 Setlist view. Order songs, drag-reorder, pre-load next-N.
  • 📋 ChordPro reader. Stage-readable lyrics + transposed chords on a dedicated view. Already advertised on the corporate page; the engine + UI work lands in v2.
  • 📋 Program Change handlers mapped to song / song-part. Hook surface already in the script; mapping to the song model lands here.

LAN web server

  • 📋 Local-network HTTP + WebSocket server inside the desktop app at http://<lan-ip>:PORT. Two routes:
    • Performer front panel, same Vue shell as the desktop, drives the rig from anywhere on the LAN.
    • Lyrics / ChordPro reader, large-text view for an iPad on a music stand. Natural pair with the song model.
  • 📋 No auth in this version (the LAN is the perimeter); QR-code one-tap pairing in app settings.

Multi-file scripting

  • 📋 Multiple .ts files per project, cross-file imports inside the QuickJS sandbox, Monaco-side workspace.

Rack crossfade on switch

  • 📋 Glitch-free switch including long-tail reverbs, the corporate page advertises this; v1 ships rack switching but not crossfade.

Won't do

  • Become a DAW. No timeline, no clip arrangement, no comping. The page says this clearly; we'll keep saying no.
  • Subscription model. Perpetual licences only. Major versions sold separately at a discount for existing owners.
  • Telemetry / phone-home. The engine and the editor never contact a Nubisco-controlled server during a show. Update checks (when the auto-updater lands) happen on-demand from the menu, not in the background.

Where this page comes from

This roadmap mirrors docs/FEATURES.md in the source tree (shipped + pending features by area) and docs/BUGS.md (the bug audit trail). When you ship a feature, update FEATURES.md AND this page at the same time so the docs stay honest.

Proprietary software, used under the Stagewright Software Licence.