docs(spec): baseline 0.9.5 — v1 audio + PTT lifecycle redesign
Add SysRS-303/304, SysDes-149/150/151, SRS-204/205/206/207, SAD-081/082/083, SDD-094/095/096/097, DEC-029/030. Captures the v1 lifecycle redesign: - Drop manual Start-audio button; audio engine is bound to voice-channel join/leave (ensure_running on first join, shutdown_if_idle on last leave). Output stream opens regardless of mic-permission state so listen-only is a first-class flow. - TransmitMode enum (Ptt / Continuous / VoiceActivity-reserved). Default Ptt on fresh install. Persisted per identity. - PTT release tail: 200 ms default (0-500 ms configurable) before transmit gate closes, avoiding clipped trailing syllables. - Hard-mute toggle overrides transmit gate regardless of mode/PTT. - Bridge surface: drop start_audio/stop_audio; add voice_join(channel_id) / voice_leave() and BridgeEvent::VoiceState. DEC-029 rejects Flutter global-hotkey packages (hotkey_manager, super_hot_key) for PTT: they wrap RegisterHotKey/RegisterEventHotKey which consume the key and don't fire key-up, wrong primitive for PTT. Native Rust DesktopPttBackend (SDD-083/084/085) stays authoritative. DEC-030 defers Voice Activity Detection to P1. RMS / WebRTC VAD / Silero VAD trade-off review (binary-size, dependency-surface, CPU profile) postponed; TransmitMode::VoiceActivity reserved on the enum surface so a P1 increment is non-breaking. Validator clean: 304/151/207/83/97 IDs, strict layered sourcing preserved, no new warnings beyond the pre-existing 35 old-package-name filenames.
This commit is contained in:
@@ -2587,6 +2587,42 @@ This section extends the ASPICE SWE.1 Software Requirements Specification. The s
|
||||
- Source SysDes: SysDes-142, SysDes-144
|
||||
- Verification method: Unit Test, Integration Test
|
||||
|
||||
**SRS-204**: The audio engine shall open the input and output streams on the user's first voice-channel join of the session and shall close them on the last voice-channel leave. The software shall expose no `start_audio` or equivalent manual-start operation at the bridge surface and shall expose no manual-start affordance in the UI; the bridge shall instead expose `voice_join(channel_id)` and `voice_leave()` operations and the audio engine shall initialise implicitly on the first `voice_join`. Output-stream opening shall not depend on the microphone-permission grant state, so listen-only is a first-class flow.
|
||||
|
||||
- Status: Baseline Candidate
|
||||
- Type: Software Lifecycle Requirement
|
||||
- Stage: P0 / MVP
|
||||
- Allocated to: Audio, Bridge, Flutter UI
|
||||
- Source SysDes: SysDes-150
|
||||
- Verification method: Integration Test, UI Review
|
||||
|
||||
**SRS-205**: The software shall represent the user's voice transmit mode as a `TransmitMode` enum with variants `Ptt`, `Continuous`, and `VoiceActivity` (the last reserved with no v1 implementation per DEC-030). The setting shall be persisted per identity via the identity store. The default value for a fresh install shall be `Ptt`. The UI shall render `VoiceActivity` as a disabled "coming soon" option until an implementation is allocated in a later baseline.
|
||||
|
||||
- Status: Baseline Candidate
|
||||
- Type: Software Interface Requirement
|
||||
- Stage: P0 / MVP
|
||||
- Allocated to: Audio, Bridge, Flutter UI
|
||||
- Source SysDes: SysDes-149
|
||||
- Verification method: Unit Test, UI Review
|
||||
|
||||
**SRS-206**: The software shall expose a `release_tail_ms` configuration value (default 200 ms, validated range 0 through 500 ms inclusive) and shall delay the `true → false` transition of `transmit_active` by `release_tail_ms` after the PTT backend reports key-up. Where the user re-presses the bound input within the tail window, the pending close timer shall be cancelled and `transmit_active` shall remain true. The release tail shall not affect `capture_active`.
|
||||
|
||||
- Status: Baseline Candidate
|
||||
- Type: Software Behavioural Requirement
|
||||
- Stage: P0 / MVP
|
||||
- Allocated to: Audio
|
||||
- Source SysDes: SysDes-151
|
||||
- Verification method: Unit Test, Integration Test
|
||||
|
||||
**SRS-207**: The software shall expose a hard-mute toggle in the Voice Bar UI. While hard-mute is engaged, `transmit_active` shall be forced false regardless of the active transmit mode, the PTT key state, or any other internal signal. Hard-mute state shall be persisted in-session only and shall reset to off when the user joins a new voice channel.
|
||||
|
||||
- Status: Baseline Candidate
|
||||
- Type: Software Behavioural Requirement
|
||||
- Stage: P0 / MVP
|
||||
- Allocated to: Audio, Flutter UI
|
||||
- Source SysDes: SysDes-150
|
||||
- Verification method: Functional Test, UI Review
|
||||
|
||||
## 17. Updated SRS to SysDes Coverage Statement
|
||||
|
||||
| SysDes Range | SRS Coverage |
|
||||
@@ -2594,6 +2630,7 @@ This section extends the ASPICE SWE.1 Software Requirements Specification. The s
|
||||
| SysDes-001 through SysDes-132 | Covered by inherited SRS baseline `SRS-001` through `SRS-184` |
|
||||
| SysDes-133 through SysDes-141 | Covered by `SRS-185` through `SRS-194` |
|
||||
| SysDes-142 through SysDes-148 | Covered by `SRS-195` through `SRS-203` |
|
||||
| SysDes-149 through SysDes-151 | Covered by `SRS-204` through `SRS-207` |
|
||||
|
||||
|
||||
## Baseline Candidate 0.9.1 Update
|
||||
@@ -2615,3 +2652,10 @@ This section extends the ASPICE SWE.1 Software Requirements Specification. The s
|
||||
| Version | Date | Description |
|
||||
|---|---|---|
|
||||
| 0.9.3 | 2026-05-15 | Added desktop PTT software requirements SRS-195 through SRS-203: `DesktopPttBackend` trait + per-platform implementations, `PttCapabilityLevel` enum, Windows Raw-Input ladder, macOS permission-aware backend, Linux GNOME-Wayland GlobalShortcuts portal backend, mouse-side-button support per DEC-027, `capture_active` / `transmit_active` split, sanitised diagnostics, missed-key-up watchdog per DEC-028. Sourcing remains strict (`SRS -> SysDes` only). |
|
||||
|
||||
|
||||
## Baseline Candidate 0.9.5 Update
|
||||
|
||||
| Version | Date | Description |
|
||||
|---|---|---|
|
||||
| 0.9.5 | 2026-05-15 | Added v1 audio + PTT lifecycle software requirements SRS-204 through SRS-207 sourced from SysDes-149..151: bridge surface drops `start_audio` / `stop_audio` and adds `voice_join(channel_id)` / `voice_leave()`, audio engine opens streams on first voice-channel join and closes on last leave with output independent of mic-permission state, `TransmitMode` enum (`Ptt` default, `Continuous`, reserved `VoiceActivity` per DEC-030) persisted per identity, `release_tail_ms` (default 200, range 0–500) gate on the `true → false` transition of `transmit_active` with re-press cancellation, Voice Bar hard-mute override of `transmit_active`. Strict layered sourcing preserved (`SRS -> SysDes` only). |
|
||||
|
||||
Reference in New Issue
Block a user