dshmarket 1.16.4 → 1.16.6

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/client/client.js CHANGED
@@ -104,6 +104,8 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
104
104
  agentBusyUpdate: "有 agent 正在运行,请等待其完成或将其取消后再更新——更新会直接替换插件文件,运行中的 agent 可能中途报错或新旧版本混用。",
105
105
  agentBusyInstall: "有 agent 正在运行,请等待其完成或将其取消后再安装——安装会修改插件文件,运行中的 agent 可能中途报错。",
106
106
  compatRiskBanner: "检测到兼容性风险,建议重启前到诊断页处理,或一键回滚本次操作。",
107
+ shadowNameBanner: "本次操作让同一个插件名在两个层里同时存在,重启后只有一个会生效:",
108
+ brokenBundleBanner: "下列插件的前端文件已损坏、无法解析,刷新后界面可能空白,建议回滚:",
107
109
  goDiagnose: "去诊断页修复",
108
110
  rollbackNow: "一键回滚",
109
111
  rollingBack: "回滚中…",
@@ -252,6 +254,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
252
254
  backupDone: "备份已上传",
253
255
  restoreDone: "恢复完成,请重启 DeepSeek Harness",
254
256
  restorePartial: "恢复已完成,但下列插件安装失败:",
257
+ restoreUnportable: "依赖指向了另一台机器上的绝对路径,本机不存在,需要手动改成本机路径或重新安装",
255
258
  restoreConfirm: "恢复将覆盖当前 profile 配置并重新安装插件,确定继续吗?",
256
259
  restorePreviewDone: "备份已导入,请在「已安装」中确认后开始恢复",
257
260
  restoreMissing: "备份中有 {0} 个插件尚未安装",
@@ -461,6 +464,8 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
461
464
  agentBusyUpdate: "An agent is currently working — wait for it to finish (or cancel it) before updating. Updates replace plugin files in place, so a working agent can fail or mix versions mid-turn.",
462
465
  agentBusyInstall: "An agent is currently working — wait for it to finish (or cancel it) before installing. Installing changes plugin files, so a working agent can fail mid-turn.",
463
466
  compatRiskBanner: "Compatibility risk detected — open Diagnostics before restarting, or roll this operation back.",
467
+ shadowNameBanner: "This operation left one plugin name defined in two layers; only one will load after a restart:",
468
+ brokenBundleBanner: "These plugins now have a client bundle that will not parse; the page may come up blank after a refresh — rolling back is recommended:",
464
469
  goDiagnose: "Open Diagnostics",
465
470
  rollbackNow: "Roll back",
466
471
  rollingBack: "Rolling back…",
@@ -609,6 +614,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
609
614
  backupDone: "Backup uploaded",
610
615
  restoreDone: "Restore complete — restart DeepSeek Harness",
611
616
  restorePartial: "Restore completed, but these plugins failed to install:",
617
+ restoreUnportable: "points at an absolute path from another machine that does not exist here — repoint it locally or reinstall the plugin",
612
618
  restoreConfirm: "Restore will overwrite this profile configuration and reinstall plugins. Continue?",
613
619
  restorePreviewDone: "Backup imported. Review Installed, then start restore.",
614
620
  restoreMissing: "{0} plugins from this backup are not installed",
@@ -4181,6 +4187,13 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
4181
4187
  const first = risks[0];
4182
4188
  return `${first.plugin}: ${first.peer} ${first.range} vs ${first.resolved}`;
4183
4189
  };
4190
+ /** Which name now resolves from two layers, and which layers those are. */
4191
+ const shadowSummary = (entries) => {
4192
+ if (entries.length === 0) return "";
4193
+ const first = entries[0];
4194
+ const rest = entries.length > 1 ? ` (+${entries.length - 1})` : "";
4195
+ return `${first.name} — ${first.layers.join(" / ")}${rest}`;
4196
+ };
4184
4197
  const doInstall = (0, react.useCallback)((plugin) => {
4185
4198
  setBuildsSkipped(null);
4186
4199
  setConfirming(null);
@@ -4693,7 +4706,8 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
4693
4706
  }, [updatableNames, doUpdate]);
4694
4707
  const finishRestore = (0, react.useCallback)((body) => {
4695
4708
  const errors = Array.isArray(body.errors) ? body.errors : [];
4696
- setRestoreErrors(errors.map((item) => `${String(item.name)}: ${String(item.error)}`));
4709
+ const unportable = Array.isArray(body.unportable) ? body.unportable : [];
4710
+ setRestoreErrors([...errors.map((item) => `${String(item.name)}: ${String(item.error)}`), ...unportable.map((item) => `${String(item.name)}: ${t("restoreUnportable")} (${String(item.spec)})`)]);
4697
4711
  setBackupRestored(true);
4698
4712
  setBackupMessage(t("restoreDone"));
4699
4713
  if (errors.length === 0) {
@@ -5652,9 +5666,23 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
5652
5666
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
5653
5667
  className: Market_module_css_default.grow,
5654
5668
  children: [
5655
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("b", { children: t("compatRiskBanner") }),
5656
- " ",
5657
- compatibilitySummary(compatibilityNotice.risks)
5669
+ compatibilityNotice.risks.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
5670
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("b", { children: t("compatRiskBanner") }),
5671
+ " ",
5672
+ compatibilitySummary(compatibilityNotice.risks)
5673
+ ] }),
5674
+ compatibilityNotice.shadowedNames !== void 0 && compatibilityNotice.shadowedNames.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
5675
+ compatibilityNotice.risks.length > 0 && " · ",
5676
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("b", { children: t("shadowNameBanner") }),
5677
+ " ",
5678
+ shadowSummary(compatibilityNotice.shadowedNames)
5679
+ ] }),
5680
+ compatibilityNotice.brokenBundles !== void 0 && compatibilityNotice.brokenBundles.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
5681
+ (compatibilityNotice.risks.length > 0 || (compatibilityNotice.shadowedNames?.length ?? 0) > 0) && " · ",
5682
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("b", { children: t("brokenBundleBanner") }),
5683
+ " ",
5684
+ compatibilityNotice.brokenBundles.map((entry) => entry.name).join(", ")
5685
+ ] })
5658
5686
  ]
5659
5687
  }),
5660
5688
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {