Add the microphone level meter and its capture hook

useMicrophoneLevel opens a capture of the given microphone for as long as it
is enabled, reports a smoothed 0..1 level per animation frame, and tears the
capture down on disable, device change or unmount, including while the
capture is still being acquired. A denied permission and a microphone that
cannot be opened are reported as distinct states.

AudioLevelMeter renders that state as a row of bars, focusable and announcing
its state to a screen reader only while focused, with a hint in place of the
meter when permission is denied and a greyed-out meter when the microphone is
unavailable. Nothing renders it yet; the audio menu picks it up next.

Spec: FEATURES_SPEC/2026-09_Audio_Quick_Menu.md, slice 2 — AC8, AC11, AC13,
AC15.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
fkwp
2026-09-10 23:53:36 +02:00
co-authored by Claude Fable 5.1
parent 2856f555e1
commit 29a7a50d57
7 changed files with 687 additions and 0 deletions
+5
View File
@@ -24,6 +24,11 @@
},
"analytics_notice": "By participating in this beta, you consent to the collection of anonymous data, which we use to improve the product. You can find more information about which data we track in our <2>Privacy Policy</2> and our <6>Cookie Policy</6>.",
"audio_menu": {
"mic_level_active": "Picking up sound",
"mic_level_label": "Microphone level",
"mic_level_silent": "No sound detected",
"mic_permission_denied": "Microphone access is blocked. Allow it in your browser settings.",
"mic_unavailable": "Microphone unavailable",
"title": "Audio controls"
},
"call_ended_view": {