Say when there is no microphone rather than showing one at rest

With no microphone attached the menu drew a level indicator resting at
zero, announcing "No sound detected" — which is exactly what a working
but silent microphone draws. The two states people most need to tell
apart looked the same.

The level state now distinguishes a microphone that is absent from one
that is merely quiet, and the microphone group names the absence where
the indicator would be, as it already does for a denied permission. A
microphone that is merely slow to open still draws at rest, so the
indicator is on screen as soon as the menu is.

The product spec listed this as an edge case but no requirement carried
it, so no acceptance criterion covered it either. Added as AC28 with the
owner's authorisation, and the product spec's edge case reworded to say
what the menu does rather than that it shows nothing.

Spec: FEATURES_SPEC/2026-09_Audio_Quick_Menu.md — AC28.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
fkwp
2026-09-11 11:03:47 +02:00
co-authored by Claude Opus 5
parent eac200a727
commit 5728d42076
10 changed files with 100 additions and 9 deletions
+12
View File
@@ -150,6 +150,9 @@ Test names are the anchor; tests are created with exactly these names.
- AC27 [SC-003] — Every menu control is reachable and operable by keyboard alone in
Chromium and Firefox.
- check: `pnpm test:playwright --project=chromium --project=firefox -g "audio menu is keyboard operable in a real browser"`
- AC28 [review: #4254] — With no microphone present, the menu names the absence in place
of the level indicator, rather than an indicator at rest.
- check: `pnpm vitest run --project=unit -t "audio menu says when there is no microphone"`
## Rejected alternatives
@@ -298,6 +301,15 @@ is what holds it there.
container, which Compound does not expose today. Raised separately. The audio menu behaves
as specified standalone and as a widget, which is where its acceptance criteria are checked.
### 2026-09-11 — review finding: a missing microphone read as a silent one (#4254)
- The product spec's edge case for no microphone mapped to no FR and so to no acceptance
criterion, and the menu drew a level indicator at rest, which is what a working but
silent microphone draws. The owner chose a hint in the indicator's place, as FR-018
requires for a denied permission, over omitting the microphone group entirely. The level
state now tells a microphone that is absent from one that is silent.
- Added as AC28 and the product spec's edge case reworded to match, both with the owner's
authorisation, since acceptance criteria and the product spec are human-owned.
## PRs
- #4254 — draft, one commit per slice — AC1–AC27 (AC6, AC21, AC24 manual by the reviewer;