zmuxuny opened a new issue, #7109: URL: https://github.com/apache/rocketmq-dashboard/issues/7109
### Before Creating the Bug Report - [x] I have searched the [open issues](https://github.com/apache/rocketmq-dashboard/issues) of this repository and believe that this is not a duplicate. - [x] This is a defect in RocketMQ Studio, not a usage question and not a defect in another Apache RocketMQ repository. - [x] I can reproduce this on the current `master` branch, or I have stated the exact version I am running below. ### Studio Version rocketmq-studio@127c47b06a268cc74224d5f34c56ec7c36ac0d55 ### Runtime Environment Frontend Vitest/jsdom with the real routed AiPage, timeline/stream hooks, ChatThread, Markdown renderer, and tool cards. Only API boundaries are controlled. ### Connected RocketMQ Cluster Not cluster-dependent. No live provider or RocketMQ cluster was contacted. ### Build Toolchain _No response_ ### Describe the Bug When a running conversation is reopened, the timeline loads its persisted assistant prefix and the attach stream correctly requests events after the loaded cursor. BubbleList nevertheless renders the prefix and the continuation as separate assistant answers. A code fence started before reconnect and completed afterward is parsed independently in each bubble. A persisted tool_use stays in a Running card after its matching tool_done arrives through attach; the result becomes a second card with unavailable input. Final timeline refresh repairs this only when the whole run ends. ### Steps to Reproduce 1. Reopen /ai/c/7 while run 41 is RUNNING and its timeline includes a partial assistant text block or tool_use. 2. Attach continues from the timeline cursor (the regression checks attachRunStream(41, 2, ...)). 3. Deliver the remaining text or matching tool_done without ending the run. 4. Observe two text blocks or two cards for the same tool call. ### What Did You Expect to See? Render the persisted prefix and live continuation of the same run as one coherent answer. Coalesce adjacent text/thinking, update the matching tool card while preserving its arguments, and keep unrelated runs separate. Do not infer ownership merely from the last bubble or a reused tool-call id. ### What Did You See Instead? Two new real-page regression cases fail against unchanged production code: both expect one logical text block/tool card and receive two. Long-running reattached responses show fragmented Markdown and conflicting tool states. ### Additional Context Searched all-state issues and PRs for reconnect/reattach, attach + bubble, reconnect + Markdown, persisted + live + tool, and tool replay duplicates. #6411/#6694 concern a terminal run with no tool result; this case has the matching result while RUNNING. #4963/#5753 concern server replay completeness/registration, not rendering two correctly delivered halves. The Markdown fixture uses a bash fence to avoid unrelated language normalizer report #6879. Tests and production are kept separate until this issue is opened. ### Are You Willing to Submit a Pull Request? - [x] Yes, I am willing to submit a pull request. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
