Repository navigation
feat(web): the working row shows the agent's latest thought (upstream #16284) - #270
Merged
Merged
Conversation
Ports upstream's liveThoughtLine helper into a fork-owned file, since the fork has no client-runtime work-log presentation module. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…tgg#16284) The working indicator row now derives the first sentence of the latest non-empty thought since the last user message. Row stability compares the derived line, so a streaming thought stops re-rendering the row once its first sentence is complete. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…g#16284) While the agent works, the working row shows the first sentence of its latest thought with a brain icon. Clicking it opens that thought; an already open thought hides the preview. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This was referenced Oct 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
While an agent works, the live "Working for Xs" row at the bottom of the chat now shows the first sentence of the agent's latest thought, with a brain icon. A finding no longer hides behind the collapsed Thought row and the tool calls that follow it. Clicking the line opens that thought; an open thought hides the preview.
Note: upstream pingdotgg#16284 ("live row shows the agent's latest thought", Theo Browne) changes the chat timeline's live activity row, not a sidebar. Neither sidebar is touched here (see "Left out").
How it was ported
Upstream's thoughts are work-log entries inside a live tool group (
work-liverow). The fork keeps thoughts asreasoningrole messages (ported in #259) and has nowork-liverow, so the change is re-expressed against the fork'sworkingindicator row:liveThoughtLine(verbatim from upstream's client-runtimework-log/presentation.ts, which the fork lacks) lives in a newapps/web/src/components/chat/liveThoughtLine.ts. A bold-only opening line (the Codex summary heading) wins, otherwise the first sentence, markdown flattened.deriveMessagesTimelineRowsattachesthought: { messageId, line }to the working row: the latest non-empty reasoning message since the last user message, so a steer starts fresh.LiveThoughtLinerenders it above the working status inMessagesTimeline.tsx. It is hidden while compacting, like the rest of the status row.Performance
Providers
Claude (including its between-step notes), Codex, and OpenCode emit reasoning, so they show the line. Cursor and Grok emit none, so the working row looks the same as before.
Left out
WorkLog.tsxwrapLabelalignment tweak (the fork has noWorkLog.tsx; the new line handles its own alignment).git log 95ccbf4066..upstream/mainfinds none).Verification
vp test runonliveThoughtLine.test.ts(4 passed),MessagesTimeline.logic.test.ts(50 passed),MessagesTimeline.test.tsx(23 passed). The render test fails when the line is removed.vp lintandvp fmt --checkon changed files: clean.tsgo --noEmit -p apps/web/tsconfig.json: clean.vp run check:avicode: pass.vp run test:avicode: 7 passed.🤖 Generated with Claude Code