DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

shinelon /

shinelon/dsh-mermaid-plugin

Verified

Render mermaid code blocks in DSH chat as diagrams - 在 DSH 聊天中将 mermaid 代码块渲染为图形

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: master@281c0bdc

dsh-mermaid-plugin

English | 中文

A DeepSeek Harness (DSH) client plugin that renders ```mermaid code blocks in chat messages as diagrams — with a diagram/source toggle, light/dark theme following, and source-preserving error fallback.

Features

  • Auto detection — finds mermaid code blocks in the chat transcript by code-block banner or first-effective-line matching (leading blank lines, %% comments and YAML frontmatter are skipped).
  • 20 diagram types — flowchart, graph TB/TD/BT/RL/LR, sequenceDiagram, classDiagram, stateDiagram(-v2), erDiagram, journey, gantt, pie, mindmap, timeline, gitGraph, quadrantChart, requirementDiagram, c4Context, sankey-beta, xychart-beta, block-beta, packet-beta, architecture-beta.
  • Diagram / source toggle — the original code block stays reachable; the host source is hidden by CSS :has() only while a rendered diagram stands in.
  • Theme following — re-initializes mermaid (dark / default) and re-renders when the DSH dark-theme attribute changes.
  • Error fallback — a broken diagram keeps the source visible and shows the mermaid error message instead of swallowing content.
  • Strict sanitization — mermaid runs with securityLevel: "strict" on a transparent background.
  • Incremental rendering — a debounced MutationObserver scans for changes; unchanged code is never re-rendered; stale surfaces are cleaned up when their code block disappears.

Install

  • One-click from the dsh-market plugin market (Settings → Plugin Market), or
  • dsh plugin add this repository from GitHub.

Requires DSH Web. No build step and no npm dependencies are needed — client.js is a prebuilt bundle (mermaid 11.17.2 plus the plugin glue).

How it works

package.json (dsh.bundle.patch) ──► cordis.patch.yml ──► module "mermaid-chat" in host bundle
      │
      └─ dsh.client: platform web · immediately · inject conversation UI + locale
               │
               └─ client.js ──► window.__ModuleLoader__.load({ id, factory })
                        │
                        └─ apply(ctx): MutationObserver ──► detect ──► lazy-load mermaid ──► render SVG
  • The host half (index.js) is an empty apply() by protocol; all rendering lives on the client side.
  • UI strings resolve through the injected locale service with built-in zh/en fallback dictionaries.
  • Plugin disposal disconnects observers, removes the injected style sheet and every surface element.

Repository layout

File Kind Purpose
package.json hand-written plugin manifest: exports, dsh.bundle.patch, dsh.client options
index.js hand-written host-half entry, empty apply()
client.js prebuilt (~3.4 MB) mermaid 11.17.2 bundle + plugin logic (registration block at the end of file)
cordis.patch.yml hand-written bundle patch inserting module mermaid-chat
locale/zh.json, locale/en.json hand-written plugin metadata (title/description)
icon.svg hand-written plugin icon
AGENTS.md hand-written repository guide for agents and developers

Development

  • Do not reformat client.js by hand — it is a build artifact; its source project is not part of this repository.
  • Static check (no test/lint scripts exist): node --check index.js && node --check client.js
  • See AGENTS.md for architecture notes, conventions and the manual verification checklist.

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 281c0bdc43a4

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout