From cb978fb178042d366cd01fa3fd18aec918505c13 Mon Sep 17 00:00:00 2001 From: arkon Date: Wed, 10 Jun 2026 11:12:19 +0200 Subject: [PATCH] fix(ui): monitor panel off by default; unbreak task-badge open when hidden MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fresh desktop installs slid the Monitor panel open at startup — the two showMonitor fallbacks defaulted to true (mobile already defaulted false via getDefaultSettings). Default it to false everywhere; users opt in via App Settings -> Show Monitor. Also fix toggleMonitorPanel(): applyMonitorVisibility() leaves inline display:none when the setting is off, so the session-tab task badge toggled the open class invisibly (already broken on mobile). Clear the inline display when opening so transient opens work. Local echo defaults audited, unchanged: off on desktop, on for touch (?? MobileDetection.isTouchDevice()), stored per-device and never server-synced. Verified on a fresh isolated instance (desktop + iPhone 13 emulation): 14/14 checks — panel closed + checkbox unchecked on both device classes, local echo desktop-off/mobile-on, separate storage keys, badge open works. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/web/public/panels-ui.js | 3 +++ src/web/public/settings-ui.js | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/web/public/panels-ui.js b/src/web/public/panels-ui.js index 499bcf7f..4ad46faa 100644 --- a/src/web/public/panels-ui.js +++ b/src/web/public/panels-ui.js @@ -380,6 +380,9 @@ Object.assign(CodemanApp.prototype, { panel.classList.toggle('open'); if (panel.classList.contains('open')) { + // applyMonitorVisibility() sets inline display:none when the "Show Monitor" + // setting is off — clear it so transient opens (session-tab task badge) work + panel.style.display = ''; // Load screens and start stats collection await this.loadMuxSessions(); await fetch('/api/mux-sessions/stats/start', { method: 'POST' }); diff --git a/src/web/public/settings-ui.js b/src/web/public/settings-ui.js index 524be503..866d2763 100644 --- a/src/web/public/settings-ui.js +++ b/src/web/public/settings-ui.js @@ -308,7 +308,7 @@ Object.assign(CodemanApp.prototype, { document.getElementById('appSettingsShowTokenCount').checked = settings.showTokenCount ?? defaults.showTokenCount ?? true; document.getElementById('appSettingsShowCost').checked = settings.showCost ?? defaults.showCost ?? false; document.getElementById('appSettingsShowLifecycleLog').checked = settings.showLifecycleLog ?? defaults.showLifecycleLog ?? true; - document.getElementById('appSettingsShowMonitor').checked = settings.showMonitor ?? defaults.showMonitor ?? true; + document.getElementById('appSettingsShowMonitor').checked = settings.showMonitor ?? defaults.showMonitor ?? false; document.getElementById('appSettingsShowProjectInsights').checked = settings.showProjectInsights ?? defaults.showProjectInsights ?? false; document.getElementById('appSettingsShowFileBrowser').checked = settings.showFileBrowser ?? defaults.showFileBrowser ?? false; document.getElementById('appSettingsShowSubagents').checked = settings.showSubagents ?? defaults.showSubagents ?? false; @@ -1782,7 +1782,7 @@ Object.assign(CodemanApp.prototype, { applyMonitorVisibility() { const settings = this.loadAppSettingsFromStorage(); const defaults = this.getDefaultSettings(); - const showMonitor = settings.showMonitor ?? defaults.showMonitor ?? true; + const showMonitor = settings.showMonitor ?? defaults.showMonitor ?? false; const showSubagents = settings.showSubagents ?? defaults.showSubagents ?? false; const showFileBrowser = settings.showFileBrowser ?? defaults.showFileBrowser ?? false;