From 64559b60d1b9fa9d2e98d62f8179b830fca103cc Mon Sep 17 00:00:00 2001 From: Codeman maintainer Date: Mon, 20 Jul 2026 14:36:18 +0200 Subject: [PATCH] feat(ui): hide the Cron toolbar button by default (opt-in via Header Displays) The Cron button now follows the same opt-in pattern as the Session Manager / Away Digest / File Viewer buttons: the template ships the btn-cron--hidden marker class and applyHeaderVisibilitySettings() removes it only when the per-device showCronButton setting (App Settings -> Display -> Header Displays) is enabled. Defaults flipped to false in the mobile defaults block and both ?? fallbacks. Cron jobs remain fully functional; only the launcher is opt-in. Verified in a live browser: fresh profile hides the button + unchecked toggle, enabling shows it immediately and persists across reload. Co-Authored-By: Claude Fable 5 --- src/web/public/index.html | 2 +- src/web/public/settings-ui.js | 8 ++++---- src/web/public/styles.css | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/web/public/index.html b/src/web/public/index.html index f867ff1b..e07668f9 100644 --- a/src/web/public/index.html +++ b/src/web/public/index.html @@ -558,7 +558,7 @@
- + v0.0.0
diff --git a/src/web/public/settings-ui.js b/src/web/public/settings-ui.js index e6084ed2..1d16cf86 100644 --- a/src/web/public/settings-ui.js +++ b/src/web/public/settings-ui.js @@ -328,7 +328,7 @@ Object.assign(CodemanApp.prototype, { // Session Manager + Away Digest buttons default OFF; Cron button defaults ON. document.getElementById('appSettingsShowSessionButton').checked = settings.showSessionButton ?? defaults.showSessionButton ?? false; document.getElementById('appSettingsShowAwayDigestButton').checked = settings.showAwayDigestButton ?? defaults.showAwayDigestButton ?? false; - document.getElementById('appSettingsShowCronButton').checked = settings.showCronButton ?? defaults.showCronButton ?? true; + document.getElementById('appSettingsShowCronButton').checked = settings.showCronButton ?? defaults.showCronButton ?? false; // Gesture control lives in the Input section (alongside Local Echo / CJK Input) // but is only available when the instance runs with CODEMAN_GESTURE=1 (server sets // window.__codemanGestureAvailable). Hide just this item otherwise so the toggle @@ -1790,7 +1790,7 @@ Object.assign(CodemanApp.prototype, { showRedrawButton: false, showSessionButton: false, showAwayDigestButton: false, - showCronButton: true, + showCronButton: false, // Remote auto-reconnect (COD-108) — on by default remoteAutoReconnect: true, // Input @@ -1964,8 +1964,8 @@ Object.assign(CodemanApp.prototype, { awayDigestBtn.classList.toggle('btn-away-digest--hidden', !showAwayDigestButton); } - // Cron button (footer toolbar) — shown by default; hide when disabled. - const showCronButton = settings.showCronButton ?? defaults.showCronButton ?? true; + // Cron button (footer toolbar) — opt-in, hidden by default. Same marker pattern. + const showCronButton = settings.showCronButton ?? defaults.showCronButton ?? false; const cronBtn = document.querySelector('.btn-cron'); if (cronBtn) { cronBtn.classList.toggle('btn-cron--hidden', !showCronButton); diff --git a/src/web/public/styles.css b/src/web/public/styles.css index 13592ef3..dc341e4f 100644 --- a/src/web/public/styles.css +++ b/src/web/public/styles.css @@ -9569,9 +9569,9 @@ kbd { display: none !important; } -/* "Cron" footer-toolbar button — shown by default (App Settings → Display can - hide it). Toolbar button, not a header icon, so only the hide marker is - needed; out-specify any base .btn-toolbar display. */ +/* "Cron" footer-toolbar button — opt-in, hidden by default (enable under App + Settings → Display → Header Displays). Toolbar button, not a header icon, so + only the hide marker is needed; out-specify any base .btn-toolbar display. */ .btn-toolbar.btn-cron--hidden { display: none !important; }