Skip to content

feat(web): custom notification sound setting for thread notifications #29372

Closed

Description

@demarant

Summary

The opt-in thread notification sound (shipped in #11481) uses two hardcoded bundled assets (apps/web/src/assets/notification-completion.mp3 and notification-input.mp3). The Notifications settings only expose the mode (off / notifications / sound / notifications with sound) and the in-app toggle, so there is no way to change the chime itself.

Request

Add a per-device client setting to choose the notification sound in Settings → General → Notifications:

  • Sound picker with a few bundled presets (e.g. the current ding, a bell, a soft pop) plus a "Custom file…" option that accepts a user-supplied audio file (anything Web Audio can decode: MP3/WAV/OGG), stored per device (e.g. IndexedDB) with a sensible size cap (~1–2 MB).
  • Separate sounds for completion and needs-input (or at minimum one shared sound, with an optional second for input/approval).
  • "Play preview" button next to the picker. Since it is an explicit user gesture, it also doubles as a Web Audio autoplay unlock.
  • On decode/playback failure, fall back to the bundled default and console.warn instead of failing silently.

Why

  • Preferences vary: in a noisy environment users need a louder or more distinctive chime to actually notice a completion; others prefer something soft. Today the only way to change it is to overwrite the runtime asset files on disk, which is not something most users can or should do.
  • The preview button also makes the common "banner shows but no sound" problem self-diagnosable (browser autoplay blocked, muted tab, wrong output device). Right now playNotificationSound in apps/web/src/threadNotifications.ts bails with no signal when the context isn't running:
if (!audioContext || audioContext.state !== "running") return;

A user-triggerable preview would surface exactly that case.

Context

Activity

  1. locked and limited conversation to collaborators on Nov 2, 2026
  2. converted this issue into a discussion #29374 on Nov 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions