summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudomator Agent <agent@claudomator>2026-03-13 04:03:33 +0000
committerClaudomator Agent <agent@claudomator>2026-03-13 04:03:33 +0000
commitcd99fec867ee86671148a954b2c18d2cb9f6b946 (patch)
tree918213ff28aea478f88ca3c4770d1436eb6b7b13
parentfe414fac958330c2302d9175d66e1b338e5b1864 (diff)
feat: show New Task button on all tabs
Removed the switchTab() logic that hid btn-new-task on non-tasks tabs. The button lives in the global header so no structural changes were needed. Added new-task-button.test.mjs to contract-test the always-visible behavior.
-rw-r--r--web/app.js7
-rw-r--r--web/test/new-task-button.test.mjs24
2 files changed, 27 insertions, 4 deletions
diff --git a/web/app.js b/web/app.js
index 3121f28..187795f 100644
--- a/web/app.js
+++ b/web/app.js
@@ -278,6 +278,9 @@ export function filterActiveTasks(tasks) {
return tasks.filter(t => _PANEL_ACTIVE_STATES.has(t.state));
}
+// The New Task button is always visible regardless of active tab.
+export function newTaskButtonShouldShowOnTab(_tab) { return true; }
+
export function filterTasksByTab(tasks, tab) {
if (tab === 'active') return tasks.filter(t => ACTIVE_STATES.has(t.state));
if (tab === 'interrupted') return tasks.filter(t => INTERRUPTED_STATES.has(t.state));
@@ -2198,10 +2201,6 @@ function switchTab(name) {
}
});
- // Show/hide the header New Task button (only relevant on tasks tab)
- document.getElementById('btn-new-task').style.display =
- name === 'tasks' ? '' : 'none';
-
if (name === 'running') {
fetchTasks().then(renderRunningView).catch(() => {
const currentEl = document.querySelector('.running-current');
diff --git a/web/test/new-task-button.test.mjs b/web/test/new-task-button.test.mjs
new file mode 100644
index 0000000..45a3548
--- /dev/null
+++ b/web/test/new-task-button.test.mjs
@@ -0,0 +1,24 @@
+// new-task-button.test.mjs — visibility contract for the New Task button
+//
+// The New Task button lives in the global header and must be visible on all tabs.
+// Run with: node --test web/test/new-task-button.test.mjs
+
+import { describe, it } from 'node:test';
+import assert from 'node:assert/strict';
+import { newTaskButtonShouldShowOnTab } from '../app.js';
+
+const ALL_TABS = ['tasks', 'active', 'running', 'stats'];
+
+describe('new task button visibility', () => {
+ for (const tab of ALL_TABS) {
+ it(`is visible on "${tab}" tab`, () => {
+ assert.equal(newTaskButtonShouldShowOnTab(tab), true, `expected button to be visible on tab "${tab}"`);
+ });
+ }
+
+ it('is visible on any unknown future tab', () => {
+ assert.equal(newTaskButtonShouldShowOnTab('help'), true);
+ assert.equal(newTaskButtonShouldShowOnTab('templates'), true);
+ assert.equal(newTaskButtonShouldShowOnTab(''), true);
+ });
+});