dsh-m 0.10.3 → 0.10.4

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/README.en.md CHANGED
@@ -1,10 +1,9 @@
1
1
  # dsh-m — Plugin Marketplace for DeepSeek Harness
2
2
 
3
- [![Release](https://img.shields.io/github/v/release/iasiv5/dsh-m?label=Release&sort=semver)](https://github.com/iasiv5/dsh-m/releases)
4
3
  [![npm](https://img.shields.io/npm/v/dsh-m?label=npm)](https://www.npmjs.com/package/dsh-m)
5
4
  [![Registry Check](https://img.shields.io/github/actions/workflow/status/iasiv5/dsh-m/registry.yml?branch=main&label=Registry%20Check)](https://github.com/iasiv5/dsh-m/actions/workflows/registry.yml)
6
5
  [![License](https://img.shields.io/github/license/iasiv5/dsh-m?label=License)](./LICENSE)
7
- [![DSH Web](https://img.shields.io/badge/DSH%20Web-0.1.2--rc.1%20%E2%86%92%200.2.0--rc.2-2563eb)](#compatibility--faq)
6
+ [![DSH Web](https://img.shields.io/badge/DSH%20Web-0.1.2--rc.1%20%E2%86%92%200.2.1--rc.2-2563eb)](#compatibility--faq)
8
7
 
9
8
  English · [中文](./README.md)
10
9
 
@@ -80,6 +79,7 @@ The GUI and Agent tools manage the **current host profile** (Web or Desktop). Th
80
79
  | `0.1.5-rc.1 / rc.2` | `register()` scope | Checked; rc.1 also page-tested |
81
80
  | `0.1.7-rc.1 / rc.2` | `.volatile()` + `settings.update` | Checked |
82
81
  | `0.2.0-rc.1 / rc.2` | Same as 0.1.7 | rc.2 and restart path live-tested |
82
+ | `0.2.1-rc.2` | Same as 0.2.0 | Install/upgrade and D3 self-upgrade dogfooded (0.10.x line) |
83
83
 
84
84
  **Is Desktop identical to Web?** No. Desktop browsing, new-package installation, and toggles act on the desktop profile. Upgrades and uninstalls require capabilities from the official host `pluginManager`; if absent, dsh-m returns a structured refusal and guidance. Desktop uses the official app lifecycle rather than Web's one-click restart; quit and reopen as instructed. Favorites, operations, and installed states are separate between profiles.
85
85
 
package/README.md CHANGED
@@ -1,10 +1,9 @@
1
1
  # dsh-m — DeepSeek Harness 插件市场
2
2
 
3
- [![Release](https://img.shields.io/github/v/release/iasiv5/dsh-m?label=Release&sort=semver)](https://github.com/iasiv5/dsh-m/releases)
4
3
  [![npm](https://img.shields.io/npm/v/dsh-m?label=npm)](https://www.npmjs.com/package/dsh-m)
5
4
  [![Registry Check](https://img.shields.io/github/actions/workflow/status/iasiv5/dsh-m/registry.yml?branch=main&label=Registry%20Check)](https://github.com/iasiv5/dsh-m/actions/workflows/registry.yml)
6
5
  [![License](https://img.shields.io/github/license/iasiv5/dsh-m?label=License)](./LICENSE)
7
- [![DSH Web](https://img.shields.io/badge/DSH%20Web-0.1.2--rc.1%20%E2%86%92%200.2.0--rc.2-2563eb)](#兼容与常见问题)
6
+ [![DSH Web](https://img.shields.io/badge/DSH%20Web-0.1.2--rc.1%20%E2%86%92%200.2.1--rc.2-2563eb)](#兼容与常见问题)
8
7
 
9
8
  [English](./README.en.md) · 中文
10
9
 
@@ -80,6 +79,7 @@ GUI 与 Agent 工具始终跟随**当前宿主 profile**(Web / Desktop);
80
79
  | `0.1.5-rc.1 / rc.2` | `register()` scope | 已核对;rc.1 另有页面实测 |
81
80
  | `0.1.7-rc.1 / rc.2` | `.volatile()` + `settings.update` | 已核对 |
82
81
  | `0.2.0-rc.1 / rc.2` | 同 0.1.7 通路 | rc.2 与重启链路实测 |
82
+ | `0.2.1-rc.2` | 同 0.2.0 通路 | 装机/升级与 D3 自升级 dogfood 实测(0.10.x 线) |
83
83
 
84
84
  **Desktop 与 Web 完全一样吗?** 不是。Desktop 的浏览、安装新包和开关作用于 desktop profile;升级/卸载等操作需宿主官方 `pluginManager` 提供相应能力,缺失时返回结构化拒绝和指引。Desktop 不提供 Web 的一键重启;变更需按应用提示退出并重新打开。两边的收藏、操作记录和已装状态互不串联。
85
85
 
package/lib/client.js CHANGED
@@ -2369,6 +2369,8 @@ var ZH = {
2369
2369
  "op.degraded": "\u5347\u7EA7\u5931\u8D25\uFF1A\u65B0\u7248\u5B89\u88C5\u672A\u6210\u529F\uFF0C\u5DF2\u81EA\u52A8\u6062\u590D\u65E7\u7248 {restoredTo}\u2014\u2014\u63D2\u4EF6\u5F53\u524D\u53EF\u7528\uFF0C\u53EF\u7A0D\u540E\u91CD\u8BD5\u3002",
2370
2370
  "notify.selfupgraded": "dsh-m \u5DF2\u5347\u7EA7\uFF08v{from} \u2192 v{to}\uFF09",
2371
2371
  "notify.selfupgraded.failed": "dsh-m \u5347\u7EA7\u5931\u8D25\uFF1A{err}",
2372
+ "selfupgrade.reconciled.done": "dsh-m \u81EA\u5347\u7EA7\u5DF2\u5B8C\u6210\uFF08\u5F00\u673A\u5BF9\u8D26\u786E\u8BA4\uFF09\uFF1A{from} \u2192 {to}\u3002",
2373
+ "selfupgrade.reconciled.failed": "dsh-m \u81EA\u5347\u7EA7\u672A\u5B8C\u6210\uFF08\u5F00\u673A\u5BF9\u8D26\u786E\u8BA4\uFF09\uFF1A\u76EE\u6807 {to} \u672A\u88C5\u673A\uFF0C\u5F53\u524D\u4ECD\u4E3A {current}\uFF0C\u53EF\u91CD\u8BD5\u3002",
2372
2374
  "failed.install": "\u5B89\u88C5\u5931\u8D25\uFF1A{err}",
2373
2375
  "failed.uninstall": "\u5378\u8F7D\u5931\u8D25\uFF1A{err}",
2374
2376
  "failed.upgrade": "\u5347\u7EA7\u5931\u8D25\uFF1A{err}",
@@ -2670,6 +2672,8 @@ var EN = {
2670
2672
  "op.degraded": "Upgrade failed: the new version did not install \u2014 rolled back to {restoredTo}. The plugin still works; you can retry later.",
2671
2673
  "notify.selfupgraded": "dsh-m upgraded (v{from} \u2192 v{to})",
2672
2674
  "notify.selfupgraded.failed": "dsh-m upgrade failed: {err}",
2675
+ "selfupgrade.reconciled.done": "dsh-m self-upgrade finished (confirmed by boot reconciliation): {from} \u2192 {to}.",
2676
+ "selfupgrade.reconciled.failed": "dsh-m self-upgrade did not complete (confirmed by boot reconciliation): target {to} is not installed \u2014 still {current}; you can retry.",
2673
2677
  "failed.install": "Install failed: {err}",
2674
2678
  "failed.uninstall": "Uninstall failed: {err}",
2675
2679
  "failed.upgrade": "Upgrade failed: {err}",
@@ -5216,6 +5220,12 @@ function DshmVersionChip({ version, notify, initialCheck, ops }) {
5216
5220
  if (data && typeof data === "object" && typeof data.current === "string") {
5217
5221
  writeSelfCheckCache2(typeof window !== "undefined" && window.localStorage ? window.localStorage : null, data);
5218
5222
  setCheck(data);
5223
+ const ir = data.intentResolved;
5224
+ if (ir && ir.ok) {
5225
+ notify({ kind: "ok", text: lookup("selfupgrade.reconciled.done", { from: ir.fromVersion ? `v${ir.fromVersion}` : "\u2014", to: `v${ir.installedVersion}` }) });
5226
+ } else if (ir) {
5227
+ notify({ kind: "warn", text: lookup("selfupgrade.reconciled.failed", { to: `v${ir.intentVersion}`, current: `v${version}` }) });
5228
+ }
5219
5229
  }
5220
5230
  }).catch(() => {
5221
5231
  });
@@ -5766,6 +5776,11 @@ function MarketPanel({ onClose }) {
5766
5776
  restoredRef.current = true;
5767
5777
  void (async () => {
5768
5778
  const restored = await restoreRecords2(opsStore.list(), stillApplies, installedVersionOf);
5779
+ for (const r of restored) {
5780
+ if (r.status === "done" && r.meta && r.meta.reconciledAfterRestart) {
5781
+ notify({ kind: "ok", text: lookup("upgrade.reconciled.done", { pkg: r.target, to: `v${r.meta.toVersion}` }) });
5782
+ }
5783
+ }
5769
5784
  opsStore.replaceAll(restored);
5770
5785
  syncOps();
5771
5786
  if (restored.some((r) => r.status === "queued")) {
@@ -281,7 +281,14 @@ export function createApiDispatcher(ctx) {
281
281
  if (rec && rec.status === 'delegated') {
282
282
  const match = rec.version === ctx.pkg.version;
283
283
  await d.resolveUpgradeIntent({ ok: match, installedVersion: match ? ctx.pkg.version : undefined });
284
- intentResolved = { ok: match, target: rec.target, ...(match ? { installedVersion: ctx.pkg.version } : {}) };
284
+ intentResolved = {
285
+ ok: match,
286
+ target: rec.target,
287
+ // 0.10.4:intentVersion/fromVersion 透出——client 据此补「对账确认」横幅(成功/未完成双形态)
288
+ intentVersion: rec.version,
289
+ ...(rec.fromVersion !== undefined ? { fromVersion: rec.fromVersion } : {}),
290
+ ...(match ? { installedVersion: ctx.pkg.version } : {}),
291
+ };
285
292
  }
286
293
  }
287
294
  catch {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-m",
3
- "version": "0.10.3",
3
+ "version": "0.10.4",
4
4
  "description": "可自定义收录清单的 DSH 插件市场:收录、安装、卸载、升级一站完成,附 agent 工具与 dshm CLI。",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -20,8 +20,6 @@
20
20
  "registry.json",
21
21
  "README.md",
22
22
  "README.en.md",
23
- "CHANGELOG.md",
24
- "docs/DESIGN.md",
25
23
  "LICENSE"
26
24
  ],
27
25
  "keywords": [
package/registry.json CHANGED
@@ -4,7 +4,7 @@
4
4
  {
5
5
  "id": "dsh-m",
6
6
  "name": "DSH Marketplace",
7
- "description": "自定义清单的 DSH 插件市场,收录/安装/卸载/升级;已适配 DSH 0.2.0-rc.2,支持 web 与 desktop 双 profile,详见仓库。",
7
+ "description": "自定义清单的 DSH 插件市场,收录/安装/卸载/升级;已适配 DSH 0.2.1-rc.2,支持 web 与 desktop 双 profile,详见仓库。",
8
8
  "category": "essentials",
9
9
  "alsoCategories": ["self-dev"],
10
10
  "tags": ["市场", "插件管理"],
@@ -17,11 +17,11 @@
17
17
  {
18
18
  "id": "dsh-skins",
19
19
  "name": "DSH Skins",
20
- "description": "DSH Web 皮肤插件:多套品牌皮肤侧栏热切换,一键回到官方界面。已适配 0.1.7-rc.2 与 0.2.0-rc.1/rc.2,详见仓库。",
20
+ "description": "DSH Web 皮肤插件:多套品牌皮肤侧栏热切换,一键回到官方界面。已适配 web 与 Desktop 0.2.0-rc.1+,详见仓库。",
21
21
  "category": "essentials",
22
22
  "alsoCategories": ["self-dev"],
23
23
  "tags": ["皮肤", "主题", "美化", "界面"],
24
- "verified": ["0.1.2-rc.1", "0.1.7-rc.2", "0.2.0-rc.1", "0.2.0-rc.2"],
24
+ "verified": ["0.2.0-rc.1", "0.2.0-rc.2", "0.2.1-rc.2"],
25
25
  "source": "npm",
26
26
  "npm": "@iasiv5/dsh-skins",
27
27
  "github": "iasiv5/dsh-skins",