Skip to content

Add capture_mode config to skip source picker#22

Merged
paberr merged 4 commits into
paberr:mainfrom
what-name:feat/capture-mode-config
Jun 2, 2026
Merged

Add capture_mode config to skip source picker#22
paberr merged 4 commits into
paberr:mainfrom
what-name:feat/capture-mode-config

Conversation

@what-name

@what-name what-name commented May 19, 2026

Copy link
Copy Markdown
Contributor

Problem

Every time ownscribe starts, the macOS SCContentSharingPicker dialog pops up asking which window/display/app to capture. For a meeting recorder that just wants all system audio, this adds unnecessary friction on every launch. There's no way to skip it.

Additionally, the picker flow requires "Screen & System Audio Recording" permission, when ownscribe only needs "System Audio Recording Only" since it doesn't capture video.

Fix

New capture_mode config option in the [audio] section:

  • "picker" (default): show the picker — existing behavior, no breaking change
  • "all": capture all system audio directly via SCShareableContent, skipping the picker
[audio]
capture_mode = "all"

The Swift binary accepts --capture-mode-all flag, passed by the Python wrapper when configured.

Closes #18

Test plan

  • capture_mode = "all" with audio playing — captures correctly (peak 0.88)
  • capture_mode = "all" with nothing playing — silence warning fires correctly
  • capture_mode = "picker" (default) — picker shows, captures after selection
  • Config defaults to "picker" when not specified
  • New test: test_capture_mode_passed_to_coreaudio verifies "all" flows through
  • Lint + tests pass

Remaining Todo

  • Document config and flag in README

🤖 Generated with Claude Code

Adds `capture_mode` option to `[audio]` config section:
- "picker" (default): show the SCContentSharingPicker to select
  a window, display, or app to capture
- "all": capture all system audio directly via SCShareableContent,
  skipping the picker entirely

The "all" mode uses the System Audio Recording Only permission tier
instead of Screen & System Audio Recording, which is a better fit
since ownscribe doesn't capture video.

Config: `capture_mode = "all"` in [audio] section
Flag: `--capture-mode-all` on the Swift binary

Closes paberr#18

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
what-name and others added 2 commits May 19, 2026 20:16
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.

Comment thread src/ownscribe/audio/coreaudio.py
Comment thread tests/test_pipeline.py
Add the capture_mode = "all" config to the [audio] block and note that
it skips the macOS source picker to record all system audio directly.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@paberr paberr merged commit acef6ff into paberr:main Jun 2, 2026
2 checks passed
@what-name what-name deleted the feat/capture-mode-config branch June 4, 2026 12:50
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.

Skip SCContentSharingPicker for system-audio-only capture

3 participants