* fix(desktop): wait for the last mic meter to close and report a dead one
The voice recorder's level meter fired AudioContext.close() without awaiting
it and opened a new context on every take, so back-to-back takes (and the
barge-in monitor) could hold two capture contexts at once. That is what makes
Chromium raise "The AudioContext encountered an error from the audio device",
and the error was never handled: the analyser went flat and the take read as
silence.
Meter closes now go through mic-meter-context, and both the recorder and the
barge monitor wait for pending closes (capped at 1s) before opening a new
context. The recorder watches its context for 'error' and an unexpected
'closed', treats a context it can't build as failed, calls
onMeterFailure, and marks the take meterFailed.
* fix(desktop): transcribe voice turns whose level meter died
Continuous voice dropped any take whose meter-only heardSpeech stayed false,
so once the AudioContext errored every later utterance was discarded before
STT with no error shown. A meter failure now ends the turn, and the take goes
to STT unless it is under 750ms (STT decides whether there was speech).
Back-to-back meter failures show "Microphone failed" and end the conversation
instead of re-arming forever.
Fixes#75329
---------
Co-authored-by: Hermes Agent <agent@hermes.local>