diff --git a/docs/cli-registry.md b/docs/cli-registry.md index 10e49c6b..95026524 100644 --- a/docs/cli-registry.md +++ b/docs/cli-registry.md @@ -36,7 +36,7 @@ These are the only writes to `clis.json`. They are serialized, and a file that d interface CliEntry { id: CliId; // 'codex' label: string; // 'Codex' — shown in menus - shortBadge: string; // short label ("Run CX", the Settings CLI list), e.g. 'CX'; tabs show the run-mode-dot logo instead + shortBadge: string; // short label ("Run CX", the Settings CLI list), e.g. 'CX'; tabs show the run-mode-dot logo instead (no mark at all with CLI Logos on Tabs off) accent: string; // single hex colour enabled: boolean; stock: boolean; // set by the loader; a custom entry can never claim it diff --git a/docs/wiki/Settings-Reference.md b/docs/wiki/Settings-Reference.md index 98cb71f8..e2641705 100644 --- a/docs/wiki/Settings-Reference.md +++ b/docs/wiki/Settings-Reference.md @@ -98,6 +98,7 @@ every session or only the active tab. | State Order | For *By state*: needs you on top (default) or at the bottom, right above the terminal. | | Vertical Rail Order | *By activity* (default) sorts the rail the way the home screens are sorted; *Manual* keeps your tab order and drag-reordering. With *By state* or *By case* it orders the rows inside each section. | | Tall Tabs | Taller tab strip. | +| CLI Logos on Tabs | Each agent tab, and its row on the desktop home rail, shows the CLI's logo before the name. Off hides those logos on this device; the status dot and the shell's SH badge stay, and tiles, split headers and the Run menus keep their logos. On by default. | | Pop-out Button on Tabs | Adds the detach control to tabs, with a per-tab override. | | Spawn Lineage Lines | Lines from each tab to the sessions it spawned; the selected tab's family is drawn thicker. Desktop only, on by default. | | Auto-name Sessions | Titles a new tab after its first prompt, keeping the case prefix (`w3-myapp: fix the login redirect`). Synced, off by default. See [The Dashboard](The-Dashboard#automatic-session-names). | diff --git a/docs/wiki/The-Dashboard.md b/docs/wiki/The-Dashboard.md index 0795cef0..2f164274 100644 --- a/docs/wiki/The-Dashboard.md +++ b/docs/wiki/The-Dashboard.md @@ -73,6 +73,10 @@ precedence there. One tab per session, in your order, and that order syncs across your devices. +An agent tab shows its CLI's logo before the name, and a shell tab an `SH` badge. **CLI Logos +on Tabs** (App Settings → Appearance → Tabs) hides the logos on that device; the tile and split +headers and the Run menus keep theirs. + **Status is carried by the dot and the tab's own styling:** | Look | Meaning | diff --git a/src/web/public/app.js b/src/web/public/app.js index 447a959e..1c945bd2 100644 --- a/src/web/public/app.js +++ b/src/web/public/app.js @@ -6709,7 +6709,9 @@ class CodemanApp { // every agent CLI, claude included, shows its logo through PR #532's // `run-mode-dot ` slot, the id as DATA, so the tab, the tile and split // headers and the Run menus draw the same mark. An id with no logo rule (a - // CLI added through ~/.codeman/clis.json) gets that slot's plain dot. + // CLI added through ~/.codeman/clis.json) gets that slot's plain dot. The + // span is always emitted: CLI Logos on Tabs (`showTabCliLogos`) hides it + // in CSS under html[data-tab-logos='off'], so a toggle never re-renders. const tabModeHtml = mode === 'shell' ? '' : ``; diff --git a/src/web/public/home-sessions.js b/src/web/public/home-sessions.js index a0fb9268..7865c08c 100644 --- a/src/web/public/home-sessions.js +++ b/src/web/public/home-sessions.js @@ -428,7 +428,8 @@ Object.assign(CodemanApp.prototype, { line1.appendChild(badge); } else { // The agent's logo: PR #532's slot, the mode id as data (an id with no - // logo rule gets the slot's plain dot). + // logo rule gets the slot's plain dot). CLI Logos on Tabs hides it in CSS + // (html[data-tab-logos='off']), exactly as it does on the tab strip. const logo = document.createElement('span'); logo.className = `home-sessions-harness run-mode-dot ${row.mode}`; logo.setAttribute('aria-hidden', 'true'); diff --git a/src/web/public/i18n.js b/src/web/public/i18n.js index ffdd8d86..dfa75f3e 100644 --- a/src/web/public/i18n.js +++ b/src/web/public/i18n.js @@ -369,6 +369,9 @@ '会话列表显示为顶栏横向标签条,或左侧可折叠侧边栏(Alt+B)。完整侧边栏为每个会话显示与主界面相同的详细信息。', 'Tall Tabs (Name + Folder)': '双行标签(名称 + 文件夹)', 'Pop-out Button on Tabs': '标签页弹出窗口按钮', + 'CLI Logos on Tabs': '标签页上的 CLI 图标', + "Show each agent's CLI logo before the session name on tabs and the home screen's tab list. Off leaves the status dot and the shell's SH badge. Tiles, split headers and the Run menus keep their logos.": + '在标签页和主界面的标签列表中,于会话名称前显示每个智能体的 CLI 图标。关闭后仍保留状态圆点和 Shell 的 SH 标记。平铺、分屏标题栏和运行菜单中的图标不受影响。', // Tab Layout and Header Stats Style (Discussion #426). The header style's // "Tiles" is 磁贴, never 平铺: that is the tile grid's word (the Tiles // button), and "Tiles (label over value)" must not read as the grid. diff --git a/src/web/public/index.html b/src/web/public/index.html index a4cf63e6..0530185c 100644 --- a/src/web/public/index.html +++ b/src/web/public/index.html @@ -65,7 +65,7 @@ app.js, NOT the handheld storage-key test `m`. Use a different predicate here and boot will contradict this value, animating the drawer open by itself on every load between 768 and 1023px. --> - +