fix(meetings): keep the full meeting transcript surfaced (don't drop live segments) + audio-capture + doc fixes#3911
Merged
Conversation
…customer names The RecordingSettings.experimental_coreaudio_system_audio field doc still described the reverted 2026-04-24 decision: it said Default `true` and that the Process Tap is needed because "SCK can't see HFP audio". The actual default fn returns `false`, and its own comment 500 lines below explains the opposite: the tap cannot see audio rendered through a VoiceProcessing AudioUnit (Zoom / Meet / Teams all use one for echo cancellation), so it captures zeroed buffers on meeting audio, while SCK captures at the display compositor which does see that output. The stale field doc contradicted the function and was actively misleading (it implies meeting audio needs the tap, the reverse of the truth). Rewrite it to match the real default and mirror the change into the generated tauri.ts (verified byte-for-byte against specta's transform; CI bindings check covers it). Also remove real customer names that had leaked into this public repo: a full name plus a private call date in the field doc and its binding, three first names in the calendar-reset doc and its binding, one in the process-tap silence-watchdog comment and one in the settings migration comment, and the db test fixtures (device-name and file-path renamed consistently so the direction-scoped dedup still matches; the renamed tests pass). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three commits from one investigation into a paid user's report: a 40-min meeting "recorded both sides for the first ~5 min, then stopped, detection stayed green the whole time." I pulled his attached engine log to ground each step.
What the log proved (so we stop guessing)
System Audioand his mic ran continuously to teardown, 90 successful batch transcriptions ofSystem Audio (output), and 494 live segments mirrored intoaudio_transcriptions.Commit 3 (the most likely fix for his report): don't drop live transcript segments
The post-call meeting view reads
audio_transcriptions, which only gets a live segment ifmirror_live_meeting_to_audio_transcriptionscopies it in. That mirror silently dropped any segment whose nearest same-device audio chunk fell outside a fixed ±15s window:Fix: fall back to the nearest same-device chunk regardless of window instead of dropping (the row keeps the segment's real timestamp, so search/timeline stay correct; device attribution stays strict). Also aligned a case-sensitive device match in
mark_chunks_covered_by_liveto the case-insensitive match its sibling mirror already used (a casing difference left meeting chunks pending and inconsistent). Two regression tests added; all coverage/mirror/dedup tests pass.Commit 2: tap-only aggregate (separate audio-capture improvement)
The CoreAudio Process Tap anchored its aggregate to the system default output, so when call audio routed elsewhere (AirPods/HFP/per-app) it captured zeros. Switched to a tap-only aggregate so capture follows the app's audio. This is NOT his bug (he's on SCK, and the log shows SCK capturing both sides) — it's a real fix for users who opt into the tap, behind the experimental flag, default unchanged. Not hardware-verified (needs a Bluetooth headset on a live call).
Commit 1: doc + PII cleanup
Corrected the stale
experimental_coreaudio_system_audiodoc and removed real customer names that had leaked into this public repo (comments + test fixtures), generatedtauri.tskept in sync.Honest status
🤖 Generated with Claude Code