@changfenhuang/dsh-genui 0.10.0 → 0.11.0

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.
Files changed (37) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/README.md +1 -1
  3. package/README.zh-CN.md +9 -1
  4. package/SKILL.md +4 -0
  5. package/lib/client.js +261 -5
  6. package/lib/index.js +14 -12
  7. package/lib/types/client/asset-loader.d.ts +2 -0
  8. package/lib/types/client/blocks/basic.d.ts +0 -5
  9. package/lib/types/client/blocks/diagram/theme.d.ts +3 -1
  10. package/lib/types/client/blocks/state.d.ts +4 -0
  11. package/lib/types/client/embed.d.ts +8 -0
  12. package/lib/types/client/inline.d.ts +3 -27
  13. package/lib/types/plugin/index.d.ts +2 -1
  14. package/package.json +63 -2
  15. package/src/client/EChartNode.tsx +3 -2
  16. package/src/client/GenuiBlock.module.css +25 -14
  17. package/src/client/GenuiBlock.tsx +24 -16
  18. package/src/client/PlotBlock.tsx +2 -1
  19. package/src/client/asset-loader.ts +7 -0
  20. package/src/client/blocks/advanced.tsx +15 -15
  21. package/src/client/blocks/basic.tsx +3 -2
  22. package/src/client/blocks/charts.tsx +18 -19
  23. package/src/client/blocks/checkbox.tsx +2 -1
  24. package/src/client/blocks/diagram/index.tsx +33 -24
  25. package/src/client/blocks/diagram/layout.ts +4 -1
  26. package/src/client/blocks/diagram/theme.ts +22 -3
  27. package/src/client/blocks/forms.tsx +15 -14
  28. package/src/client/blocks/image.tsx +2 -1
  29. package/src/client/blocks/render-node.tsx +18 -18
  30. package/src/client/blocks/state.ts +4 -0
  31. package/src/client/dom-fence.tsx +19 -10
  32. package/src/client/embed.ts +9 -0
  33. package/src/client/gallery.ts +6 -0
  34. package/src/client/guard.ts +9 -3
  35. package/src/client/inline.ts +36 -44
  36. package/src/plugin/index.ts +8 -6
  37. package/src/plugin/tool.ts +2 -2
package/CHANGELOG.md CHANGED
@@ -1,6 +1,23 @@
1
1
  # Changelog
2
2
 
