feat: sort sessions by latest message time instead of creation time

Use `last_active` from SQLite (max message timestamp) for accurate
sorting, with fallback chain: last_active → ended_at → started_at.
CLI mode lacks last_active so falls back to ended_at.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
ekko
2026-04-19 23:32:01 +08:00
parent 969e56b45e
commit d3817556ac
3 changed files with 3 additions and 3 deletions
@@ -7,6 +7,7 @@ export interface SessionSummary {
title: string | null
started_at: number
ended_at: number | null
last_active?: number
message_count: number
tool_call_count: number
input_tokens: number
@@ -85,8 +85,7 @@ function sortSessionsWithActiveFirst(items: Session[]): Session[] {
const aLive = chatStore.isSessionLive(a.id)
const bLive = chatStore.isSessionLive(b.id)
if (aLive !== bLive) return aLive ? -1 : 1
if (b.createdAt !== a.createdAt) return b.createdAt - a.createdAt
return b.updatedAt - a.updatedAt
return (b.updatedAt || 0) - (a.updatedAt || 0)
})
}
+1 -1
View File
@@ -151,7 +151,7 @@ function mapHermesSession(s: SessionSummary): Session {
source: s.source || undefined,
messages: [],
createdAt: Math.round(s.started_at * 1000),
updatedAt: Math.round((s.ended_at || s.started_at) * 1000),
updatedAt: Math.round((s.last_active || s.ended_at || s.started_at) * 1000),
model: s.model,
provider: (s as any).billing_provider || '',
messageCount: s.message_count,