dsh-mcp-connector 0.2.31 → 0.2.32
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 +10 -0
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/docs/PLUGIN-UPDATE.md +2 -0
- package/lib/client.js +46 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,16 @@
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.2.32] - 2026-08-31
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- 更新包已经写入 DSH profile、但当前 Host 仍运行旧插件进程时,标题区现在显示“已安装,重启后生效”,并按可信 Update Provider 的能力提供重启操作或宿主重启提示;不再重复展示同一版本的 CLI 安装命令。
|
|
12
|
+
|
|
13
|
+
### Verification
|
|
14
|
+
|
|
15
|
+
- 156 项自动测试、Node 20/22/24 与 Windows Node 24 CI、npm 发布包白名单/敏感内容扫描全部通过。
|
|
16
|
+
|
|
7
17
|
## [0.2.31] - 2026-08-31
|
|
8
18
|
|
|
9
19
|
### Fixed
|
package/README.en.md
CHANGED
|
@@ -150,7 +150,7 @@ npm run dev:ui
|
|
|
150
150
|
|
|
151
151
|
Every Registry merge regenerates `catalog-stats.json`; an hourly workflow in this repository synchronizes the Chinese and English product copy plus a local stats snapshot. The static npm README updates with package releases, while the live badges above read the Registry directly and therefore stay current without another npm release.
|
|
152
152
|
|
|
153
|
-
The current public version is [`dsh-mcp-connector@0.2.
|
|
153
|
+
The current public version is [`dsh-mcp-connector@0.2.32`](https://www.npmjs.com/package/dsh-mcp-connector), with [GitHub Release v0.2.32](https://github.com/duhu2000/dsh-mcp-connector/releases/tag/v0.2.32).
|
|
154
154
|
|
|
155
155
|
See [CHANGELOG.md](CHANGELOG.md) for version history and [docs/DESKTOP-E2E.md](docs/DESKTOP-E2E.md) for the Desktop release checklist.
|
|
156
156
|
|
package/README.md
CHANGED
|
@@ -145,7 +145,7 @@ npm run dev:ui
|
|
|
145
145
|
|
|
146
146
|
公共 Registry 每次合并后会生成 `catalog-stats.json`;本仓库的定时工作流每小时同步中英文介绍和统计快照。npm 页面中的静态正文随版本发布更新,上方动态统计徽标则直接读取 Registry,可在不发布新 npm 版本时保持实时数量一致。
|
|
147
147
|
|
|
148
|
-
当前公开版本为 [`dsh-mcp-connector@0.2.
|
|
148
|
+
当前公开版本为 [`dsh-mcp-connector@0.2.32`](https://www.npmjs.com/package/dsh-mcp-connector),对应 [GitHub Release v0.2.32](https://github.com/duhu2000/dsh-mcp-connector/releases/tag/v0.2.32)。
|
|
149
149
|
|
|
150
150
|
版本能力与变更记录见 [CHANGELOG.md](CHANGELOG.md)。
|
|
151
151
|
Desktop 发版回归见 [docs/DESKTOP-E2E.md](docs/DESKTOP-E2E.md)。
|
package/docs/PLUGIN-UPDATE.md
CHANGED
|
@@ -25,6 +25,8 @@ DSH Market 适配器从 `GET /dsh-market/api/v1/capabilities` 开始,要求 `s
|
|
|
25
25
|
5. 完整性校验通过后,按 Provider 返回的激活结论展示“刷新生效”或重启提示。Web 且 Provider 明确允许进程重启时才展示“立即重启”;Desktop 等由外壳管理生命周期的宿主只提示用户重启,不自行杀进程。
|
|
26
26
|
6. Provider 保留恢复点时展示“回滚”。回滚仍由 Provider 执行,MCP连接器不直接修改 profile、lockfile 或 `node_modules`。
|
|
27
27
|
|
|
28
|
+
Provider 读取的是 profile 中已经落盘的插件版本,标题版本来自当前运行中的插件进程。若 Provider 报告磁盘版本高于运行版本且已无后续更新,页面会显示“已安装,重启后生效”,并按 Provider 能力展示“立即重启”或宿主重启提示;此时不再重复给出同一版本的安装命令。
|
|
29
|
+
|
|
28
30
|
失败结果使用稳定代码区分正在运行的 Agent、其他安装任务占用、发布安全等待、镜像同步、版本未变化、超时和权限拒绝,以及 `DOWNGRADE_DETECTED`、`RESOLVED_VERSION_MISMATCH`、`INVALID_UPDATE_RESULT` 三类完整性故障。`RELEASE_TOO_FRESH` 明确显示为约 24 小时的发布安全等待期,并提供“立即更新(跳过等待)”;真正的镜像同步故障保留独立提示,不再混用同一文案。
|
|
29
31
|
|
|
30
32
|
当 DSH Desktop 或其他宿主没有兼容 Update Provider 时,标题区直接展示绑定 npm 精确版本的 CLI 命令,例如 `dsh plugin --profile web add --config.minimumReleaseAge=0 dsh-mcp-connector@<目标版本>`,并提供复制按钮与 npm 页面入口。运行时会把 `<目标版本>` 替换为 npm 已发布的确切版本;命令中的单次覆盖只用于用户主动跳过本次发布安全等待。Connector 仍不自行执行包管理器命令。
|
package/lib/client.js
CHANGED
|
@@ -460,6 +460,20 @@ window.__ModuleLoader__.load({
|
|
|
460
460
|
return 0;
|
|
461
461
|
}
|
|
462
462
|
|
|
463
|
+
/**
|
|
464
|
+
* Provider 读取 profile 磁盘版本,versionStatus 来自当前运行中的插件进程。
|
|
465
|
+
* 当磁盘版本更高且 Provider 已无后续更新时,说明安装已经完成、只差重启激活。
|
|
466
|
+
*/
|
|
467
|
+
function pendingActivationVersion(versionStatus, providerUpdateCheck) {
|
|
468
|
+
if (providerUpdateCheck?.updateAvailable !== false) return null;
|
|
469
|
+
const running = parseClientVersion(versionStatus?.installedVersion);
|
|
470
|
+
const installed = parseClientVersion(providerUpdateCheck?.installedVersion);
|
|
471
|
+
if (running === null || installed === null) return null;
|
|
472
|
+
return compareClientVersions(installed.normalized, running.normalized) > 0
|
|
473
|
+
? installed.normalized
|
|
474
|
+
: null;
|
|
475
|
+
}
|
|
476
|
+
|
|
463
477
|
/** Independently verify a provider's terminal success before asking the user to restart. */
|
|
464
478
|
function completedUpdateIntegrityFailure(operation, expectedVersion) {
|
|
465
479
|
if (operation?.state !== "succeeded") return null;
|
|
@@ -809,7 +823,11 @@ window.__ModuleLoader__.load({
|
|
|
809
823
|
});
|
|
810
824
|
};
|
|
811
825
|
const renderUpdateControls = () => {
|
|
812
|
-
|
|
826
|
+
const activationPendingVersion = updateProviderState === "ready"
|
|
827
|
+
? pendingActivationVersion(versionStatus, providerUpdateCheck)
|
|
828
|
+
: null;
|
|
829
|
+
if (!versionStatus?.updateAvailable && activationPendingVersion === null
|
|
830
|
+
&& updateOperation === null && updateError === null) return null;
|
|
813
831
|
if (updateRunning) {
|
|
814
832
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
815
833
|
className: "mcpConnectorUpdateControls",
|
|
@@ -943,6 +961,33 @@ window.__ModuleLoader__.load({
|
|
|
943
961
|
children: `一键更新到 v${providerUpdateCheck.latestVersion}`
|
|
944
962
|
});
|
|
945
963
|
}
|
|
964
|
+
if (activationPendingVersion !== null) {
|
|
965
|
+
const canRestart = updateProviderSelection?.capabilities?.restart?.supported === true;
|
|
966
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
967
|
+
className: "mcpConnectorUpdateControls",
|
|
968
|
+
children: [
|
|
969
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
970
|
+
className: "mcpConnectorUpdateStatus",
|
|
971
|
+
children: `v${activationPendingVersion} 已安装,重启后生效`
|
|
972
|
+
}),
|
|
973
|
+
canRestart
|
|
974
|
+
? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
975
|
+
type: "button",
|
|
976
|
+
className: "mcpConnectorUpdateButton",
|
|
977
|
+
disabled: restarting,
|
|
978
|
+
onClick: restartHost,
|
|
979
|
+
children: restarting ? "正在重启…" : "立即重启"
|
|
980
|
+
})
|
|
981
|
+
: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
982
|
+
className: "mcpConnectorUpdateStatus",
|
|
983
|
+
title: `重启由 ${updateProviderSelection?.capabilities?.restart?.managedBy ?? "宿主"} 管理`,
|
|
984
|
+
children: updateProviderSelection?.capabilities?.runtime === "desktop"
|
|
985
|
+
? "请重启 DSH Desktop"
|
|
986
|
+
: "请重启 DSH"
|
|
987
|
+
})
|
|
988
|
+
]
|
|
989
|
+
});
|
|
990
|
+
}
|
|
946
991
|
const command = manualUpgradeCommand(versionStatus?.latestVersion);
|
|
947
992
|
if (command !== null) {
|
|
948
993
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-mcp-connector",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.32",
|
|
4
4
|
"description": "Connect and manage MCP servers in DeepSeek Harness — a universal MCP connector and marketplace with OAuth 2.0 PKCE, API keys, stdio/HTTP, mcpServers JSON import, tools, and prompts. Maintained by Qichacha/QCC.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|