dsh-md-plus 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/README.md +4 -17
- package/lib/client.js +77 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# 更新日志
|
|
2
2
|
|
|
3
|
+
## 0.2.1 —— 2026-10-16
|
|
4
|
+
|
|
5
|
+
- 修掉「同一份代码显示两遍」:`DSH_LANGS` 还是老版本的语言表,`dart`、`scala`、`vue`、`powershell`、`csv`、`diff` 等 66 个别名被当成「DSH 不认识」,插件抢先补了一层高亮;随后 DSH 的懒加载语法到位、React 把 plain `<pre>` 换成自己的高亮节点,插件那份副本成了野节点留在原地,于是两份都在。现在语言表对齐 108 条别名。
|
|
6
|
+
- 加了一层兜底:DSH 接管某块后,插件撤掉自己插的副本(清 `data-md-plus` 标记)。语言表以后再落后也不会留永久双份,最多白干一次。
|
|
7
|
+
- README:修正「`dart` 不在 DSH 语言表里」的错误说法,示例换成 DSH 真不认的 `gdscript`。
|
|
8
|
+
- 测试扩到 53 条,新增「DSH 接管后不留副本」的回归用例;补高亮的用例换成插件独有语言,不再拿 `dart` 当反例。
|
|
9
|
+
|
|
3
10
|
## 0.2.0 —— 2026-10-08
|
|
4
11
|
|
|
5
12
|
- 修掉 mermaid 围栏在 DSH 0.2.0-rc.2 上画不出来(issue #1):头部语言名被占位文案「代码块」顶掉,插件读不到围栏语言;现在认不出标签就看正文的类型声明。
|
package/README.md
CHANGED
|
@@ -19,21 +19,7 @@ DSH 原生的头部是「小灰字 + 文字复制按钮」,没写语言时左
|
|
|
19
19
|
|
|
20
20
|
样式是纯 CSS 打在 `.md-code-block` 上,所以所有语言(包括 DSH 自己高亮的 JSON/TS/Python)都吃同一套外观。想调间距,改 `src/client.js` 里 banner 的 `padding` 末位和 pre 的 `padding` 首位。
|
|
21
21
|
|
|
22
|
-
### 语法高亮
|
|
23
22
|
|
|
24
|
-
DSH 只认它语言表里的语言,其余走纯文本回退,没颜色。`dart` 就不在表里:
|
|
25
|
-
|
|
26
|
-
```dart
|
|
27
|
-
class CodeCard extends StatelessWidget {
|
|
28
|
-
const CodeCard({super.key, required this.language});
|
|
29
|
-
|
|
30
|
-
final String language;
|
|
31
|
-
}
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
插件把这类块捡出来用自带的 Shiki 上色,DSH 认的语言一律不碰。
|
|
35
|
-
|
|
36
|
-
⚠️ 在 DSH 0.2.0-rc.2 上这套暂时失效,原因见文末「已知边界」。
|
|
37
23
|
|
|
38
24
|
### mermaid 图形
|
|
39
25
|
|
|
@@ -67,7 +53,7 @@ dsh plugin --profile desktop remove dsh-md-plus
|
|
|
67
53
|
```powershell
|
|
68
54
|
npm install # 顺带跑 prepare → build
|
|
69
55
|
npm run build # 产出 lib/ 下四个文件
|
|
70
|
-
npm run check # 语法检查 +
|
|
56
|
+
npm run check # 语法检查 + 53 条测试
|
|
71
57
|
npm run preview # 生成 preview.html(含真渲出来的 mermaid 图)
|
|
72
58
|
npm run shot # 用 headless Chrome 把 preview.html 截成 docs/preview.png
|
|
73
59
|
```
|
|
@@ -78,8 +64,9 @@ npm run shot # 用 headless Chrome 把 preview.html 截成 docs/preview.png
|
|
|
78
64
|
|
|
79
65
|
## 已知边界
|
|
80
66
|
|
|
81
|
-
- 0.2.0-rc.2
|
|
82
|
-
- 同一个原因让补高亮在 0.2.0-rc.2
|
|
67
|
+
- 0.2.0-rc.2 起,头部那行语言名由宿主决定显示什么:认这门语言就显示语言名,不认就显示本地化占位文案(中文「代码块」)。认不出来就读不到围栏语言,插件无法转化,且还不报错。mermaid 这条改看正文:跳过 `%%` 注释和开头的 `---` frontmatter,正文里有行以 mermaid 类型关键字开头就当图。这条只管认图,不参与补高亮的判断。
|
|
68
|
+
- 同一个原因让补高亮在 0.2.0-rc.2 上基本失效:`gdscript`、`nushell` 这类 DSH 不认的语言,头部是占位文案,插件问不到 Shiki 该用哪套语法,只能没颜色。反过来 DSH 认得的那 108 种(`dart`、`vue`、`scala` …)由 DSH 自己上色,插件不碰。
|
|
69
|
+
- `DSH_LANGS` 是 DSH `LANG_ALIASES` 的快照(对齐 108 条)。DSH 加语言后这份快照会落后,落后只会让它多管一门 DSH 也在管的高亮 —— 撤回兜底能保证不出现双份,但会白干一次高亮;想干净就跟着同步。
|
|
83
70
|
- mermaid 12 的新图种(`usecase-beta`、`agentflow-beta`)标识符只认字母数字下划线,中文得写进标签:`actor Customer("用户")` 可以,`actor 用户` 会解析失败。
|
|
84
71
|
- 高亮约 6.4 MB、mermaid 约 5.0 MB,按需下载,第一次用到时多花约 100ms 解析。
|
|
85
72
|
- 依赖宿主 `.md-code-block`、`[data-code-block-content]`、`[data-code-block-banner]`、`data-streaming` 这几个钩子,DSH 改了要跟着改 `src/client.js` 顶部的常量和 `MMD_TYPE`。
|
package/lib/client.js
CHANGED
|
@@ -70,7 +70,73 @@ window.__ModuleLoader__.load({
|
|
|
70
70
|
"less",
|
|
71
71
|
"sql",
|
|
72
72
|
"xml",
|
|
73
|
-
"lua"
|
|
73
|
+
"lua",
|
|
74
|
+
"bat",
|
|
75
|
+
"batch",
|
|
76
|
+
"powershell",
|
|
77
|
+
"ps1",
|
|
78
|
+
"ps",
|
|
79
|
+
"fish",
|
|
80
|
+
"properties",
|
|
81
|
+
"dotenv",
|
|
82
|
+
"env",
|
|
83
|
+
"log",
|
|
84
|
+
"csv",
|
|
85
|
+
"diff",
|
|
86
|
+
"patch",
|
|
87
|
+
"http",
|
|
88
|
+
"rst",
|
|
89
|
+
"latex",
|
|
90
|
+
"tex",
|
|
91
|
+
"bibtex",
|
|
92
|
+
"bib",
|
|
93
|
+
"asciidoc",
|
|
94
|
+
"adoc",
|
|
95
|
+
"r",
|
|
96
|
+
"julia",
|
|
97
|
+
"jl",
|
|
98
|
+
"dart",
|
|
99
|
+
"scala",
|
|
100
|
+
"clojure",
|
|
101
|
+
"clj",
|
|
102
|
+
"erlang",
|
|
103
|
+
"erl",
|
|
104
|
+
"elixir",
|
|
105
|
+
"ex",
|
|
106
|
+
"exs",
|
|
107
|
+
"haskell",
|
|
108
|
+
"hs",
|
|
109
|
+
"fsharp",
|
|
110
|
+
"fs",
|
|
111
|
+
"fsi",
|
|
112
|
+
"fsx",
|
|
113
|
+
"vb",
|
|
114
|
+
"vbnet",
|
|
115
|
+
"perl",
|
|
116
|
+
"pl",
|
|
117
|
+
"pm",
|
|
118
|
+
"verilog",
|
|
119
|
+
"v",
|
|
120
|
+
"system-verilog",
|
|
121
|
+
"systemverilog",
|
|
122
|
+
"sv",
|
|
123
|
+
"svh",
|
|
124
|
+
"graphql",
|
|
125
|
+
"gql",
|
|
126
|
+
"proto",
|
|
127
|
+
"protobuf",
|
|
128
|
+
"hcl",
|
|
129
|
+
"tf",
|
|
130
|
+
"tfvars",
|
|
131
|
+
"nix",
|
|
132
|
+
"vue",
|
|
133
|
+
"svelte",
|
|
134
|
+
"make",
|
|
135
|
+
"makefile",
|
|
136
|
+
"mk",
|
|
137
|
+
"cmake",
|
|
138
|
+
"groovy",
|
|
139
|
+
"gradle"
|
|
74
140
|
]);
|
|
75
141
|
var MMD_LANGS = /* @__PURE__ */ new Set(["mermaid", "mermaidjs", "mmd"]);
|
|
76
142
|
var MMD_TYPE = /^\s*(flowchart|graph|sequenceDiagram|classDiagram|stateDiagram(-v2)?|erDiagram|journey|gantt|pie|mindmap|timeline|gitGraph|quadrantChart|xychart-beta|sankey-beta|block-beta|packet-beta|architecture-beta|usecase-beta|agentflow-beta|C4Context|requirementDiagram|kanban|radar|treemap|venn|ishikawa|wardley|cynefin|treeView|zenuml)\b/im;
|
|
@@ -338,11 +404,21 @@ window.__ModuleLoader__.load({
|
|
|
338
404
|
injected.add(created);
|
|
339
405
|
}
|
|
340
406
|
}
|
|
407
|
+
function releaseTakenOver(block, content) {
|
|
408
|
+
var host = content.querySelector("." + HOST_CLASS);
|
|
409
|
+
if (host === null) return false;
|
|
410
|
+
if (content.querySelector("pre.shiki:not(.md-plus-pre)") === null) return false;
|
|
411
|
+
host.remove();
|
|
412
|
+
block.removeAttribute(KEY_ATTR);
|
|
413
|
+
block.removeAttribute(DONE_ATTR);
|
|
414
|
+
return true;
|
|
415
|
+
}
|
|
341
416
|
async function enhance(block) {
|
|
342
417
|
if (!block.isConnected) return;
|
|
343
418
|
if (block.closest("[data-streaming]") !== null) return;
|
|
344
419
|
var content = block.querySelector(CONTENT);
|
|
345
420
|
if (content === null) return;
|
|
421
|
+
if (releaseTakenOver(block, content)) return;
|
|
346
422
|
var pre = content.querySelector("pre");
|
|
347
423
|
if (pre === null || pre.classList.contains("shiki")) return;
|
|
348
424
|
var lang = readLang(block);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-md-plus",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Markdown display enhancements for DeepSeek Harness Web: code block restyle, syntax highlighting for languages DSH does not ship, and built-in mermaid diagrams.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|