Skip to content

feat(web,mobile): thinking shows inline and finished work folds under Worked for - #28655

Open
t3dotgg wants to merge 1 commit into
mainfrom
t3/simplify-thread-work-display
Open

t3dotgg wants to merge 1 commit into
mainfrom
t3/simplify-thread-work-display

Conversation

@t3dotgg

@t3dotgg t3dotgg commented Nov 1, 2026

Copy link
Copy Markdown
Member

While an agent works, its thinking was buried in a one-line preview under a live row that kept changing. Tool calls were stacked in layers that were hard to read, and the fold was confusing. This PR makes the work log simple, close to how Codex shows it.

  • Thinking shows inline. Each thinking trace is its own row (brain icon, muted markdown), in order, on web, desktop, and mobile.
  • Tools group into one row. Consecutive tool calls share one row. While a call runs, the row names it ("Running vp", "Reading foo.ts", "Searching TODO in src") plus "+N more". A single call opens directly. Task lists keep their own row.
  • Finished turns fold under "Worked for …". Open it to see the thinking and tool calls again.
  • "Thinking" stays honest. It shows only when nothing else is live: no running call, pending approval, live trace, or streaming reply from the current prompt.
  • Less code. The separate live-work row, its thought-preview machinery, and the repainting shine animation are gone (net −420 lines).

Read labels show the file name only. The full path shows when you open the row.

Before / after

Before After
While working before, while working after, while working
Finished, fold open before, finished after, finished

📹 before · 📹 after

Known limits

  • A reply left marked streaming after a steering restart, or a local /feedback row sent while a thought streams, can hide or add one "Thinking" row. Both are rare, and nothing wrong is shown.
  • On web a task list between two calls splits them into two rows. Mobile does not show task lists in the work log, so it shows one group.

Proof: vp run check:changed passes. Focused tests cover each grouping and "Thinking" rule, and each fix test fails without its fix. I recorded the free Replay (dev) showcase on web, on main and on this branch.

Council review

Rounds: 15

Delegate R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
Claude Opus 5.5 7/10 8/10 8/10 9/10 9/10 9/10 8/10 9/10 9/10 8/10 9/10 9/10 9/10 9/10 9/10
Codex GPT-6.1 Sol 7/10 8/10 9/10 9/10 9/10 9/10 9/10 10/10 9/10 10/10 9/10 8/10 10/10 10/10 10/10

Created with Claude Opus 5.5 in Claude Code.

🤖 Generated with Claude Code

…orked for

Thinking traces now render inline as their own rows. Consecutive tool calls
share one row that names the running call, and finished turns fold under
"Worked for …". Applies to web, desktop, and mobile.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Nov 1, 2026
@macroscopeapp

macroscopeapp Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs Human Approval

Macroscope's review found this PR requires human approval — Reasoning now appears inline by default, with consecutive tool calls grouped into expandable rows. A human must confirm this change to the default activity-log experience for existing web and mobile users.

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

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 5.0 KiB 5.0 KiB 0 B (0.0%) 6.8 KiB ✅
Codex Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Codex Live turn WebSocket wire 1.2 KiB 1.2 KiB 0 B (0.0%) 2.0 KiB ✅
Codex Live turn WebSocket decoded 21.6 KiB 21.6 KiB 0 B (0.0%) 24.4 KiB ✅
Codex Live turn messages 2 2 0 (0.0%) 8 ✅
Claude Total thread wire 5.1 KiB 5.0 KiB −6 B (−0.1%) 6.8 KiB ✅
Claude Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Claude Live turn WebSocket wire 1.3 KiB 1.3 KiB −6 B (−0.5%) 2.0 KiB ✅
Claude Live turn WebSocket decoded 21.9 KiB 21.9 KiB 0 B (0.0%) 24.4 KiB ✅
Claude Live turn messages 2 2 0 (0.0%) 8 ✅

Baseline: 8760d06 · PR result: 44acda0 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@coderabbitai

coderabbitai Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 8760d06 and 44acda0.

