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 (
ScopedNoDenormalsat 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
AudioProcessorGraphrenders 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
.tsfiles 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.