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
|
title: string | null
|
||||||
started_at: number
|
started_at: number
|
||||||
ended_at: number | null
|
ended_at: number | null
|
||||||
|
last_active?: number
|
||||||
message_count: number
|
message_count: number
|
||||||
tool_call_count: number
|
tool_call_count: number
|
||||||
input_tokens: number
|
input_tokens: number
|
||||||
|
|||||||
@@ -85,8 +85,7 @@ function sortSessionsWithActiveFirst(items: Session[]): Session[] {
|
|||||||
const aLive = chatStore.isSessionLive(a.id)
|
const aLive = chatStore.isSessionLive(a.id)
|
||||||
const bLive = chatStore.isSessionLive(b.id)
|
const bLive = chatStore.isSessionLive(b.id)
|
||||||
if (aLive !== bLive) return aLive ? -1 : 1
|
if (aLive !== bLive) return aLive ? -1 : 1
|
||||||
if (b.createdAt !== a.createdAt) return b.createdAt - a.createdAt
|
return (b.updatedAt || 0) - (a.updatedAt || 0)
|
||||||
return b.updatedAt - a.updatedAt
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ function mapHermesSession(s: SessionSummary): Session {
|
|||||||
source: s.source || undefined,
|
source: s.source || undefined,
|
||||||
messages: [],
|
messages: [],
|
||||||
createdAt: Math.round(s.started_at * 1000),
|
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,
|
model: s.model,
|
||||||
provider: (s as any).billing_provider || '',
|
provider: (s as any).billing_provider || '',
|
||||||
messageCount: s.message_count,
|
messageCount: s.message_count,
|
||||||
|
|||||||
Reference in New Issue
Block a user