Files selected for processing: 27
  • apps/mobile/src/features/threads/ThreadFeed.tsx
  • apps/mobile/src/features/threads/floating-working-control.tsx
  • apps/mobile/src/features/threads/thread-context-divider.tsx
  • apps/mobile/src/features/threads/thread-work-log.tsx
  • apps/mobile/src/features/threads/worktree-setup-card.tsx
  • apps/mobile/src/lib/threadActivity.test.ts
  • apps/mobile/src/lib/threadActivity.ts
  • apps/web/src/components/ChatMarkdown.tsx
  • apps/web/src/components/chat/MarkdownMath.tsx
  • apps/web/src/components/chat/MessagesTimeline.active-tools.test.ts
  • apps/web/src/components/chat/MessagesTimeline.browser.test.tsx
  • apps/web/src/components/chat/MessagesTimeline.logic.test.ts
  • apps/web/src/components/chat/MessagesTimeline.logic.ts
  • apps/web/src/components/chat/MessagesTimeline.tsx
  • apps/web/src/components/chat/TimelineV2EventRow.tsx
  • apps/web/src/components/chat/TimelineWorkEntryRow.logic.ts
  • apps/web/src/components/chat/TimelineWorkEntryRow.tsx
  • apps/web/src/components/chat/TimelineWorkGroupRows.tsx
  • apps/web/src/components/chat/WorkLog.tsx
  • apps/web/src/components/chat/timelineRowContext.ts
  • apps/web/src/index.css
  • docs/user/activity-log.md
  • packages/client-runtime/src/state/threadDetail.test.ts
  • packages/client-runtime/src/state/threadDetail.ts
  • packages/client-runtime/src/work-log/presentation.test.ts
  • packages/client-runtime/src/work-log/presentation.ts
  • packages/shared/src/String.ts
Files with no reviewable changes: 5
  • apps/web/src/components/chat/MessagesTimeline.browser.test.tsx
  • apps/web/src/index.css
  • apps/mobile/src/features/threads/thread-context-divider.tsx
  • apps/mobile/src/features/threads/floating-working-control.tsx
  • apps/web/src/components/chat/TimelineWorkEntryRow.logic.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 7 remain after this review.

Walkthrough

The change revises mobile and web activity timelines to present reasoning, active work, and tool groups with updated visibility and expansion rules. It also updates streaming text detection, work-log presentation, and Markdown math behavior.

Changes: Activity Timeline

Layer / File(s) Summary
Shared visibility and tool labels
packages/shared/src/String.ts, packages/client-runtime/src/state/threadDetail.ts, packages/client-runtime/src/work-log/presentation.ts, related tests
A shared helper detects non-whitespace text. Thread-detail streaming comparisons track whether assistant text is visible. Work-log presentation adds active tool labels for supported tool types.
Feed rows and active-work state
apps/mobile/src/lib/threadActivity.ts, apps/web/src/components/chat/MessagesTimeline.logic.ts, related tests
Mobile and web feed derivation present reasoning separately and group tool work. Thinking rows are suppressed when a qualifying streaming reply or active activity is present. Tests cover feed visibility, grouping, and lifecycle cases.
Work-group rendering and interactions
apps/mobile/src/features/threads/*, apps/web/src/components/chat/*, apps/web/src/index.css, docs/user/activity-log.md
Work-log components render grouped tool entries, reasoning, and Thinking rows without the former live-work row and shimmer presentation. Group expansion, row sizing, Markdown math, and activity-log instructions are updated.

Estimated code review effort: 4 (Complex) | ~60 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant ActivityFeed
  participant MessagesTimelineLogic
  participant MessagesTimeline
  participant WorkGroupToggleTimelineRow
  ActivityFeed->>MessagesTimelineLogic: activity entries and streaming state
  MessagesTimelineLogic->>MessagesTimeline: derived work, work-toggle, and thinking rows
  MessagesTimeline->>WorkGroupToggleTimelineRow: grouped entries and active-entry state
Loading

Suggested reviewers: juliusmarminge, yash-singh1

Merge Risk: Minimal · up to 44acd

This change moves thinking traces inline, groups consecutive tool calls into one row, and folds finished turns under "Worked for". No concrete merge-blocking defect was found in the supplied context. Normal checks, including typecheck and the focused tests described in the PR, remain the appropriate gate.

Pre-merge checks: Passed 4
Check name Status Explanation
Title check Passed The title is concise, conventional, and clearly describes the main change: inline thinking and folding finished work under “Worked for.”
Description check Passed The description is detailed and covers the problem, implementation changes, known limits, verification results, screenshots, and recordings. It does not provide a triaged issue or explicit maintainer …
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description is detailed and covers the problem, implementation changes, known limits, verification results, screenshots, and recordings. It does not provide a triaged issue or explicit maintainer approval under Scope and approval, but the remaining required information is substantially complete.

Finishing Touches
Generate docstrings
  • Commit to this branch
  • Create a new PR
Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL 1,000+ changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

1 participant