* feat(audio): lower other audio while dictating
Opt-in setting lowers the default PipeWire or PulseAudio sink while the
microphone is open, then restores that exact level. It stays off by default.
* fix(test): keep pytest.approx working when numpy is mocked
Other test modules replace sys.modules["numpy"] with a MagicMock at import
and leave it there. pytest.approx then crashes on isinstance(..., numpy.bool_).
* fix(audio): restore every channel and do not duck if it cannot be undone
A failed restore-point write no longer lowers the sink. PulseAudio puts
each channel back, and a dead microphone restores playback instead of
waiting for an explicit stop. The recognition test patches the real
audio module when an older test left a mock behind.
* fix(test): put the audio-feedback mock back after the ducking test
The recognition test has to patch the real module, but later tests still
expect the mock that test_text_injector installs. Restore that mock when
the test ends, and annotate the new helpers.
* fix(test): annotate the playback-duck tests
AGENTS.md requires a type hint on every new function. These tests were the
ones still missing them.
* fix(audio): skip arming playback duck after recording already failed
* chore: retrigger review after rebase