From bb80d52e9824ad19b46a5d8f1b560604d00d9135 Mon Sep 17 00:00:00 2001 From: Momentry Studio Date: Tue, 27 Oct 2026 14:50:44 +0800 Subject: [PATCH] feat: show last search query in session history - Added last_query field to SearchSession interface - loadSessions now fetches last user message for each session - Session list displays: mode badge, title, last query, message count, time - Added .hs-query CSS style for query text --- src/composables/useSearchSession.ts | 19 ++++++++++++++++++- src/views/SearchView.vue | 10 +++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/composables/useSearchSession.ts b/src/composables/useSearchSession.ts index d70dfe6..21049fe 100644 --- a/src/composables/useSearchSession.ts +++ b/src/composables/useSearchSession.ts @@ -6,6 +6,7 @@ export interface SearchSession { title: string mode: 'keyword' | 'visual' | 'people' | 'agent' message_count: number + last_query?: string created_at: string updated_at: string } @@ -78,7 +79,23 @@ export function useSearchSession() { }) if (!resp.ok) throw new Error(`HTTP ${resp.status}`) const data = await resp.json() - sessions.value = data.sessions || [] + // Enrich sessions with last query from messages + const sessions = data.sessions || [] + for (const s of sessions) { + try { + const msgResp = await fetch(`${base}/api/v2/search-sessions/${s.id}/messages?limit=1`, { + headers: getAuthHeaders() + }) + if (msgResp.ok) { + const msgData = await msgResp.json() + const lastUserMsg = msgData.messages?.find((m: any) => m.role === 'user') + if (lastUserMsg) { + s.last_query = lastUserMsg.content + } + } + } catch {} + } + sessions.value = sessions } catch (e: any) { error.value = e.message || 'Failed to load sessions' } finally { diff --git a/src/views/SearchView.vue b/src/views/SearchView.vue index 16b4db9..d045799 100644 --- a/src/views/SearchView.vue +++ b/src/views/SearchView.vue @@ -44,7 +44,8 @@ {{ formatMode(s.mode) }}
{{ s.title }}
-
{{ s.message_count }} messages · {{ formatSessionTime(s.updated_at) }}
+
{{ s.last_query.slice(0, 30) }}{{ s.last_query.length > 30 ? '...' : '' }}
+
{{ s.message_count }} msgs · {{ formatSessionTime(s.updated_at) }}
@@ -1892,6 +1893,13 @@ function openSource(src: SourceInfo) { overflow: hidden; text-overflow: ellipsis; } +.hs-query { + font-size: 11px; + color: var(--text-secondary); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} .hs-item.pinned .hs-time { color: rgba(var(--primary-color-rgb), 0.8); } .hs-mode { font-size: 10px;