2.3 KiB
OpenSpec Change: enterprise-react-audio-components-extras
- Change ID: enterprise-react-audio-components-extras
- Package:
@suaveplan/react-audio - Category: react
- Target path:
packages/react/react-audio - Status: PROPOSED — supplementary to Phase 2 (
enterprise-react-audio-components) - Date: 2026-05-19
- Spec delta:
./specs/react-audio/spec.md
Supplementary phase. Blocked on
enterprise-react-audio-componentsshipping first. Adds the composed-plugin UIs that the original umbrellaenterprise-react-audioproposal listed but the Phase 2 spec did not hard-mandate.
Summary
Add the composed-plugin UI components to @suaveplan/react-audio:
<TransportControls>(play/pause/stop/seek/loop/tempo with keyboard).<TrackList>+<TrackRow>(track enumeration + per-row controls).<MasterMeter>(overall output peak/RMS meter).<Mixer>(track strips with gain/pan/mute/solo/sends — composed against@suaveplan/audio-fx-plugin-mixer).<AudioVisualizer>(waveform / spectrum / level meter modes).<AudioPlayer>,<BasicPlayer>,<PremiumPlayer>(composed against@suaveplan/audio-fx-plugin-audio-player).<MicrophoneControls>(composed against@suaveplan/audio-fx-plugin-microphone).<GLaDOSControls>(composed against@suaveplan/audio-fx-plugin-glados).<PluginLoader>— dynamic registration UI overPluginRegistry.list().
Each ships with .md, .test.tsx, and three Storybook stories per the gate already enforced in Phase 2. Subpath exports ./components/<name> extend the Phase 2 surface.
Spec delta scope
The Phase 2 spec stays valid; this change adds one new requirement per component family asserting the surface, plus a parity invariant that no main-branch component is omitted at the conclusion of this change.
Out of scope
- Foundation hooks/provider (Phase 1).
- Spec-mandated core primitives
<PluginSlot>/<PluginChainView>/<PresetManager>(Phase 2). <MidiControllerSetup>(Phase 3).
Impact
Affected dependents
After this change archives, the parity invariant against main is restored: every component on /mnt/s/web/suaveplan/packages/react/react-audio/src/components/ has a genesis equivalent. react-audio-fingerprint, react-audio-player, react-audio-stream, and r3f-audio migrations can compose freely against the full UI surface.