# audio-device-management Specification ## Purpose TBD - created by archiving change add-audio-device-selector. Update Purpose after archive. ## Requirements ### Requirement: Audio Device Enumeration The frontend SHALL enumerate and display all available audio input devices. #### Scenario: List available devices - **WHEN** user opens meeting detail page - **THEN** system SHALL enumerate all audio input devices - **AND** display them in a dropdown selector - **AND** exclude virtual/system devices like "Stereo Mix" #### Scenario: Refresh device list - **WHEN** user clicks refresh button or device is connected/disconnected - **THEN** system SHALL re-enumerate devices - **AND** update dropdown options - **AND** preserve current selection if still available #### Scenario: Device label display - **WHEN** devices are listed - **THEN** each device SHALL display its friendly name (label) - **AND** indicate if it's the system default device ### Requirement: Manual Device Selection The frontend SHALL allow users to manually select their preferred audio input device. #### Scenario: Select device from dropdown - **WHEN** user selects a device from dropdown - **THEN** system SHALL update selected device state - **AND** start volume monitoring on new device - **AND** save selection to localStorage #### Scenario: Load saved preference - **WHEN** meeting detail page loads - **THEN** system SHALL check localStorage for saved device preference - **AND** if saved device is available, auto-select it - **AND** if saved device unavailable, fall back to system default #### Scenario: Selected device unavailable - **WHEN** previously selected device is no longer available - **THEN** system SHALL show warning message - **AND** fall back to system default device - **AND** prompt user to select new device ### Requirement: Real-time Volume Indicator The frontend SHALL display real-time audio input level from the selected microphone. #### Scenario: Display volume meter - **WHEN** a device is selected - **THEN** system SHALL show animated volume meter - **AND** update meter at least 10 times per second - **AND** display level as percentage (0-100%) #### Scenario: Volume meter accuracy - **WHEN** user speaks into microphone - **THEN** volume meter SHALL reflect actual audio amplitude - **AND** peak levels SHALL be visually distinct #### Scenario: Muted or silent input - **WHEN** no audio input detected for 3 seconds - **THEN** volume meter SHALL show minimal/zero level - **AND** optionally show "No input detected" hint ### Requirement: Audio Test Recording The frontend SHALL allow users to record a short test audio clip. #### Scenario: Start test recording - **WHEN** user clicks "Test Recording" button - **THEN** system SHALL start recording from selected device - **AND** button SHALL change to "Stop" with countdown timer - **AND** recording SHALL auto-stop after 5 seconds #### Scenario: Stop test recording - **WHEN** recording reaches 5 seconds or user clicks stop - **THEN** recording SHALL stop - **AND** audio blob SHALL be stored in memory - **AND** "Play Test" button SHALL become enabled #### Scenario: Recording indicator - **WHEN** test recording is in progress - **THEN** UI SHALL show recording indicator (pulsing dot) - **AND** remaining time SHALL be displayed ### Requirement: Test Audio Playback The frontend SHALL allow users to play back their test recording. #### Scenario: Play test recording - **WHEN** user clicks "Play Test" button - **THEN** system SHALL play the recorded audio through default output - **AND** button SHALL change to indicate playing state - **AND** playback SHALL stop at end of recording #### Scenario: No test recording available - **WHEN** no test recording has been made - **THEN** "Play Test" button SHALL be disabled - **AND** tooltip SHALL indicate "Record a test first" ### Requirement: Integration with Main Recording The main recording function SHALL use the user-selected audio device. #### Scenario: Use selected device for recording - **WHEN** user starts main recording - **THEN** system SHALL use the device selected in audio settings panel - **AND** if no device selected, use auto-selection logic #### Scenario: Device changed during recording - **WHEN** user changes device selection while recording - **THEN** change SHALL NOT affect current recording - **AND** new selection SHALL apply to next recording session ### Requirement: Audio Settings Panel UI The frontend SHALL display audio settings in a collapsible panel. #### Scenario: Panel visibility - **WHEN** meeting detail page loads - **THEN** audio settings panel SHALL be visible but collapsible - **AND** panel state (expanded/collapsed) SHALL be saved #### Scenario: Panel layout - **WHEN** panel is expanded - **THEN** it SHALL display: - Device dropdown selector - Volume meter visualization - Test recording button - Play test button - Status indicator #### Scenario: Compact mode - **WHEN** panel is collapsed - **THEN** it SHALL show only selected device name and expand button