Summary
The "Tools" tab in the Agents view renders in the tab bar but clicking it shows an empty panel — user-visible dead control. This is the only HIGH-severity UI remnant from the post-#2336 audit.
Evidence
ui/src/ui/views/agents.ts:268-274 — tab bar renders { id: "tools", label: "Tools" } alongside live tabs (Overview / Files / Channels / Cron Jobs)
ui/src/ui/views/agents.ts:195 — panel body is ${nothing /* tools panel removed — skills/tools UI gutted */}
When a user selects "Tools", the tab is highlighted but the panel area is empty.
Why this is safe
The panel was already gutted (#2240 / #2245 removed the skills/tools UI code tree). The only residue is the tab button itself. No code path relies on activePanel === "tools" producing rendered output.
Changes
- Remove
{ id: "tools", label: "Tools" } from the tabs array in renderAgentTabs (ui/src/ui/views/agents.ts:268-274)
- Narrow
AgentsPanel type union (line 30) — drop "tools" if no other code path sets it
- Delete the
${nothing /* tools panel removed */} placeholder at line 195
- Grep for any consumer that sets
activePanel = "tools" and update accordingly
AC
Context
Discovered during the post-#2336 UI remnants audit. Highest-severity finding (only user-visible dead control in the sweep). Ship first — trivial diff, high trust impact.
Summary
The "Tools" tab in the Agents view renders in the tab bar but clicking it shows an empty panel — user-visible dead control. This is the only HIGH-severity UI remnant from the post-#2336 audit.
Evidence
ui/src/ui/views/agents.ts:268-274— tab bar renders{ id: "tools", label: "Tools" }alongside live tabs (Overview / Files / Channels / Cron Jobs)ui/src/ui/views/agents.ts:195— panel body is${nothing /* tools panel removed — skills/tools UI gutted */}When a user selects "Tools", the tab is highlighted but the panel area is empty.
Why this is safe
The panel was already gutted (#2240 / #2245 removed the skills/tools UI code tree). The only residue is the tab button itself. No code path relies on
activePanel === "tools"producing rendered output.Changes
{ id: "tools", label: "Tools" }from thetabsarray inrenderAgentTabs(ui/src/ui/views/agents.ts:268-274)AgentsPaneltype union (line 30) — drop"tools"if no other code path sets it${nothing /* tools panel removed */}placeholder at line 195activePanel = "tools"and update accordinglyAC
grep -rn '"tools"' ui/src/ui/views/agents.tsreturns no matchesgrep -rn 'id: "tools"' ui/src/returns no matchespnpm checkgreen (format + tsgo + lint + fork-integrity gates)pnpm testgreenpnpm test:ui:smokegreenContext
Discovered during the post-#2336 UI remnants audit. Highest-severity finding (only user-visible dead control in the sweep). Ship first — trivial diff, high trust impact.