Files
egg e7a06e2b8f 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>
2025-12-22 08:44:04 +08:00

4.9 KiB

audio-device-management Specification Delta

ADDED 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