From 9719921c8e6fcab8a2950ac8ee2808f2d517c1f0 Mon Sep 17 00:00:00 2001 From: arkon Date: Wed, 25 Feb 2026 19:34:10 +0100 Subject: [PATCH] chore: bump version to 0.1644 --- CLAUDE.md | 2 +- package.json | 2 +- src/web/public/app.js | 19 ++++++++++++++----- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index c30f2ed9..f29c633c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -35,7 +35,7 @@ When user says "COM": 1. Increment version in BOTH `package.json` AND `CLAUDE.md` (verify they match with `grep version package.json && grep Version CLAUDE.md`) 2. Run: `git add -A && git commit -m "chore: bump version to X.XXXX" && git push && npm run build && systemctl --user restart claudeman-web` -**Version**: 0.1643 (must match `package.json`) +**Version**: 0.1644 (must match `package.json`) ## Project Overview diff --git a/package.json b/package.json index a5ba012e..07301b77 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "claudeman", - "version": "0.1643", + "version": "0.1644", "description": "The missing control plane for Claude Code - run 20 autonomous agents with real-time monitoring and session persistence", "type": "module", "main": "dist/index.js", diff --git a/src/web/public/app.js b/src/web/public/app.js index 99c5178d..43b8b50b 100644 --- a/src/web/public/app.js +++ b/src/web/public/app.js @@ -11378,13 +11378,14 @@ class ClaudemanApp { this.saveAppSettingsToStorage(settings); this._updateLocalEchoState(); - // Save voice settings to localStorage (never sent to server) - VoiceInput._saveDeepgramConfig({ + // Save voice settings to localStorage + include in server payload for cross-device sync + const voiceSettings = { apiKey: document.getElementById('voiceDeepgramKey').value.trim(), language: document.getElementById('voiceLanguage').value, keyterms: document.getElementById('voiceKeyterms').value.trim(), insertMode: document.getElementById('voiceInsertMode').value, - }); + }; + VoiceInput._saveDeepgramConfig(voiceSettings); // Save notification preferences separately const notifPrefsToSave = { @@ -11470,7 +11471,7 @@ class ClaudemanApp { await fetch('/api/settings', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ ...serverSettings, notificationPreferences: notifPrefsToSave }) + body: JSON.stringify({ ...serverSettings, notificationPreferences: notifPrefsToSave, voiceSettings }) }); // Save model configuration separately @@ -11816,7 +11817,7 @@ class ClaudemanApp { const settings = settingsPromise ? await settingsPromise : await fetch('/api/settings').then(r => r.ok ? r.json() : null); if (settings) { // Extract notification prefs before merging app settings - const { notificationPreferences, ...appSettings } = settings; + const { notificationPreferences, voiceSettings, ...appSettings } = settings; // Filter out display settings — these are device-specific (mobile vs desktop) // and should not be synced from the server to avoid overriding mobile defaults. // NOTE: Feature toggles (subagentTrackingEnabled, imageWatcherEnabled, ralphTrackerEnabled) @@ -11853,6 +11854,14 @@ class ClaudemanApp { } } + // Sync voice settings from server (seed localStorage if no local API key) + if (voiceSettings) { + const localVoice = localStorage.getItem('claudeman-voice-settings'); + if (!localVoice || !JSON.parse(localVoice).apiKey) { + VoiceInput._saveDeepgramConfig(voiceSettings); + } + } + return merged; } } catch (err) {