Skip to content

feat: sessions outline names tools on tool-only turns (v0.20.0)#50

Merged
lroolle merged 1 commit into
mainfrom
feat/outline-tool-labels
Jul 22, 2026
Merged

feat: sessions outline names tools on tool-only turns (v0.20.0)#50
lroolle merged 1 commit into
mainfrom
feat/outline-tool-labels

Conversation

@lroolle

@lroolle lroolle commented Jul 22, 2026

Copy link
Copy Markdown
Member

What

The sessions rail went content-free exactly when the agent did tool work: a pure tool-call assistant turn (no narration text) rendered a dead tools…. It now names what the agent did.

Before: turn07 tools…
After: turn07 Bash / turn07 Read, Edit, Bash, +1

How

  • turnToolLabel(turn) in src/ui.ts maps each tool_use block to the conversation folds' own vocabulary -- subagent spawns to Task, Skill to skill · <name>, mcp__* to mcp · <server>, everything else to the plain tool name -- deduped, capped at three with a +N remainder.
  • The !text fallback in the outline now prefers that label; a thinking-only turn reads thinking…, a genuinely empty one (no text) -- no more asserting "tools" when there were none.
  • Two dom-stub tests pin the single-tool and multi-tool-capped renderings.

Ships in src/ui.ts, so users get the improved rendering (unlike the docs-only #49). CHANGELOG 0.20.0 records both this and the ui.md/TASTE.md reconciliation from #49, since 0.19.0 was the last npm release.

479 tests pass; binary compiles.

🤖 Generated with Claude Code

A pure tool-call assistant turn -- the agent acted without narrating --
rendered a content-free "tools..." in the sessions rail, dead exactly when
the agent was doing the work. It now names what it did in the conversation
folds' own vocabulary: Bash, Read, skill ccx, mcp github, Task -- deduped
and capped at three with a +N remainder. A thinking-only turn reads
"thinking...", a genuinely empty one "(no text)". The rail should narrate
the agent's actions; that is the whole point of the trace.

turnToolLabel in src/ui.ts; two dom-stub tests pin the single-tool and
multi-tool-capped cases.

CHANGELOG 0.20.0 also records the ui.md/TASTE.md reconciliation merged in
#49 -- 0.19.0 was the last npm release, so this is the release unit that
ships both.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@lroolle
lroolle merged commit b43b9e7 into main Jul 22, 2026
1 check passed
@lroolle
lroolle deleted the feat/outline-tool-labels branch July 22, 2026 17:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant