fix(desktop): restore notification sounds (#2582)

Restore desktop notification sounds by default, add a persisted Play sound setting, and group notification permission and testing in a dedicated Notifications section.
This commit is contained in:
Glen Stampoultzis
2026-08-08 22:28:37 +02:00
committed by GitHub
parent b19db9537c
commit b9b3a24d58
24 changed files with 451 additions and 123 deletions
+3 -1
View File
@@ -246,7 +246,9 @@ describe("translation resources", () => {
expect(en.settings.shortcuts.actions.rebind).toBe("Rebind");
expect(en.settings.integrations.commandLine.title).toBe("Command line");
expect(en.settings.integrations.skills.updateAvailable).toBe("Update available");
expect(en.settings.permissions.notifications).toBe("Notifications");
expect(en.settings.notifications.playSound).toBe("Play sound");
expect(en.settings.notifications.permission).toBe("Notification permission");
expect(en.settings.notifications.sentTitle).toBe("Test notification sent");
expect(en.settings.permissions.actions.request).toBe("Request");
});
+16 -3
View File
@@ -1703,6 +1703,7 @@ export const ar: TranslationResources = {
editor: "المحرر",
shortcuts: "الاختصارات",
integrations: "التكامل",
notifications: "الإشعارات",
permissions: "الأذونات",
diagnostics: "التشخيص",
about: "عن",
@@ -1712,6 +1713,21 @@ export const ar: TranslationResources = {
vimKeybindings: "اختصارات Vim",
vimHint: "تنطبق على ملفات المصدر في الويب وسطح المكتب.",
},
notifications: {
title: "الإشعارات",
permission: "إذن الإشعارات",
refreshAccessibility: "تحديث إذن الإشعارات",
playSound: "تشغيل صوت",
playSoundHint: "تشغيل صوت عند وصول إشعار سطح مكتب",
test: "اختبار الإشعار",
testHint: "إرسال إشعار باستخدام هذه الإعدادات",
permissionRequired: "اسمح بالوصول إلى الإشعارات قبل الاختبار",
send: "إرسال",
sending: "جارٍ الإرسال...",
sentTitle: "تم إرسال إشعار الاختبار",
sentDescription: "سلّم Paseo الإشعار إلى نظام التشغيل.",
sendFailedTitle: "تعذر إرسال إشعار الاختبار",
},
hostSections: {
projects: "المشاريع",
connections: "اتصالات",
@@ -2006,17 +2022,14 @@ export const ar: TranslationResources = {
},
permissions: {
title: "الأذونات",
notifications: "إشعارات",
microphone: "ميكروفون",
refresh: "ينعش",
refreshing: "منعش...",
refreshAccessibility: "تحديث أذونات سطح المكتب",
test: "امتحان",
actions: {
granted: "ممنوح",
request: "طلب",
requesting: "جارٍ الطلب...",
busySuffix: "{{label}}...",
},
},
host: {
+16 -3
View File
@@ -1714,6 +1714,7 @@ export const en = {
editor: "Editor",
shortcuts: "Shortcuts",
integrations: "Integrations",
notifications: "Notifications",
permissions: "Permissions",
diagnostics: "Diagnostics",
about: "About",
@@ -1723,6 +1724,21 @@ export const en = {
vimKeybindings: "Vim keybindings",
vimHint: "Applies to source files on web and desktop.",
},
notifications: {
title: "Notifications",
permission: "Notification permission",
refreshAccessibility: "Refresh notification permission",
playSound: "Play sound",
playSoundHint: "Play a sound when a desktop notification arrives",
test: "Test notification",
testHint: "Send a notification using these settings",
permissionRequired: "Allow notification access before testing",
send: "Send",
sending: "Sending...",
sentTitle: "Test notification sent",
sentDescription: "Paseo handed the notification to the operating system.",
sendFailedTitle: "Unable to send test notification",
},
hostSections: {
projects: "Projects",
connections: "Connections",
@@ -2017,17 +2033,14 @@ export const en = {
},
permissions: {
title: "Permissions",
notifications: "Notifications",
microphone: "Microphone",
refresh: "Refresh",
refreshing: "Refreshing...",
refreshAccessibility: "Refresh desktop permissions",
test: "Test",
actions: {
granted: "Granted",
request: "Request",
requesting: "Requesting...",
busySuffix: "{{label}}...",
},
},
host: {
+16 -3
View File
@@ -1746,6 +1746,7 @@ export const es: TranslationResources = {
editor: "Editor",
shortcuts: "Atajos",
integrations: "Integraciones",
notifications: "Notificaciones",
permissions: "Permisos",
diagnostics: "Diagnóstico",
about: "Acerca de",
@@ -1755,6 +1756,21 @@ export const es: TranslationResources = {
vimKeybindings: "Atajos de Vim",
vimHint: "Se aplica a archivos fuente en web y escritorio.",
},
notifications: {
title: "Notificaciones",
permission: "Permiso de notificaciones",
refreshAccessibility: "Actualizar permiso de notificaciones",
playSound: "Reproducir sonido",
playSoundHint: "Reproduce un sonido cuando llega una notificación de escritorio",
test: "Probar notificación",
testHint: "Envía una notificación con esta configuración",
permissionRequired: "Permite el acceso a las notificaciones antes de probar",
send: "Enviar",
sending: "Enviando...",
sentTitle: "Notificación de prueba enviada",
sentDescription: "Paseo entregó la notificación al sistema operativo.",
sendFailedTitle: "No se pudo enviar la notificación de prueba",
},
hostSections: {
projects: "Proyectos",
connections: "Conexiones",
@@ -2056,17 +2072,14 @@ export const es: TranslationResources = {
},
permissions: {
title: "Permisos",
notifications: "Notificaciones",
microphone: "Micrófono",
refresh: "Refrescar",
refreshing: "Refrescante...",
refreshAccessibility: "Actualizar permisos de escritorio",
test: "Prueba",
actions: {
granted: "Otorgada",
request: "Pedido",
requesting: "Solicitando...",
busySuffix: "{{label}}...",
},
},
host: {
+16 -3
View File
@@ -1750,6 +1750,7 @@ export const fr: TranslationResources = {
editor: "Éditeur",
shortcuts: "Raccourcis",
integrations: "Intégrations",
notifications: "Notifications",
permissions: "Autorisations",
diagnostics: "Diagnostic",
about: "À propos",
@@ -1759,6 +1760,21 @@ export const fr: TranslationResources = {
vimKeybindings: "Raccourcis Vim",
vimHint: "S’applique aux fichiers source sur le web et le bureau.",
},
notifications: {
title: "Notifications",
permission: "Autorisation des notifications",
refreshAccessibility: "Actualiser l’autorisation des notifications",
playSound: "Émettre un son",
playSoundHint: "Émet un son lorsqu’une notification de bureau arrive",
test: "Tester la notification",
testHint: "Envoie une notification avec ces réglages",
permissionRequired: "Autorisez l’accès aux notifications avant le test",
send: "Envoyer",
sending: "Envoi...",
sentTitle: "Notification de test envoyée",
sentDescription: "Paseo a transmis la notification au système d’exploitation.",
sendFailedTitle: "Impossible d’envoyer la notification de test",
},
hostSections: {
projects: "Projets",
connections: "Relations",
@@ -2060,17 +2076,14 @@ export const fr: TranslationResources = {
},
permissions: {
title: "Autorisations",
notifications: "Notifications",
microphone: "Microphone",
refresh: "Rafraîchir",
refreshing: "Rafraîchissant...",
refreshAccessibility: "Actualiser les autorisations du bureau",
test: "Test",
actions: {
granted: "Accordé",
request: "Demande",
requesting: "Demander...",
busySuffix: "{{label}}...",
},
},
host: {
+16 -3
View File
@@ -1719,6 +1719,7 @@ export const ja: TranslationResources = {
editor: "エディター",
shortcuts: "ショートカット",
integrations: "連携",
notifications: "通知",
permissions: "権限",
diagnostics: "診断",
about: "アプリ情報",
@@ -1728,6 +1729,21 @@ export const ja: TranslationResources = {
vimKeybindings: "Vim キーバインド",
vimHint: "Web とデスクトップのソースファイルに適用されます。",
},
notifications: {
title: "通知",
permission: "通知の権限",
refreshAccessibility: "通知の権限を更新",
playSound: "サウンドを再生",
playSoundHint: "デスクトップ通知が届いたときにサウンドを再生します",
test: "通知をテスト",
testHint: "現在の設定でテスト通知を送信します",
permissionRequired: "テストする前に通知へのアクセスを許可してください",
send: "送信",
sending: "送信中...",
sentTitle: "テスト通知を送信しました",
sentDescription: "Paseo が通知をオペレーティングシステムに渡しました。",
sendFailedTitle: "テスト通知を送信できません",
},
hostSections: {
projects: "プロジェクト",
connections: "接続",
@@ -2025,17 +2041,14 @@ export const ja: TranslationResources = {
},
permissions: {
title: "権限",
notifications: "通知",
microphone: "マイク",
refresh: "更新",
refreshing: "更新中...",
refreshAccessibility: "デスクトップの権限を更新",
test: "テスト",
actions: {
granted: "許可済み",
request: "許可を求める",
requesting: "許可を求めています...",
busySuffix: "{{label}}...",
},
},
host: {
+16 -3
View File
@@ -1713,6 +1713,7 @@ export const ko: TranslationResources = {
editor: "편집기",
shortcuts: "단축키",
integrations: "통합",
notifications: "알림",
permissions: "권한",
diagnostics: "진단",
about: "정보",
@@ -1722,6 +1723,21 @@ export const ko: TranslationResources = {
vimKeybindings: "Vim 키 바인딩",
vimHint: "웹 및 데스크톱의 소스 파일에 적용됩니다.",
},
notifications: {
title: "알림",
permission: "알림 권한",
refreshAccessibility: "알림 권한 새로 고침",
playSound: "소리 재생",
playSoundHint: "데스크톱 알림이 도착하면 소리를 재생합니다",
test: "알림 테스트",
testHint: "현재 설정으로 테스트 알림을 보냅니다",
permissionRequired: "테스트하기 전에 알림 접근을 허용하세요",
send: "보내기",
sending: "보내는 중...",
sentTitle: "테스트 알림을 보냈습니다",
sentDescription: "Paseo가 알림을 운영 체제에 전달했습니다.",
sendFailedTitle: "테스트 알림을 보낼 수 없음",
},
hostSections: {
projects: "프로젝트",
connections: "연결",
@@ -2018,17 +2034,14 @@ export const ko: TranslationResources = {
},
permissions: {
title: "권한",
notifications: "알림",
microphone: "마이크",
refresh: "새로고침",
refreshing: "새로고침 중...",
refreshAccessibility: "데스크톱 권한 새로고침",
test: "테스트",
actions: {
granted: "허용됨",
request: "요청",
requesting: "요청 중...",
busySuffix: "{{label}}...",
},
},
host: {
+16 -3
View File
@@ -1732,6 +1732,7 @@ export const ptBR: TranslationResources = {
editor: "Editor",
shortcuts: "Atalhos",
integrations: "Integrações",
notifications: "Notificações",
permissions: "Permissões",
diagnostics: "Diagnósticos",
about: "Sobre",
@@ -1741,6 +1742,21 @@ export const ptBR: TranslationResources = {
vimKeybindings: "Atalhos do Vim",
vimHint: "Aplica-se a arquivos-fonte na web e no desktop.",
},
notifications: {
title: "Notificações",
permission: "Permissão de notificações",
refreshAccessibility: "Atualizar permissão de notificações",
playSound: "Reproduzir som",
playSoundHint: "Reproduz um som quando chega uma notificação da área de trabalho",
test: "Testar notificação",
testHint: "Envia uma notificação usando estas configurações",
permissionRequired: "Permita o acesso às notificações antes de testar",
send: "Enviar",
sending: "Enviando...",
sentTitle: "Notificação de teste enviada",
sentDescription: "O Paseo entregou a notificação ao sistema operacional.",
sendFailedTitle: "Não foi possível enviar a notificação de teste",
},
hostSections: {
projects: "Projetos",
connections: "Conexões",
@@ -2040,17 +2056,14 @@ export const ptBR: TranslationResources = {
},
permissions: {
title: "Permissões",
notifications: "Notificações",
microphone: "Microfone",
refresh: "Atualizar",
refreshing: "Atualizando...",
refreshAccessibility: "Atualizar permissões do desktop",
test: "Testar",
actions: {
granted: "Concedida",
request: "Solicitar",
requesting: "Solicitando...",
busySuffix: "{{label}}...",
},
},
host: {
+16 -3
View File
@@ -1737,6 +1737,7 @@ export const ru: TranslationResources = {
editor: "Редактор",
shortcuts: "Ярлыки",
integrations: "Интеграции",
notifications: "Уведомления",
permissions: "Разрешения",
diagnostics: "Диагностика",
about: "О",
@@ -1746,6 +1747,21 @@ export const ru: TranslationResources = {
vimKeybindings: "Клавиши Vim",
vimHint: "Применяется к исходным файлам в веб- и настольной версии.",
},
notifications: {
title: "Уведомления",
permission: "Разрешение на уведомления",
refreshAccessibility: "Обновить разрешение на уведомления",
playSound: "Воспроизводить звук",
playSoundHint: "Воспроизводит звук при получении уведомления на компьютере",
test: "Проверить уведомление",
testHint: "Отправляет уведомление с текущими настройками",
permissionRequired: "Разрешите доступ к уведомлениям перед проверкой",
send: "Отправить",
sending: "Отправка...",
sentTitle: "Тестовое уведомление отправлено",
sentDescription: "Paseo передал уведомление операционной системе.",
sendFailedTitle: "Не удалось отправить тестовое уведомление",
},
hostSections: {
projects: "Проекты",
connections: "Соединения",
@@ -2044,17 +2060,14 @@ export const ru: TranslationResources = {
},
permissions: {
title: "Разрешения",
notifications: "Уведомления",
microphone: "Микрофон",
refresh: "Обновить",
refreshing: "Освежающий...",
refreshAccessibility: "Обновить разрешения рабочего стола",
test: "Тест",
actions: {
granted: "Предоставленный",
request: "Запрос",
requesting: "Запрос...",
busySuffix: "{{label}}...",
},
},
host: {
+16 -3
View File
@@ -1683,6 +1683,7 @@ export const zhCN: TranslationResources = {
editor: "编辑器",
shortcuts: "快捷键",
integrations: "集成",
notifications: "通知",
permissions: "权限",
diagnostics: "诊断",
about: "关于",
@@ -1692,6 +1693,21 @@ export const zhCN: TranslationResources = {
vimKeybindings: "Vim 键位",
vimHint: "适用于网页和桌面端的源文件。",
},
notifications: {
title: "通知",
permission: "通知权限",
refreshAccessibility: "刷新通知权限",
playSound: "播放声音",
playSoundHint: "收到桌面通知时播放声音",
test: "测试通知",
testHint: "使用当前设置发送测试通知",
permissionRequired: "测试前请允许访问通知",
send: "发送",
sending: "正在发送...",
sentTitle: "测试通知已发送",
sentDescription: "Paseo 已将通知交给操作系统。",
sendFailedTitle: "无法发送测试通知",
},
hostSections: {
projects: "项目",
connections: "连接",
@@ -1984,17 +2000,14 @@ export const zhCN: TranslationResources = {
},
permissions: {
title: "权限",
notifications: "通知",
microphone: "麦克风",
refresh: "刷新",
refreshing: "正在刷新...",
refreshAccessibility: "刷新桌面端权限",
test: "测试",
actions: {
granted: "已授权",
request: "请求",
requesting: "正在请求...",
busySuffix: "{{label}}...",
},
},
host: {