From 4e0f509e7b7d84395a541bdfa658f6c98f588221 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Thu, 12 Feb 2026 15:03:02 -0600 Subject: feat(app): option to turn off sound effects --- packages/app/src/components/settings-general.tsx | 69 ++++++++++++++++-------- packages/app/src/context/notification.tsx | 8 ++- packages/app/src/context/settings.tsx | 21 ++++++++ packages/app/src/pages/layout.tsx | 4 +- 4 files changed, 78 insertions(+), 24 deletions(-) (limited to 'packages/app/src') diff --git a/packages/app/src/components/settings-general.tsx b/packages/app/src/components/settings-general.tsx index c673cab80..439f542bb 100644 --- a/packages/app/src/components/settings-general.tsx +++ b/packages/app/src/components/settings-general.tsx @@ -306,39 +306,66 @@ export const SettingsGeneral: Component = () => { title={language.t("settings.general.sounds.agent.title")} description={language.t("settings.general.sounds.agent.description")} > - settings.sounds.agent(), + (id) => settings.sounds.setAgent(id), + )} + /> + - settings.sounds.permissions(), + (id) => settings.sounds.setPermissions(id), + )} + /> + - settings.sounds.errors(), + (id) => settings.sounds.setErrors(id), + )} + /> + diff --git a/packages/app/src/context/notification.tsx b/packages/app/src/context/notification.tsx index bf880d115..04bc2fdaa 100644 --- a/packages/app/src/context/notification.tsx +++ b/packages/app/src/context/notification.tsx @@ -233,7 +233,9 @@ export const { use: useNotification, provider: NotificationProvider } = createSi if (!session) return if (session.parentID) return - playSound(soundSrc(settings.sounds.agent())) + if (settings.sounds.agentEnabled()) { + playSound(soundSrc(settings.sounds.agent())) + } append({ directory, @@ -260,7 +262,9 @@ export const { use: useNotification, provider: NotificationProvider } = createSi if (meta.disposed) return if (session?.parentID) return - playSound(soundSrc(settings.sounds.errors())) + if (settings.sounds.errorsEnabled()) { + playSound(soundSrc(settings.sounds.errors())) + } const error = "error" in event.properties ? event.properties.error : undefined append({ diff --git a/packages/app/src/context/settings.tsx b/packages/app/src/context/settings.tsx index a8efb1eac..d72d4ceb1 100644 --- a/packages/app/src/context/settings.tsx +++ b/packages/app/src/context/settings.tsx @@ -10,8 +10,11 @@ export interface NotificationSettings { } export interface SoundSettings { + agentEnabled: boolean agent: string + permissionsEnabled: boolean permissions: string + errorsEnabled: boolean errors: string } @@ -57,8 +60,11 @@ const defaultSettings: Settings = { errors: false, }, sounds: { + agentEnabled: true, agent: "staplebops-01", + permissionsEnabled: true, permissions: "staplebops-02", + errorsEnabled: true, errors: "nope-03", }, } @@ -168,14 +174,29 @@ export const { use: useSettings, provider: SettingsProvider } = createSimpleCont }, }, sounds: { + agentEnabled: withFallback(() => store.sounds?.agentEnabled, defaultSettings.sounds.agentEnabled), + setAgentEnabled(value: boolean) { + setStore("sounds", "agentEnabled", value) + }, agent: withFallback(() => store.sounds?.agent, defaultSettings.sounds.agent), setAgent(value: string) { setStore("sounds", "agent", value) }, + permissionsEnabled: withFallback( + () => store.sounds?.permissionsEnabled, + defaultSettings.sounds.permissionsEnabled, + ), + setPermissionsEnabled(value: boolean) { + setStore("sounds", "permissionsEnabled", value) + }, permissions: withFallback(() => store.sounds?.permissions, defaultSettings.sounds.permissions), setPermissions(value: string) { setStore("sounds", "permissions", value) }, + errorsEnabled: withFallback(() => store.sounds?.errorsEnabled, defaultSettings.sounds.errorsEnabled), + setErrorsEnabled(value: boolean) { + setStore("sounds", "errorsEnabled", value) + }, errors: withFallback(() => store.sounds?.errors, defaultSettings.sounds.errors), setErrors(value: string) { setStore("sounds", "errors", value) diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx index 5f001177f..7eb064f42 100644 --- a/packages/app/src/pages/layout.tsx +++ b/packages/app/src/pages/layout.tsx @@ -388,7 +388,9 @@ export default function Layout(props: ParentProps) { alertedAtBySession.set(sessionKey, now) if (e.details.type === "permission.asked") { - playSound(soundSrc(settings.sounds.permissions())) + if (settings.sounds.permissionsEnabled()) { + playSound(soundSrc(settings.sounds.permissions())) + } if (settings.notifications.permissions()) { void platform.notify(title, description, href) } -- cgit v1.2.3