dsh-plugin 1.6.11 → 1.6.12

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
@@ -283,6 +283,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
283
283
  errorTitleInstall: "安装失败",
284
284
  errorTitleUninstall: "卸载失败",
285
285
  errorTitleUpdate: "更新失败",
286
+ actionInstall: "安装",
287
+ actionUpdate: "更新",
288
+ actionUninstall: "卸载",
286
289
  errorPlugin: "插件",
287
290
  errorClose: "知道了",
288
291
  errorCopy: "复制错误信息",
@@ -292,18 +295,19 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
292
295
  failIssueBig: "一键提交 BUG 到 GitHub Issue 为开源作贡献",
293
296
  failHubIssueHint: "此失败已被判定为环境或插件中心自身问题(非插件作者问题),带着错误日志到插件中心仓库一键提交 Issue",
294
297
  failHubIssueBig: "反馈给插件中心排查",
295
- failUnclassifiedHint: "安装失败,原因未能自动识别。这通常不是插件自身的问题(可能与本机环境或插件中心有关),请将错误信息反馈给插件中心,由维护者排查。",
296
- failHubStateHint: "插件列表状态已过期或与本地不一致:该插件可能已经装过了(无需重复安装,要升级请点「更新」),也可能已不在已安装列表中,或已在队列中。这不是插件本身的问题 —— 请刷新页面后重试。",
297
- failTimeoutHint: "安装耗时超过本地上限、已被中断 —— 但很可能其实已经装上了(安装器在超时后会先核对本地已安装列表)。请刷新页面确认该插件是否已装上;若确实没装上,可在终端手动执行一次安装命令查看完整输出。这不是插件本身的问题。",
298
- failProfileLockHint: "DSH 在写入插件清单时等不到文件锁、超时中止 —— 通常是同时有另一个 DSH 进程或安装任务在写同一个 profile(也可能是上一次的进程没退干净留下的锁)。请先关掉其他 dsh 窗口或正在跑的命令,再重试一次;若反复出现,重启一次 DSH。这不是插件本身的问题,也不需要重复安装。",
298
+ failUnclassifiedHint: "{action}失败,原因未能自动识别。这通常不是插件自身的问题(可能与本机环境或插件中心有关),请将错误信息反馈给插件中心,由维护者排查。",
299
+ failHubStateHint: "插件列表状态已过期或与本地不一致:这次{action}的目标可能已经在列表里了(要升级请点「更新」),也可能已经不在已安装列表中,或已在队列中。这不是插件本身的问题 —— 请刷新页面后重试。",
300
+ failTimeoutHint: "本次操作耗时超过本地上限、已被中断 —— 但很可能其实已经生效了(安装器在超时后会先核对本地已安装列表)。请刷新页面确认当前状态;若确实没生效,可在终端手动执行一次对应命令查看完整输出。这不是插件本身的问题。",
301
+ failProfileLockHint: "DSH 在写入插件清单时等不到文件锁、超时中止 —— 通常是同时有另一个 DSH 进程或安装任务在写同一个 profile(也可能是上一次的进程没退干净留下的锁)。请先关掉其他 dsh 窗口或正在跑的命令,再重试一次;若反复出现,重启一次 DSH。这不是插件本身的问题,也不需要重复{action}。",
302
+ failHostCliSpawnHint: "DSH 没能启动自身来完成这次操作(系统报「找不到可执行文件」):通常是因为 DSH 的安装目录被移动或正在更新,或该 profile 目录还不存在。请重启一次 DSH 后重试;若反复出现,重新安装 DSH。这不是插件本身的问题,换别的插件也一样。",
299
303
  failPrepareHint: "该插件安装时的构建脚本执行失败(git 分发常缺失子模块或构建产物),属插件打包分发问题。请向作者仓库提交 Issue 反馈。",
300
304
  failMisjudgeHint: "如果这个插件其实能正常安装(上面这个判定是插件中心误报的),请反馈给插件中心:文字提示里的判据由市场自身产出,误报只有靠你的反馈才能被发现。",
301
305
  failMisjudgeLink: "插件能装却被拦下?反馈给插件中心",
302
306
  failPackagingHint: "该插件不支持官方默认安装方式:其 git 分发缺少它需要的文件(`main` / `exports` 声明的入口、补丁按本包名 mount 的入口,或 `dsh.bundle.patch` 声明的补丁),说明作者未适配官方安装流程。请到作者仓库提交 Issue 反馈,请其提交构建产物、改用预构建 release `.tgz` 直链(`releases/download/<tag>/<asset>.tgz`),或发布完整的 npm 版。",
303
- failIgnoredBuild: "该插件(或其依赖)需要在安装时执行构建脚本,被 pnpm 的安全白名单(allowBuilds)默认拦截,安装因此失败(如原生模块 node-pty,或 git 安装时插件自己的 prepare 脚本)。安装器已自动放行该 key 并重试过一次;仍失败通常说明构建本身没通过。可先在终端手动执行一次安装命令查看完整构建错误;若确属插件的构建/分发问题,建议作者预置构建产物、发布 npm 包或预构建 .tgz。需要协助排查时也可反馈给插件中心。",
307
+ failIgnoredBuild: "该插件(或其依赖)需要在安装时执行构建脚本,被 pnpm 的安全白名单(allowBuilds)默认拦截,本次操作因此失败(如原生模块 node-pty,或 git 安装时插件自己的 prepare 脚本)。安装器已自动放行该 key 并重试过一次;仍失败通常说明构建本身没通过。可先在终端手动执行一次安装命令查看完整构建错误;若确属插件的构建/分发问题,建议作者预置构建产物、发布 npm 包或预构建 .tgz。需要协助排查时也可反馈给插件中心。",
304
308
  failNpmTooLow: "怀疑本机 npm 版本过低:npm 解析插件依赖时内部崩溃(这是 npm 自身的已知缺陷,不是插件问题)。请升级 npm 后重试:npm install -g npm@latest",
305
309
  failNpmTooLowV: "本机 npm 版本过低(当前 v{v}):npm 解析插件依赖时内部崩溃(这是 npm 自身的已知缺陷,不是插件问题)。请升级 npm 后重试:npm install -g npm@latest",
306
- failNetworkHint: "安装前检测到网络不通:无法连接到安装源(可能是断网、DNS 解析失败、被防火墙拦截,或代理配置有问题)。这不是插件本身的问题 —— 请检查网络连接,或到「设置」里确认 HTTP 代理配置,再到「系统诊断」运行一次连通性检测,然后重试。",
310
+ failNetworkHint: "{action}前检测到网络不通:无法连接到安装源(可能是断网、DNS 解析失败、被防火墙拦截,或代理配置有问题)。这不是插件本身的问题 —— 请检查网络连接,或到「设置」里确认 HTTP 代理配置,再到「系统诊断」运行一次连通性检测,然后重试。",
307
311
  failNetworkRegistryHint: "你的 npm/pnpm 源(registry)被配置为 {host},插件包需从该源下载但失败了。这通常是内网/自定义源没有同步该包(或需要内网认证)—— 请把 npm/pnpm 的 registry 指回官方源 https://registry.npmjs.org(或确认此源可访问该包)后重试。",
308
312
  failNetworkTarget: "无法访问 {url} —— 你的网络连接不通",
309
313
  failNetworkRunDiag: "去系统诊断检测网络",
@@ -642,6 +646,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
642
646
  errorTitleInstall: "Install failed",
643
647
  errorTitleUninstall: "Removal failed",
644
648
  errorTitleUpdate: "Update failed",
649
+ actionInstall: "install",
650
+ actionUpdate: "update",
651
+ actionUninstall: "removal",
645
652
  errorPlugin: "Plugin",
646
653
  errorClose: "Got it",
647
654
  errorCopy: "Copy error",
@@ -651,18 +658,19 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
651
658
  failIssueBig: "Report this bug to GitHub — contribute to open source",
652
659
  failHubIssueHint: "This failure was classified as an environment or Plugin Hub issue (not a plugin-author issue). Open a pre-filled issue on the Plugin Hub repo with this error log.",
653
660
  failHubIssueBig: "Report to the Plugin Hub for triage",
654
- failUnclassifiedHint: "The install failed and the cause could not be identified automatically. This is usually not the plugin itself (it may relate to your local environment or the Plugin Hub). Please report the error to the Plugin Hub so the maintainers can triage it.",
655
- failHubStateHint: "The plugin list is out of date or out of sync: this plugin may already be installed (no need to reinstall — use \"Update\" to upgrade), or may no longer be in the installed list, or may already be queued. This is not a plugin problem — refresh the page and retry.",
656
- failTimeoutHint: "The install exceeded the local time limit and was interrupted — but it may well have completed already (the installer re-checks your installed list after a timeout). Refresh the page to see whether the plugin is installed; if it is not, run the install command in a terminal to see the full output. This is not a plugin problem.",
657
- failProfileLockHint: "DSH timed out waiting for the file lock while writing the plugin list — usually because another DSH process or install task is writing the same profile (sometimes a previous run left the lock behind). Close other dsh windows or running commands, then retry; if it keeps happening, restart DSH once. This is not a plugin problem, and the plugin does not need to be reinstalled.",
661
+ failUnclassifiedHint: "The {action} failed and the cause could not be identified automatically. This is usually not the plugin itself (it may relate to your local environment or the Plugin Hub). Please report the error to the Plugin Hub so the maintainers can triage it.",
662
+ failHubStateHint: "The plugin list is out of date or out of sync: the target of this {action} may already be in the list (use \"Update\" to upgrade), may no longer be in the installed list, or may already be queued. This is not a plugin problem — refresh the page and retry.",
663
+ failTimeoutHint: "This operation exceeded the local time limit and was interrupted — but it may well have taken effect already (the installer re-checks the installed list after a timeout). Refresh the page to confirm the current state; if it did not take effect, run the corresponding command in a terminal to see the full output. This is not a plugin problem.",
664
+ failProfileLockHint: "DSH timed out waiting for the file lock while writing the plugin list — usually because another DSH process or install task is writing the same profile (sometimes a previous run left the lock behind). Close other dsh windows or running commands, then retry; if it keeps happening, restart DSH once. This is not a plugin problem, and there is no need to repeat the {action}.",
665
+ failHostCliSpawnHint: "DSH could not start itself to perform this operation (the system reported that the executable was not found). This usually means the DSH installation folder has been moved or is being updated, or that the profile directory does not exist yet. Restart DSH and retry; if it keeps happening, reinstall DSH. This is not a plugin problem — other plugins would fail the same way.",
658
666
  failPrepareHint: "This plugin failed while running its build scripts during install (git tarballs often miss submodules or build output). This is a packaging issue of the plugin itself — please report it to the author repository.",
