Repository navigation
v0.30.5: Fix Bluetooth recording speed and reduce recording overhead
Minutes 0.30.5 fixes a Bluetooth audio-rate mismatch that could save the other side of a call at the wrong speed. It also reduces unnecessary recording-loop work and fixes several background-process and update-notice problems.
What changed
- Keep Bluetooth call audio at the correct speed. On macOS, the Core Audio tap now follows the aggregate input stream's actual format, handles rate and channel changes, and carries fractional sample time across those changes. This addresses the 3× playback-speed failure reported with a 16 kHz Bluetooth headset. #1165 #1166 #1168
- Avoid repeatedly scanning the recording event history. The live relay reads bounded appended bytes and checks durable events on a separate timer. Longer event histories no longer cause the loop to reread the whole file on every connection poll. Rotation and truncation remain handled. #1159
- Retire timed-out title jobs. Title refinement has a bounded process lifetime and output, and timeout cleanup terminates and reaps its process tree. #1162
- Clean up notification and Settings helpers. A shared asynchronous reaper checks outstanding helpers without letting a slow process delay cleanup of completed ones. #1163
- Show update notices only for a newer version. Persisted offers are checked using SemVer, including prerelease and build metadata. Equal, older and invalid offers are cleared; development builds suppress production update offers. #1161
- Make the macOS CLI archive executable after extraction. The sherpa archive restores and checks the CLI's executable permission before packaging. It no longer needs the manual permission repair documented for 0.30.4. #1154
CLI / MCP / desktop impact
The Bluetooth format fix applies to macOS Core Audio tap capture. Shared recording and process-management changes reach the desktop and relevant CLI paths. There are no new public MCP tools or CLI commands. Windows desktop remains experimental and unsigned.
Breaking changes or migration notes
No configuration or stored-meeting migration is required. Transcription engines, diarization defaults and automatic-update behavior remain unchanged. Update the desktop app manually, then reopen Recall to use its matching bundled CLI.
The fix does not rewrite existing recordings. A speed correction for an older recording must be based on that recording's actual timing evidence.
Verification and limits
The signed Minutes Dev build was exercised with AirPods selected for microphone and output, including the 48 kHz to 24 kHz output transition while the microphone was active. Synthetic checks cover 8, 16, 44.1, 48 and 96 kHz, uneven callbacks and rate changes. A clean hardware capture preserved two approximately three-second tones and their one-second gap at the expected pitches. The test record keeps automated timing and human listening confirmations separate.
The exact Nothing Ear (a) headset from the report and every mid-call hardware transition have not been tested. The recording-loop fix has regression coverage; no battery-life or percentage CPU reduction is claimed.
Thank you to @leon-wbr for the Bluetooth diagnosis and original fix, whose commit is preserved in the release history, and to @adriannoes for the detailed recording-performance and process-lifecycle reports.
Install or update
- macOS desktop: download the DMG below, or run
brew updatefollowed bybrew upgrade --cask silverstein/tap/minutes. - Command line:
cargo install minutes-cli --version 0.30.5, orbrew upgrade silverstein/tap/minutesfor an existing Homebrew install. - MCP server:
npx minutes-mcp@0.30.5with the updated local Minutes engine, or install the updated desktop extension below.
Minutes remains free and open source. These changes process audio locally. Content retrieved by a connected cloud assistant becomes context for that assistant under its settings.