Skip to content

Active thread row shows time since the last user message, not the latest reply #31806

Closed

Description

@lol2x

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:

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):

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.

  1. Send a message in an active thread and let the agent run for several minutes.
  2. 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.)
  3. 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           13m

Related 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

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    via-triageFiled through npx t3 triage

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions