fix: update sound/notification globals in password branch + close AudioContext

Agent review findings:
- _soundEnabled/_notificationsEnabled not updated in the password-save
  early-return branch of saveSettings() — fixed
- AudioContext never closed after oscillator finishes — added osc.onended
  callback to ctx.close() preventing resource accumulation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nathan Esquenazi
2026-04-08 18:55:57 -07:00
parent 5e899ee8fe
commit 799cbb7eca
2 changed files with 3 additions and 0 deletions

View File

@@ -379,6 +379,7 @@ function playNotificationSound(){
gain.gain.setValueAtTime(0.3,ctx.currentTime);
gain.gain.exponentialRampToValueAtTime(0.01,ctx.currentTime+0.3);
osc.start(ctx.currentTime);osc.stop(ctx.currentTime+0.3);
osc.onended=()=>ctx.close();
}catch(e){console.warn('Notification sound failed:',e);}
}

View File

@@ -1059,6 +1059,8 @@ async function saveSettings(andClose){
await api('/api/settings',{method:'POST',body:JSON.stringify({...body,_set_password:pw.trim()})});
window._sendKey=sendKey||'enter';
window._showTokenUsage=showTokenUsage;
window._soundEnabled=body.sound_enabled;
window._notificationsEnabled=body.notifications_enabled;
showToast('Settings saved (password set — login now required)');
_settingsDirty=false; _settingsThemeOnOpen=theme;
const bar=$('settingsUnsavedBar'); if(bar) bar.style.display='none';