v0.2.0 — reliable recording + capture self-test
What's new
This release fixes the two main ways a recording became unusable, and adds diagnostics that catch capture problems before a meeting is lost.
🐛 Fixed
-
Mic recordings played 3× too fast ("chipmunk voice"). The mic tap delivers bursty, irregular frames while Core Audio ramps up, so a 1-second startup measurement read ~14000 Hz and was (correctly) rejected — but then fell back to the system tap's 48000 Hz, which got baked into the WAV header. A 48000 header over ~16000 data played back 3× too fast.
_measure_true_ratenow re-measures over progressively longer windows until it converges on a snap-able rate, instead of trusting a noisy 1-second sample.- Each source now falls back to its own requested rate, never another source's.
-
Whisper hallucinated on silent recordings. An all-silent WAV produced garbage like
System [00:00] Yourepeated 36 times._finish_sessionnow skips transcription when every captured WAV is silent, marks the sessionSILENT, and keeps the WAV forrec diagnose. In mic+system recordings where only one source is silent, the other is still transcribed.
✨ Added
-
Live capture self-test in
rec setup. Setup now opens each tap for ~2s and reports the measured peak amplitude — catching a broken Screen Recording permission (the "tap runs but delivers zeros" state) before you lose a meeting.--selftest/--no-selftest(default on; use--no-selftestin CI)--selftest-duration(default 2.0s)
-
Mic-skip warning at
rec start. When the mic will be skipped (permission not granted), you now see a yellow warning in your terminal — previously it was only logged in the daemon log. -
Smarter silence detection. The
RECORDING IS SILENTwarning now distinguishes the macOS capture-permission signature (tap ran, peak == 0.0) from a quiet source, and names the fix: toggle Screen Recording ON, then fully Quit + reopen the terminal app.
🔧 Internal
- Version bump
0.1.0→0.2.0. - New
STATUS_SILENTsession lifecycle status.
📊 Tests
- 136 tests pass (+17 new),
ruffclean. - Validated against real failing session
2026-08-04_17-19-38(mic header corrected 48000 → 16000, transcript now intelligible).
Update
pipx upgrade call-copilot
Full changelog: v0.1.0...v0.2.0