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;