Repository navigation
Show a "Mic only" note when a meeting records just the mic - #1794
Merged
Merged
Conversation
After one Don't Allow, later meetings skip the question and record only the user's mic, and #1787 no longer marks them degraded, so nothing on screen said the other side of a call wasn't recorded. - The recording pill shows a quiet "Mic only" note for any meeting that never built the system-audio tap. Clicking it shows the macOS box if macOS never asked, otherwise opens System Audio Recording settings, then re-reads macOS every 2s so the note flips to "Call audio on" (this recording stays mic only; the next one records both sides). It never blocks the pill from resting. - The detected-call prompt says "Call audio is off, so only your side will be recorded." when access is denied. - The mid-meeting "not verified" / "unavailable" system audio warning gets a Check Access button (redo of #1761's piece), and a shorter unverified line. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VhbLPLFZT72TB1NQbFLCAV
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VhbLPLFZT72TB1NQbFLCAV
- Call prompt only says "only your side" when Record really won't ask (denied and mic only remembered). - A second click on the note can't raise another macOS request while the first is waiting. - Check Access isn't offered when macOS says access is already on. - "Turn It On" then Don't Allow at start now shows the note too. - Accessibility help follows the note's state; doc comment placement. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VhbLPLFZT72TB1NQbFLCAV
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VhbLPLFZT72TB1NQbFLCAV # Conflicts: # Sources/Meeting/CLAUDE.md
10 of 12 tasks
- The resting capsule shows a small mic glyph before the timer while a recording is mic only and call audio is still off, so "only your side" stays visible after the pill rests, not just for 6 seconds. - The access re-check stops after about ten minutes; another click starts it again. - The pill keeps the note through stopping, so it doesn't shrink and slide Stop under the cursor mid-stop. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VhbLPLFZT72TB1NQbFLCAV
This was referenced Sep 23, 2026
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VhbLPLFZT72TB1NQbFLCAV
This was referenced Sep 24, 2026
Base automatically changed from
claude/mic-only-skip-system-tap-tuprff
to
main
September 24, 2026 02:14
r3dbars
pushed a commit
that referenced
this pull request
Sep 24, 2026
Keep both sides in the meeting overlay: the saved/error pill Open, progress and failed-row subscriptions sit next to the mic-only notice, Check Access button and their tooltips. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MGacyW51MJ3Hq87uKs3xWC
claude Bot
pushed a commit
that referenced
this pull request
Sep 24, 2026
…st Mic + call audio Resolved per release/merge-notes/1796-vs-1787-1794.md: keep both sides in the controller; #1794's unverified line plus the unheard-playback copy; the recovered notice's OK-only display before #1794's Check Access display; the hidden-primary rule alongside #1794's new buttons. Check Access now covers "can't hear the call" while macOS doesn't say access is on (a tap without access hears only zeros), and not the recovered notice. Tests added. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SgXMcLRGBtiSiybdgyD1VJ
9 of 10 tasks
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.
Requested by Justin · project thread
Before: if someone tapped Don't Allow on the call-audio prompt once, every later meeting quietly recorded only their mic. The app remembered "mic only", skipped the question, and nothing on screen said the other side of a Zoom call wasn't being recorded.
After: the recording pill shows a small Mic only note. When the pill rests, a small mic glyph stays in front of the timer for the whole meeting. Clicking the note turns call audio on: the macOS box if macOS never asked, otherwise System Audio Recording in System Settings. The note then flips to Call audio on once macOS says yes. The Zoom/Meet "Record?" prompt says "Call audio is off, so only your side will be recorded." when Record will really start mic only without asking. The mid-meeting "System audio not verified / unavailable" warning gets a Check Access button.
The note is a quiet label, not a prompt. It never pops over a call and never stops the pill from resting, so someone recording an in-person meeting on purpose isn't nagged.
Default to confirm at the Mac test: the resting-capsule mic glyph (the review's S1 pick) keeps the cue visible for the whole meeting. If Justin finds it noisy, drop it and the note shows at the start and on hover only.
#1787 is merged; this PR is now based on
mainwith main merged in (b27783a), and CI is on.Why
Batch 2 items 3 and 4 in the next-release plan: a declined call-audio prompt should never silently turn every later call into a one-sided transcript. The saved Markdown side is #1787's
mic_only: true; this PR's pill wording matches it.Product Impact
meetingsmeeting reliabilityWhat changed
Sources/Meeting/MeetingMicOnlyNotice.swift(new, Foundation-only): note states, what a click does per macOS answer, the bounded re-check (2s, about ten minutes, restarted by another click), when the call prompt says mic only, "Turn It On" then Don't Allow at start, copy, and which warnings get Check Access (not when macOS says access is already on).MeetingSessionController: publishesmicOnlyNoticefor any start without the system tap, and after start when a "Turn It On" start reads denied;turnOnCallAudioFromMicOnlyNotice()with an in-flight guard;checkSystemAudioAccessFromWarning(). Every stop path clears the note and cancels the re-check. This recording stays mic only either way; the next meeting records both sides.MeetingOverlayRootView/MeetingOverlayController: the note sits between timer and waveform (pill widens to 356pt), becomes a mic glyph in the resting capsule (144pt), wakes the pill once when it flips to "Call audio on", and stays through stopping so Stop doesn't slide. Prompts can carry a left-aligned third button.CapturePillController+TranscriptedApp: the detected-call prompt swaps its detail line when access is denied and mic only is remembered.Tests/MeetingMicOnlyNoticeTests.swift; docs inSources/Meeting/CLAUDE.mdandSources/UI/CLAUDE.md.How I checked it
scripts/dev/agent-preflight.shpython3 scripts/dev/check-build-source-lists.py,check-duplicate-declarations.py,bash -non the runnermic_only: true, M1 to M7 and M10 handled; M8 and M9 left as noted)bash build.sh --no-open(no Swift toolchain in this session; CI runs it)bash run-tests.sh(same)bash run-integration-smoke.sh(same)Risk Review
DiagnosticsTrailinfo events with TCC status and action names only.agent-review/visuals/evidence (needs a Mac run)Notes
mic_only: true, and product telemetry for the note clicks.Agent handoff
COORD_DONE: BRIEF | this PR | Mic only note + resting cue + Check Access + call prompt line | close #1761 after this lands (Justin's OK) | resting cue default | preflight, source lists, dup decls, deep review | CI on main merge, then Mac test🤖 Generated with Claude Code
https://claude.ai/code/session_01VhbLPLFZT72TB1NQbFLCAV