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:
@@ -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)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user