dshmarket 1.66.27 → 1.66.29

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
@@ -193,7 +193,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
193
193
  const IconRefreshOutline14 = pickIcon("IconRefreshOutlineRegular", "IconRefreshOutline14");
194
194
  const IconSearchOutline16 = pickIcon("IconSearchOutlineRegular", "IconSearchOutline16");
195
195
  const IconSparkle16 = pickIcon("IconSparkleRegular", "IconSparkle16");
196
- const IconWarningOutline16$1 = pickIcon("IconWarningOutlineRegular", "IconWarningOutline16");
196
+ const IconWarningOutline16 = pickIcon("IconWarningOutlineRegular", "IconWarningOutline16");
197
197
  //#endregion
198
198
  //#region src/client/locales.ts
199
199
  /** zh/en dictionaries for the Market settings section and install toast. */
@@ -4192,7 +4192,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
4192
4192
  size: 13,
4193
4193
  className: Market_module_css_default.reassureOk
4194
4194
  });
4195
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16$1, {
4195
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, {
4196
4196
  size: 14,
4197
4197
  className: Market_module_css_default.conflictIcon
4198
4198
  });
@@ -4574,14 +4574,14 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
4574
4574
  children: [
4575
4575
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4576
4576
  className: Market_module_css_default.recoverySummary,
4577
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16$1, {
4577
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, {
4578
4578
  size: 14,
4579
4579
  className: Market_module_css_default.bannerIcon
4580
4580
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: view.failure.summary || t("recoveryNoSummary") })]
4581
4581
  }),
4582
4582
  view.lastErrors.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4583
4583
  className: Market_module_css_default.recoverySummary,
4584
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16$1, {
4584
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, {
4585
4585
  size: 14,
4586
4586
  className: Market_module_css_default.bannerIcon
4587
4587
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [t("recoveryWriteFailed"), view.lastErrors.join("; ")] })]
@@ -4759,7 +4759,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
4759
4759
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4760
4760
  className: Market_module_css_default.banner,
4761
4761
  children: [
4762
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutline16, {
4762
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, {
4763
4763
  size: 14,
4764
4764
  className: Market_module_css_default.bannerIcon
4765
4765
  }),
@@ -6679,7 +6679,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
6679
6679
  const remaining = findings.length - preview.length;
6680
6680
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6681
6681
  className: Market_module_css_default.banner,
6682
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16$1, {
6682
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, {
6683
6683
  size: 14,
6684
6684
  className: Market_module_css_default.bannerIcon
6685
6685
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
@@ -9199,6 +9199,10 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
9199
9199
  (0, react.useEffect)(() => {
9200
9200
  if (busyUrl === null && updatingName === null) {
9201
9201
  setHostBusy(false);
9202
+ statusRef.current = {
9203
+ ...statusRef.current,
9204
+ busy: false
9205
+ };
9202
9206
  setProgressLine(null);
9203
9207
  setProgressPhase(null);
9204
9208
  setProgressCurrent(null);
@@ -11473,7 +11477,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
11473
11477
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
11474
11478
  redLines.filter(redLineIsUrgent).map((line) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
11475
11479
  className: Market_module_css_default.warnLine,
11476
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16$1, {
11480
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, {
11477
11481
  size: 14,
11478
11482
  className: Market_module_css_default.bannerIcon
11479
11483
  }), " " + redLineLabel(line)]
@@ -11672,12 +11676,12 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
11672
11676
  type: "button",
11673
11677
  className: Market_module_css_default.cardBlockedMark,
11674
11678
  onClick: openOperations,
11675
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16$1, { size: 13 }), t("queuedBadge")]
11679
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, { size: 13 }), t("queuedBadge")]
11676
11680
  }) : blocked ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
11677
11681
  type: "button",
11678
11682
  className: Market_module_css_default.cardBlockedMark,
11679
11683
  onClick: openOperations,
11680
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16$1, { size: 13 }), t("opBlockedCard")]
11684
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, { size: 13 }), t("opBlockedCard")]
11681
11685
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
11682
11686
  variant: "primary",
11683
11687
  size: "sm",
@@ -11894,12 +11898,12 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
11894
11898
  type: "button",
11895
11899
  className: Market_module_css_default.cardBlockedMark,
11896
11900
  onClick: openOperations,
11897
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16$1, { size: 13 }), t("queuedBadge")]
11901
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, { size: 13 }), t("queuedBadge")]
11898
11902
  }) : blocked ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
11899
11903
  type: "button",
11900
11904
  className: Market_module_css_default.cardBlockedMark,
11901
11905
  onClick: openOperations,
11902
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16$1, { size: 13 }), t("opBlockedCard")]
11906
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, { size: 13 }), t("opBlockedCard")]
11903
11907
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
11904
11908
  variant: "primary",
11905
11909
  size: "sm",
@@ -12349,7 +12353,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
12349
12353
  }),
12350
12354
  restoreErrors.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
12351
12355
  className: Market_module_css_default.banner,
12352
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16$1, {
12356
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, {
12353
12357
  size: 14,
12354
12358
  className: Market_module_css_default.bannerIcon
12355
12359
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
@@ -12461,7 +12465,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
12461
12465
  }),
