Skip to content

chore(web): upgrade markstream-vue#633

Open
Simon-He95 wants to merge 1 commit into
groupultra:mainfrom
Simon-He95:chore/upgrade-markstream-vue-smooth
Open

chore(web): upgrade markstream-vue#633
Simon-He95 wants to merge 1 commit into
groupultra:mainfrom
Simon-He95:chore/upgrade-markstream-vue-smooth

Conversation

@Simon-He95

@Simon-He95 Simon-He95 commented May 27, 2026

Copy link
Copy Markdown

Summary

  • Upgrade markstream-vue from 0.0.6 to 1.0.1-beta.1.
  • Enable smooth-streaming for AI chat and summary markdown rendering.
  • Replace the old AI chat streaming prop with the new final prop.

Tests

  • pnpm -F @tg-search/web typecheck
  • pnpm run lint:fix
  • pnpm run typecheck
  • pnpm run web:build

Note

Low Risk
Dependency bump and prop renames on markdown UI only; no auth, data, or API logic changes.

Overview
Upgrades markstream-vue from 0.0.6 to 1.0.1-beta.1 (lockfile pulls in markstream-core, updated stream-markdown-parser, etc.).

AI chat and summary dialog markdown now use the library’s new streaming API: smooth-streaming is enabled on both MarkdownRender instances, and AI chat swaps the removed streaming prop for final (!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.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment on lines 250 to 254
<MarkdownRender
:custom-id="`unread-summary-${props.chatId}`"
:content="session.content"
:smooth-streaming="true"
/>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

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"
              />

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ 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"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit bf9c88a. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant