Skip to content

fix(chat): keep agent activity visible between actions - #8984

Merged
maria-rcks merged 2 commits into
pingdotgg:mainfrom
maria-rcks:t3code/show-agent-activity-state
Sep 1, 2026
Merged

fix(chat): keep agent activity visible between actions#8984
maria-rcks merged 2 commits into
pingdotgg:mainfrom
maria-rcks:t3code/show-agent-activity-state

Conversation

@maria-rcks

@maria-rcks maria-rcks commented Sep 1, 2026

Copy link
Copy Markdown
Collaborator

Running turns now keep an animated Thinking row at the tail whenever no tool is active, including after commentary and completed tools. Terminal tool details remain visible but stop shimmering once completed. Verified with 87 focused web tests, web typecheck, lint, formatting, and a real showcase browser pass; screenshot and video capture were unavailable in the shared preview client.

Built with gpt-5.6-sol in the Codex harness.


Note

Low Risk
Changes are confined to chat timeline row derivation and rendering in the web app, with no auth or data-path impact; the main caveat is the MessagesTimelineRow shape change if anything outside this PR pattern-matches on working.showThinking.

Overview
Running turns now show Thinking as its own timeline row whenever no tool is actively running, instead of tucking it under the Working for… header via showThinking. That row stays at the tail through gaps after commentary, completed tools, or a fresh send before a turn id exists.

work-live rows gain an active flag: in-progress tools still use the animated live activity line and Running labels; once the latest tool finishes (or is declined) but the turn is still running, the same row stays visible with static styling and past-tense copy (Ran / Declined). A separate thinking row appears when there is no active live tool row.

Timeline derivation picks the displayed tool from the latest still-active entry when present, and stable row reuse keeps the thinking row instance stable as assistant text streams in.

Reviewed by Cursor Bugbot for commit 60fb030. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Split agent 'thinking' indicator into its own timeline row in MessagesTimeline

  • Adds a dedicated thinking row variant to types.MessagesTimelineRow, replacing the showThinking flag previously embedded in the working variant
  • Adds an active: boolean field to the work-live variant so deriveMessagesTimelineRows can distinguish actively running tool groups from completed ones; active groups render as live rows while inactive ones render as static content blocks
  • Updates liveWorkEntryLabel to return Running, Declined, or Ran based on the new active flag and lifecycle status, e.g. Running pnpm vs Declined pnpm\n- Updates isRowUnchanged to compare thinking rows by createdAt (like working rows) and to detect changes in the active flag for work-live rows
  • Behavioral Change: WorkingTimelineRow no longer renders thinking content; callers relying on the working row's showThinking field or embedded thinking markup will break. The new ThinkingTimelineRow component handles all thinking rendering.

Macroscope summarized 60fb030.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Sep 1, 2026
Comment thread apps/web/src/components/chat/MessagesTimeline.logic.ts Outdated
Comment thread apps/web/src/components/chat/MessagesTimeline.tsx Outdated

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f1bc202. Configure here.

Comment thread apps/web/src/components/chat/MessagesTimeline.logic.ts
@macroscopeapp

macroscopeapp Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 60fb030

Macroscope's review found this PR approvable — This is a focused chat-timeline rendering fix that keeps completed activity visible and adds a stable Thinking indicator between actions. Changes are isolated to the web timeline derivation/rendering logic with targeted tests and no broader data, API, security, or infrastructure impact.

You can add or adjust custom eligibility rules. Learn more.

