Conversation
…s the turn
The server already reports backgroundLiveness on the thread shell and the web
sidebar reads it, but mobile resolved status from the parent session only. A
thread whose turn settled while subagents or watch loops kept running looked
idle in the list and in the open thread.
Map backgroundLiveness in resolveThreadListV2Status ("working" -> Working,
"monitoring" -> Monitoring) after approval, input, running, and error, and add
a background variant to the floating status pill in the open thread. No
contract or server change.
Fixes pingdotgg#10372
Fixes pingdotgg#4962
Co-authored-by: Guillermo Casanova <guillermo.casanova.b@gmail.com>
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a small, self-contained mobile UI fix that surfaces an existing optional server status without changing server behavior, contracts, defaults, or static-analysis configuration. Existing status precedence and legacy-server behavior remain intact, with resolver coverage added for the new display states. You can add or adjust custom eligibility rules. Learn more. |
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: pingdotgg/t3code/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (6)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review. 📝 WalkthroughWalkthroughMobile thread-list and open-thread status handling now includes background liveness. The list resolves and labels monitoring after higher-priority statuses. The open-thread floating status displays Monitoring or Working, with an activity indicator for Working. ChangesBackground status presentation
Priority: ➖ Normal Estimated code review effort: 2 (Simple) | ~10 minutes Change: Bug fix · Severity of issue fixed: Medium Suggested reviewers: Merge Risk: ⚪ Minimal · up to The mobile thread list and open thread now distinguish Working from Monitoring. No actionable merge-blocking risk is established; merge after normal checks. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
What Changed
Mobile now reads
thread.backgroundLiveness, the field the server already puts on the thread shell and the web sidebar already uses:resolveThreadListV2Statusmaps"working"to Working and"monitoring"to Monitoring. Approval, input, a running/starting session, and error still take priority, as they do inresolveThreadStatusPillon web.backgroundvariant: Working with the activity indicator, or Monitoring with no spinner (calm, like the web pill). It only shows when there is no active turn to time.No contract, server, or schema change. 6 files, +92/-6, about half of it tests.
This is the fix suggested in the triage on #10372, ported from #10436 by @Gigioxx (credited as co-author). #10436 no longer applies after #13183 retired the legacy list and
threadPresentation.ts, so this version touches only the v2 list and the open-thread pill.Fixes #10372
Fixes #4962
Why
The parent turn settles as soon as the agent fans work out to background subagents, so mobile showed the thread as idle while the subagents were still running for minutes. The desktop sidebar shows Working for exactly this case since #5219. From the phone, the thread read as finished or dead when the correct answer was "working" (see the reports on #4962 and #10372, on iOS and on two Android devices).
UI Changes
iOS Simulator (iPhone 17 Pro Max), the repo's own showcase fixture (
scripts/mobile-showcase.ts). Both threads have a completed parent turn and areadysession. For the capture only, the server was patched locally to reportbackgroundLivenessfor them (workingfor "Make remote coding feel local",monitoringfor "Make boot logs oddly beautiful"). That patch is not part of this PR. Same fixture and same server patch for both columns; only the mobile code differs.Thread list: on
mainthe rows show only a timestamp, so the thread reads as finished.Open thread: "Worked for 2m" says the turn ended; after the fix the floating pill still shows Working while subagents run.
Verification
threadListV2.test.ts: new cases for settled turn +working/monitoring/null, and for approval, input, running, starting, and error keeping priority over both liveness values. The first case fails onmainand passes with the fix (89/89).tsc --noEmitinapps/mobile: clean.vp fmt --check: clean.vp lint: no new warnings in the touched files (28 before, the same 28 after).Checklist
🤖 Generated with Claude Code
Summary by CodeRabbit