From 09d3b9a3bf4cbbb17c24e682606b85cb35d9b5d4 Mon Sep 17 00:00:00 2001 From: Codeman maintainer Date: Fri, 9 Oct 2026 01:02:57 +0200 Subject: [PATCH] feat(tabs): every agent tab shows its CLI logo, claude included A claude tab drew no harness mark at all and every other agent CLI a two-letter text pill (DS, CX, ...), so a claude tab read as "no harness" next to its neighbours. Session tabs (header strip, side rail, sidebar, phone chips) and the desktop home rail now draw the agent through PR #532's run-mode-dot slot, the id as data, the same mark the Run menus and the tile and split headers use. The shell is not an agent and keeps its SH pill; a CLI added through clis.json gets the slot's plain dot instead of nothing. The per-CLI tab pill colours and their light-skin ink overrides are gone (the monochrome marks follow the tab's own text colour), and the logo steps aside with the other adornments while a compact rail row renames. Co-Authored-By: Claude Opus 5.5 (1M context) --- docs/architecture-invariants.md | 2 +- docs/cli-registry.md | 2 +- src/web/public/app.js | 11 +- src/web/public/entrance-animations.js | 1 + src/web/public/home-sessions.js | 21 +-- src/web/public/styles.css | 57 ++------ test/home-sessions.test.ts | 32 +++-- test/tab-harness-logo.test.ts | 181 ++++++++++++++++++++++++++ 8 files changed, 233 insertions(+), 74 deletions(-) create mode 100644 test/tab-harness-logo.test.ts diff --git a/docs/architecture-invariants.md b/docs/architecture-invariants.md index a4e75588..b01f6507 100644 --- a/docs/architecture-invariants.md +++ b/docs/architecture-invariants.md @@ -777,7 +777,7 @@ Further detail: in the Settings section order, the version and the updater lead **The session list can render as the horizontal header strip (default) or as a collapsible left sidebar** — App Settings → Layout → Tabs → **Session List Layout** (`sessionListLayout: 'header' | 'sidebar'`, in the per-device `displayKeys` set, so it never syncs across devices; also in `SettingsUpdateSchema`, which is `.strict()` — without that entry the server 400s the ENTIRE settings PUT and every unrelated setting silently stops persisting). ⚠️ **There is exactly ONE `#sessionTabs` element and `applySessionListLayout()` RE-PARENTS it** between `#sessionTabsHost` (in `
`) and `#sessionSidebarList` (in the `