44 lines
2.3 KiB
Markdown
44 lines
2.3 KiB
Markdown
# 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-components` shipping first. Adds the composed-plugin UIs that the original umbrella `enterprise-react-audio` proposal 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 over `PluginRegistry.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.
|