Skip to content

feat(fork): hide Working and Thinking rows outside Normal display mode - #137

Merged
orbitingflea merged 1 commit into
mainfrom
fork/hide-chat-mode-working
Nov 12, 2026
Merged

orbitingflea merged 1 commit into
mainfrom
fork/hide-chat-mode-working

Conversation

@orbitingflea

@orbitingflea orbitingflea commented Nov 12, 2026 •

Copy link
Copy Markdown
Owner

This pull request hides the Working and Thinking rows in the chat while a thread is in a display mode other than Normal.

改了什么行为

Behaviour change: yes, a web or desktop user whose thread is in Messages only, Messages + Dashboard or Chat + Replies no longer sees the Working or Thinking row in the chat list or the Replies view. Normal threads and the sidebar's Working badge do not change.

Why

These modes show only messages, but both rows still sat under the last user message, apart from the reply that would come. The sidebar already shows Working.

Checks

New tests fail without the change: Messages only draws neither row, and a message and a steer after it are grouped. A Normal case is the control. In a browser, Messages only and Chat + Replies (main list and Replies view) showed neither row during a turn; Normal showed both. Messages only and Normal were also checked at phone size.

Details
  • How: the row builder drops rows of kind working and thinking when repliesChosen is set, which is true exactly when the mode is not Normal. It runs before the pass that groups user messages, and only on a full rebuild, not on each streamed text update.
  • The Working row goes with all its labels: "Working for 3s", "Working...", "Compacting for 3s", "Setting up worktree…", and the "Background setup" chip on it. The separate worktree setup card stays.
  • isWorking does not change, so scroll-follow, the empty state, the screen-reader announcement and "Edit from here" act as before.
  • Lines this commit changes in upstream files: MessagesTimeline.logic.ts +7 −2 (import, input field, call); MessagesTimeline.tsx +2 −1 (the added prop, and the prop's comment, a fork line already). Messages + Dashboard gets the same flag as the other two modes. The rule is displayModeRows in apps/web/src/fork/displayMode/displayModeTimeline.ts.
  • Also checked: without the change, both rows showed in both panes; after a switch back to Normal, both rows show again.
  • Mobile has no display mode. To undo, revert the commit.

In Messages only, Messages + Dashboard and Chat + Replies, the timeline
still drew the Working and Thinking rows under the last user message,
in the main list and in the Replies sub-thread view. The agent's work
is hidden in these modes and its reply may land in another view, so
the rows sat apart from anything they described. The sidebar already
shows that the thread is working.

The row builder now drops rows of kind `working` and `thinking` when
the existing `repliesChosen` flag is set, which is true exactly when
the mode is not Normal. The filter runs before the pass that groups
adjacent user messages, so a message and a steer after it are grouped
as usual. Normal mode and the sidebar are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S vouch:trusted Author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant