Skip to content

feat: add notification sound profiles and speech - #25

Merged
leoncheng57 merged 2 commits into
mainfrom
feat/notification-audio-speech
Aug 21, 2026
Merged

feat: add notification sound profiles and speech#25
leoncheng57 merged 2 commits into
mainfrom
feat/notification-audio-speech

Conversation

@leoncheng57

@leoncheng57 leoncheng57 commented Aug 21, 2026

Copy link
Copy Markdown
Owner

Summary

  • add versioned per-device sound and speech preferences with deterministic WebAudio profiles, per-event controls, and capability-aware previews
  • migrate the shipped BFF browser.sound and browser.volume exactly once only when the device key is absent; present or corrupt device storage remains authoritative
  • keep the existing single SSE watcher, server-backed browser/ntfy delivery gates, ntfy behavior, and notification deep links
  • document that iOS constructor Notifications still require installed-PWA/service-worker support and ntfy remains the reliable phone path

Privacy

Speech is off by default and speaks only fixed generic status phrases. It never receives or speaks event payloads, prompts, paths, filenames, command arguments, tool output, repository paths, secrets, or notification bodies.

Verification

  • npm run typecheck passed
  • npm test: 22 files, 208 tests passed
  • npm run build: production client and server builds passed
  • CI=1 npm run test:e2e -- --workers=1: 126 passed, 1 skipped
  • notification media E2E: 5 passed, covering absent-key migration, existing-key preservation, corrupt-key recovery, privacy-safe phrases, previews, disabled behavior, and 390px layout
  • local /settings/notifications screenshot: 1 captured and validated on isolated ports
  • git diff --check passed
/settings/notifications

@github-actions

github-actions Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

PR screenshots

Route Preview
/settings/notifications
Open full size
/settings/notifications

Source: b33dec5 | Download artifact

Captured from the production app against deterministic mock OpenCode fixtures only.

github-actions Bot added a commit that referenced this pull request Aug 21, 2026
@leoncheng57
leoncheng57 marked this pull request as ready for review August 21, 2026 20:25
@leoncheng57
leoncheng57 merged commit d0a66c2 into main Aug 21, 2026
3 of 4 checks passed
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