659
667
  failMisjudgeHint: "If this plugin actually installs fine (the verdict above is the Plugin Hub misjudging it), please report it to the Hub: that verdict is produced by the marketplace itself, so a false positive can only be found through your feedback.",
660
668
  failMisjudgeLink: "Plugin installs fine but got blocked? Report to the Plugin Hub",
661
669
  failPackagingHint: "This plugin does not support the official default install method: its git distribution lacks a file the package needs (the entry from `main` / `exports`, an entry its own patch mounts by name, or the patch declared by `dsh.bundle.patch`), so it has not been adapted to the official install flow. Please file an Issue on the author's repo asking for committed build output, a prebuilt release `.tgz` (`releases/download/<tag>/<asset>.tgz`), or a complete npm release.",
662
- failIgnoredBuild: "This plugin (or one of its dependencies) needs to run build scripts at install time, which pnpm blocks by default via its allowBuilds allowlist — so the install fails (e.g. native modules like node-pty, or the plugin's own prepare script on git installs). The installer already auto-allows that key and retries once; if it still fails, the build itself is usually the problem. Run the install command in a terminal to see the full build error; if it is indeed the plugin's build or distribution, the author can ship prebuilt output, an npm release, or a prebuilt .tgz. You can also report it to the Plugin Hub for triage.",
670
+ failIgnoredBuild: "This plugin (or one of its dependencies) needs to run build scripts at install time, which pnpm blocks by default via its allowBuilds allowlist — so this operation fails (e.g. native modules like node-pty, or the plugin's own prepare script on git installs). The installer already auto-allows that key and retries once; if it still fails, the build itself is usually the problem. Run the install command in a terminal to see the full build error; if it is indeed the plugin's build or distribution, the author can ship prebuilt output, an npm release, or a prebuilt .tgz. You can also report it to the Plugin Hub for triage.",
663
671
  failNpmTooLow: "Your local npm may be too old: npm crashed internally while resolving the plugin's dependencies (a known npm bug — not a plugin issue). Please upgrade npm and retry: npm install -g npm@latest",
664
672
  failNpmTooLowV: "Your local npm is too old (v{v}): npm crashed internally while resolving the plugin's dependencies (a known npm bug — not a plugin issue). Please upgrade npm and retry: npm install -g npm@latest",
665
- failNetworkHint: "The network could not be reached before install: the install source is unreachable (offline, DNS failure, firewall block, or a misconfigured proxy). This is not a problem with the plugin itself — please check your connection, confirm the HTTP proxy in Settings, run a connectivity check under System Diagnostics, then retry.",
673
+ failNetworkHint: "The network could not be reached before the {action}: the install source is unreachable (offline, DNS failure, firewall block, or a misconfigured proxy). This is not a problem with the plugin itself — please check your connection, confirm the HTTP proxy in Settings, run a connectivity check under System Diagnostics, then retry.",
666
674
  failNetworkRegistryHint: "Your npm/pnpm registry is set to {host}, and the package tarball could not be downloaded from it. This usually means a private/internal mirror that has not synced the package (or requires intranet auth) — point the registry back to https://registry.npmjs.org (or make sure this source can serve the package), then retry.",
667
675
  failNetworkTarget: "Cannot reach {url} — your network connection is down",
668
676
  failNetworkRunDiag: "Run a network diagnostic",
@@ -744,42 +752,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
744
752
  css: css$11
745
753
  });
746
754
  var Header_module_css_default = {
747
- "search": "qikqja_search",
748
- "tabActive": "qikqja_tabActive",
755
+ "taglineLink": "qikqja_taglineLink",
756
+ "copyIcon": "qikqja_copyIcon",
757
+ "resultSeg": "qikqja_resultSeg",
758
+ "searchRow": "qikqja_searchRow",
759
+ "logoIcon": "qikqja_logoIcon",
760
+ "tab": "qikqja_tab",
761
+ "adText": "qikqja_adText",
762
+ "versionBtn": "qikqja_versionBtn",
763
+ "segGroup": "qikqja_segGroup",
764
+ "headerRight": "qikqja_headerRight",
765
+ "segLabel": "qikqja_segLabel",
766
+ "adBadge": "qikqja_adBadge",
767
+ "controls": "qikqja_controls",
749
768
  "tabCount": "qikqja_tabCount",
750
769
  "adArrow": "qikqja_adArrow",
751
- "segLabel": "qikqja_segLabel",
770
+ "githubLink": "qikqja_githubLink",
752
771
  "version": "qikqja_version",
753
- "logoIcon": "qikqja_logoIcon",
754
772
  "segBtnActive": "qikqja_segBtnActive",
755
- "title": "qikqja_title",
756
- "brandTitle": "qikqja_brandTitle",
773
+ "tabActive": "qikqja_tabActive",
774
+ "sortGroup": "qikqja_sortGroup",
775
+ "hubUpdateBadge": "qikqja_hubUpdateBadge",
757
776
  "langBtn": "qikqja_langBtn",
758
- "controls": "qikqja_controls",
777
+ "githubIcon": "qikqja_githubIcon",
759
778
  "aboutBtn": "qikqja_aboutBtn",
760
- "adBadge": "qikqja_adBadge",
761
- "tab": "qikqja_tab",
762
- "headerTitleRow": "qikqja_headerTitleRow",
763
- "taglineLink": "qikqja_taglineLink",
764
- "versionBtn": "qikqja_versionBtn",
765
- "adText": "qikqja_adText",
766
- "copyIcon": "qikqja_copyIcon",
767
- "adBanner": "qikqja_adBanner",
768
- "tabsRow": "qikqja_tabsRow",
769
- "headerRight": "qikqja_headerRight",
770
- "resultSeg": "qikqja_resultSeg",
771
- "root": "qikqja_root",
772
779
  "tagline": "qikqja_tagline",
773
780
  "segBtn": "qikqja_segBtn",
774
- "searchRow": "qikqja_searchRow",
775
- "githubIcon": "qikqja_githubIcon",
776
- "tabs": "qikqja_tabs",
777
- "sortGroup": "qikqja_sortGroup",
778
- "segGroup": "qikqja_segGroup",
779
- "header": "qikqja_header",
780
- "githubLink": "qikqja_githubLink",
781
+ "root": "qikqja_root",
781
782
  "resultCount": "qikqja_resultCount",
782
- "hubUpdateBadge": "qikqja_hubUpdateBadge"
783
+ "header": "qikqja_header",
784
+ "adBanner": "qikqja_adBanner",
785
+ "tabsRow": "qikqja_tabsRow",
786
+ "tabs": "qikqja_tabs",
787
+ "title": "qikqja_title",
788
+ "headerTitleRow": "qikqja_headerTitleRow",
789
+ "brandTitle": "qikqja_brandTitle",
790
+ "search": "qikqja_search"
783
791
  };
784
792
  //#endregion
785
793
  //#region \0dsh-css:src/client/styles/Modal.module.css.mjs
@@ -798,137 +806,137 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
798
806
  css: css$10
799
807
  });