@github-actions github-actions Bot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 1, 2026
@maria-rcks
maria-rcks merged commit 9ecfc07 into pingdotgg:main Sep 1, 2026
27 checks passed
juliusmarminge added a commit that referenced this pull request Sep 1, 2026
Restores main features dropped by the policy replay: #8569 theme wiring,
#8850 composer banner follow-ups, #8855/#8904 composer fixes, #8831
settings search rework, #8803 workspace-mutation refresh (v2-adapted),
#8840 circle-alert, #8584 codex artifact templates, #8688/#8807/#8936
video + image previews (web and mobile, v2-adapted), #8862 Expo glass,
and the round's docs. Timeline thinking rows (#8984) stay on the v2
work-live system.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 1, 2026
## What's Changed
* feat(mobile): upload attachments while composing by @juliusmarminge in pingdotgg/t3code#8978
* fix(chat): keep agent activity visible between actions by @maria-rcks in pingdotgg/t3code#8984
* fix(server): isolate remote web session cookies by @Bil0000 in pingdotgg/t3code#8085
* feat(pull-requests): link GitHub references in markdown by @maria-rcks in pingdotgg/t3code#8812
* perf(server): reduce frequency of full tool call output being loaded into memory from db by @t3dotgg in pingdotgg/t3code#8988


