3.3 KiB
OpenSpec Change: enterprise-react-audio-components
- Change ID: enterprise-react-audio-components
- Package:
@suaveplan/react-audio - Category: react
- Target path:
packages/react/react-audio - Status: PROPOSED — Phase 2 of 3
- Date: 2026-05-19
- Spec delta:
./specs/react-audio/spec.md
Phase 2 of the decomposed
enterprise-react-audiorollout. Phase 1 (enterprise-react-audio-foundation) shipped at commitc3460248. Ships ONLY the components the spec hard-mandates; the composed-plugin UIs ship in a sibling changeenterprise-react-audio-components-extras.
Summary
Add the four spec-mandated components plus their primitives to @suaveplan/react-audio:
<PluginSlot>— generic renderer for anyAudioFxPlugin, parameterised byslotRenderersfor specialised overrides (spec req 1).<PluginChainView>— drag/drop + keyboard reorder + IO-validation toast (spec req 2).<PluginParameterKnob>+<PluginParameterSlider>— keyboard + ARIA per the accessibility requirement (spec req 3).<PresetManager>—ChainSnapshotsave/restore via the provider's preset store (spec req 4).
Plus the cross-cutting infrastructure:
- Storybook coverage CI gate enforcing default + interactive + edge-case stories per component (spec req 5).
./components+./components/<name>subpath exports (spec req 6).
These six requirements are the package's external contract for Phase 2. Every requirement has explicit **Verified by:** test names in the spec delta.
Deferred to enterprise-react-audio-components-extras
The following components were listed in the original umbrella proposal but are NOT load-bearing for Phase 2's spec contract — they ship in a sibling change after Phase 2 archives:
<TransportControls>,<TrackList>+<TrackRow>,<MasterMeter><Mixer>(over@suaveplan/audio-fx-plugin-mixer)<AudioVisualizer>(waveform / spectrum / level modes)<AudioPlayer>+<BasicPlayer>+<PremiumPlayer>(over@suaveplan/audio-fx-plugin-audio-player)<MicrophoneControls>(over@suaveplan/audio-fx-plugin-microphone)<GLaDOSControls>(over@suaveplan/audio-fx-plugin-glados)<PluginLoader>— dynamic registration UI overPluginRegistry.list()
These are composed-plugin UIs whose value depends on the four core primitives shipping first. Splitting them out keeps Phase 2 to a scope a single agent dispatch has consistently shipped successfully across this migration (audio-controllers, audio-engine-browser, audio-fx-plugin-base — each in the 17–40 src-file range).
Out of scope
- Provider/hook/store surface (Phase 1, shipped at
c3460248). <MidiControllerSetup>learn-mode panel +useMidiControllerhook (Phase 3,enterprise-react-audio-midi).- The deferred composed-plugin UIs above (
enterprise-react-audio-components-extras).
Impact
Affected dependents
@suaveplan/react-audio-fingerprint,@suaveplan/react-audio-player,@suaveplan/react-audio-stream,@suaveplan/r3f-audio— all currently–in STATUS.md; each composes against the core primitives once Phase 2 lands; full migration also requires the extras + Phase 3.
After Phase 2 archives, STATUS row @suaveplan/react-audio description updates to "Phase 2 of 3 shipped: foundation + 4 spec-mandated components; remaining UIs in enterprise-react-audio-components-extras; MIDI Phase 3".