Skip to content

fix(sender): capture headless virtual display directly - #178

Draft
Betafer wants to merge 2 commits into
swellweb:maint-3.5from
Betafer:codex/fix-headless-direct-capture-v3.5
Draft

fix(sender): capture headless virtual display directly#178
Betafer wants to merge 2 commits into
swellweb:maint-3.5from
Betafer:codex/fix-headless-direct-capture-v3.5

Conversation

@Betafer

@Betafer Betafer commented Aug 21, 2026

Copy link
Copy Markdown

Summary

  • capture the TargetBridge virtual display directly when it is the only online display
  • avoid the ScreenCaptureKit shareable-content lookup in the headless monitor-mode path
  • preserve the existing physical-display and mirror path
  • keep auxiliary audio capture enabled when audio relay is requested

Why

A headless Mac mini can already create the TargetBridge virtual display, but the sender still depended on Screen Recording permission because it tried to discover that display through ScreenCaptureKit. Direct CGDisplayStream capture is sufficient for the virtual display and makes unattended startup reliable without a temporary monitor.

Validation

  • all 115 TBDisplaySender Xcode tests pass on macOS
  • added focused tests for virtual-only, physical-display, offline-virtual-display, and auxiliary-audio decisions
  • verified on Mac mini M4 -> 2017 Intel iMac: HEVC video and 48 kHz audio start with the virtual display while Screen Recording preflight remains denied

This PR intentionally contains only the direct headless capture decision and its tests.

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.

1 participant