feat(notifications): choose the notification sound from the OS's own sounds...
Facebook Messenger on your desktop, without the Facebook clutter
Brought to you by:
kristoffer-r
Originally created by: kristofferR
The notification sound was on or off only. People want to choose it, and every OS already ships notification sounds they know from other apps. On Omarchy-style Linux setups the daemon also ignored Carrier's sound hint, so there was no sound at all.
What changed
notification_sound_choice stores the choice by platform and name. The old notification_sound boolean stays in sync (off only when the choice is Off), so the page and older builds keep working. Old settings migrate: true → System default, false → Off. A sound that has disappeared, or was chosen on another platform, plays the default.src-tauri/src/sound.rs lists sounds, imports chosen files, resolves the choice and plays files where the OS can't. A stored name only matches a sound Carrier listed, so a setting never points at an arbitrary path, and nothing from the page chooses a sound.~/Library/Sounds and /System/Library/Sounds, delivered with UNNotificationSound.soundNamed. Choose file… copies an AIFF, CAF or WAV into ~/Library/Sounds, so Focus still governs it. Preview uses NSSound.sound, it gets the sound-name/sound-file hint; otherwise Carrier sends suppress-sound and plays the file through GStreamer. Chosen files can be WAV, OGG or OGA.silent flag can only take sound away, and Mute, Pause, calls and Messenger's Do Not Disturb stop a notification before any sound is chosen.Known limits
Testing
cargo fmt, clippy -D warnings (Linux, and cross-checked for macOS and Windows), cargo test --lib and bun run check pass. Unit tests cover migration and round trip, the unreadable-value fallback, silent only taking sound away, sound listing and filtering, import never overwriting (including a dangling link), Windows sound names, theme inheritance and path safety, and when Linux leaves the sound to the server.
Originally posted by: chatgpt-codex-connector[bot]
Codex Review Summary: ✅ Completed
This comment shows the latest Codex review activity on this pull request. | Review | Status | Commit | Review trigger | | --- | --- | --- | --- | | 📝 **Code Review** | ✅ **Completed** <relative-time datetime="2026-11-08T21:44:21.689802Z">2026-11-08T21:44:21.689802Z</relative-time> | `c2afdc8` | Manual request |ℹ️ About Codex in GitHub
[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you - Open a pull request for review - Mark a draft as ready - Comment "@codex review" or "@codex security review". Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.
Originally posted by: chatgpt-codex-connector[bot]
Codex Review: Didn't find any major issues. More of your lovely PRs please.
Reviewed commit:
3696627537ℹ️ About Codex in GitHub
[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you - Open a pull request for review - Mark a draft as ready - Comment "@codex review". If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Originally posted by: kristofferR
@codex review for consequential defects introduced by this PR; do not expand its original scope with unrelated refactors, features, or speculative hardening
Ticket changed by: kristofferR
Originally posted by: chatgpt-codex-connector[bot]
Codex Review: Didn't find any major issues. Breezy!
Reviewed commit:
c2afdc8212ℹ️ About Codex in GitHub
[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you - Open a pull request for review - Mark a draft as ready - Comment "@codex review". If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".