Skip to content

Make Calls audio-first with optional video - #69

Draft
nikshilov wants to merge 27 commits into
mainfrom
codex/reliable-call-recording-release
Draft

Make Calls audio-first with optional video#69
nikshilov wants to merge 27 commits into
mainfrom
codex/reliable-call-recording-release

Conversation

@nikshilov

@nikshilov nikshilov commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Result

Adds explicit Calls modes: Don’t record / Audio only / Audio and video. Call audio has absolute priority, uses independent microphone and system PCM tracks, survives GUI failure through the same-signed launchd helper, and does not restart when video is toggled. Call video is fixed-display HEVC/H.264 hardware-only capture with crash-forward segments, explicit spans/gaps, export/query/delete/trim coverage, and native-screenshot yield.

Closes #82, #83, and #84 only after exact installed-candidate qualification.

Exact candidate

  • Source: 2f925e3e7dae2779b090b53ed583ad336c37c62b
  • Version: 0.9.0 (39)
  • Notarization: Apple Accepted, submission 55774fbd-71d4-4544-bf5f-68b7fd3131d4
  • Installed locally from the stapled candidate ZIP
  • Automated insurance: Debug GUI build, capture protocol self-test, 1366 unhosted tests; 19 skipped, 0 failed

Physical evidence already passed

  • Real microphone and system PCM both advance and finalize.
  • Killing only the GUI leaves both PCM tracks advancing; relaunch adopts the same Call.
  • Killing the audio helper creates explicit bounded gaps and resumes the same Call in a new epoch.
  • Live audio → video → audio → video stays in one audio epoch and creates exact separate video spans.
  • Build 39 records real continuous video: 274 HEVC frames over 18.675 s at 1920×1080/15 fps; a longer Call produced six crash-forward segments.
  • Opening the native Screenshot panel stops Call video before capture and does not interrupt either audio track.
  • Failed candidates 36–38 and their causes are recorded in Capture Call system audio without any ScreenCaptureKit video leg #82/Call video retains only one frame with ScreenCaptureKit queue depth 1 #84 and project docs.

Hard blockers before ready/merge/release

  • A physical Shift–Command–3 sample on installed build 39 has not happened; two two-minute observation windows expired without user input. No synthetic event substitutes for it.
  • Direct command-line native captures on build 37 were still 1.60–1.84 s against a 0.33–0.44 s baseline; exact user-hotkey latency must be ≤ baseline +250 ms.
  • Remaining physical matrix still includes longer audio-only/video Calls, two monitors and display removal, lock/unlock, low disk, crash/relaunch on the exact final candidate, delete/export/trim, and REST/MCP/UI agreement.

This PR stays draft. Do not merge or publish until the installed physical gate is complete.

@nikshilov

Copy link
Copy Markdown
Contributor Author

Build 39 physical result blocked merge/release: the first user screenshot failed because macOS started it 58 ms after Eye began asynchronous Call-video stopCapture(); the retry was delayed. Audio stayed continuous. Commit e8d163c5af19380cf0f98cbd47e62366090ff4dd prepares build 40 by pausing frame admission without tearing down the SCK stream during the screenshot window. Local verification passed: Debug GUI build, 1,367 unhosted tests (19 skipped), Call fixture gate, and capture coexistence self-test. PR stays draft until exact installed build 40 passes the real hotkey latency/audio-gap check.

@nikshilov

Copy link
Copy Markdown
Contributor Author

Release remains blocked by #82. Exact notarized build 40 preserved both Call audio legs and continuous video, but Shift-Command-3 still took 1.49 s versus a 0.47 s no-video baseline. A same-signed output-detach probe took 1.57 s and was reverted. Bare ScreenCaptureKit and AVCaptureScreenInput probes both bottom out around 0.80-0.84 s while active, still above the +250 ms gate. Branch is clean again at e8d163c; no merge or public release.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Capture Call system audio without any ScreenCaptureKit video leg

1 participant