From 43eda89d472919f509b2d16126e4d2cca5ac3161 Mon Sep 17 00:00:00 2001 From: Jack Date: Thu, 5 Nov 2026 12:27:22 +0800 Subject: [PATCH] fix(chat): place agent activity before response --- .../2026-11-05-agent-activity-layout.md | 10 ++++ .../components/hermes/chat/MessageItem.vue | 5 +- .../components/hermes/chat/MessageList.vue | 55 +++++++++---------- .../hermes/chat/groupRunMessages.ts | 3 +- tests/client/chat-group-run-messages.test.ts | 4 +- tests/e2e/chat-rendering-smoke.spec.ts | 48 +++++++++++++--- tests/e2e/thinking-panel-width.spec.ts | 1 + 7 files changed, 84 insertions(+), 42 deletions(-) create mode 100644 docs/chat-chain-changes/2026-11-05-agent-activity-layout.md diff --git a/docs/chat-chain-changes/2026-11-05-agent-activity-layout.md b/docs/chat-chain-changes/2026-11-05-agent-activity-layout.md new file mode 100644 index 0000000..2f3cd68 --- /dev/null +++ b/docs/chat-chain-changes/2026-11-05-agent-activity-layout.md @@ -0,0 +1,10 @@ +--- +date: 2026-11-05 +pr: pending +feature: Agent activity layout +impact: The current agent's thinking state and tool calls appear below its profile header and before its answer. Completed tool calls remain collapsed above the answer; chat events and persistence are unchanged. +--- + +The active run uses a temporary display-only assistant row until an answer is +available. It uses the session profile avatar and does not create an empty +message bubble or persist a placeholder. diff --git a/packages/client/src/components/hermes/chat/MessageItem.vue b/packages/client/src/components/hermes/chat/MessageItem.vue index bf55fff..658e271 100644 --- a/packages/client/src/components/hermes/chat/MessageItem.vue +++ b/packages/client/src/components/hermes/chat/MessageItem.vue @@ -35,7 +35,7 @@ const JSON_MAX_KEYS_PER_OBJECT = 50; const JSON_MAX_ITEMS_PER_ARRAY = 50; const JSON_TRUNCATED_KEY = "__truncated__"; -const props = defineProps<{ message: Message; highlight?: boolean; headingIdPrefix?: string; showForkAction?: boolean }>(); +const props = defineProps<{ message: Message; highlight?: boolean; headingIdPrefix?: string; showForkAction?: boolean; activityOnly?: boolean }>(); const { t } = useI18n(); const toast = useMessage(); @@ -1021,7 +1021,8 @@ onBeforeUnmount(() => { /> {{ assistantProfileName }} -
+ +
- -