**Full Changelog**: pingdotgg/t3code@v0.0.38-nightly.20260901.1242...v0.0.38-nightly.20260901.1243

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.38-nightly.20260901.1243
juliusmarminge added a commit that referenced this pull request Sep 1, 2026
The v2 equivalents of main's #8984 and #8922: a "Working for ..." header
anchors the active run, the trailing live tool row survives between
actions in past tense instead of vanishing, and a shimmering Thinking
row marks reasoning gaps. During workspace preparation the header shows
"Setting up worktree..." (driven by the local dispatch flag or the v2
run's preparing status, so remote viewers see it too), the composer
footer span is gone, and draft promotion waits until the run starts or
startup fails instead of navigating mid-preparation.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 1, 2026
## What's Changed
* Add mobile composer attachment menu with video support by @juliusmarminge in pingdotgg/t3code#8843
* fix(web): restore unified activity logs and composer banners by @t3dotgg in pingdotgg/t3code#8734
* fix(web): address composer banner review follow-ups by @juliusmarminge in pingdotgg/t3code#8850
* fix(web): widen sync banners and simplify the working timer by @juliusmarminge in pingdotgg/t3code#8855
* fix(preview): improve browser recording quality by @maria-rcks in pingdotgg/t3code#8839
* fix(web): mark pull request links as external by @juliusmarminge in pingdotgg/t3code#8856
* fix(mobile): replace Callstack glass with Expo glass by @juliusmarminge in pingdotgg/t3code#8862
* fix(server): skip IDE detection in Claude probes by @yashranaway in pingdotgg/t3code#8634
* chore(macroscope): review diagnostic overrides by @t3-code[bot] in pingdotgg/t3code#8917
* fix(contracts): accept CLI event origins by @nateEc in pingdotgg/t3code#8905
* fix(web): hide invalid slash skill completions by @nateEc in pingdotgg/t3code#8904
* fix(mobile): defer draft navigation until submission completes by @juliusmarminge in pingdotgg/t3code#8914
* chore: disable CodeRabbit review status by @juliusmarminge in pingdotgg/t3code#8933
* Delete app.json by @juliusmarminge in pingdotgg/t3code#8934
* fix(web): show scrollbar for wide markdown tables by @UtkarshUsername in pingdotgg/t3code#8868
* fix(mobile): shimmer active tool rows by @juliusmarminge in pingdotgg/t3code#8932
* chore(deps): bump Electron to 43.4.1 by @StiensWout in pingdotgg/t3code#8626
* fix(chat): smooth worktree setup status by @juliusmarminge in pingdotgg/t3code#8922
* feat(mobile): add video playback with native iOS controls by @juliusmarminge in pingdotgg/t3code#8919
* fix(web): prevent chat metadata overlap by @MatthewFeroz in pingdotgg/t3code#8851
* fix(server): preserve usage cache outside walked roots by @Lucenx9 in pingdotgg/t3code#8540
* feat(mobile): add native image and PDF previews by @juliusmarminge in pingdotgg/t3code#8959
* fix(server): allow long thread IDs in HTTP routes by @nateEc in pingdotgg/t3code#8898
* fix(shared): preserve Windows shell PATH priority by @UtkarshUsername in pingdotgg/t3code#8748
* fix(web): make WSL settings searchable by @UtkarshUsername in pingdotgg/t3code#8881
* feat(web): add expand/collapse all control to the files surface by @UtkarshUsername in pingdotgg/t3code#8889
* feat(mobile): upload attachments while composing by @juliusmarminge in pingdotgg/t3code#8978
* fix(chat): keep agent activity visible between actions by @maria-rcks in pingdotgg/t3code#8984
* fix(server): isolate remote web session cookies by @Bil0000 in pingdotgg/t3code#8085
* feat(pull-requests): link GitHub references in markdown by @maria-rcks in pingdotgg/t3code#8812
* perf(server): reduce frequency of full tool call output being loaded into memory from db by @t3dotgg in pingdotgg/t3code#8988
* feat(web): add pull request list filters by @maria-rcks in pingdotgg/t3code#8809
* feat(web): search individual settings by detail by @maria-rcks in pingdotgg/t3code#8831
* feat(client): render viewed images in work logs by @maria-rcks in pingdotgg/t3code#8936
* fix(client): use package import for markdown image helpers by @juliusmarminge in pingdotgg/t3code#9010
* test: remove static presentation snapshots by @t3-code[bot] in pingdotgg/t3code#9008
* perf(server): bound snapshot activity payload memory by @t3dotgg in pingdotgg/t3code#9000
* perf(server): cut idle CPU use and stop provider event leaks by @t3dotgg in pingdotgg/t3code#8187
* perf(server): scan only appended transcript bytes for usage summaries by @StiensWout in pingdotgg/t3code#9024
* perf(server): cut chatty tool-update frames by 90% by @Adamulek123 in pingdotgg/t3code#8368
* fix(server): settle threads server-side by @t3dotgg in pingdotgg/t3code#8600
* fix(clients): dedupe skills in composer menus by @Adamulek123 in pingdotgg/t3code#8043
* fix(server): stop OpenCode child sessions by @t3dotgg in pingdotgg/t3code#9005
* perf(web): defer pull request line stats until visible by @Adamulek123 in pingdotgg/t3code#6471
* perf(server): skip full-message reads while streaming by @t3dotgg in pingdotgg/t3code#9032
* perf(client-runtime): halve server config bootstrap traffic by @Adamulek123 in pingdotgg/t3code#8367
* fix(web): align un-settle banner action by @StiensWout in pingdotgg/t3code#9033
* fix(web): block type-to-focus behind open dialogs by @Lucenx9 in pingdotgg/t3code#8139
* feat(shortcuts): copy active thread reference by @maria-rcks in pingdotgg/t3code#8994
* fix(mobile): keep thread scroll bounds current after animations by @juliusmarminge in pingdotgg/t3code#9013
* fix(server): cache project favicon resolution by @willsheldon in pingdotgg/t3code#9080
* feat(claude): add Claude Fable 5.1 model by @q1 in pingdotgg/t3code#9078
* fix(preview): restore recording and macOS rendering after Electron 43 by @StiensWout in pingdotgg/t3code#9001
* feat(desktop): add configurable quit shortcut confirmation by @juliusmarminge in pingdotgg/t3code#9076
* feat(web): open project settings from thread menus by @SunkenInTime in pingdotgg/t3code#8925
* fix(chat): reuse one row for live activity by @maria-rcks in pingdotgg/t3code#9062
* feat(models): discover Claude models from remote manifest by @juliusmarminge in pingdotgg/t3code#9084
* Revert "fix(chat): reuse one row for live activity" by @maria-rcks in pingdotgg/t3code#9096
* fix(web): sync sidebar PR state from open panel by @t3-code[bot] in pingdotgg/t3code#9092
* fix(web): changing projects no longer creates a draft by @extoci in pingdotgg/t3code#9097
* fix(web): keep theme placeholder text dimmer than entered text by @flamboh in pingdotgg/t3code#9104
* fix(web): keep the selected environment when changing projects by @t3dotgg in pingdotgg/t3code#9102

## New Contributors
* @willsheldon made their first contribution in pingdotgg/t3code#9080
* @q1 made their first contribution in pingdotgg/t3code#9078

**Full Changelog**: pingdotgg/t3code@v0.0.37...v0.0.38

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:trusted PR 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