Skip to content

Let the next call prompt after a recorded call ends - #2281

Open
jdustinlewis wants to merge 1 commit into
r3dbars:mainfrom
jdustinlewis:fix/prompt-after-recorded-call
Open

jdustinlewis wants to merge 1 commit into
r3dbars:mainfrom
jdustinlewis:fix/prompt-after-recorded-call

Conversation

@jdustinlewis

Copy link
Copy Markdown

Fixes #2280.

Why

When you hit Record on a detected call, markAccepted mutes prompts for that provider until the matching calendar event ends (+5 min). With no event, the mute lasts 30 min. The mute stayed on after the call ended, so the next call of the same kind never prompted. Back-to-back meetings hit this most. Seen live: one recorded Meet call, then three more Meet calls over the next 7 minutes, and none of them prompted.

Product Impact

  • Affects: meetings
  • Lane: meeting reliability
  • Why this matters: a prompt that doesn't show for the second meeting of the day means that meeting doesn't get recorded. It affects every provider (Zoom, Teams, browser calls), not just Meet.

What changed

  • When the detected-call session ends and no recording is running, Record's mute drops to recordedCallEndGrace (60 s), with one re-check scheduled at that point. A mic flap at hang-up stays quiet, and the next call prompts.
  • If the session ends while a recording is still running, it could be a mute: Safari lets go of the mic on mute. So the mute stays on until a session ends, or a new one starts, with the recording stopped.
  • A recorded calendar event keeps its own snooze, so its reminder doesn't come back.
  • stop() now cancels the re-check.
  • Sources/Meeting/AGENTS.md describes the rule.

How I checked it

  • scripts/dev/agent-preflight.sh
  • bash scripts/dev/linux-checks.sh (runs without Swift)
  • Selected checks from .agents/test-matrix.yml for the files changed (bash check.sh: deterministic proof PASS, 50,077 tests passed)
  • bash build.sh --no-open
  • bash run-tests.sh --filter MeetingPromptDetector: 147/147. Four new tests:
    • the next call prompts after a recorded call ends
    • a mic flap inside the grace stays quiet
    • a mute while recording keeps the recorded call quiet after Stop
    • hanging up before Stop still lets the next call prompt
  • The new tests fail without the fix (1 fails with the cut disabled, 2 fail with the recording check removed)
  • Performance budget passed
  • bash run-integration-smoke.sh if I touched Sources/Meeting/ or Sources/TranscriptedCore/
  • swift test if I touched Package.swift, Sources/TranscriptedCore/, or the public core seam
  • bash run-e2e-smoke.sh / swift test --package-path Tools/<Package> if the matrix maps them
  • Manual check:

Checks I could not run, and why:

  • Real back-to-back calls with this build. The bug itself was reproduced live on 2026-10-30, on a build without this fix.
  • run-integration-smoke.sh and build.sh weren't run on their own; check.sh picked what to run for this diff.

Mac or hardware test still needed? Yes:

  1. Join a Meet or Zoom call, hit Record on the prompt, stop recording, and leave. Then join another call of the same kind within a minute or two. Expected: a prompt within about 60 s of leaving the first call. On main: no prompt for 30 min.
  2. Same, but leave the call before hitting Stop, then stop, then join the next call. Expected: a prompt right away. On main: no prompt.
  3. In Safari, record a Meet call, mute for a while, unmute, and hit Stop while still in the call. Expected: no prompt for that call. (main also stays quiet here; this checks the fix didn't break it.)

Risk Review

  • Privacy / local-first behavior reviewed: no new logging, analytics, or telemetry
  • No new analytics properties or Sentry tags
  • Checked the text-pin tests for every file I edited (check-source-pins.py --changed-only: pass)
  • Storage path or migration impact reviewed: none
  • Public-facing copy: none changed
  • Release/update impact: none
  • Agent PRs got an independent deep review of the full diff: two rounds of independent Claude review. The first found a P2 (a mid-call mute could make the recorded call prompt again after Stop), which is fixed and has tests. The second came back clean.
  • UI changes: none
  • No private transcripts, audio, tokens, personal paths, or customer data are included

Notes

🤖 Generated with Claude Code

Record on a detected call quieted that provider for 30 minutes (or until
the matching calendar event ended), and the quiet outlived the call. So
the next call of the same kind, often a back-to-back meeting, never got
a prompt. Seen live: a recorded Meet call, then three more Meet calls in
the next 7 minutes, none prompted.

When the detected-call session ends with the recording stopped, cut
Record's quiet to 60 s and re-check then: a mic flap at hang-up stays
quiet, the next call prompts. A session that ends while still recording
may be a mute (Safari lets go of the mic), so the quiet holds until a
session ends, or a new one starts, with the recording stopped. A
recorded calendar event keeps its own snooze.

Review: independent Claude review found that cutting on any session end
let a mid-call mute re-prompt the recorded call after Stop; fixed here
and covered by tests.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

No prompt for the next call within 30 minutes of recording one

1 participant