feat(desktop): default System Audio to "Only during meetings"#8009
Conversation
Flip defaultSystemAudioCaptureMode from .always to .onlyDuringMeetings so new installs (and existing users who never chose a mode) capture audio only while a conferencing call is detected. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Greptile SummaryFlips the default
Confidence Score: 4/5Safe to merge — it is a single constant flip in a well-understood defaults registration path, with no logic or type changes. The core change is correct and the register(defaults:) mechanism behaves exactly as described. The only issue is a stale doc comment on systemAudioCaptureMode that still names .always as the default, which is misleading but does not affect runtime behavior. The inline doc comment on systemAudioCaptureMode in AssistantSettings.swift should be updated to reflect the new default. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[App Launch] --> B{UserDefaults has explicit systemAudioCaptureMode?}
B -- Yes --> C[Use stored value: always / onlyDuringMeetings / never]
B -- No --> D[Fall back to registered default: onlyDuringMeetings NEW]
D --> E[Recording gated by MeetingDetector]
E --> F{Conferencing call detected?}
F -- Yes --> G[Capture mic + system audio]
F -- No --> H[No capture]
C -- always --> I[Capture mic + system audio continuously]
C -- never --> H
C -- onlyDuringMeetings --> E
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
A[App Launch] --> B{UserDefaults has explicit systemAudioCaptureMode?}
B -- Yes --> C[Use stored value: always / onlyDuringMeetings / never]
B -- No --> D[Fall back to registered default: onlyDuringMeetings NEW]
D --> E[Recording gated by MeetingDetector]
E --> F{Conferencing call detected?}
F -- Yes --> G[Capture mic + system audio]
F -- No --> H[No capture]
C -- always --> I[Capture mic + system audio continuously]
C -- never --> H
C -- onlyDuringMeetings --> E
|
What
Flip the default System Audio capture mode from Always → Only during meetings.
AssistantSettings.defaultSystemAudioCaptureMode: .always → .onlyDuringMeetingsBehavior
In Only during meetings mode the entire recording (mic + system audio) is gated by
MeetingDetector— nothing is captured unless a conferencing call (Zoom/Teams/FaceTime/Meet, etc.) is detected. Making it the default means, out of the box, Omi captures only during calls.Rollout — everyone switches (no migration)
The default is read via
register(defaults:), so this applies to both new installs and existing users who never explicitly chose a mode (on next launch they move from Always → Only-during-meetings). Users who already picked a mode keep their choice. Anyone can change it in Settings → General → System Audio (Always / Only during meetings / Never). This is intentional per product direction (less intrusive desktop, lower always-on capture).Notes
desktop/macos/layout and is now stale/conflicting.Verification
Desktoppackage (xcrun swift build -c release --package-path Desktop).🤖 Generated with Claude Code