Skip to content

feat: show agent task progress in threads - #11

Merged
Kaloyanes merged 1 commit into
mainfrom
feat/agent-progress-ui-variants
Oct 28, 2026
Merged

Kaloyanes merged 1 commit into
mainfrom
feat/agent-progress-ui-variants

Conversation

@Kaloyanes

@Kaloyanes Kaloyanes commented Oct 28, 2026 •

Copy link
Copy Markdown
Owner

Agents already write task lists (Codex plan, Claude TodoWrite, ACP plan), but T3 Code only showed them as quiet timeline rows, so there was no way to see where an agent is without scrolling.

Web

  • A closable progress card under the inline details card. When it isn't showing (details closed, card closed, or popover mode), a composer strip takes over, with a pin button to put the card back.
  • The sidebar row shows a ring and step count while working or blocked; the active row shows the current step in place of its branch line, so row height doesn't change.
  • A run waiting on a question or approval marks the current step ("Waiting for your answer/approval") and the strip collapses to one line. A run that ended early reads as stopped, not running.
  • Screen readers get a step label and a polite announcement when the step or state changes.

Mobile

  • The "Working" pill becomes a progress pill (ring, current step, count, timer) that opens a native bottom sheet (@expo/ui/community/bottom-sheet) with every step. Thread list rows keep the step count.

Server and shared

  • Thread shells carry todoProgress for runs in flight. The lookup uses a partial index (migration 073), so idle threads skip it.
  • The progress helpers (summarizeTodoSteps, resolveTodoRunState, findLatestTodoSteps, isLatestRunSettled) moved to packages/client-runtime and are shared by web and mobile.

Not included: subtasks (no provider emits nesting today).

Verification: vp run check:changed passes. Added a server test (shell progress across the SQL and in-memory paths), web unit and browser tests, and mobile presentation tests; the mobile React Compiler coverage test passes. Checked on the iOS simulator against the Replay (dev) provider: the pill and sheet render and the sheet dismisses by swipe. Not checked on a device: the blocked and stopped states, thread list row labels, and Android.

Written by Claude Sonnet 5.5 in Claude Code, running in T3 Code.

Screenshots

Hosted on the code-free pr-assets/progress-ui-11 branch, so they are not part of this diff.

Web

Card under the details card, and the sidebar row with ring and count (0 of 3 steps, run in flight):

Progress card and sidebar row

Card closed, so the strip takes over above the composer:

Progress strip above the composer

Run stopped early: "0/3 · Stopped", current step no longer shown as running:

Stopped run

Mobile (iOS simulator)

Progress pill, then the sheet it opens:

Progress pill Progress sheet

Agents already write task lists (Codex plan, Claude TodoWrite, ACP plan),
but T3 Code only showed them as quiet timeline rows, so there was no way to
see where an agent is without scrolling.

Web: a closable progress card under the inline details card, and a composer
strip that takes over when the card isn't showing it. The sidebar row shows a
ring and step count while working or blocked, and the active row shows the
current step. A blocked run (question or approval) is marked on the current
step, and a run that ended early reads as stopped, not running.

Mobile: the working pill becomes a progress pill (ring, current step, count,
timer) that opens a native bottom sheet with every step. Thread list rows keep
the step count.

Server: thread shells carry `todoProgress` for runs in flight, behind a partial
index so idle threads skip the lookup. The pure progress helpers now live in
client-runtime and are shared by web and mobile.

Written by Claude Sonnet 5.5 in Claude Code, running in T3 Code.
Copilot AI balanced review requested due to automatic review settings October 28, 2026 14:52
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ⚠️ Failed 2026-10-28T14:52:07.300694Z
We couldn’t complete this review. Comment @codex review to try again.
f99259f PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Oct 28, 2026
@Kaloyanes
Kaloyanes merged commit d3fe15e into main Oct 28, 2026
7 of 19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL 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.

2 participants