@dingpenghui/dsh-conversation-language 3.2.4 → 3.2.5

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.
@@ -0,0 +1,75 @@
1
+ # v3.2.5 — 补上 engines.dsh 兼容声明
2
+
3
+ > `@dingpenghui/dsh-conversation-language@3.2.5`
4
+
5
+ 本批更新为以下插件加入 `engines.dsh`,并附回归检查脚本:
6
+
7
+ | 包 | 旧版本 | 新版本 | engines.dsh |
8
+ |---|---|---|---|
9
+ | `@dingpenghui/dsh-conversation-language` | 3.2.4 | 3.2.5 | `>=0.2.0-rc.1 <0.3.0-0` |
10
+ | `@dingpenghui/dsh-obsidian-sync` | 3.4.7 | 3.4.8 | `>=0.2.0-rc.1 <0.3.0-0` |
11
+ | `@dingpenghui/dsh-supply-chain-switch` | 1.1.1 | 1.1.2 | `>=0.2.0-rc.1 <0.3.0-0` |
12
+ | `@dingpenghui/agnes` | 1.6.2 | 1.6.3 | `>=0.2.0-rc.2 <0.3.0-0` |
13
+ | `@dingpenghui/agnes-image` | 1.6.1 | 1.6.2 | `>=0.2.0-rc.2 <0.3.0-0` |
14
+ | `@dingpenghui/agnes-video` | 1.6.1 | 1.6.2 | `>=0.2.0-rc.2 <0.3.0-0` |
15
+ | `@dingpenghui/agnes-img2vid` | 1.6.1 | 1.6.2 | `>=0.2.0-rc.2 <0.3.0-0` |
16
+
17
+ **行为不变**:本批只增加元数据声明与检查脚本,不涉及任何运行时代码改动。
18
+
19
+ ## 为什么要加
20
+
21
+ DSH 的安装门禁(`@deepseek-ai/dsh-app-boot` 的 `unmetRequirements`)按以下顺序判定插件与运行时的兼容性:
22
+
23
+ 1. 清单里有 `engines.dsh` → **只依据它**,`peerDependencies` 全部忽略;
24
+ 2. 没有 `engines.dsh` → 退回逐个检查 `@deepseek-ai/dsh` / `@deepseek-ai/dsh-*` 的 peer,
25
+ 判定式为 `semver.satisfies(runtime, range, { includePrerelease: true })`。
26
+
27
+ 第 2 条分支容易出问题。参考实例:`dsh-web-search-serper` 曾在 peer 里把
28
+ `@deepseek-ai/dsh-web` 钉成精确版本 `0.2.0-rc.2`,而运行时是 `0.2.1-rc.2`——
29
+ 在该判定规则下 `0.2.1-rc.2` **不满足** `0.2.0-rc.2`,安装被直接拒绝:
30
+
31
+ ```
32
+ Plugin ...@1.1.1 is incompatible with dsh 0.2.1-rc.2:
33
+ requirements {"@deepseek-ai/dsh-web":"0.2.0-rc.2"}
34
+ ```
35
+
36
+ 声明 `engines.dsh` 后,兼容范围由一个显式区间单独表达,不再受 peer 声明的意外改动影响。
37
+
38
+ 同时它也提供**未来的保护**:这些插件此前没有任何版本约束,一旦 DSH 升到未验证的
39
+ `0.3.x`,它们会静默通过安装门禁,而不是被明确拦下——问题会推迟到运行时才暴露。
40
+
41
+ ## 回归检查
42
+
43
+ 每个包新增 `engines-check.mjs`(无外部依赖):
44
+
45
+ - 断言清单声明了 `engines.dsh`;
46
+ - 断言区间排除 `0.3.x`(契约未验证的版本线);
47
+ - 断言放行实测过的运行时 `0.2.0-rc.2` / `0.2.1-rc.2`;
48
+ - 断言拒绝 `0.3.0`。
49
+
50
+ 已接入 `test` 与 `prepublishOnly`,因此漏声明不会再被发布出去:
51
+
52
+ ```bash
53
+ node engines-check.mjs
54
+ # OK compatibility declaration checks passed (engines.dsh = >=0.2.0-rc.x <0.3.0-0)
55
+ ```
56
+
57
+ ## 下界取值依据
58
+
59
+ 区间下界不是统一套用的,而是取自各包**实际验证过的**运行时:
60
+
61
+ - `conversation-language` / `obsidian-sync` / `supply-chain-switch` 的 DSH peer 声明下界为 `0.2.0-rc.1`,故定为 `>=0.2.0-rc.1`;
62
+ - `agnes` 系列三个组件的 peer 声明为 `^0.2.0-rc.2`,故定为 `>=0.2.0-rc.2`。
63
+
64
+ ## 验证
65
+
66
+ 针对每个包用 DSH 自身的判定规则(同版本 semver `7.8.5`、`includePrerelease: true`)运行:
67
+
68
+ | 运行时 | 期望 | 结果 |
69
+ |---|---|---|
70
+ | 0.2.0-rc.2 | 放行 | PASS |
71
+ | 0.2.1-rc.2 | 放行 | PASS |
72
+ | 0.3.0 | 拒绝 | PASS |
73
+
74
+ 也已在当前 DSH Desktop `0.2.1-rc.2` 上实测:全部插件正常加载、客户端 slot 注册为 active。
75
+
package/lib/client.js CHANGED
@@ -88,11 +88,11 @@ window.__ModuleLoader__.load({
88
88
  document.head.appendChild(tag);
89
89
  }
90
90
  var PluginDetailPage_module_css_default = {
91
- "field": "hZ1jBa_field",
92
- "page": "hZ1jBa_page",
93
91
  "fieldText": "hZ1jBa_fieldText",
92
+ "page": "hZ1jBa_page",
94
93
  "title": "hZ1jBa_title",
95
94
  "hint": "hZ1jBa_hint",
95
+ "field": "hZ1jBa_field",
96
96
  "control": "hZ1jBa_control"
97
97
  };
98
98
  //#endregion
package/package.json CHANGED
@@ -1,9 +1,12 @@
1
1
  {
2
2
  "name": "@dingpenghui/dsh-conversation-language",
3
- "version": "3.2.4",
3
+ "version": "3.2.5",
4
4
  "description": "DSH plugin for switching conversation language between Chinese and English",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
7
+ "engines": {
8
+ "dsh": ">=0.2.0-rc.1 <0.3.0-0"
9
+ },
7
10
  "dsh": {
8
11
  "bundle": {
9
12
  "patch": "./cordis.patch.yml"
@@ -39,7 +42,7 @@
39
42
  "src",
40
43
  "package.json",
41
44
  "README.md",
42
- "RELEASE_NOTES_v3.2.4.md",
45
+ "RELEASE_NOTES_v3.2.5.md",
43
46
  "cordis.patch.yml"
44
47
  ],
45
48
  "exports": {
@@ -49,7 +52,8 @@
49
52
  },
50
53
  "scripts": {
51
54
  "build": "tsdown",
52
- "dev": "tsdown --watch"
55
+ "dev": "tsdown --watch",
56
+ "prepublishOnly": "node engines-check.mjs"
53
57
  },
54
58
  "dependencies": {},
55
59
  "peerDependencies": {
@@ -1,19 +0,0 @@
1
- # 发布说明 v3.2.4
2
-
3
- **日期:** 2026-10-03
4
-
5
- ## 修复 / Fixes
6
-
7
- - **依赖模型重构**:`@deepseek-ai/schemastery` 和 `react` 从运行时 `dependencies` 移到 `peerDependencies`(`schemastery` 标 `optional`),仅保留 `@deepseek-ai/cordis` 作为必选 peer。
8
- - 根因:本插件是 DSH 宿主扩展,运行时在宿主进程内执行。宿主已经把 `schemastery` 加载进同一进程作为宿主模块。本插件若再以 `dependencies` 携带同版本包,pnpm 会在插件树里**再实例化一份**,与宿主单实例不一致。
9
- - 影响:插件自身代码行为不变,只改变了"谁提供这些包"——现在统一由 DSH 宿主提供,单实例。
10
- - **`react` 保持为 devDependency**:客户端 bundle 在构建时内嵌 `react` 代码(`tsdown.config.ts` 的 `CLIENT_EXTERNALS` 不含 `react`),不需要宿主提供 `react` 实例,因此不移到 peer。
11
-
12
- ## 不变 / Unchanged
13
-
14
- - `dsh-tools` / `dsh-system-prompt` / `dsh-settings` 等宿主模块仍是 `peerDependencies`(`^0.2.0-rc.1` 匹配宿主 0.2.0-rc.2,宿主提供单实例)。
15
- - 斜杠命令 `/language`、详情页开关、宿主轮询同步全部保持不变。
16
-
17
- ## 升级指引 / Upgrade
18
-
19
- - 从 3.2.3 升到 3.2.4 无 breaking change,直接 `pnpm update @dingpenghui/dsh-conversation-language` 即可。