diff --git a/CLAUDE.md b/CLAUDE.md index 3e07e25c..66576b3d 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.1523 (must match `package.json` for npm publish) +**Version**: 0.1524 (must match `package.json` for npm publish) ## Project Overview diff --git a/package.json b/package.json index 4b9fb4e1..25e871df 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "claudeman", - "version": "0.1523", + "version": "0.1524", "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/session.ts b/src/session.ts index 839814de..7845e633 100644 --- a/src/session.ts +++ b/src/session.ts @@ -281,7 +281,7 @@ export class Session extends EventEmitter { private _isCompacting: boolean = false; // Prevent recursive compacting // Image watcher setting (per-session toggle) - private _imageWatcherEnabled: boolean = true; + private _imageWatcherEnabled: boolean = false; // Flicker filter setting (per-session toggle, applied on frontend) private _flickerFilterEnabled: boolean = false; diff --git a/src/web/public/app.js b/src/web/public/app.js index eda7a40e..b0d9ad48 100644 --- a/src/web/public/app.js +++ b/src/web/public/app.js @@ -9427,6 +9427,7 @@ class ClaudemanApp { // Apply header visibility immediately this.applyHeaderVisibilitySettings(); + this._updateTokensImmediate(); // Re-render token display (picks up showCost change) this.applyMonitorVisibility(); this.renderProjectInsightsPanel(); // Re-render to apply visibility setting this.updateSubagentWindowVisibility(); // Apply subagent window visibility setting @@ -9631,6 +9632,11 @@ class ClaudemanApp { const monitorPanel = document.getElementById('monitorPanel'); if (monitorPanel) { monitorPanel.style.display = showMonitor ? '' : 'none'; + if (showMonitor) { + monitorPanel.classList.add('open'); + } else { + monitorPanel.classList.remove('open'); + } } const subagentsPanel = document.getElementById('subagentsPanel'); diff --git a/src/web/public/index.html b/src/web/public/index.html index c1a4c86c..feb52a27 100644 --- a/src/web/public/index.html +++ b/src/web/public/index.html @@ -756,7 +756,7 @@
Font Controls
@@ -777,7 +777,7 @@
Show Cost ($)
@@ -794,7 +794,7 @@
Project Insights
@@ -808,7 +808,7 @@
Subagents
@@ -825,7 +825,7 @@
Active Tab Only
@@ -835,7 +835,7 @@
Enable Globally
diff --git a/src/web/server.ts b/src/web/server.ts index a64b3c00..347b3735 100644 --- a/src/web/server.ts +++ b/src/web/server.ts @@ -3092,7 +3092,10 @@ NOW: Generate the implementation plan for the task above. Think step by step.`; if (!existsSync(dir)) { mkdirSync(dir, { recursive: true }); } - writeFileSync(settingsPath, JSON.stringify(settings, null, 2)); + let existing: Record = {}; + try { existing = JSON.parse(readFileSync(settingsPath, 'utf-8')); } catch { /* ignore */ } + const merged = { ...existing, ...settings }; + writeFileSync(settingsPath, JSON.stringify(merged, null, 2)); // Handle subagent tracking toggle dynamically const subagentEnabled = settings.subagentTrackingEnabled ?? true; @@ -3105,7 +3108,7 @@ NOW: Generate the implementation plan for the task above. Think step by step.`; } // Handle image watcher toggle dynamically - const imageWatcherEnabled = settings.imageWatcherEnabled ?? true; + const imageWatcherEnabled = settings.imageWatcherEnabled ?? false; if (imageWatcherEnabled && !imageWatcher.isRunning()) { imageWatcher.start(); // Re-watch all active sessions that have image watcher enabled @@ -4956,21 +4959,21 @@ NOW: Generate the implementation plan for the task above. Think step by step.`; } /** - * Check if image watcher is enabled in settings (default: true) + * Check if image watcher is enabled in settings (default: false) */ private async isImageWatcherEnabled(): Promise { const settingsPath = join(homedir(), '.claudeman', 'settings.json'); try { const content = await fs.readFile(settingsPath, 'utf-8'); const settings = JSON.parse(content); - // Default to true if not explicitly set - return settings.imageWatcherEnabled ?? true; + // Default to false if not explicitly set (matches UI default) + return settings.imageWatcherEnabled ?? false; } catch (err) { if ((err as NodeJS.ErrnoException).code !== 'ENOENT') { console.error('Failed to read image watcher setting:', err); } } - return true; // Default enabled + return false; // Default disabled (matches UI default) } private async restoreScreenSessions(): Promise {