Files
2026-05-27 23:29:53 +01:00

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-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.