From 9d2e82cd0650e0aded3a10f64ea48b25b37c795d Mon Sep 17 00:00:00 2001 From: ekko <152005280+EKKOLearnAI@users.noreply.github.com> Date: Thu, 28 May 2026 15:22:18 +0800 Subject: [PATCH] fix virtual message list scrolling (#1089) Co-authored-by: Codex --- .../src/components/hermes/chat/ChatPanel.vue | 13 +++- .../hermes/chat/HistoryMessageList.vue | 10 ++++ .../components/hermes/chat/MessageList.vue | 10 ++++ .../components/hermes/chat/OutlinePanel.vue | 28 ++++----- .../hermes/chat/VirtualMessageList.vue | 59 ++++++++++++++++--- .../client/src/views/hermes/HistoryView.vue | 13 +++- 6 files changed, 103 insertions(+), 30 deletions(-) diff --git a/packages/client/src/components/hermes/chat/ChatPanel.vue b/packages/client/src/components/hermes/chat/ChatPanel.vue index e171511..77dade5 100644 --- a/packages/client/src/components/hermes/chat/ChatPanel.vue +++ b/packages/client/src/components/hermes/chat/ChatPanel.vue @@ -38,6 +38,7 @@ const { t } = useI18n(); const showDrawer = ref(false); const drawerActiveTab = ref<"terminal" | "files">("files"); const showOutline = ref(false); +const messageListRef = ref | null>(null); const currentMode = ref<"chat" | "live">("chat"); @@ -72,6 +73,10 @@ function openSessionInNewTab(sessionId: string) { window.open(sessionHref(sessionId), "_blank", "noopener,noreferrer"); } +function handleOutlineNavigate(target: { messageId: string; anchorId: string }) { + messageListRef.value?.scrollToAnchor(target.messageId, target.anchorId); +} + async function handleSessionClick(sessionId: string) { await router.push({ name: "hermes.session", @@ -1201,9 +1206,13 @@ async function handleSessionModelCustomSubmit() {