# 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`: - `` (play/pause/stop/seek/loop/tempo with keyboard). - `` + `` (track enumeration + per-row controls). - `` (overall output peak/RMS meter). - `` (track strips with gain/pan/mute/solo/sends — composed against `@suaveplan/audio-fx-plugin-mixer`). - `` (waveform / spectrum / level meter modes). - ``, ``, `` (composed against `@suaveplan/audio-fx-plugin-audio-player`). - `` (composed against `@suaveplan/audio-fx-plugin-microphone`). - `` (composed against `@suaveplan/audio-fx-plugin-glados`). - `` — 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/` 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 `` / `` / `` (Phase 2). - `` (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.