3
- ## [Unreleased]
3
+ ## [0.11.0] - 2026-09-15
4
+
5
+ ### 新增
6
+ - 数学公式支持 `$...$`、`$$...$$`、`\(...\)`、`\[...\]`,覆盖文本、表格、标题、步骤、时间线、选项与显示标签,以及强调中的公式、矩阵、分段和多行推导(#162、#168、#169)。使用 KaTeX 渲染,保留交互原值;不提供完整 LaTeX 文档或任意宏包编译,代码、输入原值、原生下拉选项与图形引擎内部标签仍遵循各自格式。
7
+ - 提供应用嵌入入口、图形资源入口与技能文档导出;支持宿主传入初始状态、接收交互状态和配置资源地址,修复状态保存回调变化引起的重复回传(#167)。
8
+
9
+ ### 修复
10
+ - 图示随宿主浅深主题即时更新配色,修正背景、高度与图例截断,移除水印序号(#152、#157)。
11
+ - 浅色卡片恢复明亮卡面,保留描边与阴影层次(#159、#166)。
12
+ - 被丢弃组件的校验结果保留具体字段错误;补齐字段速查中的类型与缺失字段(#163、#164、#168)。
13
+ - 围栏识别忽略语言标签两端空白,拒绝疑似消息容器时记录结构原因并保留原文,便于定位未渲染问题(#158、#168)。
14
+ - 常驻提示与技能明确要求正文和界面文案跟随用户语言(#165、#168)。
15
+ - 按宿主插件规范导出插件名称(#155)。
16
+ - 保留 ECharts 中有意留空的合法配置,同时继续移除不安全配置(#167)。
17
+
18
+ ### 验证与体积
19
+ - 覆盖 Node.js 22/24、DSH 0.1.2-rc.1 与 0.1.5-rc.2,以及 Windows 打包检查;真实安装包验证公式、浅深主题和窄宽布局。
20
+ - 数学渲染使浏览器脚本增加约 260 KB(未压缩)。
4
21
 
5
22
  ## [0.10.0] - 2026-09-11
6
23
 
package/README.md CHANGED
@@ -93,7 +93,7 @@ The repository ships both renderer channels, the host plugin, and the built brow
93
93
 
94
94
  Prerequisites — all required:
95
95
 
96
- 1. **dsh `^0.1.2-rc.1 || ^0.1.5-alpha.1`** (dsh-genui 0.10.0 is verified on DSH 0.1.5-rc.2 and the 0.1.2-rc.1 minimum; users on DSH `<=0.1.1-rc.x` should use dsh-genui `0.9.8`)
96
+ 1. **dsh `^0.1.2-rc.1 || ^0.1.5-alpha.1`** (dsh-genui 0.11.0 is verified on DSH 0.1.5-rc.2 and the 0.1.2-rc.1 minimum; users on DSH `<=0.1.1-rc.x` should use dsh-genui `0.9.8`)
97
97
  2. **`pnpm` on your PATH**: the `dsh plugin` command depends on it. If missing: `corepack enable` (or `npm i -g pnpm`), then **open a new terminal** and confirm `pnpm -v` prints a version
98
98
 
99
99
  Install and activate in DSH (one command, all dependencies included):
package/README.zh-CN.md CHANGED
@@ -93,7 +93,7 @@ https://github.com/user-attachments/assets/f5db33ec-7471-4d4a-a85b-79c9962ab4ef
93
93
 
94
94
  前置条件,缺一不可:
95
95
 
96
- 1. **dsh `^0.1.2-rc.1 || ^0.1.5-alpha.1`**(dsh-genui 0.10.0 已验证 DSH 0.1.5-rc.2,并保留 0.1.2-rc.1 下限验证;使用 DSH `<=0.1.1-rc.x` 的用户请使用 dsh-genui `0.9.8`)
96
+ 1. **dsh `^0.1.2-rc.1 || ^0.1.5-alpha.1`**(dsh-genui 0.11.0 已验证 DSH 0.1.5-rc.2,并保留 0.1.2-rc.1 下限验证;使用 DSH `<=0.1.1-rc.x` 的用户请使用 dsh-genui `0.9.8`)
97
97
  2. **`pnpm` 在 PATH 上**:`dsh plugin` 命令依赖它。没有就 `corepack enable`(或 `npm i -g pnpm`),然后**新开一个终端**,确认 `pnpm -v` 有输出
98
98
 
99
99
  安装并在 DSH 中激活(一行命令,自动带上全部依赖):
@@ -230,6 +230,14 @@ dsh plugin --profile web add link:$PWD
230
230
 
231
231
  ## 🧑‍💻 开发
232
232
 
233
+ ### 嵌入其他应用
234
+
235
+ 支持 CSS Modules 和 TypeScript 的浏览器构建器可以从 `@changfenhuang/dsh-genui/embed` 导入 `GenuiBlock`、`GenuiActionContext`、`ErrorBoundary` 和 `processGenuiSpec`,复用同一份组件、样式与规格校验,无需加载 DSH 的插件入口。
236
+
237
+ 嵌入宿主通过 `initialState` / `onStateChange` 接管持久化,使用稳定的 `stateKey` 区分界面,通过 `GenuiActionContext.Provider` 接收动作。改变 `stateKey` 会开始新的交互生命周期;同一界面的后续刷新保留输入。设置 `onStateChange` 后不读写浏览器的交互状态存储。
238
+
239
+ 调用 `setGenuiAssetBase` 设置本地引擎目录;从公开的 `@changfenhuang/dsh-genui/assets/mermaid`、`assets/three`、`assets/echarts-core`、`assets/echarts` 构建对应脚本。模型指引从 `@changfenhuang/dsh-genui/skill` 读取。宿主只补自己的交付通道和设计变量;渲染器仍使用本包与 `@deepseek-ai/dsh-client-ui-primitives` 的组件。构建时提供 React、CSS Modules、KaTeX 字体及所用引擎依赖。
240
+
233
241
  ```sh
234
242
  pnpm install
235
243
  pnpm run check # 类型检查 + 全量测试 + 构建
package/SKILL.md CHANGED
@@ -5,12 +5,16 @@ description: "Render structured interactive UI inline in your reply via the dsh-
5
5
 
6
6
  # GenUI — 生成式 UI 输出规范
7
7
 
8
+ **Language:** Match the user's requested language (otherwise the language of their message) in both surrounding prose and all user-visible UI text: titles, labels, content, options, and explanations. Chinese examples below illustrate the schema only; do not switch the conversation to Chinese after loading this skill. Keep JSON keys, component types, IDs, and actions unchanged. An English request gets English prose and UI text; a Chinese request gets Chinese prose and UI text.
9
+
8
10
  你可以**在回答正文中间**输出可交互 UI 组件:写一个 `dsh-ui` 围栏(fenced block with language tag `dsh-ui`),内含 JSON 规格,渲染器会把这一整块画成真实组件,文字照常穿插在前后。组件**就是回答的一部分**,不是工具调用。
9
11
 
10
12
  ```dsh-ui
11
13
  {"title":"可选标题","gap":14,"items":[...]}
12
14
  ```
13
15
 
16
+ 公式:`$...$` / `\(...\)` 为行内公式,`$$...$$` / `\[...\]` 为独立公式;支持矩阵、分段函数、多行对齐推导,以及加粗/高亮内的公式。正文、列表、键值、表头/单元格、卡片/步骤/时间线/标签页标题、题目与说明、按钮与表单标签、指标、媒体说明和图表外层标题共用此能力。JSON 字符串中的反斜杠必须双写,如 `"content": "\\(\\frac{a}{b}\\)"`。代码源码、输入值/占位符、原生下拉选项和图表引擎内部绘图文本仍遵循各自的原生格式,不解析富文本。数学语法以 KaTeX 为准,不执行 HTML、外部资源或脚本;不支持 LaTeX 文档编译、加载任意宏包。
17
+
14
18
  ## 组件词汇(只允许这些 type)
15
19
 
16
20
  布局:`text` `row` `col` `grid` `card` `divider` `spacer`