12462
12466
  activationWarnings.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
12463
12467
  className: Market_module_css_default.banner,
12464
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16$1, {
12468
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, {
12465
12469
  size: 14,
12466
12470
  className: Market_module_css_default.bannerIcon
12467
12471
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
@@ -12483,7 +12487,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
12483
12487
  }),
12484
12488
  tab === "installed" && configNamespaceIssues.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
12485
12489
  className: Market_module_css_default.banner,
12486
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16$1, {
12490
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, {
12487
12491
  size: 14,
12488
12492
  className: Market_module_css_default.bannerIcon
12489
12493
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
@@ -12536,7 +12540,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
12536
12540
  buildsSkipped !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
12537
12541
  className: Market_module_css_default.banner,
12538
12542
  children: [
12539
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16$1, {
12543
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, {
12540
12544
  size: 14,
12541
12545
  className: Market_module_css_default.bannerIcon
12542
12546
  }),
@@ -14361,7 +14365,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
14361
14365
  ]
14362
14366
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
14363
14367
  className: Market_module_css_default.migrationWarning,
14364
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16$1, { size: 14 }), t("migrateWarning")]
14368
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, { size: 14 }), t("migrateWarning")]
14365
14369
  })]
14366
14370
  }),
14367
14371
  agentsConfirm !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
@@ -14702,17 +14706,17 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
14702
14706
  }),
14703
14707
  exportState === "fail" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Toast, {
14704
14708
  text: t("exportLogFail"),
14705
- icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16$1, { size: 14 }),
14709
+ icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, { size: 14 }),
14706
14710
  onDone: exportToastDone
14707
14711
  }),
14708
14712
  favoriteError !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Toast, {
14709
14713
  text: localizeBilingual(favoriteError, lang),
14710
- icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16$1, { size: 14 }),
14714
+ icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, { size: 14 }),
14711
14715
  onDone: favoriteErrorDone
14712
14716
  }),
14713
14717
  blockError !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Toast, {
14714
14718
  text: localizeBilingual(blockError, lang),
14715
- icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16$1, { size: 14 }),
14719
+ icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, { size: 14 }),
14716
14720
  onDone: blockErrorDone
14717
14721
  }),
14718
14722
  blockNotice !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Toast, {
@@ -14721,7 +14725,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
14721
14725
  }),
14722
14726
  updateExemptError !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Toast, {
14723
14727
  text: localizeBilingual(updateExemptError, lang),
14724
- icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16$1, { size: 14 }),
14728
+ icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, { size: 14 }),
14725
14729
  onDone: updateExemptErrorDone
14726
14730
  }),
14727
14731
  updateExemptNotice !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Toast, {
@@ -14730,7 +14734,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
14730
14734
  }),
14731
14735
  toggled !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Toast, {
14732
14736
  text: toggled.name + " " + t(toggled.enabled ? "toastToggledOn" : "toastToggledOff"),
14733
- icon: toggled.enabled ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconCheckOutline16, { size: 14 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16$1, { size: 14 }),
14737
+ icon: toggled.enabled ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconCheckOutline16, { size: 14 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWarningOutline16, { size: 14 }),
14734
14738
  onDone: toggledDone
14735
14739
  })
14736
14740
  ]
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dshmarket",
3
3
  "description": "Visual plugin market inside DeepSeek Harness — browse, search, and one-click install community plugins. · DSH 可视化插件市场:逛一逛,点一下,装好。",
4
- "version": "1.66.27",
4
+ "version": "1.66.29",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/types/index.d.ts",
@@ -15,7 +15,8 @@
15
15
  * see — the two patches side by side.
16
16
  */
17
17
  import { useCallback, useEffect, useState, type ReactElement } from 'react'
18
- import { Button, IconWarningOutline16 } from '@deepseek-ai/dsh-client-ui-primitives'
18
+ import { Button } from '@deepseek-ai/dsh-client-ui-primitives'
19
+ import { IconWarningOutline16 } from './icons.ts'
19
20
  import css from './Market.module.css'
20
21
  import { api } from './market-data.ts'
21
22
  import type { Translate } from './market-data.ts'
@@ -2727,6 +2727,12 @@ export function MarketSection(props: MarketSectionProps) {
2727
2727
  // that stale sample; the guarded restart route still handles the small
2728
2728
  // post-response lock-release window with its existing 409 retry.
2729
2729
  setHostBusy(false)
2730
+ // The same sample is what `runQueuedNow` reads to decide whether the
2731
+ // host is free (#845 review). Left in place it answered 「另一个安装、
2732
+ // 更新或卸载还在进行」 about an idle host, for the up to 2 s until the
2733
+ // drain's next tick — and the idle poll that used to correct it is
2734
+ // exactly what #845 removed, so with no queued row it never came back.
2735
+ statusRef.current = { ...statusRef.current, busy: false }
2730
2736
  setProgressLine(null)
2731
2737
  setProgressPhase(null)
2732
2738
  setProgressCurrent(null)