From 081c60a15f12b93907132b2cae124e8d60adc1c2 Mon Sep 17 00:00:00 2001 From: ekko Date: Mon, 13 Apr 2026 00:52:34 +0800 Subject: [PATCH] feat: add session grouping by source with collapsible accordion - Group sessions by source in sidebar (api_server first, cron last) - Accordion behavior: only one group expanded at a time - Auto-select first session when expanding a group - Backfill session titles from first user message in listSessions - Remove chat header model badge - Fix toolPreview type error for non-string values - New chats default to api_server source Co-Authored-By: Claude Opus 4.6 --- server/src/services/hermes-cli.ts | 10 +- src/components/chat/ChatPanel.vue | 200 ++++++++++++++++++++---------- src/stores/chat.ts | 20 +-- 3 files changed, 144 insertions(+), 86 deletions(-) diff --git a/server/src/services/hermes-cli.ts b/server/src/services/hermes-cli.ts index 68310b2..24a7c2c 100644 --- a/server/src/services/hermes-cli.ts +++ b/server/src/services/hermes-cli.ts @@ -53,12 +53,20 @@ export async function listSessions(source?: string, limit?: number): Promise m.role === 'user') + if (firstUser?.content) { + const t = String(firstUser.content).slice(0, 40) + title = t + (String(firstUser.content).length > 40 ? '...' : '') + } + } sessions.push({ id: raw.id, source: raw.source, user_id: raw.user_id, model: raw.model, - title: raw.title, + title, started_at: raw.started_at, ended_at: raw.ended_at, end_reason: raw.end_reason, diff --git a/src/components/chat/ChatPanel.vue b/src/components/chat/ChatPanel.vue index 9d3fbe9..d485714 100644 --- a/src/components/chat/ChatPanel.vue +++ b/src/components/chat/ChatPanel.vue @@ -1,14 +1,12 @@