chore: Archive all pending OpenSpec proposals

Force archive the following proposals:
- add-audio-device-selector (complete)
- add-embedded-backend-packaging (19/26 tasks)
- add-flexible-deployment-options (20/21 tasks)

New specs created:
- audio-device-management (7 requirements)
- embedded-backend (8 requirements)

Updated specs:
- transcription (+2 requirements for model download progress)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
egg
2025-12-22 08:44:04 +08:00
parent c36f4167f2
commit e7a06e2b8f
19 changed files with 1551 additions and 0 deletions

View File

@@ -0,0 +1,133 @@
# 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