Skip to content

feat(desktop): default System Audio to "Only during meetings"#8009

Merged
kodjima33 merged 2 commits into
mainfrom
feat/desktop-meeting-audio-default
Jun 18, 2026
Merged

feat(desktop): default System Audio to "Only during meetings"#8009
kodjima33 merged 2 commits into
mainfrom
feat/desktop-meeting-audio-default

Conversation

@kodjima33

Copy link
Copy Markdown
Collaborator

What

Flip the default System Audio capture mode from AlwaysOnly during meetings.

AssistantSettings.defaultSystemAudioCaptureMode: .always → .onlyDuringMeetings

Behavior

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

Verification

  • Clean release build of the Desktop package (xcrun swift build -c release --package-path Desktop).
  • The picker ↔ default ↔ helper-text ↔ runtime gating chain was verified end-to-end on a named bundle previously; this is a one-line constant flip with no logic/type changes.

🤖 Generated with Claude Code

kodjima33 and others added 2 commits June 18, 2026 07:32
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-apps

greptile-apps Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

Flips the default SystemAudioCaptureMode from .always to .onlyDuringMeetings, so out-of-the-box the desktop app captures mic and system audio only while a conferencing call is active. Because the setting is registered via UserDefaults.register(defaults:), only users who never explicitly chose a mode are affected — those who previously saved a preference keep it.

  • AssistantSettings.swift: Single constant changed (defaultSystemAudioCaptureMode: .always → .onlyDuringMeetings); the register(defaults:) call already propagates it correctly to both new installs and users who never overrode the setting.
  • CHANGELOG.json: Unreleased entry added with a clear, user-facing description of the new default and the Settings path to change it back.

Confidence Score: 4/5

Safe 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

Filename Overview
desktop/macos/Desktop/Sources/ProactiveAssistants/Services/AssistantSettings.swift One-line default change from .always to .onlyDuringMeetings; doc comment on the systemAudioCaptureMode property is left stale, still referencing .always as the default.
desktop/macos/CHANGELOG.json Adds an accurate unreleased changelog entry describing the new default behavior and where users can change it.

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
Loading
%%{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
Loading

Comments Outside Diff (1)

  1. desktop/macos/Desktop/Sources/ProactiveAssistants/Services/AssistantSettings.swift, line 202-205 (link)

    P2 The doc comment on the systemAudioCaptureMode property still says "Default .always preserves the prior behavior", which is now incorrect after this change. Anyone reading this code will be confused about what the actual default is.

    Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Reviews (1): Last reviewed commit: "chore(desktop): changelog for Only-durin..." | Re-trigger Greptile

@kodjima33 kodjima33 merged commit 21f580b into main Jun 18, 2026
3 checks passed
@kodjima33 kodjima33 deleted the feat/desktop-meeting-audio-default branch June 18, 2026 13:45
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