Skip to content

feat(audio): add native macOS system audio tap#485

Merged
gabrielste1n merged 5 commits into
mainfrom
core-audio-tap
Mar 23, 2026
Merged

feat(audio): add native macOS system audio tap#485
gabrielste1n merged 5 commits into
mainfrom
core-audio-tap

Conversation

@gabrielste1n

Copy link
Copy Markdown
Collaborator

Summary

  • add a native macos-audio-tap helper and build/package wiring for CoreAudio tap capture
  • route meeting transcription through the native tap manager instead of renderer screen-capture loopback
  • remove the remaining legacy screen-capture system-audio path, dead helpers, and unused desktop-capture bridge code
  • hide system-audio permission UI when native capture is unsupported

Validation

  • npx prettier --write ...
  • npm run lint (passes with existing repo warnings only)
  • npm run typecheck

Notes

  • system audio is now native-only on supported macOS versions
  • unsupported devices no longer use the old getDisplayMedia fallback

Add a Swift CoreAudio tap helper and main-process manager for native macOS system audio capture in meeting transcription. Keep native system audio in main, preserve the legacy Electron flow as fallback, and align the Electron bridge typings with the shipped preload APIs so lint and typecheck pass on the feature branch.
Remove the remaining screen-capture loopback path and delete unused\nsystem-audio helpers so meeting transcription relies on the native\naudio tap manager only.\n\nHide system-audio permission UI when native capture is unsupported\nand simplify meeting startup to warm only the streams that can\nreceive audio.
…t OS on mount

Microphone permission was persisted in localStorage and never re-checked
against the actual OS state, causing stale "granted" status after TCC
resets or app updates. System audio request was using a probe-based
approach instead of the read-only getMediaAccessStatus API.

- Add check-microphone-access IPC handler using getMediaAccessStatus
- Add mount-time re-validation effect for mic permission in usePermissions
- Replace probe-based system audio request with getMediaAccessStatus + open Settings
- Expand SystemAudioAccessResult status type to include all OS return values
Add strict format rules to BASE_SYSTEM_PROMPT to prevent tables,
preamble, attendee lists, and horizontal rules in generated notes.
Generate titles for all notes after action processing, not just
meeting notes. Forward title parameter through onSuccess callback.
@gabrielste1n
gabrielste1n merged commit f64d8f1 into main Mar 23, 2026
6 checks passed
@gabrielste1n
gabrielste1n deleted the core-audio-tap branch March 23, 2026 16:50
charian47 pushed a commit to charian47/openwhispr that referenced this pull request Apr 25, 2026
feat(audio): add native macOS system audio tap
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