800
808
  var Modal_module_css_default = {
801
- "noticeRowMain": "BiQ1zG_noticeRowMain",
802
- "toastFail": "BiQ1zG_toastFail",
809
+ "modalCloseIcon": "BiQ1zG_modalCloseIcon",
810
+ "progressFillFail": "BiQ1zG_progressFillFail",
811
+ "resultDesc": "BiQ1zG_resultDesc",
812
+ "modalCmdText": "BiQ1zG_modalCmdText",
813
+ "resultTitle": "BiQ1zG_resultTitle",
814
+ "detailPathBtn": "BiQ1zG_detailPathBtn",
815
+ "errorCopySoft": "BiQ1zG_errorCopySoft",
816
+ "modalInstall": "BiQ1zG_modalInstall",
817
+ "hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
818
+ "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
819
+ "restartNow": "BiQ1zG_restartNow",
820
+ "modalActions": "BiQ1zG_modalActions",
821
+ "noticeMain": "BiQ1zG_noticeMain",
822
+ "queueRowStatus": "BiQ1zG_queueRowStatus",
823
+ "noticeVersion": "BiQ1zG_noticeVersion",
824
+ "failPrepareHint": "BiQ1zG_failPrepareHint",
825
+ "queueRow": "BiQ1zG_queueRow",
826
+ "progressHead": "BiQ1zG_progressHead",
827
+ "failList": "BiQ1zG_failList",
828
+ "detailArrow": "BiQ1zG_detailArrow",
829
+ "noticeList": "BiQ1zG_noticeList",
830
+ "failKindUninstall": "BiQ1zG_failKindUninstall",
831
+ "modalLabel": "BiQ1zG_modalLabel",
832
+ "errorBox": "BiQ1zG_errorBox",
833
+ "resultCheck": "BiQ1zG_resultCheck",
834
+ "progressTrack": "BiQ1zG_progressTrack",
835
+ "confirmIcon": "BiQ1zG_confirmIcon",
836
+ "modalClose": "BiQ1zG_modalClose",
837
+ "linkIcon": "BiQ1zG_linkIcon",
838
+ "queueSection": "BiQ1zG_queueSection",
839
+ "stripCancel": "BiQ1zG_stripCancel",
840
+ "confirmPrimary": "BiQ1zG_confirmPrimary",
841
+ "progressFill": "BiQ1zG_progressFill",
842
+ "noticeRow": "BiQ1zG_noticeRow",
803
843
  "noticeTextOk": "BiQ1zG_noticeTextOk",
844
+ "errorHint": "BiQ1zG_errorHint",
804
845
  "noticeRemove": "BiQ1zG_noticeRemove",
805
- "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
806
- "queueRowBody": "BiQ1zG_queueRowBody",
846
+ "failKindInstall": "BiQ1zG_failKindInstall",
847
+ "detailRow": "BiQ1zG_detailRow",
848
+ "detailStatusRunning": "BiQ1zG_detailStatusRunning",
807
849
  "modalHead": "BiQ1zG_modalHead",
808
- "noticeFoot": "BiQ1zG_noticeFoot",
850
+ "errorModal": "BiQ1zG_errorModal",
809
851
  "dangerConfirm": "BiQ1zG_dangerConfirm",
810
- "progressHead": "BiQ1zG_progressHead",
811
- "modalBody": "BiQ1zG_modalBody",
812
- "noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
813
- "modalValue": "BiQ1zG_modalValue",
852
+ "detailMono": "BiQ1zG_detailMono",
853
+ "noticeTime": "BiQ1zG_noticeTime",
854
+ "toastFail": "BiQ1zG_toastFail",
855
+ "modalWide": "BiQ1zG_modalWide",
856
+ "hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
814
857
  "confirmIconWrap": "BiQ1zG_confirmIconWrap",
815
- "toastIn": "BiQ1zG_toastIn",
816
- "queuedHint": "BiQ1zG_queuedHint",
817
- "noticeRow": "BiQ1zG_noticeRow",
818
- "modalLink": "BiQ1zG_modalLink",
819
- "failNetworkTarget": "BiQ1zG_failNetworkTarget",
820
- "failRow": "BiQ1zG_failRow",
821
- "toast": "BiQ1zG_toast",
822
- "queueRowPct": "BiQ1zG_queueRowPct",
823
- "modalIn": "BiQ1zG_modalIn",
824
- "failPrepareHint": "BiQ1zG_failPrepareHint",
858
+ "detailStars": "BiQ1zG_detailStars",
859
+ "queueSectionTitle": "BiQ1zG_queueSectionTitle",
860
+ "resultCheckIcon": "BiQ1zG_resultCheckIcon",
861
+ "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
825
862
  "noticeHead": "BiQ1zG_noticeHead",
863
+ "pendingRowStatus": "BiQ1zG_pendingRowStatus",
826
864
  "failCopy": "BiQ1zG_failCopy",
827
- "confirmPrimary": "BiQ1zG_confirmPrimary",
828
- "noticeVersion": "BiQ1zG_noticeVersion",
829
- "overlay": "BiQ1zG_overlay",
830
- "resultTitle": "BiQ1zG_resultTitle",
831
- "uninstallConfirm": "BiQ1zG_uninstallConfirm",
832
- "detailPathBtn": "BiQ1zG_detailPathBtn",
833
- "detailStatusText": "BiQ1zG_detailStatusText",
834
- "helpModal": "BiQ1zG_helpModal",
835
- "queueSection": "BiQ1zG_queueSection",
836
- "errorBox": "BiQ1zG_errorBox",
837
- "noticeTime": "BiQ1zG_noticeTime",
838
- "errorModal": "BiQ1zG_errorModal",
839
- "resultDesc": "BiQ1zG_resultDesc",
840
- "detailPath": "BiQ1zG_detailPath",
865
+ "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
866
+ "detailDim": "BiQ1zG_detailDim",
867
+ "toast": "BiQ1zG_toast",
868
+ "failRow": "BiQ1zG_failRow",
841
869
  "detailPathActions": "BiQ1zG_detailPathActions",
842
- "detailModal": "BiQ1zG_detailModal",
843
- "modalTitle": "BiQ1zG_modalTitle",
844
- "resultCheckIcon": "BiQ1zG_resultCheckIcon",
845
- "restartNow": "BiQ1zG_restartNow",
846
- "failEmpty": "BiQ1zG_failEmpty",
847
- "modalWide": "BiQ1zG_modalWide",
848
- "failList": "BiQ1zG_failList",
849
- "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
850
- "cliOnlyHint": "BiQ1zG_cliOnlyHint",
851
- "failClear": "BiQ1zG_failClear",
852
- "progressFillFail": "BiQ1zG_progressFillFail",
853
- "queueRowStatus": "BiQ1zG_queueRowStatus",
854
- "detailGrid": "BiQ1zG_detailGrid",
855
- "queueRowHead": "BiQ1zG_queueRowHead",
870
+ "trustHint": "BiQ1zG_trustHint",
871
+ "pendingRowActions": "BiQ1zG_pendingRowActions",
856
872
  "aboutMeta": "BiQ1zG_aboutMeta",
857
- "modalCloseIcon": "BiQ1zG_modalCloseIcon",
858
- "noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
859
- "noticeRowOk": "BiQ1zG_noticeRowOk",
860
- "detailStars": "BiQ1zG_detailStars",
861
- "stripCancel": "BiQ1zG_stripCancel",
862
- "progressTrack": "BiQ1zG_progressTrack",
863
- "failDiagBtn": "BiQ1zG_failDiagBtn",
864
- "queueSectionTitle": "BiQ1zG_queueSectionTitle",
865
- "detailPathText": "BiQ1zG_detailPathText",
873
+ "detailValue": "BiQ1zG_detailValue",
874
+ "modalTitle": "BiQ1zG_modalTitle",
875
+ "detailModal": "BiQ1zG_detailModal",
876
+ "restartNowWarning": "BiQ1zG_restartNowWarning",
866
877
  "noticeIgnore": "BiQ1zG_noticeIgnore",
878
+ "detailStatusPending": "BiQ1zG_detailStatusPending",
879
+ "failBigIssue": "BiQ1zG_failBigIssue",
867
880
  "modalRow": "BiQ1zG_modalRow",
881
+ "noticeFoot": "BiQ1zG_noticeFoot",
882
+ "modalCmdCopy": "BiQ1zG_modalCmdCopy",
883
+ "queueRowPct": "BiQ1zG_queueRowPct",
884
+ "failedCopyHint": "BiQ1zG_failedCopyHint",
885
+ "modalCancel": "BiQ1zG_modalCancel",
886
+ "queueRowBody": "BiQ1zG_queueRowBody",
887
+ "failDiagBtn": "BiQ1zG_failDiagBtn",
868
888
  "failMisjudgeLink": "BiQ1zG_failMisjudgeLink",
869
- "errorCopySoft": "BiQ1zG_errorCopySoft",
889
+ "logModal": "BiQ1zG_logModal",
890
+ "cliOnlyHint": "BiQ1zG_cliOnlyHint",
891
+ "failClear": "BiQ1zG_failClear",
892
+ "noticeRowMain": "BiQ1zG_noticeRowMain",
893
+ "detailStatusText": "BiQ1zG_detailStatusText",
894
+ "modalCopy": "BiQ1zG_modalCopy",
895
+ "errorTitle": "BiQ1zG_errorTitle",
870
896
  "result": "BiQ1zG_result",
871
- "modalTitleQueued": "BiQ1zG_modalTitleQueued",
872
- "modalTitleBusy": "BiQ1zG_modalTitleBusy",
873
- "modalCmd": "BiQ1zG_modalCmd",
874
- "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
875
- "modalCmdText": "BiQ1zG_modalCmdText",
897
+ "noticeTextFail": "BiQ1zG_noticeTextFail",
898
+ "failHead": "BiQ1zG_failHead",
876
899
  "queueRowTarget": "BiQ1zG_queueRowTarget",
877
- "errorHint": "BiQ1zG_errorHint",
878
- "detailLink": "BiQ1zG_detailLink",
879
- "restartLater": "BiQ1zG_restartLater",
880
- "modalCopy": "BiQ1zG_modalCopy",
881
- "linkIcon": "BiQ1zG_linkIcon",
882
- "failedCopyHint": "BiQ1zG_failedCopyHint",
883
- "failKindUninstall": "BiQ1zG_failKindUninstall",
884
- "overlayIn": "BiQ1zG_overlayIn",
885
- "restartNowWarning": "BiQ1zG_restartNowWarning",
886
- "queueRowTrack": "BiQ1zG_queueRowTrack",
887
- "detailUpdateHint": "BiQ1zG_detailUpdateHint",
888
- "queueRow": "BiQ1zG_queueRow",
900
+ "detailPath": "BiQ1zG_detailPath",
889
901
  "hubUpdateModal": "BiQ1zG_hubUpdateModal",
890
- "noticeList": "BiQ1zG_noticeList",
891
- "detailDim": "BiQ1zG_detailDim",
892
- "modalInstall": "BiQ1zG_modalInstall",
893
- "pendingRowStatus": "BiQ1zG_pendingRowStatus",
894
- "progressText": "BiQ1zG_progressText",
895
- "failBigIssue": "BiQ1zG_failBigIssue",
896
- "progressFill": "BiQ1zG_progressFill",
897
- "detailLabel": "BiQ1zG_detailLabel",
898
- "detailMono": "BiQ1zG_detailMono",
899
- "modalCancel": "BiQ1zG_modalCancel",
900
- "detailValue": "BiQ1zG_detailValue",
901
- "errorTitle": "BiQ1zG_errorTitle",
902
- "modalLabel": "BiQ1zG_modalLabel",
903
- "logModal": "BiQ1zG_logModal",
904
- "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
905
- "failKindInstall": "BiQ1zG_failKindInstall",
906
- "aboutContent": "BiQ1zG_aboutContent",
907
- "detailStatusPending": "BiQ1zG_detailStatusPending",
908
- "trustHint": "BiQ1zG_trustHint",
909
902
  "failRepo": "BiQ1zG_failRepo",
910
- "modal": "BiQ1zG_modal",
911
- "modalClose": "BiQ1zG_modalClose",
912
- "modalDesc": "BiQ1zG_modalDesc",
913
- "pendingRowActions": "BiQ1zG_pendingRowActions",
914
- "noticeMain": "BiQ1zG_noticeMain",
915
- "failHead": "BiQ1zG_failHead",
916
- "resultCheck": "BiQ1zG_resultCheck",
917
- "noticeTextFail": "BiQ1zG_noticeTextFail",
918
- "detailStatusRunning": "BiQ1zG_detailStatusRunning",
919
- "queueRowDesc": "BiQ1zG_queueRowDesc",
920
- "detailArrow": "BiQ1zG_detailArrow",
903
+ "uninstallConfirm": "BiQ1zG_uninstallConfirm",
904
+ "modalBody": "BiQ1zG_modalBody",
905
+ "modalValue": "BiQ1zG_modalValue",
906
+ "helpModal": "BiQ1zG_helpModal",
907
+ "failEmpty": "BiQ1zG_failEmpty",
908
+ "modalCmd": "BiQ1zG_modalCmd",
909
+ "noticeRowOk": "BiQ1zG_noticeRowOk",
910
+ "detailLink": "BiQ1zG_detailLink",
911
+ "modalIn": "BiQ1zG_modalIn",
912
+ "noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
921
913
  "confirmIconDanger": "BiQ1zG_confirmIconDanger",
922
- "hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
923
- "modalCmdCopy": "BiQ1zG_modalCmdCopy",
924
- "modalActions": "BiQ1zG_modalActions",
925
- "hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
926
- "progress": "BiQ1zG_progress",
927
- "detailRow": "BiQ1zG_detailRow",
914
+ "overlay": "BiQ1zG_overlay",
915
+ "toastIn": "BiQ1zG_toastIn",
916
+ "queueRowDesc": "BiQ1zG_queueRowDesc",
917
+ "noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
918
+ "modalTitleBusy": "BiQ1zG_modalTitleBusy",
919
+ "detailUpdateHint": "BiQ1zG_detailUpdateHint",
920
+ "modalDesc": "BiQ1zG_modalDesc",
921
+ "aboutContent": "BiQ1zG_aboutContent",
922
+ "queueRowHead": "BiQ1zG_queueRowHead",
923
+ "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
924
+ "failKind": "BiQ1zG_failKind",
925
+ "progressText": "BiQ1zG_progressText",
928
926
  "resultRestarting": "BiQ1zG_resultRestarting",
929
- "confirmIcon": "BiQ1zG_confirmIcon",
927
+ "failNetworkTarget": "BiQ1zG_failNetworkTarget",
928
+ "modalLink": "BiQ1zG_modalLink",
929
+ "detailGrid": "BiQ1zG_detailGrid",
930
+ "overlayIn": "BiQ1zG_overlayIn",
931
+ "progress": "BiQ1zG_progress",
930
932
  "aboutModal": "BiQ1zG_aboutModal",
931
- "failKind": "BiQ1zG_failKind"
933
+ "detailLabel": "BiQ1zG_detailLabel",
934
+ "modalTitleQueued": "BiQ1zG_modalTitleQueued",
935
+ "restartLater": "BiQ1zG_restartLater",
936
+ "queueRowTrack": "BiQ1zG_queueRowTrack",
937
+ "queuedHint": "BiQ1zG_queuedHint",
938
+ "modal": "BiQ1zG_modal",
939
+ "detailPathText": "BiQ1zG_detailPathText"
932
940
  };
