diff --git a/internal/service/static/main.js b/internal/service/static/main.js index cf2bc7e..40053d4 100644 --- a/internal/service/static/main.js +++ b/internal/service/static/main.js @@ -15,6 +15,7 @@ import { WakeLock } from './wakelock.js'; const STREAM_ENDPOINT = '/v1/chat/voice/stream'; const SYSTEM_MESSAGE_KEY = 'odidere_system_message'; const MAX_TURNS_KEY = 'odidere_max_turns'; +const MUTE_KEY = 'odidere_mute'; const ICONS_URL = '/static/icons.svg'; const StreamEventDelta = 'delta'; @@ -128,6 +129,15 @@ class Odidere { this.settings.fetchVoices(); this.settings.fetchModels(); this.updateSendButtonState(); + // Restore mute state + const storedMute = localStorage.getItem(MUTE_KEY); + if (storedMute === 'true') { + this.isMuted = true; + this.tts.setMuted(true); + this.$mute.replaceChildren(this._icon('volume-off')); + this.$mute.classList.add('footer__toolbar-btn--muted'); + this.$mute.setAttribute('aria-label', 'Unmute'); + } this._initVisualViewport(); } @@ -1024,6 +1034,7 @@ class Odidere { toggleMute() { this.isMuted = !this.isMuted; + localStorage.setItem(MUTE_KEY, String(this.isMuted)); const iconName = this.isMuted ? 'volume-off' : 'volume'; this.$mute.replaceChildren(this._icon(iconName)); this.$mute.classList.toggle('footer__toolbar-btn--muted', this.isMuted);