From befd0f01d3a7a1f8009f037f1b743e46cb6565c8 Mon Sep 17 00:00:00 2001 From: Lyon <88232613+pikasTech@users.noreply.github.com> Date: Tue, 23 Jun 2026 12:50:19 +0800 Subject: [PATCH] fix(workbench): keep main card timing on durable message projection (#1965) --- .../src/components/workbench/ConversationPanel.vue | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/web/hwlab-cloud-web/src/components/workbench/ConversationPanel.vue b/web/hwlab-cloud-web/src/components/workbench/ConversationPanel.vue index 35283f3a..41fbebdd 100644 --- a/web/hwlab-cloud-web/src/components/workbench/ConversationPanel.vue +++ b/web/hwlab-cloud-web/src/components/workbench/ConversationPanel.vue @@ -299,8 +299,11 @@ function messageActivityMeta(message: ChatMessage): { text: string; label: strin } function messageTimingForDisplay(message: ChatMessage): ChatMessage["timing"] { - if (!isRunningMessage(message)) return message.timing ?? message.runnerTrace?.timing ?? null; - return message.runnerTrace?.timing ?? message.timing ?? null; + // The main message card consumes only the durable message timing projection. + // Trace timing belongs to TraceTimeline/details; letting trace hydration drive the + // card timer makes running turns jump when a later trace snapshot carries an + // older startedAt/lastEventAt window. + return message.timing ?? null; } function terminalMessageDurationMs(message: ChatMessage, timing: ChatMessage["timing"]): number | null {