Skip to content

fix(roundtable): draw a seat's live tool calls in full, in the order they happen - #178

Merged
titan-ron merged 2 commits into
mainfrom
titan/roundtable-issue-5d09f0
Sep 24, 2026
Merged

titan-ron merged 2 commits into
mainfrom
titan/roundtable-issue-5d09f0

Conversation

@titan-ron

@titan-ron titan-ron commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

Two fixes to the live block a roundtable seat streams into while its turn is running.

1. Tool calls collapsed to empty lines

While a seat was running tools, the transcript showed a stack of empty horizontal lines above "Claude is thinking…". There was one line per tool call: the seat in question had made ten (shell checks, then web searches), and there were ten lines.

Why: .rt-live (a seat's in-flight block) is display: contents, so its tool rows are flex items of .messages without being its children. The rule that keeps transcript rows from shrinking, .messages > * { flex-shrink: 0 }, only matches direct children, so it never reached them. A .tool-row is overflow: hidden, which lets its minimum height fall to 0. Once the transcript overflowed, each live tool row shrank to its two border pixels. Finished entries and the plain chat view were never affected.

Fix: extend the no-shrink rule to the live block's children: .messages > .rt-live > *.

2. Tool calls drawn above all of the seat's text

The live turn kept streamed text and tool calls in two separate lists and rendered every tool call first. A seat that said "Running the suite first.", ran it, then reported back showed the tool rows on top and both passages run together underneath.

Fix: the live turn is now one ordered list of text and tool parts. Text still waiting in the 40ms stream batch is placed before a tool call that arrives after it, so batching can't reorder them.

Verification

  • Drove the built app against the ui-tour fixture world with stub agents, using a roundtable long enough to scroll, and sent a message so both seats streamed text and tool calls. With the fix, live tool rows measured 25px. With the first fix undone in-page they measured 2px, which reproduces the empty-line stack. Claude's "Running the suite first." now renders above its Bash call.
  • New component test: text, two tool calls, then text in one burst, asserting DOM order. It fails on the old code and passes on the new.
  • npm run typecheck, npm test (118 files, 1813 tests) pass.

A roundtable's live block is display: contents, so its tool rows are
flex items of the transcript without being its children. The rule that
keeps transcript rows from shrinking only matched direct children, so
once the transcript overflowed, each streamed tool call shrank to its
two border pixels and a seat mid-tool-run read as a stack of empty
lines above "is thinking".
@github-code-quality

github-code-quality Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/unit

The overall line coverage in commit 4c9b832 in the titan/roundtable-iss... branch remains at 79%, unchanged from commit f5b5d16 in the main branch.

TypeScript / code-coverage/component

The overall line coverage in commit 4c9b832 in the titan/roundtable-iss... branch remains at 88%, unchanged from commit f5b5d16 in the main branch.

Show a line coverage summary of the most impacted files.
File main f5b5d16 titan/roundtable-iss... 4c9b832 +/-
src/renderer/src/ChatView.tsx 95% 95% 0%
src/renderer/sr...ndtableView.tsx 88% 91% +3%

Updated September 24, 2026 15:42 UTC

…they happen

A seat's in-flight turn kept its streamed text and its tool calls in two
separate lists and drew every tool call above all of the text, so a seat
that said what it was about to do, ran it, then reported back read as
tools first and both passages run together underneath. The live turn is
now one ordered list of parts; text still waiting in the 40ms stream
batch is placed before a tool call that arrives after it.
@titan-ron titan-ron changed the title fix(roundtable): keep a seat's live tool calls from collapsing to lines fix(roundtable): draw a seat's live tool calls in full, in the order they happen Sep 24, 2026
@titan-ron
titan-ron merged commit 2da0158 into main Sep 24, 2026
7 checks passed
@titan-ron
titan-ron deleted the titan/roundtable-issue-5d09f0 branch September 24, 2026 19:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant