chore(web): upgrade markstream-vue#633
Conversation
There was a problem hiding this comment.
Code Review
This pull request updates the markstream-vue dependency to version 1.0.1-beta.1 and enables the smooth-streaming property on the MarkdownRender component in both SummaryDialog.vue and ai-chat.vue. The reviewer pointed out that enabling smooth-streaming in SummaryDialog.vue without also binding the :final prop could cause the component to remain in an active streaming state indefinitely or fail to render the final output correctly.
| <MarkdownRender | ||
| :custom-id="`unread-summary-${props.chatId}`" | ||
| :content="session.content" | ||
| :smooth-streaming="true" | ||
| /> |
There was a problem hiding this comment.
When enabling smooth-streaming, the MarkdownRender component requires the :final prop to determine when the stream has completed. Without it, the component may remain in an active streaming state indefinitely or fail to render the final formatted output correctly.
If the summary is indeed streamed, bind :final to the session's streaming state (e.g., !session.isStreaming). If the summary is static, smooth-streaming should be disabled entirely to avoid unnecessary rendering overhead and potential visual delays.
<MarkdownRender
:custom-id="`unread-summary-${props.chatId}`"
:content="session.content"
:final="!session.isStreaming"
:smooth-streaming="true"
/>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit bf9c88a. Configure here.
| <MarkdownRender | ||
| :custom-id="`unread-summary-${props.chatId}`" | ||
| :content="session.content" | ||
| :smooth-streaming="true" |
There was a problem hiding this comment.
Missing final prop on SummaryDialog's MarkdownRender
Medium Severity
The MarkdownRender in SummaryDialog.vue enables :smooth-streaming="true" but never passes a :final prop. According to the markstream-vue v1.x API, final defaults to false, so the renderer will never know when the stream has ended. This means smooth-streaming will never flush its remaining buffered content, and trailing delimiters (like $$ or unclosed code fences) will remain stuck in a loading state. The AI chat component correctly passes :final="!message.isStreaming", but the summary dialog omits this entirely.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit bf9c88a. Configure here.


Summary
markstream-vuefrom0.0.6to1.0.1-beta.1.smooth-streamingfor AI chat and summary markdown rendering.streamingprop with the newfinalprop.Tests
pnpm -F @tg-search/web typecheckpnpm run lint:fixpnpm run typecheckpnpm run web:buildNote
Low Risk
Dependency bump and prop renames on markdown UI only; no auth, data, or API logic changes.
Overview
Upgrades
markstream-vuefrom0.0.6to1.0.1-beta.1(lockfile pulls inmarkstream-core, updatedstream-markdown-parser, etc.).AI chat and summary dialog markdown now use the library’s new streaming API:
smooth-streamingis enabled on bothMarkdownRenderinstances, and AI chat swaps the removedstreamingprop forfinal(!message.isStreaming) so in-progress vs finished rendering matches v1.Reviewed by Cursor Bugbot for commit bf9c88a. Bugbot is set up for automated code reviews on this repo. Configure here.