From 56a78e74b26a10bd87578e019f9ef84e76a90b5d Mon Sep 17 00:00:00 2001 From: Teknium <127238744+teknium1@users.noreply.github.com> Date: Mon, 4 May 2026 14:48:19 -0700 Subject: [PATCH] =?UTF-8?q?feat(kanban-dashboard):=20sharper=20home-channe?= =?UTF-8?q?l=20toggle=20contrast,=20drop=20=E2=86=92=20running=20action=20?= =?UTF-8?q?(#19916)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Follow-up polish to the kanban dashboard from #19864 and #19705. **Home-channel toggle contrast.** The `.hermes-kanban-home-sub--on` class previously used `color-mix(var(--color-ring) 14%, transparent)` which was nearly invisible on both the default teal and NERV themes — the on/off distinction relied almost entirely on the ✓ prefix glyph. Bump to 32% fill + full-opacity ring border + inner ring shadow + font-weight 600. Still theme-scoped (no hardcoded colors), but reads at a glance on both tested themes. **Drop the → running status action.** Since #19705, `PATCH /tasks/:id` rejects `status=running` with HTTP 400 — only the dispatcher's `claim_task` path legitimately enters that state (so the run row, claim lock, and worker PID are created atomically). The UI button was still present and produced a 400 on click, which is a confusing dead affordance. Remove it from `StatusActions`; add a comment pointing to #19535 so future editors know why it's missing. Live-tested on the default Hermes Teal theme. 53/53 kanban dashboard plugin tests still pass. --- plugins/kanban/dashboard/dist/index.js | 5 ++++- plugins/kanban/dashboard/dist/style.css | 12 ++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/plugins/kanban/dashboard/dist/index.js b/plugins/kanban/dashboard/dist/index.js index d60bc19289..ee1a25f065 100644 --- a/plugins/kanban/dashboard/dist/index.js +++ b/plugins/kanban/dashboard/dist/index.js @@ -1996,7 +1996,10 @@ return h("div", { className: "hermes-kanban-actions" }, b("→ triage", { status: "triage" }, t.status !== "triage"), b("→ ready", { status: "ready" }, t.status !== "ready"), - b("→ running", { status: "running" }, t.status !== "running"), + // No direct → running button: /tasks/:id PATCH rejects status=running + // with 400 (issue #19535). Tasks enter running only through the + // dispatcher's claim_task path, which atomically creates the run row, + // claim lock, and worker process metadata. b("Block", { status: "blocked" }, t.status === "running" || t.status === "ready", DESTRUCTIVE_TRANSITIONS.blocked), diff --git a/plugins/kanban/dashboard/dist/style.css b/plugins/kanban/dashboard/dist/style.css index 34fc714d11..9de372cbe2 100644 --- a/plugins/kanban/dashboard/dist/style.css +++ b/plugins/kanban/dashboard/dist/style.css @@ -364,11 +364,15 @@ letter-spacing: 0.02em; } .hermes-kanban-home-sub--on { - /* Subtly indicate the subscribed state without a hard color change so - * dashboard themes stay coherent. Border + tinted background. */ - border-color: color-mix(in srgb, var(--color-ring) 55%, var(--color-border)); - background: color-mix(in srgb, var(--color-ring) 14%, transparent); + /* Subscribed toggle — use a strong ring-colored accent so the on/off + * distinction reads at a glance, not just from the ✓ prefix. Border + + * filled background + bolder weight keep the state obvious across + * themes (tested on default teal and NERV orange). */ + border-color: var(--color-ring); + background: color-mix(in srgb, var(--color-ring) 32%, transparent); color: var(--color-foreground); + font-weight: 600; + box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--color-ring) 40%, transparent); } .hermes-kanban-section {