Repository navigation
Description
What happened
The thread list showed 8 min on a thread, but there was actually a reply from a minute ago.
Diagnosis
The age on an active row counts from latestUserMessageAt, so a normal agent reply doesn't change it. The data is correct; the question is what this age should mean.
Mobile:
t3code/apps/mobile/src/features/threads/threadListV2.ts
Lines 500 to 518 in 337c585
| function resolveThreadListV2ItemTimeLabel( | |
| item: ThreadListV2Item, | |
| showSnoozeWakeLabel: boolean, | |
| ): string { | |
| const { thread, variant, snoozed } = item; | |
| if (showSnoozeWakeLabel) return ""; | |
| if ( | |
| variant === "card" && | |
| (resolveThreadListV2Status(thread) !== "ready" || | |
| item.wokeAt !== null || | |
| threadHasUnseenCompletion(thread)) | |
| ) | |
| return ""; | |
| const settledTimestamp = | |
| variant === "slim" && !snoozed ? resolveSettledThreadTimestamp(thread) : null; | |
| return relativeTime( | |
| settledTimestamp ?? thread.latestUserMessageAt ?? thread.updatedAt ?? thread.createdAt, | |
| ); | |
| } |
Web and desktop use the same field (read in the code, not run):
t3code/apps/web/src/components/sidebar/SidebarThreadRow.tsx
Lines 148 to 150 in 337c585
| function threadTimeTimestamp(thread: SidebarThreadSummary): string { | |
| return thread.latestUserMessageAt ?? thread.updatedAt; | |
| } |
This may be intended: #22032 describes the label as the last user message. I found no stated reason or docs. If it is intended, the row still gives no hint that the age ignores replies.
Not fixed in newer code: the label logic is the same on main at 3d78e91. Links use the server's nightly tag, so line numbers may differ in the Android build.
Steps to reproduce
Seen once on the Android app. These steps follow from that and from the code; they weren't run again separately.
- Send a message in an active thread and let the agent run for several minutes.
- When the agent finishes, open the thread so the reply counts as read, then go back to the thread list. (Until then the row shows a status instead of an age.)
- Compare the age on the row with the time of the reply in the thread.
Version
Android app 2.2.0 (build commit unknown); servers 0.1.8-nightly.20261105.4218 (read during triage)
Environment
Android phone connected to two Windows desktop servers
Evidence
Two rows from one thread list screenshot, compared at the moment it was taken. Times come from server records.
Thread Last user message Latest run finished Age shown
A 8m 32s ago 23s ago 8m
B 13m 49s ago 8m 58s ago 13mRelated issues
No matching report found. #22032 and #24860 are about sort order, not this label.
Fix applied or workaround
None.
Filed by
claude-opus-5-5 via Claude Code; playbook followed by hand in a T3 Code thread, not through t3 triage
Activity