Repository navigation
Description
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/mobile
Steps to reproduce
Connect web and the iOS app to the same server, then create three threads:
- Waiting: in a Claude thread, ask the agent to start a Monitor (for example, watch for a file that does not exist yet) and end its turn. The web sidebar shows Waiting.
- Woke: snooze a finished thread for one minute (Snooze → Custom… → 1 minute) and let it wake. The web sidebar shows Woke.
- Working: in a Codex thread, ask the agent to run
sleep 1800and wait for it. The web sidebar shows Working with the elapsed time. - Open the thread list on mobile. The iPhone Home list and the iPad sidebar use the same row component.
The screenshots below were taken at the same moment from an isolated dev server and a demo project.
Expected behavior
Each mobile row shows the same status as the web sidebar: Waiting, Woke (until the user opens or dismisses it), and Working with the elapsed time.
Actual behavior
| Thread | Web sidebar | Mobile list |
|---|---|---|
| Monitor for Restock Completion | Waiting | Blank: no status and no time |
| Run Inventory Sync in Background (woke from snooze) | Woke | Only the relative time ("21m"), like any idle thread |
| Wait for Checkout Load Test | Working 14m | Working, without the elapsed time |
A thread that wakes from snooze goes back to its original position in the list, so on mobile nothing tells the user it came back. A thread with live background work looks like a row that failed to render.
Investigation (source at 4ee6bfd)
- Waiting:
resolveThreadListV2Statusreturns"waiting"when the runtime is parked at idle by background work that will wake the agent (a monitor or subagent), but the row'sSTATUS_LABEL_BY_STATUStable has nowaitingentry. The time label is also hidden for every card whose status is notready, so the slot is empty. Open PR fix(mobile): waiting threads show their status in the thread list #14947 adds the missing entry. - Woke: web derives the wake time with
threadWokeAtfrom client-runtime and renders the Woke label from it. Mobile never callsthreadWokeAt, so it has no Woke state. - Working duration: web renders
WorkingDurationnext to the Working label; the mobile row renders only the label.
Source references:
https://github.com/pingdotgg/t3code/blob/4ee6bfd50e/apps/mobile/src/features/threads/threadListV2.ts#L200-L202 ;
https://github.com/pingdotgg/t3code/blob/4ee6bfd50e/apps/mobile/src/features/threads/thread-list-v2-items.tsx#L65-L73 ;
https://github.com/pingdotgg/t3code/blob/4ee6bfd50e/apps/mobile/src/features/threads/threadListV2.ts#L464-L468 ;
https://github.com/pingdotgg/t3code/blob/4ee6bfd50e/packages/client-runtime/src/state/threadSettled.ts#L185 ;
https://github.com/pingdotgg/t3code/blob/4ee6bfd50e/apps/web/src/components/Sidebar.tsx#L1241-L1244 ;
https://github.com/pingdotgg/t3code/blob/4ee6bfd50e/apps/web/src/components/Sidebar.tsx#L1299-L1304 ;
https://github.com/pingdotgg/t3code/blob/4ee6bfd50e/apps/web/src/components/Sidebar.tsx#L335-L345
Related reports checked
#14947: open PR that fixes the Waiting label only. #10372: iOS did not show Monitoring; it was closed because V2 maps that state to Waiting on both clients, but the mobile row still has no Waiting label. No existing issue covers Woke or the Working duration on mobile.
Impact
Minor bug or occasional failure
Version or commit
Reproduced at 4ee6bfd (server reports 0.0.45); unmodified mobile, web, and server checkout.
Environment
iOS 26.5 Simulator (iPhone 17 Pro); web in Chrome 154; macOS 27.0.1 (26A434), Apple Silicon; local isolated dev server over loopback; Node 26.9.0; Claude 2.1.289 / Claude Sonnet 5.5 (Waiting thread); Codex 0.160.0 / GPT-6-Astra (Working thread). Android not tested.
Logs or stack traces
No response
Screenshots, recordings, or supporting files
Same server, same moment, isolated demo data only:
| Web sidebar | Mobile thread list |
|---|---|
![]() |
![]() |
Workaround
No response


Activity
juliusmarminge commentedon Oct 4, 2026
Note
Grok responding on behalf of Julius.
Triage
Thanks for the side-by-side screenshots and the source pointers, @nekohasekai. They made this quick to confirm.
What I found
I checked current
main(4ee6bfd50e). All three cases use the same status slot onThreadListV2Row, which the iPhone Home list and the iPad sidebar share. Android uses the same component, so it most likely has the same gaps.resolveThreadListV2Statusalready returns"waiting", butSTATUS_LABEL_BY_STATUShas nowaitingentry.resolveThreadListV2ItemTimeLabelalso clears the timestamp for every card that isn'tready, so the slot ends up empty.threadWokeAtinto the sidebar and shows Woke until the visit watermark catches up. Mobile never callsthreadWokeAt, so a woken thread just shows its relative time.WorkingDuration, counting fromresolveThreadWorkingStartedAt. The mobile row shows only Working. The open thread already has aWorkingTimer, but the list doesn't have one, and its format is different from the sidebar's.Open PR #14947 adds only the Waiting label, so Woke and the working time would still be missing after it lands. #10372 covered the V1 Monitoring label and can stay closed.
Likely fix area
Some options:
thread-list-v2-items.tsx/threadListV2.tsthat mirrorsresolveSidebarV2TopStatus: Waiting (as in fix(mobile): waiting threads show their status in the thread list #14947), Woke from an unacknowledgedthreadWokeAt, and Working plus the elapsed time.WorkingDuration, so the row isn't rebuilt every tick.A maintainer will decide on the fix direction.
jlipworth commentedon Oct 6, 2026
Also seeing this on iOS 2.0.0 (109) with Claude Opus 5.5 threads. The parent's turn ends while background subagents keep running, and the row shows only its timestamp, like an idle thread. Opening it shows the "Waiting on…" pill. Root cause matches:
STATUS_LABEL_BY_STATUSinthread-list-v2-items.tsx:65has nowaitingentry. Closed #16464 as a duplicate of this.