yichangyaoyue / dsh-client-ui-mermaid

已收录

dsh plugin that renders Mermaid fenced code blocks as SVG diagrams in the web UI

main工具 查看源代码

安装

npx -y @deepseek-ai/dsh plugin --profile web add github:yichangyaoyue/dsh-client-ui-mermaid

此安装命令根据 GitHub 仓库地址生成,是未经验证的安装起点。

README

维护者编写的文档快照。

在 GitHub 查看 ↗
提交版本 ff71f2f同步于 2026年8月18日

@moyiyaoyue/dsh-client-ui-mermaid

Client-only dsh plugin that renders Mermaid fenced code blocks (```mermaid) as inline SVG diagrams in the web UI.

What it does

  • Watches the conversation DOM for md-code-block elements whose language is mermaid.
  • Renders each one to SVG via the Mermaid engine, replacing the plain code body while keeping the copy button and a 源码 / 收起 source toggle.
  • Re-renders diagrams when the DSH light/dark theme flips.
  • Falls back to an inline error message (and keeps the source visible) when the diagram cannot be rendered.

How it works

  • The package declares dsh.client.platform = "web", so the client-modules host scan serves lib/client.js as /plugins/@moyiyaoyue/dsh-client-ui-mermaid/client.js and lists it in window.__DSH_BOOT__.
  • The browser bundle registers a MutationObserver on document.body and lazily executes the vendored Mermaid engine on first use.

Mermaid engine source

The Mermaid v11 engine is vendored into lib/client.js, so diagram rendering works fully offline — no network request is made. As a defensive fallback (if the vendored copy ever fails to execute), the plugin tries these CDN URLs in order:

  1. https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js
  2. https://unpkg.com/mermaid@11/dist/mermaid.min.js

Override the fallback before the plugin applies by setting window.__DSH_MERMAID_SRC__ to a URL string or an array of candidate URLs.

Mermaid runs in the browser with securityLevel: "strict", so untrusted diagram text cannot inject HTML into the page.

Rebuild

Rebuild the vendored bundle and reinstall it in one step (from the repo root):

powershell -ExecutionPolicy Bypass -File .\rebuild.ps1

Build sources live under build/ (client.template.js, build.js, and the downloaded mermaid.min.js).

Install

Install from npm:

dsh plugin --profile web add @moyiyaoyue/dsh-client-ui-mermaid

or, for local development, from a checkout on the same drive:

dsh plugin --profile web add "file:../../plugins/dsh-client-ui-mermaid"

Because this is a client-only plugin (it declares no dsh.bundle), it must also be registered as a loader entry in the profile's cordis.patch.yml:

- insert:
    - id: client-ui-mermaid
      name: '@moyiyaoyue/dsh-client-ui-mermaid'

Restart dsh web (or the profile) after installing, then refresh the browser.

仓库信息

开发语言
JavaScript
许可证
MIT
最后更新
2026年8月15日 03:19

谨慎安装

请检查源代码、权限、生命周期脚本、依赖与网络访问;不受信任的插件应先在隔离环境中测试。