Skip to content

VS Code插件新增 Mermaid 图表渲染支持#21

Open
huangdengdui wants to merge 1 commit intoOrionStarAI:opensourcefrom
huangdengdui:feat/mermaid-diagram
Open

VS Code插件新增 Mermaid 图表渲染支持#21
huangdengdui wants to merge 1 commit intoOrionStarAI:opensourcefrom
huangdengdui:feat/mermaid-diagram

Conversation

@huangdengdui
Copy link

Summary / 摘要

  • 新增 Mermaid 图表渲染支持,流式输出阶段实时渲染,代码块闭合后立即展示图表
    Add Mermaid diagram rendering with streaming-aware async rendering.
  • 重构 markdownComponents 为 MarkdownRenderer(React.memo + useMemo),稳定流式输出期间组件引用,避免 MermaidBlock 卸载重建导致图表闪烁
    Refactor markdownComponents into MarkdownRenderer to prevent SVG flickering during streaming.
  • 修复自动滚动逻辑,兼容 Mermaid 异步渲染撑高页面及内容缩小误判场景
    Fix auto-scroll to handle async content height changes and content-shrink false positives.

Changes / 变更说明

  • Mermaid 渲染组件:packages/vscode-ui-plugin/webview/src/components/MessageBubble.tsx
  • 自动滚动修复:packages/vscode-ui-plugin/webview/src/components/ChatInterface.tsx
  • 图表样式:packages/vscode-ui-plugin/webview/src/components/MessageMarkdown.css
  • webview 依赖:packages/vscode-ui-plugin/webview/package.jsonpackages/vscode-ui-plugin/webview/package-lock.json

Testing / 测试

已完成人工测试,包括流式输出渲染、语法错误展示、主题切换重渲染、自动滚动场景。

- 新增 MermaidBlock 组件,支持流式感知的异步渲染
  - 流式阶段防抖 300ms,代码块闭合后立即渲染
  - 渲染失败时回退到上次成功的 SVG,避免图表消失
  - 通过 MutationObserver 监听 VSCode 主题切换并重新渲染
- 将 markdownComponents 重构为 MarkdownRenderer(React.memo + useMemo)
  稳定流式输出期间的组件引用,避免每次 token 更新导致
  MermaidBlock 卸载重建和 SVG 闪烁
- 修复自动滚动逻辑,通过 ResizeObserver 捕获异步内容高度变化,
  并用 scrollHeight 守卫排除内容缩小导致的误判
- webview 新增 mermaid@11.13.0 依赖
- 新增 .mermaid-block 和 .mermaid-error-badge 样式

Signed-off-by: huangdengdui <huangdengdui@cmcm.com>
@huangdengdui huangdengdui changed the title Feat/mermaid diagram VS Code插件新增 Mermaid 图表渲染支持 Mar 15, 2026
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