933
941
  //#endregion
934
942
  //#region src/server/services/install/release-target.ts
@@ -1042,7 +1050,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1042
1050
  * tsdown 构建时用 define 把 __PLUGIN_VERSION__ 替换成 package.json 的版本号;
1043
1051
  * node --test 直接 import 本模块时该标识符不存在,typeof 守卫兜底为空串。
1044
1052
  */
1045
- const PLUGIN_VERSION = "1.6.11";
1053
+ const PLUGIN_VERSION = "1.6.12";
1046
1054
  const CATEGORY_ORDER = [
1047
1055
  "interface",
1048
1056
  "session",
@@ -1679,7 +1687,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1679
1687
  * registry 真实发布时间下发(同源),据此判断最准。门槛命中要单列成 `pending` 而不是
1680
1688
  * 落回「无更新」——回落会让弹窗在本机版本落后时谎称「已是最新」。
1681
1689
  */
1682
- const hubCurrentVersion = "1.6.11";
1690
+ const hubCurrentVersion = "1.6.12";
1683
1691
  const hubUpdateState = (() => {
1684
1692
  if (!hubUpdateInfo) return "none";
1685
1693
  if (hubUpdateInfo.version === hubCurrentVersion) return "latest";
@@ -1871,6 +1879,19 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1871
1879
  save(next);
1872
1880
  return next;
1873
1881
  }
1882
+ /** 动作词(英文):名词短语,标题与句子里都成立。 */
1883
+ function actionWordEn(action) {
1884
+ return action === "uninstall" ? "removal" : action === "update" ? "update" : "install";
1885
+ }
1886
+ /** 动作词(中文):安装 / 更新 / 卸载。 */
1887
+ function actionWordZh(action) {
1888
+ return action === "uninstall" ? "卸载" : action === "update" ? "更新" : "安装";
1889
+ }
1890
+ /** 记录的动作:老记录只有 kind,按 kind 兜底。 */
1891
+ function actionOfRecord(rec) {
1892
+ if (rec.action !== void 0) return rec.action;
1893
+ return rec.kind === "uninstall" ? "uninstall" : rec.kind === "update" ? "update" : "install";
1894
+ }
1874
1895
  /** Match the pnpm error code, not a generic mention of checksum or integrity. */
1875
1896
  function missingTarballIntegrity(message) {
1876
1897
  return /\bERR_PNPM_MISSING_TARBALL_INTEGRITY\b/.test(message);
@@ -1928,6 +1949,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1928
1949
  if (/^\[timed out\]$/m.test(message)) return "timeout";
1929
1950
  if (/atomic-write: timed out waiting for the writer lock|timed out waiting for the writer lock/i.test(message)) return "profileLock";
1930
1951
  if (/git-hosted plugins build on install via their prepare script|add the exact key pnpm printed above under allowBuilds/i.test(message)) return "pnpmIgnoredBuild";
1952
+ if (/\[host-spawn\]/i.test(message)) return "hostCliSpawn";
1931
1953
  return "hub";
1932
1954
  }
1933
1955
  /** 从服务端 `[npm-too-low]` 标记行提取本机 npm 版本(如 `[npm-too-low] npm@11.3.0` → "11.3.0");
@@ -2062,18 +2084,18 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2062
2084
  function pluginSiteUrl(repo) {
2063
2085
  return siteUrl(`plugins/${repo}`);
2064
2086
  }
2065
- /** 按失败类型给出简洁的错误原因标题(对外用英文):
2066
- * 标题直接点明问题出在哪一侧(构建白名单/分发物/本机 npm/网络/插件侧),
2067
- * 让作者与用户扫一眼列表就能分流,而不是笼统的 Install/Remove 动作词。 */
2068
- function reasonTitleOf(kind) {
2087
+ /** 错误原因标题(对外英文):点明问题出在哪一侧,便于 issue 列表分流;
2088
+ * 动作级原因(未分类/超时…)带动作词,卸载失败不写成 install failed。 */
2089
+ function reasonTitleOf(kind, action) {
2090
+ const word = actionWordEn(action);
2069
2091
  switch (kind) {
2070
- case "npmTooOld": return "npm too old to install";
2092
+ case "npmTooOld": return `npm too old for this ${word}`;
2071
2093
  case "dshMissing": return "dsh command not found on the user machine";
2072
2094
  case "pnpmMissing": return "pnpm command not found on the user machine";
2073
2095
  case "pnpmStore": return "pnpm store version mismatch on the user machine";
2074
- case "pnpmWorkspace": return "pnpm workspace-root check blocked the install on the user machine";
2096
+ case "pnpmWorkspace": return `pnpm workspace-root check blocked the ${word} on the user machine`;
2075
2097
  case "originRejected": return "request origin rejected by the local service on the user machine";
2076
- case "pnpmPolicy": return "pnpm supply-chain policy blocked the install on the user machine";
2098
+ case "pnpmPolicy": return `pnpm supply-chain policy blocked the ${word} on the user machine`;
2077
2099
  case "pnpmUnusedPatch": return "stale pnpm patch entry on the user machine";
2078
2100
  case "pnpmMissingDep": return "dependency not found on the npm registry on the user machine";
2079
2101
  case "registryVersionStale": return "requested version not available on the npm registry in use on the user machine";
@@ -2084,12 +2106,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2084
2106
  case "pnpmIgnoredBuild": return "build scripts blocked by pnpm allowlist";
2085
2107
  case "pluginPrepare": return "plugin distribution incomplete";
2086
2108
  case "network": return "network failure on the user side";
2087
- case "hubState": return "stale install state in the plugin hub";
2088
- case "timeout": return "install timed out";
2109
+ case "hostCliSpawn": return "the DSH host could not be launched on the user machine";
2110
+ case "hubState": return `stale ${word} state in the plugin hub`;
2111
+ case "timeout": return `${word} timed out`;
2089
2112
  case "profileLock": return "DSH profile is locked by another process";
2090
2113
  case "pluginMissingDep": return "a dependency of the plugin is not published on npm";
2091
- case "hub": return "install failed (cause unclassified)";
2092
- default: return "plugin install failed";
2114
+ case "hub": return `${word} failed (cause unclassified)`;
2115
+ default: return `plugin ${word} failed`;
2093
2116
  }
2094
2117
  }
2095
2118
  /**
@@ -2101,10 +2124,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2101
2124
  * attempts(尝试过的安装方式,npm 反查 + 实际执行命令):作者看到我们查过/试过的命令,
2102
2125
  * 组织 scope 与 GitHub 用户名不一致时也能直接指认正确的 npm 包名。
2103
2126
  */
2104
- function pluginIssueUrl(repo, message, env, command, attempts) {
2127
+ function pluginIssueUrl(repo, message, env, command, attempts, action = "install") {
2105
2128
  const kind = classifyFailure(message);
2106
2129
  const executed = executedCommandOf(command, attempts);
2107
- const title = `[dsh-plugin.org | dsh-plugin-hub] ${reasonTitleOf(kind)}: ${repo}`;
2130
+ const zhWord = actionWordZh(action);
2131
+ const title = `[dsh-plugin.org | dsh-plugin-hub] ${reasonTitleOf(kind, action)}: ${repo}`;
2108
2132
  const reason = /\[packaging\]/i.test(message) ? "plugin distribution is incomplete — a file the package needs (its entry from main / exports, an entry a bundled patch mounts, or the patch declared by dsh.bundle.patch) is missing from the published package (github tarball or npm package); please commit build output or publish a complete package" : /\[registry-missing\]/i.test(message) ? "a dependency declared by the plugin is not published on the public npm registry (missing, removed, or never released); please publish or correct that dependency, or ship it with the plugin" : kind === "network" ? "network connectivity issue on the user side (DNS, proxy, firewall, or a blocked connection)" : kind === "pluginPrepare" ? "plugin prepare/build script failed during install (packaging/distribution issue)" : kind === "pnpmIgnoredBuild" ? "plugin depends on a native module whose build script pnpm blocks by default (use a prebuilt variant)" : kind === "originRejected" ? "the request never reached the install flow — the local service rejected its origin (local environment issue)" : kind === "pnpmPolicy" ? pnpmPolicyHintOf(message) === "failPnpmTarballIntegrityHint" ? "pnpm rejected a lockfile entry without tarball integrity; inspect and back up the profile lockfile before resolving it again, keeping integrity checks enabled" : "the pnpm supply-chain policy on the user machine blocked the install (minimum release age for freshly published packages / untrusted origin)" : kind === "pnpmUnusedPatch" ? "the profile keeps a pnpm patch entry for an older dsh-plugin version, so pnpm aborted the install (local config issue)" : kind === "fileLocked" ? "a file in the profile is locked by another process on the user machine (local environment issue)" : kind === "accessDenied" ? "the system denied write access to a file in the profile on the user machine (local environment issue)" : kind === "fsUnavailable" ? "the local file system could not accept the write — no space left, read-only volume, or too many open file handles on the user machine (local environment issue)" : "plugin-side install failure";
2109
2133
  const code = coreErrorCode(message);
2110
2134
  const build = (coreChars) => {
@@ -2113,13 +2137,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2113
2137
  `- Cause: ${reason}`,
2114
2138
  ...code ? [`- Key error: \`${code}\``] : [],
2115
2139
  "",
2116
- `## [DSH Plugin 插件市场](${SITE_URL}) · 安装 Plugin 失败错误信息`,
2117
- `本错误信息由 [dsh-plugin-hub](${GITHUB_URL}) 插件市场的安装程序自动生成,随本次安装失败一并提交。`,
2118
- `- 实际执行的安装命令:${executed ? `\`${executed}\`` : "unknown (no executed command recorded)"}`,
2119
- `- 执行结果:安装失败,未能安装该插件。`,
2140
+ `## [DSH Plugin 插件市场](${SITE_URL}) · ${zhWord} Plugin 失败错误信息`,
2141
+ `本错误信息由 [dsh-plugin-hub](${GITHUB_URL}) 插件市场的安装程序自动生成,随本次${zhWord}失败一并提交。`,
2142
+ `- 实际执行的${zhWord}命令:${executed ? `\`${executed}\`` : "unknown (no executed command recorded)"}`,
2143
+ `- 执行结果:${zhWord}失败,未能${zhWord}该插件。`,
2120
2144
  ...attempts && attempts.length > 0 ? [
2121
2145
  "",
2122
- "## Attempted install channels(已尝试的安装方式)",
2146
+ "## Attempted channels(已尝试的方式)",
2123
2147
  ...attempts.map((a) => `- ${a}`)
2124
2148
  ] : [],
2125
2149
  .../\[packaging\]/i.test(message) ? [
@@ -2169,27 +2193,28 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2169
2193
  }
2170
2194
  return url;
2171
2195
  }
2172
- function hubIssueUrl(pluginRepo, message, env, command, attempts, variant = "triage") {
2196
+ function hubIssueUrl(pluginRepo, message, env, command, attempts, variant = "triage", action = "install") {
2173
2197
  const kind = classifyFailure(message);
2174
2198
  const executed = executedCommandOf(command, attempts);
2199
+ const zhWord = actionWordZh(action);
2175
2200
  const repo = pluginRepo && pluginRepo.trim() !== "" ? pluginRepo.trim() : "unknown";
2176
- const title = variant === "misjudge" ? `[dsh-plugin-hub] possible misjudgment: ${repo}` : `[dsh-plugin-hub] ${reasonTitleOf(kind)}: ${repo}`;
2201
+ const title = variant === "misjudge" ? `[dsh-plugin-hub] possible misjudgment: ${repo}` : `[dsh-plugin-hub] ${reasonTitleOf(kind, action)}: ${repo}`;
2177
2202
  const code = coreErrorCode(message);
2178
2203
  const build = (coreChars) => {
2179
2204
  const body = [
2180
2205
  "## Summary",
2181
- `- Auto-classified cause: ${reasonTitleOf(kind)}`,
2206
+ `- Auto-classified cause: ${reasonTitleOf(kind, action)}`,
2182
2207
  `- Target plugin: \`${repo}\``,
2183
2208
  ...code ? [`- Key error: \`${code}\``] : [],
2184
2209
  ...variant === "misjudge" ? ["- Filed from: the plugin-prepare path (which normally routes to the plugin repo) — filed here because that verdict may be our own misjudgment.", "- Source of that verdict: produced by dsh-plugin-hub's own pre/post-install check, not by pnpm output."] : ["- Why filed here: the installer only routes a failure to the plugin repo when there is positive evidence the plugin build itself failed (pluginPrepare). This failure does not match that, so it is routed here for triage."],
2185
2210
  "",
2186
- `## [DSH Plugin 插件市场](${SITE_URL}) · 安装 Plugin 失败错误信息`,
2187
- `本错误信息由 [dsh-plugin-hub](${GITHUB_URL}) 插件市场的安装程序自动生成,随本次安装失败一并提交。`,
2188
- `- 实际执行的安装命令:${executed ? `\`${executed}\`` : "unknown (no executed command recorded)"}`,
2189
- `- 执行结果:安装失败,未能安装该插件。`,
2211
+ `## [DSH Plugin 插件市场](${SITE_URL}) · ${zhWord} Plugin 失败错误信息`,
2212
+ `本错误信息由 [dsh-plugin-hub](${GITHUB_URL}) 插件市场的安装程序自动生成,随本次${zhWord}失败一并提交。`,
2213
+ `- 实际执行的${zhWord}命令:${executed ? `\`${executed}\`` : "unknown (no executed command recorded)"}`,
2214
+ `- 执行结果:${zhWord}失败,未能${zhWord}该插件。`,
2190
2215
  ...attempts && attempts.length > 0 ? [
2191
2216
  "",
2192
- "## Attempted install channels(已尝试的安装方式)",
2217
+ "## Attempted channels(已尝试的方式)",
2193
2218
  ...attempts.map((a) => `- ${a}`)
2194
2219
  ] : [],
2195
2220
  "",
@@ -3524,10 +3549,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3524
3549
  onClick: onConfirm
3525
3550
  }, busy ? task && task.status === "pending" ? t("queuedUninstallTitle") : t("uninstalling") : t("uninstallConfirm"))))));
3526
3551
  }
3527
- /** 预填插件仓库的 GitHub Issue 链接:标题带插件名,正文附完整错误信息,方便用户一键反馈。 */
3528
- /** 安装/卸载失败弹窗:布局与失败记录一致(类型徽标 + 仓库超链接 + 隐蔽复制按钮),报错完整展示,底部一键提交 Issue。 */
3529
- function ErrorModal({ message, repo, kind, command, attempts, t, env, onCopy, onClose, onRunDiagnostics }) {
3552
+ /** 安装/更新/卸载失败弹窗:标题、徽标、提示文案与 issue 正文都按传入的动作取词。 */
3553
+ function ErrorModal({ message, repo, action, command, attempts, t, env, onCopy, onClose, onRunDiagnostics }) {
3530
3554
  const failureKind = classifyFailure(message);
3555
+ const actionWord = t(action === "uninstall" ? "actionUninstall" : action === "update" ? "actionUpdate" : "actionInstall");
3531
3556
  const npmVersion = npmTooLowVersion(message);
3532
3557
  const copyText = [
3533
3558
  ...command ? [command] : [],
@@ -3543,11 +3568,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3543
3568
  className: Modal_module_css_default.errorModal,
3544
3569
  role: "dialog",
3545
3570
  "aria-modal": "true"
3546
- }, (0, react.createElement)("div", { className: Modal_module_css_default.modalHead }, (0, react.createElement)("div", { className: Modal_module_css_default.errorTitle }, kind === "install" ? t("errorTitleInstall") : t("errorTitleUninstall")), (0, react.createElement)("button", {
3571
+ }, (0, react.createElement)("div", { className: Modal_module_css_default.modalHead }, (0, react.createElement)("div", { className: Modal_module_css_default.errorTitle }, t(action === "uninstall" ? "errorTitleUninstall" : action === "update" ? "errorTitleUpdate" : "errorTitleInstall")), (0, react.createElement)("button", {
3547
3572
  className: Modal_module_css_default.modalClose,
3548
3573
  "aria-label": t("errorClose"),
3549
3574
  onClick: onClose
3550
- }, (0, react.createElement)(CloseIcon))), (0, react.createElement)("div", { className: Modal_module_css_default.modalBody }, (0, react.createElement)("div", { className: Modal_module_css_default.failRow }, (0, react.createElement)("div", { className: Modal_module_css_default.failHead }, (0, react.createElement)("span", { className: kind === "install" ? Modal_module_css_default.failKindInstall : Modal_module_css_default.failKindUninstall }, kind === "install" ? t("install") : t("uninstall")), repo ? (0, react.createElement)("a", {
3575
+ }, (0, react.createElement)(CloseIcon))), (0, react.createElement)("div", { className: Modal_module_css_default.modalBody }, (0, react.createElement)("div", { className: Modal_module_css_default.failRow }, (0, react.createElement)("div", { className: Modal_module_css_default.failHead }, (0, react.createElement)("span", { className: action === "install" ? Modal_module_css_default.failKindInstall : Modal_module_css_default.failKindUninstall }, actionWord), repo ? (0, react.createElement)("a", {
3551
3576
  className: Modal_module_css_default.failRepo,
3552
3577
  href: pluginSiteUrl(repo),
3553
3578
  target: "_blank",
@@ -3567,7 +3592,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3567
3592
  (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPluginMissingDepHint")),
3568
3593
  repo ? (0, react.createElement)("a", {
3569
3594
  className: Modal_module_css_default.failBigIssue,
3570
- href: pluginIssueUrl(repo, message, env, command, attempts),
3595
+ href: pluginIssueUrl(repo, message, env, command, attempts, action),
3571
3596
  target: "_blank",
3572
3597
  rel: "noopener noreferrer",
3573
3598
  title: t("failIssueHint")
@@ -3581,7 +3606,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3581
3606
  const host = registryHostOf(message);
3582
3607
  return host ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failNetworkRegistryHint", { host })) : null;
3583
3608
  })(),
3584
- (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failNetworkHint")),
3609
+ (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failNetworkHint", { action: actionWord })),
3585
3610
  onRunDiagnostics ? (0, react.createElement)("button", {
3586
3611
  className: Modal_module_css_default.failDiagBtn,
3587
3612
  onClick: onRunDiagnostics
@@ -3590,21 +3615,21 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3590
3615
  (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, /\[packaging\]/i.test(message) ? t("failPackagingHint") : t("failPrepareHint")),
3591
3616
  repo ? (0, react.createElement)("a", {
3592
3617
  className: Modal_module_css_default.failBigIssue,
3593
- href: pluginIssueUrl(repo, message, env, command, attempts),
3618
+ href: pluginIssueUrl(repo, message, env, command, attempts, action),
3594
3619
  target: "_blank",
3595
3620
  rel: "noopener noreferrer",
3596
3621
  title: t("failIssueHint")
3597
3622
  }, t("failIssueBig")) : null,
3598
3623
  repo ? (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failMisjudgeHint")), (0, react.createElement)("a", {
3599
3624
  className: Modal_module_css_default.failMisjudgeLink,
3600
- href: hubIssueUrl(repo, message, env, command, attempts, "misjudge"),
3625
+ href: hubIssueUrl(repo, message, env, command, attempts, "misjudge", action),
3601
3626
  target: "_blank",
3602
3627
  rel: "noopener noreferrer",
3603
3628
  title: t("failHubIssueHint")
3604
3629
  }, t("failMisjudgeLink"))]) : null
3605
- ]) : failureKind === "hubState" ? (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failHubStateHint"))]) : failureKind === "timeout" ? (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failTimeoutHint"))]) : failureKind === "profileLock" ? (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failProfileLockHint"))]) : (0, react.createElement)("div", null, [failureKind === "pnpmIgnoredBuild" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failIgnoredBuild")) : (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failUnclassifiedHint")), (0, react.createElement)("a", {
3630
+ ]) : failureKind === "hubState" ? (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failHubStateHint", { action: actionWord }))]) : failureKind === "timeout" ? (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failTimeoutHint"))]) : failureKind === "profileLock" ? (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failProfileLockHint", { action: actionWord }))]) : failureKind === "hostCliSpawn" ? (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failHostCliSpawnHint"))]) : (0, react.createElement)("div", null, [failureKind === "pnpmIgnoredBuild" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failIgnoredBuild")) : (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failUnclassifiedHint", { action: actionWord })), (0, react.createElement)("a", {
3606
3631
  className: Modal_module_css_default.failBigIssue,
3607
- href: hubIssueUrl(repo, message, env, command, attempts),
3632
+ href: hubIssueUrl(repo, message, env, command, attempts, "triage", action),
3608
3633
  target: "_blank",
3609
3634
  rel: "noopener noreferrer",
3610
3635
  title: t("failHubIssueHint")
@@ -4140,6 +4165,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4140
4165
  }
4141
4166
  }, (0, react.createElement)(CloseIcon))), !r.ok && (() => {
4142
4167
  const kind = classifyFailure(r.message);
4168
+ const action = actionOfRecord(r);
4169
+ const actionWord = t(action === "uninstall" ? "actionUninstall" : action === "update" ? "actionUpdate" : "actionInstall");
4143
4170
  if (kind === "npmTooOld") {
4144
4171
  const v = npmTooLowVersion(r.message);
4145
4172
  return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t(v ? "failNpmTooLowV" : "failNpmTooLow", v ? { v } : void 0));
@@ -4163,7 +4190,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4163
4190
  (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPluginMissingDepHint")),
4164
4191
  r.repo && shownRepo ? (0, react.createElement)("a", {
4165
4192
  className: Modal_module_css_default.failBigIssue,
4166
- href: pluginIssueUrl(shownRepo, r.message, env, r.command, r.attempts),
4193
+ href: pluginIssueUrl(shownRepo, r.message, env, r.command, r.attempts, action),
4167
4194
  target: "_blank",
4168
4195
  rel: "noopener noreferrer",
4169
4196
  title: t("failIssueHint")
@@ -4185,7 +4212,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4185
4212
  const host = registryHostOf(r.message);
4186
4213
  return host ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failNetworkRegistryHint", { host })) : null;
4187
4214
  })(),
4188
- (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failNetworkHint")),
4215
+ (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failNetworkHint", { action: actionWord })),
4189
4216
  onRunDiagnostics ? (0, react.createElement)("button", {
4190
4217
  className: Modal_module_css_default.failDiagBtn,
4191
4218
  onClick: onRunDiagnostics
@@ -4195,25 +4222,26 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4195
4222
  (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, /\[packaging\]/i.test(r.message) ? t("failPackagingHint") : t("failPrepareHint")),
4196
4223
  r.repo && shownRepo ? (0, react.createElement)("a", {
4197
4224
  className: Modal_module_css_default.failBigIssue,
4198
- href: pluginIssueUrl(shownRepo, r.message, env, r.command, r.attempts),
4225
+ href: pluginIssueUrl(shownRepo, r.message, env, r.command, r.attempts, action),
4199
4226
  target: "_blank",
4200
4227
  rel: "noopener noreferrer",
4201
4228
  title: t("failIssueHint")
4202
4229
  }, t("failIssueBig")) : null,
4203
4230
  r.repo && shownRepo ? (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failMisjudgeHint")), (0, react.createElement)("a", {
4204
4231
  className: Modal_module_css_default.failMisjudgeLink,
4205
- href: hubIssueUrl(shownRepo, r.message, env, r.command, r.attempts, "misjudge"),
4232
+ href: hubIssueUrl(shownRepo, r.message, env, r.command, r.attempts, "misjudge", action),
4206
4233
  target: "_blank",
4207
4234
  rel: "noopener noreferrer",
4208
4235
  title: t("failHubIssueHint")
4209
4236
  }, t("failMisjudgeLink"))]) : null
4210
4237
  ]);
4211
- if (kind === "hubState") return (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failHubStateHint"))]);
4238
+ if (kind === "hubState") return (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failHubStateHint", { action: actionWord }))]);
4212
4239
  if (kind === "timeout") return (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failTimeoutHint"))]);
4213
- if (kind === "profileLock") return (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failProfileLockHint"))]);
4214
- return (0, react.createElement)("div", null, [kind === "pnpmIgnoredBuild" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failIgnoredBuild")) : (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failUnclassifiedHint")), (0, react.createElement)("a", {
4240
+ if (kind === "profileLock") return (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failProfileLockHint", { action: actionWord }))]);
4241
+ if (kind === "hostCliSpawn") return (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failHostCliSpawnHint"))]);
4242
+ return (0, react.createElement)("div", null, [kind === "pnpmIgnoredBuild" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failIgnoredBuild")) : (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failUnclassifiedHint", { action: actionWord })), (0, react.createElement)("a", {
4215
4243
  className: Modal_module_css_default.failBigIssue,
4216
- href: hubIssueUrl(shownRepo || r.repo, r.message, env, r.command, r.attempts),
4244
+ href: hubIssueUrl(shownRepo || r.repo, r.message, env, r.command, r.attempts, "triage", action),
4217
4245
  target: "_blank",
4218
4246
  rel: "noopener noreferrer",
4219
4247
  title: t("failHubIssueHint")
@@ -4398,40 +4426,40 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4398
4426
  css: css$9
4399
4427
  });
4400
4428
  var List_module_css_default = {
4401
- "actions": "_3XaZHa_actions",
4429
+ "list": "_3XaZHa_list",
4402
4430
  "verified": "_3XaZHa_verified",
4403
- "stateActions": "_3XaZHa_stateActions",
4404
4431
  "body": "_3XaZHa_body",
4405
- "moreSentinel": "_3XaZHa_moreSentinel",
4406
- "cardHead": "_3XaZHa_cardHead",
4407
- "updateBadge": "_3XaZHa_updateBadge",
4408
- "fork": "_3XaZHa_fork",
4409
- "diagBtn": "_3XaZHa_diagBtn",
4410
- "footLink": "_3XaZHa_footLink",
4411
- "footer": "_3XaZHa_footer",
4412
- "versionBadge": "_3XaZHa_versionBadge",
4413
- "detailBtn": "_3XaZHa_detailBtn",
4414
- "state": "_3XaZHa_state",
4432
+ "topics": "_3XaZHa_topics",
4415
4433
  "cardSide": "_3XaZHa_cardSide",
4416
- "cardMain": "_3XaZHa_cardMain",
4434
+ "state": "_3XaZHa_state",
4435
+ "stateDesc": "_3XaZHa_stateDesc",
4436
+ "retryBtn": "_3XaZHa_retryBtn",
4437
+ "stateActions": "_3XaZHa_stateActions",
4438
+ "versionBadge": "_3XaZHa_versionBadge",
4439
+ "cardTitle": "_3XaZHa_cardTitle",
4417
4440
  "desc": "_3XaZHa_desc",
4441
+ "stateTitle": "_3XaZHa_stateTitle",
4442
+ "fork": "_3XaZHa_fork",
4418
4443
  "installBtnInstalled": "_3XaZHa_installBtnInstalled",
4419
- "retryBtn": "_3XaZHa_retryBtn",
4420
- "date": "_3XaZHa_date",
4421
- "categoryBadge": "_3XaZHa_categoryBadge",
4444
+ "installBtnUpdate": "_3XaZHa_installBtnUpdate",
4445
+ "detailBtn": "_3XaZHa_detailBtn",
4446
+ "card": "_3XaZHa_card",
4447
+ "diagBtn": "_3XaZHa_diagBtn",
4448
+ "footLink": "_3XaZHa_footLink",
4449
+ "actions": "_3XaZHa_actions",
4450
+ "moreSentinel": "_3XaZHa_moreSentinel",
4422
4451
  "installBtn": "_3XaZHa_installBtn",
4423
4452
  "installBtnCopied": "_3XaZHa_installBtnCopied",
4424
- "uninstallBtn": "_3XaZHa_uninstallBtn",
4453
+ "footer": "_3XaZHa_footer",
4454
+ "cardMain": "_3XaZHa_cardMain",
4455
+ "cardHead": "_3XaZHa_cardHead",
4425
4456
  "topic": "_3XaZHa_topic",
4426
- "cardTitle": "_3XaZHa_cardTitle",
4427
- "stateDesc": "_3XaZHa_stateDesc",
4428
- "stateTitle": "_3XaZHa_stateTitle",
4429
- "topics": "_3XaZHa_topics",
4430
- "card": "_3XaZHa_card",
4431
- "installBtnUpdate": "_3XaZHa_installBtnUpdate",
4432
- "star": "_3XaZHa_star",
4457
+ "date": "_3XaZHa_date",
4433
4458
  "stats": "_3XaZHa_stats",
4434
- "list": "_3XaZHa_list"
4459
+ "updateBadge": "_3XaZHa_updateBadge",
4460
+ "star": "_3XaZHa_star",
4461
+ "categoryBadge": "_3XaZHa_categoryBadge",
4462
+ "uninstallBtn": "_3XaZHa_uninstallBtn"
4435
4463
  };
4436
4464
  //#endregion
4437
4465
  //#region src/client/hooks/useIncrementalList.ts
@@ -4638,15 +4666,15 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4638
4666
  css: css$8
4639
4667
  });
4640
4668
  var SectionTabs_module_css_default = {
4641
- "root": "_7tvizq_root",
4642
- "tab": "_7tvizq_tab",
4643
4669
  "tabActive": "_7tvizq_tabActive",
4644
4670
  "tabIcon": "_7tvizq_tabIcon",
4645
4671
  "noticeBtn": "_7tvizq_noticeBtn",
4646
- "noticeCount": "_7tvizq_noticeCount",
4647
- "tabCount": "_7tvizq_tabCount",
4672
+ "tab": "_7tvizq_tab",
4673
+ "root": "_7tvizq_root",
4674
+ "tabCountActive": "_7tvizq_tabCountActive",
4648
4675
  "noticeIcon": "_7tvizq_noticeIcon",
4649
- "tabCountActive": "_7tvizq_tabCountActive"
4676
+ "tabCount": "_7tvizq_tabCount",
4677
+ "noticeCount": "_7tvizq_noticeCount"
4650
4678
  };
4651
4679
  //#endregion
4652
4680
  //#region src/client/components/layout/SectionTabs.tsx
@@ -4723,42 +4751,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4723
4751
  css: css$7
4724
4752
  });
4725
4753
  var InstalledView_module_css_default = {
4754
+ "rowUninstall": "_1nXeGW_rowUninstall",
4755
+ "rowDetail": "_1nXeGW_rowDetail",
4726
4756
  "empty": "_1nXeGW_empty",
4757
+ "exampleRow": "_1nXeGW_exampleRow",
4758
+ "rowCategory": "_1nXeGW_rowCategory",
4759
+ "list": "_1nXeGW_list",
4760
+ "rowMeta": "_1nXeGW_rowMeta",
4727
4761
  "rowActions": "_1nXeGW_rowActions",
4728
4762
  "emptyTitle": "_1nXeGW_emptyTitle",
4763
+ "exampleBadge": "_1nXeGW_exampleBadge",
4764
+ "rowTitle": "_1nXeGW_rowTitle",
4765
+ "root": "_1nXeGW_root",
4766
+ "segBtnActive": "_1nXeGW_segBtnActive",
4767
+ "rowRestart": "_1nXeGW_rowRestart",
4729
4768
  "rowMain": "_1nXeGW_rowMain",
4769
+ "row": "_1nXeGW_row",
4770
+ "rowRepo": "_1nXeGW_rowRepo",
4771
+ "statusInactive": "_1nXeGW_statusInactive",
4730
4772
  "versionBadge": "_1nXeGW_versionBadge",
4731
- "updateBadge": "_1nXeGW_updateBadge",
4732
- "rowDetail": "_1nXeGW_rowDetail",
4733
- "exampleRow": "_1nXeGW_exampleRow",
4734
- "rowUninstall": "_1nXeGW_rowUninstall",
4735
- "rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
4736
- "rowRestart": "_1nXeGW_rowRestart",
4737
- "rowCategory": "_1nXeGW_rowCategory",
4773
+ "segRow": "_1nXeGW_segRow",
4738
4774
  "segGroup": "_1nXeGW_segGroup",
4739
- "segLabel": "_1nXeGW_segLabel",
4740
- "statusInactive": "_1nXeGW_statusInactive",
4741
- "row": "_1nXeGW_row",
4742
- "searchWrap": "_1nXeGW_searchWrap",
4743
- "segBtn": "_1nXeGW_segBtn",
4744
- "toolbar": "_1nXeGW_toolbar",
4775
+ "rowSourceTag": "_1nXeGW_rowSourceTag",
4776
+ "rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
4777
+ "rowDesc": "_1nXeGW_rowDesc",
4778
+ "updateBadge": "_1nXeGW_updateBadge",
4745
4779
  "searchInput": "_1nXeGW_searchInput",
4746
- "emptyDesc": "_1nXeGW_emptyDesc",
4780
+ "toolbar": "_1nXeGW_toolbar",
4747
4781
  "rowTitleLine": "_1nXeGW_rowTitleLine",
4748
- "rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
4749
- "segRow": "_1nXeGW_segRow",
4750
- "rowTitle": "_1nXeGW_rowTitle",
4751
- "rowDesc": "_1nXeGW_rowDesc",
4752
4782
  "statusDot": "_1nXeGW_statusDot",
4753
- "rowRepo": "_1nXeGW_rowRepo",
4754
- "rowSourceTag": "_1nXeGW_rowSourceTag",
4755
- "root": "_1nXeGW_root",
4756
- "statusPending": "_1nXeGW_statusPending",
4757
- "rowMeta": "_1nXeGW_rowMeta",
4783
+ "emptyDesc": "_1nXeGW_emptyDesc",
4784
+ "searchWrap": "_1nXeGW_searchWrap",
4758
4785
  "rowUpdate": "_1nXeGW_rowUpdate",
4759
- "list": "_1nXeGW_list",
4760
- "segBtnActive": "_1nXeGW_segBtnActive",
4761
- "exampleBadge": "_1nXeGW_exampleBadge"
4786
+ "segLabel": "_1nXeGW_segLabel",
4787
+ "segBtn": "_1nXeGW_segBtn",
4788
+ "statusPending": "_1nXeGW_statusPending",
4789
+ "rowSourceTagManual": "_1nXeGW_rowSourceTagManual"
4762
4790
  };
4763
4791
  //#endregion
4764
4792
  //#region src/client/components/views/InstalledView.tsx
@@ -5007,28 +5035,28 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5007
5035
  css: css$6
5008
5036
  });
5009
5037
  var CustomInstallView_module_css_default = {
5010
- "installExample": "zISxCG_installExample",
5011
- "installCardDisabled": "zISxCG_installCardDisabled",
5012
- "installRow": "zISxCG_installRow",
5013
- "channelOff": "zISxCG_channelOff",
5014
5038
  "helpCmd": "zISxCG_helpCmd",
5015
5039
  "helpBody": "zISxCG_helpBody",
5016
- "installInsertBtn": "zISxCG_installInsertBtn",
5017
- "helpNote": "zISxCG_helpNote",
5040
+ "helpLine": "zISxCG_helpLine",
5041
+ "channelOffText": "zISxCG_channelOffText",
5018
5042
  "installError": "zISxCG_installError",
5043
+ "installHelpBtn": "zISxCG_installHelpBtn",
5044
+ "root": "zISxCG_root",
5045
+ "desc": "zISxCG_desc",
5019
5046
  "installBtn": "zISxCG_installBtn",
5020
- "installLabel": "zISxCG_installLabel",
5021
- "helpLine": "zISxCG_helpLine",
5047
+ "installCards": "zISxCG_installCards",
5048
+ "helpNote": "zISxCG_helpNote",
5049
+ "installInsertBtn": "zISxCG_installInsertBtn",
5050
+ "channelOff": "zISxCG_channelOff",
5051
+ "installCard": "zISxCG_installCard",
5052
+ "installRow": "zISxCG_installRow",
5022
5053
  "installCardHead": "zISxCG_installCardHead",
5023
- "installInputError": "zISxCG_installInputError",
5024
- "channelOffBtn": "zISxCG_channelOffBtn",
5025
- "root": "zISxCG_root",
5054
+ "installCardDisabled": "zISxCG_installCardDisabled",
5055
+ "installLabel": "zISxCG_installLabel",
5026
5056
  "installInput": "zISxCG_installInput",
5027
- "installCard": "zISxCG_installCard",
5028
- "channelOffText": "zISxCG_channelOffText",
5029
- "installCards": "zISxCG_installCards",
5030
- "installHelpBtn": "zISxCG_installHelpBtn",
5031
- "desc": "zISxCG_desc"
5057
+ "installInputError": "zISxCG_installInputError",
5058
+ "installExample": "zISxCG_installExample",
5059
+ "channelOffBtn": "zISxCG_channelOffBtn"
5032
5060
  };
5033
5061
  //#endregion
5034
5062
  //#region src/client/components/views/CustomInstallView.tsx
@@ -5318,30 +5346,30 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5318
5346
  css: css$5
5319
5347
  });
5320
5348
  var SettingsView_module_css_default = {
5321
- "settingControl": "_506LLG_settingControl",
5322
- "settingControlStack": "_506LLG_settingControlStack",
5323
- "resetBtn": "_506LLG_resetBtn",
5324
- "settingDesc": "_506LLG_settingDesc",
5325
- "navIcon": "_506LLG_navIcon",
5326
- "navItemActive": "_506LLG_navItemActive",
5327
- "proxyHint": "_506LLG_proxyHint",
5328
- "sidebar": "_506LLG_sidebar",
5329
- "card": "_506LLG_card",
5349
+ "settingRowStack": "_506LLG_settingRowStack",
5350
+ "content": "_506LLG_content",
5330
5351
  "settingTitle": "_506LLG_settingTitle",
5352
+ "navItemActive": "_506LLG_navItemActive",
5331
5353
  "pageDesc": "_506LLG_pageDesc",
5354
+ "card": "_506LLG_card",
5332
5355
  "proxyHintOk": "_506LLG_proxyHintOk",
5333
- "pageTitle": "_506LLG_pageTitle",
5334
- "navItem": "_506LLG_navItem",
5335
5356
  "root": "_506LLG_root",
5336
- "pageHeader": "_506LLG_pageHeader",
5337
- "settingLabel": "_506LLG_settingLabel",
5338
- "settingRow": "_506LLG_settingRow",
5339
- "content": "_506LLG_content",
5340
- "settingRowStack": "_506LLG_settingRowStack",
5357
+ "navIcon": "_506LLG_navIcon",
5358
+ "settingControlStack": "_506LLG_settingControlStack",
5341
5359
  "textInput": "_506LLG_textInput",
5342
5360
  "proxyControl": "_506LLG_proxyControl",
5343
- "proxyHintFail": "_506LLG_proxyHintFail",
5344
- "controlDropdown": "_506LLG_controlDropdown"
5361
+ "sidebar": "_506LLG_sidebar",
5362
+ "settingLabel": "_506LLG_settingLabel",
5363
+ "settingDesc": "_506LLG_settingDesc",
5364
+ "controlDropdown": "_506LLG_controlDropdown",
5365
+ "resetBtn": "_506LLG_resetBtn",
5366
+ "pageHeader": "_506LLG_pageHeader",
5367
+ "settingRow": "_506LLG_settingRow",
5368
+ "navItem": "_506LLG_navItem",
5369
+ "pageTitle": "_506LLG_pageTitle",
5370
+ "settingControl": "_506LLG_settingControl",
5371
+ "proxyHint": "_506LLG_proxyHint",
5372
+ "proxyHintFail": "_506LLG_proxyHintFail"
5345
5373
  };
5346
5374
  //#endregion
5347
5375
  //#region \0dsh-css:src/client/styles/Dropdown.module.css.mjs
@@ -5360,18 +5388,18 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5360
5388
  css: css$4
5361
5389
  });
5362
5390
  var Dropdown_module_css_default = {
5363
- "dropdownPanel": "B_Gxsq_dropdownPanel",
5364
- "dropdownItem": "B_Gxsq_dropdownItem",
5365
- "dropdown": "B_Gxsq_dropdown",
5391
+ "dropdownBtn": "B_Gxsq_dropdownBtn",
5366
5392
  "dropdownFill": "B_Gxsq_dropdownFill",
5367
- "dropdownLabel": "B_Gxsq_dropdownLabel",
5368
- "dropdownItemLabel": "B_Gxsq_dropdownItemLabel",
5369
- "dropdownArrow": "B_Gxsq_dropdownArrow",
5370
5393
  "dropdownCount": "B_Gxsq_dropdownCount",
5371
- "dropdownItemActive": "B_Gxsq_dropdownItemActive",
5372
- "dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen",
5373
5394
  "dropdownCountActive": "B_Gxsq_dropdownCountActive",
5374
- "dropdownBtn": "B_Gxsq_dropdownBtn"
5395
+ "dropdown": "B_Gxsq_dropdown",
5396
+ "dropdownItem": "B_Gxsq_dropdownItem",
5397
+ "dropdownItemLabel": "B_Gxsq_dropdownItemLabel",
5398
+ "dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen",
5399
+ "dropdownLabel": "B_Gxsq_dropdownLabel",
5400
+ "dropdownPanel": "B_Gxsq_dropdownPanel",
5401
+ "dropdownItemActive": "B_Gxsq_dropdownItemActive",
5402
+ "dropdownArrow": "B_Gxsq_dropdownArrow"
5375
5403
  };
5376
5404
  //#endregion
5377
5405
  //#region \0dsh-css:src/client/styles/Toggle.module.css.mjs
@@ -5390,9 +5418,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5390
5418
  css: css$3
5391
5419
  });
5392
5420
  var Toggle_module_css_default = {
5421
+ "toggleOn": "k-cD4G_toggleOn",
5393
5422
  "toggle": "k-cD4G_toggle",
5394
- "knob": "k-cD4G_knob",
5395
- "toggleOn": "k-cD4G_toggleOn"
5423
+ "knob": "k-cD4G_knob"
5396
5424
  };
5397
5425
  //#endregion
5398
5426
  //#region src/client/components/ui/Toggle.tsx
@@ -5492,29 +5520,29 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5492
5520
  css: css$2
5493
5521
  });
5494
5522
  var DiagnosticsView_module_css_default = {
5495
- "summaryFail": "k9eRya_summaryFail",
5523
+ "envTitle": "k9eRya_envTitle",
5496
5524
  "runBtn": "k9eRya_runBtn",
5497
- "panel": "k9eRya_panel",
5525
+ "headHint": "k9eRya_headHint",
5498
5526
  "badgeOk": "k9eRya_badgeOk",
5499
- "badge": "k9eRya_badge",
5527
+ "summaryFail": "k9eRya_summaryFail",
5528
+ "panel": "k9eRya_panel",
5500
5529
  "badgeIdle": "k9eRya_badgeIdle",
5501
- "summaryOk": "k9eRya_summaryOk",
5502
- "meta": "k9eRya_meta",
5503
5530
  "envDesc": "k9eRya_envDesc",
5504
- "badgeFail": "k9eRya_badgeFail",
5505
- "row": "k9eRya_row",
5506
- "summaryRunning": "k9eRya_summaryRunning",
5507
- "envLabel": "k9eRya_envLabel",
5531
+ "envRow": "k9eRya_envRow",
5508
5532
  "display": "k9eRya_display",
5509
- "envTitle": "k9eRya_envTitle",
5510
5533
  "envCopyBtn": "k9eRya_envCopyBtn",
5511
- "headHint": "k9eRya_headHint",
5512
- "head": "k9eRya_head",
5513
- "badgeRunning": "k9eRya_badgeRunning",
5514
5534
  "diagPulse": "k9eRya_diagPulse",
5515
5535
  "summary": "k9eRya_summary",
5516
- "envRow": "k9eRya_envRow",
5517
- "name": "k9eRya_name"
5536
+ "row": "k9eRya_row",
5537
+ "badgeRunning": "k9eRya_badgeRunning",
5538
+ "summaryOk": "k9eRya_summaryOk",
5539
+ "head": "k9eRya_head",
5540
+ "name": "k9eRya_name",
5541
+ "badgeFail": "k9eRya_badgeFail",
5542
+ "envLabel": "k9eRya_envLabel",
5543
+ "meta": "k9eRya_meta",
5544
+ "badge": "k9eRya_badge",
5545
+ "summaryRunning": "k9eRya_summaryRunning"
5518
5546
  };
5519
5547
  //#endregion
5520
5548
  //#region src/client/components/views/DiagnosticsView.tsx
@@ -5692,57 +5720,57 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5692
5720
  css: css$1
5693
5721
  });
5694
5722
  var LogsView_module_css_default = {
5695
- "entry": "_3j77BW_entry",
5696
- "actions": "_3j77BW_actions",
5697
5723
  "pathDialog": "_3j77BW_pathDialog",
5698
- "pathDialogRow": "_3j77BW_pathDialogRow",
5699
- "event": "_3j77BW_event",
5700
- "pathRow": "_3j77BW_pathRow",
5701
- "headHint": "_3j77BW_headHint",
5702
- "pathText": "_3j77BW_pathText",
5703
- "filterChipActive": "_3j77BW_filterChipActive",
5704
- "searchInput": "_3j77BW_searchInput",
5724
+ "pathDialogReset": "_3j77BW_pathDialogReset",
5725
+ "pathDraft": "_3j77BW_pathDraft",
5726
+ "filterBar": "_3j77BW_filterBar",
5727
+ "catUpdate": "_3j77BW_catUpdate",
5728
+ "moreEnd": "_3j77BW_moreEnd",
5705
5729
  "footActions": "_3j77BW_footActions",
5706
- "filterChip": "_3j77BW_filterChip",
5707
- "footFail": "_3j77BW_footFail",
5708
- "pathDialogDesc": "_3j77BW_pathDialogDesc",
5709
- "badgeSuccess": "_3j77BW_badgeSuccess",
5710
- "badgeInfo": "_3j77BW_badgeInfo",
5711
- "catBadge": "_3j77BW_catBadge",
5712
- "footCount": "_3j77BW_footCount",
5713
- "list": "_3j77BW_list",
5714
5730
  "badgeDebug": "_3j77BW_badgeDebug",
5715
- "catUninstall": "_3j77BW_catUninstall",
5731
+ "actions": "_3j77BW_actions",
5732
+ "badgeInfo": "_3j77BW_badgeInfo",
5733
+ "pathLabel": "_3j77BW_pathLabel",
5734
+ "catInstall": "_3j77BW_catInstall",
5735
+ "entry": "_3j77BW_entry",
5736
+ "badgeSuccess": "_3j77BW_badgeSuccess",
5716
5737
  "pathDialogHint": "_3j77BW_pathDialogHint",
5717
- "headActions": "_3j77BW_headActions",
5718
- "catSystem": "_3j77BW_catSystem",
5719
5738
  "empty": "_3j77BW_empty",
5720
- "panel": "_3j77BW_panel",
5721
- "more": "_3j77BW_more",
5722
- "foot": "_3j77BW_foot",
5739
+ "filterChipActive": "_3j77BW_filterChipActive",
5740
+ "btn": "_3j77BW_btn",
5723
5741
  "head": "_3j77BW_head",
5724
- "catInstall": "_3j77BW_catInstall",
5725
- "pathDialogReset": "_3j77BW_pathDialogReset",
5726
- "catDiagnostics": "_3j77BW_catDiagnostics",
5727
- "pathLabel": "_3j77BW_pathLabel",
5728
- "logList": "_3j77BW_logList",
5729
- "clearBtn": "_3j77BW_clearBtn",
5730
- "pathDialogFoot": "_3j77BW_pathDialogFoot",
5742
+ "panel": "_3j77BW_panel",
5743
+ "search": "_3j77BW_search",
5744
+ "time": "_3j77BW_time",
5745
+ "pathDialogRow": "_3j77BW_pathDialogRow",
5731
5746
  "catSettings": "_3j77BW_catSettings",
5747
+ "headActions": "_3j77BW_headActions",
5748
+ "pathDialogDesc": "_3j77BW_pathDialogDesc",
5749
+ "pathRow": "_3j77BW_pathRow",
5732
5750
  "linkBtn": "_3j77BW_linkBtn",
5733
- "previewRow": "_3j77BW_previewRow",
5751
+ "footCount": "_3j77BW_footCount",
5752
+ "catUninstall": "_3j77BW_catUninstall",
5753
+ "list": "_3j77BW_list",
5754
+ "catDiagnostics": "_3j77BW_catDiagnostics",
5755
+ "pathDialogFoot": "_3j77BW_pathDialogFoot",
5756
+ "clearBtn": "_3j77BW_clearBtn",
5757
+ "logList": "_3j77BW_logList",
5758
+ "badge": "_3j77BW_badge",
5759
+ "message": "_3j77BW_message",
5760
+ "catSystem": "_3j77BW_catSystem",
5761
+ "searchInput": "_3j77BW_searchInput",
5762
+ "more": "_3j77BW_more",
5763
+ "filterChip": "_3j77BW_filterChip",
5764
+ "headHint": "_3j77BW_headHint",
5765
+ "pathText": "_3j77BW_pathText",
5734
5766
  "footPath": "_3j77BW_footPath",
5735
- "search": "_3j77BW_search",
5767
+ "event": "_3j77BW_event",
5768
+ "footFail": "_3j77BW_footFail",
5736
5769
  "badgeError": "_3j77BW_badgeError",
5737
5770
  "badgeWarn": "_3j77BW_badgeWarn",
5738
- "btn": "_3j77BW_btn",
5739
- "catUpdate": "_3j77BW_catUpdate",
5740
- "filterBar": "_3j77BW_filterBar",
5741
- "message": "_3j77BW_message",
5742
- "moreEnd": "_3j77BW_moreEnd",
5743
- "time": "_3j77BW_time",
5744
- "pathDraft": "_3j77BW_pathDraft",
5745
- "badge": "_3j77BW_badge"
5771
+ "catBadge": "_3j77BW_catBadge",
5772
+ "previewRow": "_3j77BW_previewRow",
5773
+ "foot": "_3j77BW_foot"
5746
5774
  };
5747
5775
  //#endregion
5748
5776
  //#region src/client/components/modals/LogsModal.tsx
@@ -6635,7 +6663,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6635
6663
  const [uninstallNeedsReload, setUninstallNeedsReload] = (0, react.useState)(false);
6636
6664
  /** 结果视图「立即重启」:请求宿主重启后进入等待,服务回来后整页刷新 */
6637
6665
  const [restarting, setRestarting] = (0, react.useState)(false);
6638
- /** 操作失败完整信息 + 所属插件仓库 + 失败类型(决定弹窗标题「安装失败/卸载失败」)+ 实际执行的安装命令 + 尝试过的安装方式(issue 预填用) */
6666
+ /** 操作失败信息 + 归属仓库 + 动作(决定弹窗标题与上报措辞)+ 命令与尝试记录(issue 预填用) */
6639
6667
  const [errorMsg, setErrorMsg] = (0, react.useState)(null);
6640
6668
  /** 通知中心记录:localStorage 持久化,每次安装/卸载任务成败都留痕(启动时读回) */
6641
6669
  const [notifications, setNotifications] = (0, react.useState)(() => loadNotifications());
@@ -6702,7 +6730,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6702
6730
  setErrorMsg({
6703
6731
  message,
6704
6732
  repo: issueRepo,
6705
- kind,
6733
+ action: update ? "update" : kind,
6706
6734
  command,
6707
6735
  attempts
6708
6736
  });
@@ -7019,7 +7047,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
7019
7047
  openSection: settingsSection,
7020
7048
  onConsumedOpenSection: () => setSettingsSection(null)
7021
7049
  }), showHubUpdate && (0, react.createElement)(HubUpdateModal, {
7022
- info: catalog.hubUpdateInfo ?? { version: "1.6.11" },
7050
+ info: catalog.hubUpdateInfo ?? { version: "1.6.12" },
7023
7051
  state: catalog.hubUpdateState,
7024
7052
  currentVersion: catalog.hubCurrentVersion,
7025
7053
  lang,
@@ -7243,7 +7271,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
7243
7271
  }), errorMsg && (0, react.createElement)(ErrorModal, {
7244
7272
  message: errorMsg.message,
7245
7273
  repo: errorMsg.repo,
7246
- kind: errorMsg.kind,
7274
+ action: errorMsg.action,
7247
7275
  command: errorMsg.command,
7248
7276
  attempts: errorMsg.attempts,
7249
7277
  t,