dsh-plugin 1.3.8 → 1.3.10

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
@@ -290,6 +290,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
290
290
  failNetworkHint: "安装前检测到网络不通:无法连接到安装源(可能是断网、DNS 解析失败、被防火墙拦截,或代理配置有问题)。这不是插件本身的问题 —— 请检查网络连接,或到「设置」里确认 HTTP 代理配置,再到「系统诊断」运行一次连通性检测,然后重试。",
291
291
  failNetworkTarget: "无法访问 {url} —— 你的网络连接不通",
292
292
  failNetworkRunDiag: "去系统诊断检测网络",
293
+ failDshMissingHint: "系统找不到 dsh 命令(dsh 未加入系统 PATH),无法调用安装器执行安装。请确认 DeepSeek Harness 已正确安装、dsh 已加入 PATH(或重新安装),然后重试。这不是插件本身的问题。",
294
+ failPnpmMissingHint: "安装器找到了 dsh,但系统里没有 pnpm 命令(dsh 用它来管理 profile 插件)。请先安装 pnpm(如 npm install -g pnpm),确认 pnpm 已加入 PATH 后重试。这不是插件本身的问题。",
295
+ failPnpmStoreHint: "安装器调用 pnpm 时报「store 位置不匹配」(ERR_PNPM_UNEXPECTED_STORE):你的 profile 目录里旧插件依赖是用另一个大版本的 pnpm 生成的,当前 pnpm 出于安全不认旧目录,导致任何插件装进该 profile 都会失败。请删除该 profile 目录下的 node_modules 与 pnpm-lock.yaml(可先到「系统日志」或 ~/.dsh/profiles/<profile>/hub.log 查看完整报错),再重新安装。这不是插件本身的问题。",
296
+ installChannelNpm: "NPM 包",
297
+ installChannelGit: "GitHub 源码",
298
+ installChannelDsh: "DSH 命令",
299
+ installEntryLine: "安装入口:{c}。",
293
300
  reportIssue: "去插件仓库提交 Issue",
294
301
  detail: "打开详情",
295
302
  noResult: "没有找到匹配的插件",
@@ -606,6 +613,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
606
613
  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.",
607
614
  failNetworkTarget: "Cannot reach {url} — your network connection is down",
608
615
  failNetworkRunDiag: "Run a network diagnostic",
616
+ failDshMissingHint: "The dsh command could not be found (it is not on the system PATH), so the installer could not run. Please make sure DeepSeek Harness is installed correctly and dsh is on your PATH (or reinstall it), then retry. This is not a problem with the plugin itself.",
617
+ failPnpmMissingHint: "The installer found dsh, but pnpm is missing on this machine (dsh uses it to manage profile plugins). Please install pnpm first (e.g. npm install -g pnpm), make sure it is on your PATH, then retry. This is not a problem with the plugin itself.",
618
+ failPnpmStoreHint: "pnpm reported an unexpected store location (ERR_PNPM_UNEXPECTED_STORE): the profile directory was previously set up with a different major version of pnpm, and the current pnpm refuses to reuse it — no plugin can be installed into that profile. Delete node_modules and pnpm-lock.yaml under the profile directory (see System Logs or ~/.dsh/profiles/<profile>/hub.log for the full output), then reinstall. This is not a problem with the plugin itself.",
619
+ installChannelNpm: "NPM package",
620
+ installChannelGit: "GitHub source",
621
+ installChannelDsh: "DSH command",
622
+ installEntryLine: "Install entry: {c}.",
609
623
  reportIssue: "Report an Issue to the plugin repo",
610
624
  detail: "Open details",
611
625
  noResult: "No plugins match your search",
@@ -658,42 +672,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
658
672
  css: css$11
659
673
  });
660
674
  var Header_module_css_default = {
661
- "headerRight": "qikqja_headerRight",
675
+ "headerTitleRow": "qikqja_headerTitleRow",
676
+ "tabs": "qikqja_tabs",
677
+ "adText": "qikqja_adText",
662
678
  "resultCount": "qikqja_resultCount",
679
+ "logoIcon": "qikqja_logoIcon",
680
+ "tabCount": "qikqja_tabCount",
681
+ "tabActive": "qikqja_tabActive",
663
682
  "adBanner": "qikqja_adBanner",
664
683
  "segLabel": "qikqja_segLabel",
665
- "adBadge": "qikqja_adBadge",
666
- "search": "qikqja_search",
667
- "root": "qikqja_root",
668
- "headerTitleRow": "qikqja_headerTitleRow",
669
- "resultSeg": "qikqja_resultSeg",
670
- "tabCount": "qikqja_tabCount",
684
+ "segGroup": "qikqja_segGroup",
671
685
  "githubIcon": "qikqja_githubIcon",
672
- "title": "qikqja_title",
673
- "segBtn": "qikqja_segBtn",
674
- "tabs": "qikqja_tabs",
675
- "versionBtn": "qikqja_versionBtn",
686
+ "tagline": "qikqja_tagline",
676
687
  "aboutBtn": "qikqja_aboutBtn",
677
- "logoIcon": "qikqja_logoIcon",
678
- "controls": "qikqja_controls",
679
- "taglineLink": "qikqja_taglineLink",
680
- "hubUpdateBadge": "qikqja_hubUpdateBadge",
681
- "copyIcon": "qikqja_copyIcon",
682
- "segBtnActive": "qikqja_segBtnActive",
688
+ "root": "qikqja_root",
689
+ "versionBtn": "qikqja_versionBtn",
683
690
  "searchRow": "qikqja_searchRow",
684
- "adText": "qikqja_adText",
685
- "tabActive": "qikqja_tabActive",
686
- "githubLink": "qikqja_githubLink",
691
+ "segBtnActive": "qikqja_segBtnActive",
692
+ "version": "qikqja_version",
693
+ "tab": "qikqja_tab",
694
+ "langBtn": "qikqja_langBtn",
695
+ "adArrow": "qikqja_adArrow",
696
+ "headerRight": "qikqja_headerRight",
687
697
  "tabsRow": "qikqja_tabsRow",
688
- "sortGroup": "qikqja_sortGroup",
698
+ "search": "qikqja_search",
699
+ "title": "qikqja_title",
689
700
  "header": "qikqja_header",
690
- "langBtn": "qikqja_langBtn",
701
+ "hubUpdateBadge": "qikqja_hubUpdateBadge",
702
+ "controls": "qikqja_controls",
691
703
  "brandTitle": "qikqja_brandTitle",
692
- "tagline": "qikqja_tagline",
693
- "tab": "qikqja_tab",
694
- "segGroup": "qikqja_segGroup",
695
- "version": "qikqja_version",
696
- "adArrow": "qikqja_adArrow"
704
+ "resultSeg": "qikqja_resultSeg",
705
+ "segBtn": "qikqja_segBtn",
706
+ "adBadge": "qikqja_adBadge",
707
+ "sortGroup": "qikqja_sortGroup",
708
+ "taglineLink": "qikqja_taglineLink",
709
+ "copyIcon": "qikqja_copyIcon",
710
+ "githubLink": "qikqja_githubLink"
697
711
  };
698
712
  //#endregion
699
713
  //#region \0dsh-css:src/client/styles/Modal.module.css.mjs
@@ -712,136 +726,136 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
712
726
  css: css$10
713
727
  });
714
728
  var Modal_module_css_default = {
715
- "modalClose": "BiQ1zG_modalClose",
716
- "queuedHint": "BiQ1zG_queuedHint",
729
+ "helpModal": "BiQ1zG_helpModal",
730
+ "aboutModal": "BiQ1zG_aboutModal",
731
+ "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
732
+ "detailLink": "BiQ1zG_detailLink",
733
+ "failNetworkTarget": "BiQ1zG_failNetworkTarget",
734
+ "pendingRowStatus": "BiQ1zG_pendingRowStatus",
735
+ "detailUpdateHint": "BiQ1zG_detailUpdateHint",
736
+ "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
737
+ "queueRow": "BiQ1zG_queueRow",
738
+ "noticeRowMain": "BiQ1zG_noticeRowMain",
739
+ "noticeRemove": "BiQ1zG_noticeRemove",
717
740
  "resultCheckIcon": "BiQ1zG_resultCheckIcon",
718
- "modalActions": "BiQ1zG_modalActions",
741
+ "progressTrack": "BiQ1zG_progressTrack",
742
+ "detailStatusRunning": "BiQ1zG_detailStatusRunning",
743
+ "linkIcon": "BiQ1zG_linkIcon",
744
+ "noticeIgnore": "BiQ1zG_noticeIgnore",
719
745
  "logModal": "BiQ1zG_logModal",
720
- "modalCopy": "BiQ1zG_modalCopy",
721
- "restartLater": "BiQ1zG_restartLater",
722
- "queueSectionTitle": "BiQ1zG_queueSectionTitle",
723
- "noticeMain": "BiQ1zG_noticeMain",
724
- "failRepo": "BiQ1zG_failRepo",
746
+ "modalCmdText": "BiQ1zG_modalCmdText",
747
+ "aboutContent": "BiQ1zG_aboutContent",
748
+ "noticeFoot": "BiQ1zG_noticeFoot",
749
+ "queuedHint": "BiQ1zG_queuedHint",
750
+ "modalInstall": "BiQ1zG_modalInstall",
751
+ "resultDesc": "BiQ1zG_resultDesc",
752
+ "queueRowTrack": "BiQ1zG_queueRowTrack",
753
+ "noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
754
+ "result": "BiQ1zG_result",
755
+ "modalCmdCopy": "BiQ1zG_modalCmdCopy",
756
+ "modalWide": "BiQ1zG_modalWide",
757
+ "resultCheck": "BiQ1zG_resultCheck",
725
758
  "noticeList": "BiQ1zG_noticeList",
726
- "noticeIgnore": "BiQ1zG_noticeIgnore",
727
- "modalTitleBusy": "BiQ1zG_modalTitleBusy",
759
+ "failEmpty": "BiQ1zG_failEmpty",
728
760
  "detailLabel": "BiQ1zG_detailLabel",
729
- "detailPathActions": "BiQ1zG_detailPathActions",
730
- "modalDesc": "BiQ1zG_modalDesc",
731
- "modalCloseIcon": "BiQ1zG_modalCloseIcon",
732
- "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
761
+ "noticeRow": "BiQ1zG_noticeRow",
733
762
  "modalLabel": "BiQ1zG_modalLabel",
734
- "modalLink": "BiQ1zG_modalLink",
735
- "failDiagBtn": "BiQ1zG_failDiagBtn",
736
- "restartNowWarning": "BiQ1zG_restartNowWarning",
737
- "trustHint": "BiQ1zG_trustHint",
738
- "linkIcon": "BiQ1zG_linkIcon",
763
+ "detailValue": "BiQ1zG_detailValue",
764
+ "failedCopyHint": "BiQ1zG_failedCopyHint",
765
+ "failKindUninstall": "BiQ1zG_failKindUninstall",
766
+ "toastFail": "BiQ1zG_toastFail",
767
+ "detailPath": "BiQ1zG_detailPath",
768
+ "noticeMain": "BiQ1zG_noticeMain",
769
+ "confirmIconWrap": "BiQ1zG_confirmIconWrap",
739
770
  "detailStatusPending": "BiQ1zG_detailStatusPending",
740
- "detailStatusRunning": "BiQ1zG_detailStatusRunning",
741
- "failCopy": "BiQ1zG_failCopy",
771
+ "restartLater": "BiQ1zG_restartLater",
772
+ "failBigIssue": "BiQ1zG_failBigIssue",
773
+ "modalDesc": "BiQ1zG_modalDesc",
774
+ "hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
775
+ "dangerConfirm": "BiQ1zG_dangerConfirm",
776
+ "progressFill": "BiQ1zG_progressFill",
777
+ "detailMono": "BiQ1zG_detailMono",
778
+ "detailStars": "BiQ1zG_detailStars",
779
+ "queueRowStatus": "BiQ1zG_queueRowStatus",
780
+ "progress": "BiQ1zG_progress",
781
+ "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
782
+ "queueRowHead": "BiQ1zG_queueRowHead",
783
+ "errorHint": "BiQ1zG_errorHint",
784
+ "failDiagBtn": "BiQ1zG_failDiagBtn",
785
+ "overlayIn": "BiQ1zG_overlayIn",
742
786
  "progressHead": "BiQ1zG_progressHead",
787
+ "failHead": "BiQ1zG_failHead",
743
788
  "detailPathBtn": "BiQ1zG_detailPathBtn",
744
- "progress": "BiQ1zG_progress",
745
- "hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
746
- "resultDesc": "BiQ1zG_resultDesc",
747
789
  "confirmPrimary": "BiQ1zG_confirmPrimary",
748
- "noticeTime": "BiQ1zG_noticeTime",
749
- "queueRowBody": "BiQ1zG_queueRowBody",
750
- "failNetworkTarget": "BiQ1zG_failNetworkTarget",
751
- "noticeVersion": "BiQ1zG_noticeVersion",
790
+ "modalCopy": "BiQ1zG_modalCopy",
752
791
  "modal": "BiQ1zG_modal",
753
- "failKindInstall": "BiQ1zG_failKindInstall",
754
- "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
755
- "detailStatusText": "BiQ1zG_detailStatusText",
756
- "modalCancel": "BiQ1zG_modalCancel",
757
- "result": "BiQ1zG_result",
758
- "errorTitle": "BiQ1zG_errorTitle",
759
- "modalCmdText": "BiQ1zG_modalCmdText",
760
- "progressFill": "BiQ1zG_progressFill",
761
- "toastIn": "BiQ1zG_toastIn",
762
- "confirmIconDanger": "BiQ1zG_confirmIconDanger",
763
- "noticeRow": "BiQ1zG_noticeRow",
764
- "noticeRowOk": "BiQ1zG_noticeRowOk",
765
- "modalIn": "BiQ1zG_modalIn",
792
+ "modalActions": "BiQ1zG_modalActions",
793
+ "resultTitle": "BiQ1zG_resultTitle",
794
+ "errorBox": "BiQ1zG_errorBox",
766
795
  "cliOnlyHint": "BiQ1zG_cliOnlyHint",
767
- "queueRowStatus": "BiQ1zG_queueRowStatus",
768
- "failEmpty": "BiQ1zG_failEmpty",
769
- "detailMono": "BiQ1zG_detailMono",
770
- "stripCancel": "BiQ1zG_stripCancel",
771
- "errorCopySoft": "BiQ1zG_errorCopySoft",
772
- "toastFail": "BiQ1zG_toastFail",
773
- "resultCheck": "BiQ1zG_resultCheck",
774
- "helpModal": "BiQ1zG_helpModal",
775
- "modalCmdCopy": "BiQ1zG_modalCmdCopy",
776
- "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
777
- "dangerConfirm": "BiQ1zG_dangerConfirm",
778
- "queueRow": "BiQ1zG_queueRow",
779
796
  "confirmIcon": "BiQ1zG_confirmIcon",
780
- "noticeTextFail": "BiQ1zG_noticeTextFail",
781
- "hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
782
- "failHead": "BiQ1zG_failHead",
783
- "aboutContent": "BiQ1zG_aboutContent",
797
+ "detailModal": "BiQ1zG_detailModal",
798
+ "modalTitleQueued": "BiQ1zG_modalTitleQueued",
799
+ "modalHead": "BiQ1zG_modalHead",
800
+ "failCopy": "BiQ1zG_failCopy",
801
+ "modalIn": "BiQ1zG_modalIn",
802
+ "noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
803
+ "modalLink": "BiQ1zG_modalLink",
804
+ "noticeVersion": "BiQ1zG_noticeVersion",
805
+ "failList": "BiQ1zG_failList",
806
+ "failRepo": "BiQ1zG_failRepo",
807
+ "trustHint": "BiQ1zG_trustHint",
808
+ "detailPathActions": "BiQ1zG_detailPathActions",
809
+ "queueRowBody": "BiQ1zG_queueRowBody",
810
+ "modalTitleBusy": "BiQ1zG_modalTitleBusy",
811
+ "restartNow": "BiQ1zG_restartNow",
812
+ "errorTitle": "BiQ1zG_errorTitle",
784
813
  "aboutMeta": "BiQ1zG_aboutMeta",
785
- "detailRow": "BiQ1zG_detailRow",
786
- "resultRestarting": "BiQ1zG_resultRestarting",
787
- "noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
788
- "failClear": "BiQ1zG_failClear",
789
- "errorHint": "BiQ1zG_errorHint",
790
- "modalValue": "BiQ1zG_modalValue",
791
- "toast": "BiQ1zG_toast",
814
+ "noticeTime": "BiQ1zG_noticeTime",
815
+ "noticeTextOk": "BiQ1zG_noticeTextOk",
816
+ "progressFillFail": "BiQ1zG_progressFillFail",
792
817
  "queueRowDesc": "BiQ1zG_queueRowDesc",
793
- "progressText": "BiQ1zG_progressText",
794
- "modalRow": "BiQ1zG_modalRow",
818
+ "failRow": "BiQ1zG_failRow",
819
+ "pendingRowActions": "BiQ1zG_pendingRowActions",
795
820
  "errorModal": "BiQ1zG_errorModal",
796
- "modalBody": "BiQ1zG_modalBody",
821
+ "detailArrow": "BiQ1zG_detailArrow",
822
+ "modalCancel": "BiQ1zG_modalCancel",
823
+ "restartNowWarning": "BiQ1zG_restartNowWarning",
824
+ "modalCloseIcon": "BiQ1zG_modalCloseIcon",
825
+ "toastIn": "BiQ1zG_toastIn",
826
+ "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
827
+ "detailGrid": "BiQ1zG_detailGrid",
828
+ "failClear": "BiQ1zG_failClear",
829
+ "overlay": "BiQ1zG_overlay",
830
+ "modalValue": "BiQ1zG_modalValue",
831
+ "noticeRowOk": "BiQ1zG_noticeRowOk",
797
832
  "queueRowTarget": "BiQ1zG_queueRowTarget",
798
- "errorBox": "BiQ1zG_errorBox",
799
833
  "queueSection": "BiQ1zG_queueSection",
800
- "detailStars": "BiQ1zG_detailStars",
801
- "detailPathText": "BiQ1zG_detailPathText",
802
- "pendingRowStatus": "BiQ1zG_pendingRowStatus",
834
+ "failKind": "BiQ1zG_failKind",
835
+ "modalClose": "BiQ1zG_modalClose",
836
+ "modalBody": "BiQ1zG_modalBody",
837
+ "queueRowPct": "BiQ1zG_queueRowPct",
838
+ "toast": "BiQ1zG_toast",
839
+ "hubUpdateModal": "BiQ1zG_hubUpdateModal",
803
840
  "failPrepareHint": "BiQ1zG_failPrepareHint",
841
+ "errorCopySoft": "BiQ1zG_errorCopySoft",
804
842
  "noticeHead": "BiQ1zG_noticeHead",
805
- "failList": "BiQ1zG_failList",
806
- "resultTitle": "BiQ1zG_resultTitle",
807
- "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
808
- "progressTrack": "BiQ1zG_progressTrack",
809
- "failKind": "BiQ1zG_failKind",
810
- "detailPath": "BiQ1zG_detailPath",
811
- "failedCopyHint": "BiQ1zG_failedCopyHint",
843
+ "detailRow": "BiQ1zG_detailRow",
812
844
  "detailDim": "BiQ1zG_detailDim",
813
- "queueRowTrack": "BiQ1zG_queueRowTrack",
814
- "modalInstall": "BiQ1zG_modalInstall",
815
- "noticeRemove": "BiQ1zG_noticeRemove",
816
- "queueRowPct": "BiQ1zG_queueRowPct",
817
- "overlay": "BiQ1zG_overlay",
818
- "uninstallConfirm": "BiQ1zG_uninstallConfirm",
819
- "confirmIconWrap": "BiQ1zG_confirmIconWrap",
820
- "failBigIssue": "BiQ1zG_failBigIssue",
821
- "noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
822
- "detailArrow": "BiQ1zG_detailArrow",
823
- "detailLink": "BiQ1zG_detailLink",
824
- "detailValue": "BiQ1zG_detailValue",
825
- "detailModal": "BiQ1zG_detailModal",
826
845
  "modalCmd": "BiQ1zG_modalCmd",
827
- "noticeFoot": "BiQ1zG_noticeFoot",
828
- "modalTitleQueued": "BiQ1zG_modalTitleQueued",
829
- "noticeTextOk": "BiQ1zG_noticeTextOk",
830
- "progressFillFail": "BiQ1zG_progressFillFail",
831
- "noticeRowMain": "BiQ1zG_noticeRowMain",
832
- "overlayIn": "BiQ1zG_overlayIn",
833
- "restartNow": "BiQ1zG_restartNow",
834
- "failRow": "BiQ1zG_failRow",
846
+ "uninstallConfirm": "BiQ1zG_uninstallConfirm",
847
+ "detailPathText": "BiQ1zG_detailPathText",
848
+ "stripCancel": "BiQ1zG_stripCancel",
849
+ "failKindInstall": "BiQ1zG_failKindInstall",
850
+ "resultRestarting": "BiQ1zG_resultRestarting",
835
851
  "modalTitle": "BiQ1zG_modalTitle",
836
- "modalHead": "BiQ1zG_modalHead",
837
- "pendingRowActions": "BiQ1zG_pendingRowActions",
838
- "modalWide": "BiQ1zG_modalWide",
839
- "detailGrid": "BiQ1zG_detailGrid",
840
- "aboutModal": "BiQ1zG_aboutModal",
841
- "detailUpdateHint": "BiQ1zG_detailUpdateHint",
842
- "hubUpdateModal": "BiQ1zG_hubUpdateModal",
843
- "failKindUninstall": "BiQ1zG_failKindUninstall",
844
- "queueRowHead": "BiQ1zG_queueRowHead"
852
+ "noticeTextFail": "BiQ1zG_noticeTextFail",
853
+ "hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
854
+ "progressText": "BiQ1zG_progressText",
855
+ "queueSectionTitle": "BiQ1zG_queueSectionTitle",
856
+ "detailStatusText": "BiQ1zG_detailStatusText",
857
+ "modalRow": "BiQ1zG_modalRow",
858
+ "confirmIconDanger": "BiQ1zG_confirmIconDanger"
845
859
  };
846
860
  //#endregion
847
861
  //#region src/client/logic/install-command.ts
@@ -911,7 +925,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
911
925
  * tsdown 构建时用 define 把 __PLUGIN_VERSION__ 替换成 package.json 的版本号;
912
926
  * node --test 直接 import 本模块时该标识符不存在,typeof 守卫兜底为空串。
913
927
  */
914
- const PLUGIN_VERSION = "1.3.8";
928
+ const PLUGIN_VERSION = "1.3.10";
915
929
  const CATEGORY_ORDER = [
916
930
  "interface",
917
931
  "session",
@@ -1544,7 +1558,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1544
1558
  */
1545
1559
  const hubHasUpdate = (() => {
1546
1560
  if (!hubUpdateInfo) return false;
1547
- return hubUpdateInfo.version !== "1.3.8";
1561
+ return hubUpdateInfo.version !== "1.3.10";
1548
1562
  })();
1549
1563
  (0, react.useMemo)(() => {
1550
1564
  if (!plugins) return [];
@@ -1723,12 +1737,23 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1723
1737
  return next;
1724
1738
  }
1725
1739
  /**
1726
- * 失败归类,五态。无论底层机制如何(pnpm 白名单拦截 / 构建脚本被忽略 / prepare 失败),
1740
+ * 失败归类,七态。无论底层机制如何(pnpm 白名单拦截 / 构建脚本被忽略 / prepare 失败),
1727
1741
  * 对用户而言结果都一样 —— 当前安装通道(npm 或 git)装不上,就是插件分发/依赖的问题,
1728
- * 一律引导提 Issue;唯一的两个例外是本机环境问题(npm 版本过低 / 网络不通):
1742
+ * 一律引导提 Issue;唯一的例外是本机环境问题(npm 版本过低 / 找不到 dsh / 找不到 pnpm / 网络不通):
1729
1743
  * - npmTooOld:失败输出含 npm arborist 的 `edgesOut` 崩溃特征(build-ideal-tree.js 解 peer 依赖时
1730
1744
  * 内部抛错,npm 11.6.0 前必现的已知缺陷,npm/cli#8261、#9787),或服务端已核实本机版本低于
1731
1745
  * 阈值并打了 `[npm-too-low]` 标记 —— 是本机 npm 版本过低/自身缺陷,不是插件问题 → 引导升级 npm
1746
+ * - dshMissing:安装器 spawn 的 `dsh` 命令找不到(Windows cmd「不是内部或外部命令」/ POSIX
1747
+ * 「command not found」/ spawn ENOENT)—— 是本机 DSH 未正确安装或不在 PATH,不是插件问题
1748
+ * → 提示检查 PATH/重装 DSH,不引导提 Issue
1749
+ * - pnpmMissing:dsh 存在但调用的 `pnpm` 找不到(dsh 报 `pnpm not found on PATH`/POSIX
1750
+ * 「pnpm: command not found」/ spawn ENOENT)—— 本机缺 pnpm(dsh 用 pnpm 管理 profile 插件),
1751
+ * 不是插件问题(dsh-plugin-hub#13:Linux 下 `dsh: pnpm not found on PATH` 被误归插件侧失败)
1752
+ * → 提示安装/开启 pnpm,不引导提 Issue
1753
+ * - pnpmStore:pnpm 存在但报 store 位置不匹配(`ERR_PNPM_UNEXPECTED_STORE` / `Unexpected store
1754
+ * location`)—— profile 目录的 node_modules 是用不同大版本的 pnpm 生成的,当前 pnpm 不认,
1755
+ * 任何插件装进该 profile 都会失败;不是插件问题(dsh-plugin-hub#14:macOS 下
1756
+ * `ERR_PNPM_UNEXPECTED_STORE` 被误归插件侧失败)→ 提示清理 profile 依赖目录重建,不引导提 Issue
1732
1757
  * - network:安装前连通性预检拦截(服务端 `[network]` 标记)或底层连接失败
1733
1758
  * (ERR_PNPM_GIT_FETCH_FAILED / ETIMEDOUT / DNS 解析 / TLS 握手 / 代理拒绝)——
1734
1759
  * 是本机网络不通/被墙/代理有问题,不是插件问题 → 提示检查网络,不引导提 Issue
@@ -1742,6 +1767,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1742
1767
  */
1743
1768
  function classifyFailure(message) {
1744
1769
  if (/\[npm-too-low\]|edgesOut/i.test(message)) return "npmTooOld";
1770
+ if (/\[pnpm-missing\]|pnpm not found|pnpm: command not found|spawn pnpm ENOENT|'pnpm' 不是内部或外部命令|"pnpm" 不是内部或外部命令|pnpm['"]?\s*is not recognized/i.test(message)) return "pnpmMissing";
1771
+ if (/\[dsh-missing\]|不是内部或外部命令|is not recognized as an internal or external command|command not found|spawn dsh ENOENT/i.test(message)) return "dshMissing";
1772
+ if (/ERR_PNPM_UNEXPECTED_STORE|Unexpected store location/i.test(message)) return "pnpmStore";
1745
1773
  if (/ERR_PNPM_IGNORED_BUILDS|Ignored build scripts:|ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED/i.test(message)) return "pnpmIgnoredBuild";
1746
1774
  if (/\[network\]|ERR_PNPM_GIT_FETCH_FAILED|ETIMEDOUT|ECONNREFUSED|ECONNRESET|ENOTFOUND|EAI_AGAIN|EPIPE|EHOSTUNREACH|ENETUNREACH|getaddrinfo|Could not connect|Could not resolve host|Network unreachable|Failed to connect|socket hang up|CERT_HAS_EXPIRED|SSL certificate problem|\bTLS\b|\bSSL\b/i.test(message)) return "network";
1747
1775
  if (/\[packaging\]|entry file missing/i.test(message)) return "pluginPrepare";
@@ -1834,6 +1862,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1834
1862
  function reasonTitleOf(kind) {
1835
1863
  switch (kind) {
1836
1864
  case "npmTooOld": return "npm too old to install";
1865
+ case "dshMissing": return "dsh command not found on the user machine";
1866
+ case "pnpmMissing": return "pnpm command not found on the user machine";
1867
+ case "pnpmStore": return "pnpm store version mismatch on the user machine";
1837
1868
  case "pnpmIgnoredBuild": return "build scripts blocked by pnpm allowlist";
1838
1869
  case "pluginPrepare": return "plugin distribution incomplete";
1839
1870
  case "network": return "network failure on the user side";
@@ -1881,9 +1912,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1881
1912
  `- DSH: ${env.dshVersion ? `v${env.dshVersion}` : "unknown"}`,
1882
1913
  `- Plugin Hub: v${PLUGIN_VERSION}`,
1883
1914
  `- Node: ${env.nodeVersion}`,
1915
+ `- pnpm: ${env.pnpmVersion ? `v${env.pnpmVersion}` : "unknown"}`,
1916
+ `- npm: ${env.npmVersion ? `v${env.npmVersion}` : "unknown"}`,
1917
+ `- git: ${env.gitVersion ? `v${env.gitVersion}` : "unknown"}`,
1884
1918
  `- OS: ${env.platform} ${env.arch} (${env.release})`,
1885
1919
  `- Profile: \`${env.profile}\``,
1886
- `- DSH Home: \`${env.dshHome}\``
1920
+ `- DSH Home: \`${env.dshHome}\``,
1921
+ `- Full log: \`~/.dsh/profiles/${env.profile}/hub.log\` (paste or attach for the full output)`
1887
1922
  ] : [],
1888
1923
  `- Catalog: [${pluginSiteUrl(repo)}](${pluginSiteUrl(repo)})`,
1889
1924
  "",
@@ -2035,6 +2070,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2035
2070
  /** 安装/卸载请求超时(ms):服务端 preflight + npm 反查可能耗时(各自都有超时,合计约 20~30s),
2036
2071
  * 给足余量;超时主动中止,避免服务端 preflight 网络挂起时前端永久卡「安装中 0%」。 */
2037
2072
  const REQUEST_TIMEOUT_MS = 6e4;
2073
+ /** 入口渠道的 i18n key:NPM 包 / GitHub 源码 / DSH 命令。 */
2074
+ const channelKeyOf = (channel) => channel === "git" ? "installChannelGit" : channel === "dsh" ? "installChannelDsh" : "installChannelNpm";
2075
+ /** 失败消息的入口溯源前缀:自定义安装(带渠道)在错误正文顶部精准指出从哪张卡片发起;
2076
+ * 目录插件安装(无渠道)返回 null,错误正文保持原样。 */
2077
+ const entryLineOf = (t, channel) => channel ? t("installEntryLine", { c: t(channelKeyOf(channel)) }) : null;
2038
2078
  function useTaskQueue(opts) {
2039
2079
  const { t, langKey, refreshInstalled, onInstallDone, onUninstallDone, onError, installPlugin, installCustomTarget, installGlobalTarget, uninstallPlugin, uninstallName, installedName, resolvePending } = opts;
2040
2080
  const [queue, setQueue] = (0, react.useState)([]);
@@ -2148,8 +2188,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2148
2188
  onInstallDone(modalTaskRef.current === q.id, q.repo, q.needsRestart, q.action === "update");
2149
2189
  }
2150
2190
  } else {
2151
- const detail = lines.length > 0 ? [...lines].reverse().join("\n") : q.kind === "uninstall" ? t("uninstallFail") : t("installFail");
2152
- onError(detail, q.repo, q.kind, q.command, q.attempts, q.action === "update");
2191
+ const rawDetail = lines.length > 0 ? [...lines].reverse().join("\n") : q.kind === "uninstall" ? t("uninstallFail") : t("installFail");
2192
+ const entry = entryLineOf(t, q.channel);
2193
+ onError(entry ? `${entry}\n${rawDetail}` : rawDetail, q.repo, q.kind, q.command, q.attempts, q.action === "update");
2153
2194
  }
2154
2195
  maybeStopPoll();
2155
2196
  };
@@ -2247,7 +2288,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2247
2288
  progress: typeof a.progress === "number" ? a.progress : prevTask?.progress ?? 0,
2248
2289
  lines: Array.isArray(a.lines) ? a.lines : prevTask?.lines ?? [],
2249
2290
  attempts: Array.isArray(a.attempts) ? a.attempts : prevTask?.attempts ?? [],
2250
- needsRestart: typeof a.needsRestart === "boolean" ? a.needsRestart : prevTask?.needsRestart ?? true
2291
+ needsRestart: typeof a.needsRestart === "boolean" ? a.needsRestart : prevTask?.needsRestart ?? true,
2292
+ channel: a.installChannel === "npm" || a.installChannel === "git" || a.installChannel === "dsh" ? a.installChannel : prevTask?.channel
2251
2293
  });
2252
2294
  }
2253
2295
  const keepOpt = prev.filter((q) => q.optimistic && !next.some((x) => x.id === q.id));
@@ -2292,7 +2334,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2292
2334
  progress: typeof a.progress === "number" ? a.progress : 0,
2293
2335
  lines: Array.isArray(a.lines) ? a.lines : [],
2294
2336
  attempts: Array.isArray(a.attempts) ? a.attempts : [],
2295
- needsRestart: typeof a.needsRestart === "boolean" ? a.needsRestart : true
2337
+ needsRestart: typeof a.needsRestart === "boolean" ? a.needsRestart : true,
2338
+ channel: a.installChannel === "npm" || a.installChannel === "git" || a.installChannel === "dsh" ? a.installChannel : void 0
2296
2339
  };
2297
2340
  });
2298
2341
  if (items.length > 0 || pendingRef.current.length > 0) {
@@ -2330,6 +2373,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2330
2373
  lines: [],
2331
2374
  optimistic: true,
2332
2375
  command: input.command,
2376
+ channel: input.channel,
2333
2377
  action: input.update ? "update" : "add",
2334
2378
  attempts: [],
2335
2379
  needsRestart: true
@@ -2347,6 +2391,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2347
2391
  source: input.source,
2348
2392
  mode: input.update ? "update" : void 0,
2349
2393
  ...langKey ? { lang: langKey } : {},
2394
+ ...input.channel ? { installChannel: input.channel } : {},
2350
2395
  ...input.globalNpm && input.globalNpm.length > 0 ? { globalNpm: input.globalNpm } : {}
2351
2396
  }),
2352
2397
  signal: controller.signal
@@ -2354,7 +2399,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2354
2399
  const data = await res.json();
2355
2400
  if (!data.ok || typeof data.task !== "number") {
2356
2401
  applyQueue((prev) => prev.filter((x) => x.id !== tempId));
2357
- onError(data.error || `HTTP ${res.status}`, input.repo, "install", input.command, data.attempts);
2402
+ const entry = entryLineOf(t, input.channel);
2403
+ const msg = data.error || `HTTP ${res.status}`;
2404
+ onError(entry ? `${entry}\n${msg}` : msg, input.repo, "install", input.command, data.attempts);
2358
2405
  return;
2359
2406
  }
2360
2407
  const taskId = data.task;
@@ -2372,7 +2419,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2372
2419
  } catch (err) {
2373
2420
  applyQueue((prev) => prev.filter((x) => x.id !== tempId));
2374
2421
  const reason = err?.name === "AbortError" ? t("requestTimeout") : err instanceof Error && err.message ? err.message : String(err ?? "");
2375
- onError(reason ? `${t("installFail")} — ${reason}` : t("installFail"), input.repo, "install", input.command);
2422
+ const entry = entryLineOf(t, input.channel);
2423
+ const msg = reason ? `${t("installFail")} — ${reason}` : t("installFail");
2424
+ onError(entry ? `${entry}\n${msg}` : msg, input.repo, "install", input.command);
2376
2425
  } finally {
2377
2426
  window.clearTimeout(timeout);
2378
2427
  submittingRef.current.delete(input.repo);
@@ -2398,6 +2447,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2398
2447
  };
2399
2448
  /** 命令行安装:用户手输 npm 包名或 GitHub 地址,走 custom 源(受安全开关控制)。
2400
2449
  * update=true 时对已安装目标放行覆盖重装(与目录插件「更新」同一语义)。
2450
+ * channel=入口渠道(NPM 包 / GitHub 源码 / DSH 命令卡片):上报服务端落日志,
2451
+ * 失败弹窗/通知据此精准溯源。
2401
2452
  * 队列展示/防重一律用归一化身份(owner/repo 或 npm 包名):与服务端 /active 合并、
2402
2453
  * 弹窗目标匹配同口径,npm 包名透传不受影响。 */
2403
2454
  const installCustom = async (raw, opts) => {
@@ -2409,11 +2460,12 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2409
2460
  repo,
2410
2461
  command: `pnpm add ${target}`,
2411
2462
  source: "custom",
2412
- update: opts?.update
2463
+ update: opts?.update,
2464
+ channel: opts?.channel
2413
2465
  });
2414
2466
  };
2415
2467
  /** 全局 npm 安装(官方 README 的 `npm install -g <pkgs>`):不进任何 profile、无需宿主重启。
2416
- * 队列展示/防重用包列表空格拼接的身份(与服务端 target 同口径)。 */
2468
+ * 队列展示/防重用包列表空格拼接的身份(与服务端 target 同口径);入口渠道固定为 npm(NPM 包卡片)。 */
2417
2469
  const installGlobalNpm = async (pkgs, opts) => {
2418
2470
  const list = (pkgs ?? []).map((p) => p.trim()).filter((p) => p !== "");
2419
2471
  if (list.length === 0) return;
@@ -2424,7 +2476,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2424
2476
  command: `npm install -g ${identity}`,
2425
2477
  source: "custom",
2426
2478
  globalNpm: list,
2427
- update: opts?.update
2479
+ update: opts?.update,
2480
+ channel: opts?.channel ?? "npm"
2428
2481
  });
2429
2482
  };
2430
2483
  /** 卸载入队核心:按 npm 包名直卸(目录插件与自定义安装共用,弹窗进度匹配同源)。 */
@@ -3212,7 +3265,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3212
3265
  }, repo) : null, (0, react.createElement)("button", {
3213
3266
  className: Modal_module_css_default.errorCopySoft,
3214
3267
  onClick: () => onCopy(copyText)
3215
- }, t("errorCopy"))), (0, react.createElement)("pre", { className: Modal_module_css_default.errorBox }, message), failureKind === "npmTooOld" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t(npmVersion ? "failNpmTooLowV" : "failNpmTooLow", npmVersion ? { v: npmVersion } : void 0)) : failureKind === "network" ? (0, react.createElement)("div", null, [
3268
+ }, t("errorCopy"))), (0, react.createElement)("pre", { className: Modal_module_css_default.errorBox }, message), failureKind === "npmTooOld" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t(npmVersion ? "failNpmTooLowV" : "failNpmTooLow", npmVersion ? { v: npmVersion } : void 0)) : failureKind === "dshMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failDshMissingHint")) : failureKind === "pnpmMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmMissingHint")) : failureKind === "pnpmStore" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmStoreHint")) : failureKind === "network" ? (0, react.createElement)("div", null, [
3216
3269
  (() => {
3217
3270
  const target = unreachableTargetOf(message);
3218
3271
  return target ? (0, react.createElement)("div", { className: Modal_module_css_default.failNetworkTarget }, t("failNetworkTarget", { url: target })) : null;
@@ -3763,6 +3816,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3763
3816
  const v = npmTooLowVersion(r.message);
3764
3817
  return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t(v ? "failNpmTooLowV" : "failNpmTooLow", v ? { v } : void 0));
3765
3818
  }
3819
+ if (kind === "dshMissing") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failDshMissingHint"));
3820
+ if (kind === "pnpmMissing") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmMissingHint"));
3821
+ if (kind === "pnpmStore") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmStoreHint"));
3766
3822
  if (kind === "network") return (0, react.createElement)("div", null, [
3767
3823
  (() => {
3768
3824
  const target = unreachableTargetOf(r.message);
@@ -3968,40 +4024,40 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3968
4024
  css: css$9
3969
4025
  });
3970
4026
  var List_module_css_default = {
3971
- "desc": "_3XaZHa_desc",
3972
- "fork": "_3XaZHa_fork",
3973
- "installBtn": "_3XaZHa_installBtn",
4027
+ "date": "_3XaZHa_date",
3974
4028
  "retryBtn": "_3XaZHa_retryBtn",
3975
4029
  "uninstallBtn": "_3XaZHa_uninstallBtn",
3976
- "installBtnInstalled": "_3XaZHa_installBtnInstalled",
4030
+ "installBtn": "_3XaZHa_installBtn",
3977
4031
  "state": "_3XaZHa_state",
3978
- "diagBtn": "_3XaZHa_diagBtn",
4032
+ "stateTitle": "_3XaZHa_stateTitle",
3979
4033
  "cardMain": "_3XaZHa_cardMain",
3980
- "cardSide": "_3XaZHa_cardSide",
4034
+ "stats": "_3XaZHa_stats",
3981
4035
  "topics": "_3XaZHa_topics",
3982
- "detailBtn": "_3XaZHa_detailBtn",
3983
- "cardHead": "_3XaZHa_cardHead",
3984
- "stateActions": "_3XaZHa_stateActions",
3985
- "footer": "_3XaZHa_footer",
3986
- "installBtnUpdate": "_3XaZHa_installBtnUpdate",
3987
- "actions": "_3XaZHa_actions",
3988
- "list": "_3XaZHa_list",
3989
- "stateTitle": "_3XaZHa_stateTitle",
4036
+ "body": "_3XaZHa_body",
3990
4037
  "updateBadge": "_3XaZHa_updateBadge",
3991
- "topic": "_3XaZHa_topic",
3992
- "star": "_3XaZHa_star",
3993
- "stateDesc": "_3XaZHa_stateDesc",
3994
- "verified": "_3XaZHa_verified",
3995
- "stats": "_3XaZHa_stats",
3996
- "date": "_3XaZHa_date",
3997
4038
  "card": "_3XaZHa_card",
3998
- "cardTitle": "_3XaZHa_cardTitle",
3999
- "categoryBadge": "_3XaZHa_categoryBadge",
4039
+ "installBtnCopied": "_3XaZHa_installBtnCopied",
4040
+ "diagBtn": "_3XaZHa_diagBtn",
4041
+ "desc": "_3XaZHa_desc",
4042
+ "verified": "_3XaZHa_verified",
4043
+ "list": "_3XaZHa_list",
4000
4044
  "footLink": "_3XaZHa_footLink",
4001
- "body": "_3XaZHa_body",
4045
+ "star": "_3XaZHa_star",
4046
+ "topic": "_3XaZHa_topic",
4047
+ "cardSide": "_3XaZHa_cardSide",
4048
+ "installBtnInstalled": "_3XaZHa_installBtnInstalled",
4002
4049
  "moreSentinel": "_3XaZHa_moreSentinel",
4050
+ "cardHead": "_3XaZHa_cardHead",
4051
+ "footer": "_3XaZHa_footer",
4052
+ "stateDesc": "_3XaZHa_stateDesc",
4003
4053
  "versionBadge": "_3XaZHa_versionBadge",
4004
- "installBtnCopied": "_3XaZHa_installBtnCopied"
4054
+ "installBtnUpdate": "_3XaZHa_installBtnUpdate",
4055
+ "stateActions": "_3XaZHa_stateActions",
4056
+ "detailBtn": "_3XaZHa_detailBtn",
4057
+ "actions": "_3XaZHa_actions",
4058
+ "categoryBadge": "_3XaZHa_categoryBadge",
4059
+ "fork": "_3XaZHa_fork",
4060
+ "cardTitle": "_3XaZHa_cardTitle"
4005
4061
  };
4006
4062
  //#endregion
4007
4063
  //#region src/client/hooks/useIncrementalList.ts
@@ -4209,14 +4265,14 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4209
4265
  });
4210
4266
  var SectionTabs_module_css_default = {
4211
4267
  "tabCountActive": "_7tvizq_tabCountActive",
4212
- "tabActive": "_7tvizq_tabActive",
4213
- "noticeIcon": "_7tvizq_noticeIcon",
4214
- "tabIcon": "_7tvizq_tabIcon",
4215
4268
  "noticeBtn": "_7tvizq_noticeBtn",
4216
- "noticeCount": "_7tvizq_noticeCount",
4269
+ "tab": "_7tvizq_tab",
4270
+ "tabIcon": "_7tvizq_tabIcon",
4217
4271
  "root": "_7tvizq_root",
4272
+ "tabActive": "_7tvizq_tabActive",
4218
4273
  "tabCount": "_7tvizq_tabCount",
4219
- "tab": "_7tvizq_tab"
4274
+ "noticeIcon": "_7tvizq_noticeIcon",
4275
+ "noticeCount": "_7tvizq_noticeCount"
4220
4276
  };
4221
4277
  //#endregion
4222
4278
  //#region src/client/components/layout/SectionTabs.tsx
@@ -4293,42 +4349,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4293
4349
  css: css$7
4294
4350
  });
4295
4351
  var InstalledView_module_css_default = {
4296
- "list": "_1nXeGW_list",
4297
- "rowDetail": "_1nXeGW_rowDetail",
4298
- "rowMain": "_1nXeGW_rowMain",
4299
- "exampleBadge": "_1nXeGW_exampleBadge",
4352
+ "toolbar": "_1nXeGW_toolbar",
4353
+ "segBtnActive": "_1nXeGW_segBtnActive",
4300
4354
  "emptyTitle": "_1nXeGW_emptyTitle",
4301
- "segGroup": "_1nXeGW_segGroup",
4302
- "rowTitle": "_1nXeGW_rowTitle",
4355
+ "rowDesc": "_1nXeGW_rowDesc",
4356
+ "statusInactive": "_1nXeGW_statusInactive",
4357
+ "exampleRow": "_1nXeGW_exampleRow",
4358
+ "rowCategory": "_1nXeGW_rowCategory",
4359
+ "rowActions": "_1nXeGW_rowActions",
4360
+ "rowUpdate": "_1nXeGW_rowUpdate",
4361
+ "versionBadge": "_1nXeGW_versionBadge",
4362
+ "updateBadge": "_1nXeGW_updateBadge",
4303
4363
  "root": "_1nXeGW_root",
4304
- "rowRepo": "_1nXeGW_rowRepo",
4305
- "rowRestart": "_1nXeGW_rowRestart",
4306
- "emptyDesc": "_1nXeGW_emptyDesc",
4307
4364
  "row": "_1nXeGW_row",
4308
- "segBtn": "_1nXeGW_segBtn",
4309
- "rowUninstall": "_1nXeGW_rowUninstall",
4310
- "searchInput": "_1nXeGW_searchInput",
4311
- "versionBadge": "_1nXeGW_versionBadge",
4312
- "rowUpdate": "_1nXeGW_rowUpdate",
4313
- "exampleRow": "_1nXeGW_exampleRow",
4314
- "searchWrap": "_1nXeGW_searchWrap",
4315
- "segLabel": "_1nXeGW_segLabel",
4365
+ "rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
4316
4366
  "rowMeta": "_1nXeGW_rowMeta",
4317
- "toolbar": "_1nXeGW_toolbar",
4318
- "updateBadge": "_1nXeGW_updateBadge",
4319
- "rowActions": "_1nXeGW_rowActions",
4320
- "segBtnActive": "_1nXeGW_segBtnActive",
4321
4367
  "statusPending": "_1nXeGW_statusPending",
4322
- "segRow": "_1nXeGW_segRow",
4323
- "rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
4324
- "rowTitleLine": "_1nXeGW_rowTitleLine",
4325
- "empty": "_1nXeGW_empty",
4326
- "rowDesc": "_1nXeGW_rowDesc",
4327
- "statusInactive": "_1nXeGW_statusInactive",
4328
4368
  "rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
4329
- "rowCategory": "_1nXeGW_rowCategory",
4369
+ "rowDetail": "_1nXeGW_rowDetail",
4370
+ "emptyDesc": "_1nXeGW_emptyDesc",
4371
+ "rowUninstall": "_1nXeGW_rowUninstall",
4372
+ "rowTitleLine": "_1nXeGW_rowTitleLine",
4373
+ "rowSourceTag": "_1nXeGW_rowSourceTag",
4330
4374
  "statusDot": "_1nXeGW_statusDot",
4331
- "rowSourceTag": "_1nXeGW_rowSourceTag"
4375
+ "segRow": "_1nXeGW_segRow",
4376
+ "segGroup": "_1nXeGW_segGroup",
4377
+ "rowTitle": "_1nXeGW_rowTitle",
4378
+ "rowRestart": "_1nXeGW_rowRestart",
4379
+ "rowRepo": "_1nXeGW_rowRepo",
4380
+ "segLabel": "_1nXeGW_segLabel",
4381
+ "empty": "_1nXeGW_empty",
4382
+ "segBtn": "_1nXeGW_segBtn",
4383
+ "exampleBadge": "_1nXeGW_exampleBadge",
4384
+ "searchWrap": "_1nXeGW_searchWrap",
4385
+ "list": "_1nXeGW_list",
4386
+ "rowMain": "_1nXeGW_rowMain",
4387
+ "searchInput": "_1nXeGW_searchInput"
4332
4388
  };
4333
4389
  //#endregion
4334
4390
  //#region src/client/components/views/InstalledView.tsx
@@ -4574,28 +4630,28 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4574
4630
  css: css$6
4575
4631
  });
4576
4632
  var CustomInstallView_module_css_default = {
4577
- "desc": "zISxCG_desc",
4578
- "installLabel": "zISxCG_installLabel",
4633
+ "installBtn": "zISxCG_installBtn",
4634
+ "helpLine": "zISxCG_helpLine",
4635
+ "channelOffText": "zISxCG_channelOffText",
4636
+ "installInputError": "zISxCG_installInputError",
4579
4637
  "installInsertBtn": "zISxCG_installInsertBtn",
4580
4638
  "installExample": "zISxCG_installExample",
4581
- "installBtn": "zISxCG_installBtn",
4582
- "channelOff": "zISxCG_channelOff",
4583
- "helpBody": "zISxCG_helpBody",
4639
+ "installCardDisabled": "zISxCG_installCardDisabled",
4584
4640
  "installCards": "zISxCG_installCards",
4585
- "installInput": "zISxCG_installInput",
4586
- "channelOffBtn": "zISxCG_channelOffBtn",
4587
- "helpNote": "zISxCG_helpNote",
4588
- "helpCmd": "zISxCG_helpCmd",
4641
+ "installCardHead": "zISxCG_installCardHead",
4642
+ "channelOff": "zISxCG_channelOff",
4643
+ "desc": "zISxCG_desc",
4589
4644
  "installCard": "zISxCG_installCard",
4590
- "helpLine": "zISxCG_helpLine",
4591
- "installRow": "zISxCG_installRow",
4645
+ "helpCmd": "zISxCG_helpCmd",
4646
+ "channelOffBtn": "zISxCG_channelOffBtn",
4592
4647
  "installHelpBtn": "zISxCG_installHelpBtn",
4593
- "installCardDisabled": "zISxCG_installCardDisabled",
4594
- "root": "zISxCG_root",
4595
- "installCardHead": "zISxCG_installCardHead",
4596
- "installInputError": "zISxCG_installInputError",
4648
+ "installRow": "zISxCG_installRow",
4649
+ "installLabel": "zISxCG_installLabel",
4650
+ "installInput": "zISxCG_installInput",
4597
4651
  "installError": "zISxCG_installError",
4598
- "channelOffText": "zISxCG_channelOffText"
4652
+ "root": "zISxCG_root",
4653
+ "helpBody": "zISxCG_helpBody",
4654
+ "helpNote": "zISxCG_helpNote"
4599
4655
  };
4600
4656
  //#endregion
4601
4657
  //#region src/client/components/views/CustomInstallView.tsx
@@ -4723,8 +4779,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4723
4779
  setNpmError(t("npmInstallInvalid"));
4724
4780
  return;
4725
4781
  }
4726
- if (parsed.kind === "global") onInstallCustom(raw, { globalNpm: parsed.pkgs });
4727
- else onInstallCustom(parsed.target);
4782
+ if (parsed.kind === "global") onInstallCustom(raw, {
4783
+ installChannel: "npm",
4784
+ globalNpm: parsed.pkgs
4785
+ });
4786
+ else onInstallCustom(parsed.target, { installChannel: "npm" });
4728
4787
  setNpmQuery("");
4729
4788
  setNpmError("");
4730
4789
  };
@@ -4735,7 +4794,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4735
4794
  setGitError(t("gitInstallInvalid"));
4736
4795
  return;
4737
4796
  }
4738
- onInstallCustom(target);
4797
+ onInstallCustom(target, { installChannel: "git" });
4739
4798
  setGitQuery("");
4740
4799
  setGitError("");
4741
4800
  };
@@ -4747,7 +4806,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4747
4806
  setCmdError(t("dshCmdInvalid"));
4748
4807
  return;
4749
4808
  }
4750
- onInstallCustom(parsed.target);
4809
+ onInstallCustom(parsed.target, { installChannel: "dsh" });
4751
4810
  setCmdQuery("");
4752
4811
  setCmdError("");
4753
4812
  };
@@ -4882,30 +4941,30 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4882
4941
  css: css$5
4883
4942
  });
4884
4943
  var SettingsView_module_css_default = {
4885
- "proxyControl": "_506LLG_proxyControl",
4886
- "settingRowStack": "_506LLG_settingRowStack",
4887
- "settingDesc": "_506LLG_settingDesc",
4888
- "pageDesc": "_506LLG_pageDesc",
4889
- "proxyHintFail": "_506LLG_proxyHintFail",
4890
- "controlDropdown": "_506LLG_controlDropdown",
4891
- "pageHeader": "_506LLG_pageHeader",
4892
- "root": "_506LLG_root",
4893
- "navItem": "_506LLG_navItem",
4894
- "content": "_506LLG_content",
4895
- "settingControl": "_506LLG_settingControl",
4896
- "textInput": "_506LLG_textInput",
4897
- "navIcon": "_506LLG_navIcon",
4898
4944
  "proxyHint": "_506LLG_proxyHint",
4899
4945
  "proxyHintOk": "_506LLG_proxyHintOk",
4900
- "navItemActive": "_506LLG_navItemActive",
4901
- "card": "_506LLG_card",
4902
4946
  "resetBtn": "_506LLG_resetBtn",
4947
+ "proxyControl": "_506LLG_proxyControl",
4903
4948
  "settingTitle": "_506LLG_settingTitle",
4904
4949
  "settingLabel": "_506LLG_settingLabel",
4950
+ "navIcon": "_506LLG_navIcon",
4951
+ "card": "_506LLG_card",
4952
+ "navItemActive": "_506LLG_navItemActive",
4905
4953
  "pageTitle": "_506LLG_pageTitle",
4954
+ "navItem": "_506LLG_navItem",
4955
+ "settingControlStack": "_506LLG_settingControlStack",
4956
+ "pageDesc": "_506LLG_pageDesc",
4957
+ "textInput": "_506LLG_textInput",
4958
+ "controlDropdown": "_506LLG_controlDropdown",
4959
+ "proxyHintFail": "_506LLG_proxyHintFail",
4960
+ "pageHeader": "_506LLG_pageHeader",
4906
4961
  "sidebar": "_506LLG_sidebar",
4907
4962
  "settingRow": "_506LLG_settingRow",
4908
- "settingControlStack": "_506LLG_settingControlStack"
4963
+ "content": "_506LLG_content",
4964
+ "settingRowStack": "_506LLG_settingRowStack",
4965
+ "settingDesc": "_506LLG_settingDesc",
4966
+ "root": "_506LLG_root",
4967
+ "settingControl": "_506LLG_settingControl"
4909
4968
  };
4910
4969
  //#endregion
4911
4970
  //#region \0dsh-css:src/client/styles/Dropdown.module.css.mjs
@@ -4924,18 +4983,18 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4924
4983
  css: css$4
4925
4984
  });
4926
4985
  var Dropdown_module_css_default = {
4927
- "dropdownCount": "B_Gxsq_dropdownCount",
4928
- "dropdownBtn": "B_Gxsq_dropdownBtn",
4986
+ "dropdownItem": "B_Gxsq_dropdownItem",
4987
+ "dropdownItemLabel": "B_Gxsq_dropdownItemLabel",
4988
+ "dropdownPanel": "B_Gxsq_dropdownPanel",
4929
4989
  "dropdownCountActive": "B_Gxsq_dropdownCountActive",
4930
- "dropdownItemActive": "B_Gxsq_dropdownItemActive",
4931
- "dropdownLabel": "B_Gxsq_dropdownLabel",
4932
- "dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen",
4933
4990
  "dropdownFill": "B_Gxsq_dropdownFill",
4934
- "dropdownItemLabel": "B_Gxsq_dropdownItemLabel",
4991
+ "dropdownItemActive": "B_Gxsq_dropdownItemActive",
4935
4992
  "dropdown": "B_Gxsq_dropdown",
4936
- "dropdownPanel": "B_Gxsq_dropdownPanel",
4937
4993
  "dropdownArrow": "B_Gxsq_dropdownArrow",
4938
- "dropdownItem": "B_Gxsq_dropdownItem"
4994
+ "dropdownBtn": "B_Gxsq_dropdownBtn",
4995
+ "dropdownCount": "B_Gxsq_dropdownCount",
4996
+ "dropdownLabel": "B_Gxsq_dropdownLabel",
4997
+ "dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen"
4939
4998
  };
4940
4999
  //#endregion
4941
5000
  //#region \0dsh-css:src/client/styles/Toggle.module.css.mjs
@@ -5056,29 +5115,29 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5056
5115
  css: css$2
5057
5116
  });
5058
5117
  var DiagnosticsView_module_css_default = {
5059
- "envLabel": "k9eRya_envLabel",
5060
- "runBtn": "k9eRya_runBtn",
5061
- "panel": "k9eRya_panel",
5062
- "row": "k9eRya_row",
5063
- "summaryFail": "k9eRya_summaryFail",
5064
- "head": "k9eRya_head",
5065
- "display": "k9eRya_display",
5066
- "diagPulse": "k9eRya_diagPulse",
5067
- "badgeRunning": "k9eRya_badgeRunning",
5068
- "badgeIdle": "k9eRya_badgeIdle",
5069
- "envCopyBtn": "k9eRya_envCopyBtn",
5070
5118
  "badgeOk": "k9eRya_badgeOk",
5071
- "badgeFail": "k9eRya_badgeFail",
5072
- "envTitle": "k9eRya_envTitle",
5073
- "name": "k9eRya_name",
5119
+ "envRow": "k9eRya_envRow",
5074
5120
  "meta": "k9eRya_meta",
5075
- "summaryOk": "k9eRya_summaryOk",
5076
- "envDesc": "k9eRya_envDesc",
5121
+ "badgeRunning": "k9eRya_badgeRunning",
5122
+ "badgeFail": "k9eRya_badgeFail",
5077
5123
  "summary": "k9eRya_summary",
5078
- "summaryRunning": "k9eRya_summaryRunning",
5124
+ "head": "k9eRya_head",
5079
5125
  "headHint": "k9eRya_headHint",
5080
- "envRow": "k9eRya_envRow",
5081
- "badge": "k9eRya_badge"
5126
+ "name": "k9eRya_name",
5127
+ "summaryRunning": "k9eRya_summaryRunning",
5128
+ "envCopyBtn": "k9eRya_envCopyBtn",
5129
+ "row": "k9eRya_row",
5130
+ "summaryFail": "k9eRya_summaryFail",
5131
+ "envDesc": "k9eRya_envDesc",
5132
+ "runBtn": "k9eRya_runBtn",
5133
+ "diagPulse": "k9eRya_diagPulse",
5134
+ "envTitle": "k9eRya_envTitle",
5135
+ "display": "k9eRya_display",
5136
+ "envLabel": "k9eRya_envLabel",
5137
+ "badge": "k9eRya_badge",
5138
+ "badgeIdle": "k9eRya_badgeIdle",
5139
+ "panel": "k9eRya_panel",
5140
+ "summaryOk": "k9eRya_summaryOk"
5082
5141
  };
5083
5142
  //#endregion
5084
5143
  //#region src/client/components/views/DiagnosticsView.tsx
@@ -5253,57 +5312,57 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5253
5312
  css: css$1
5254
5313
  });
5255
5314
  var LogsView_module_css_default = {
5256
- "filterBar": "_3j77BW_filterBar",
5257
- "list": "_3j77BW_list",
5258
- "pathDialogRow": "_3j77BW_pathDialogRow",
5315
+ "footActions": "_3j77BW_footActions",
5259
5316
  "pathLabel": "_3j77BW_pathLabel",
5260
- "pathText": "_3j77BW_pathText",
5261
- "badge": "_3j77BW_badge",
5262
- "badgeSuccess": "_3j77BW_badgeSuccess",
5263
5317
  "badgeError": "_3j77BW_badgeError",
5264
- "catSystem": "_3j77BW_catSystem",
5265
- "empty": "_3j77BW_empty",
5266
- "pathDialogReset": "_3j77BW_pathDialogReset",
5267
- "previewRow": "_3j77BW_previewRow",
5268
- "filterChip": "_3j77BW_filterChip",
5269
- "actions": "_3j77BW_actions",
5270
- "time": "_3j77BW_time",
5271
- "headHint": "_3j77BW_headHint",
5272
- "panel": "_3j77BW_panel",
5273
- "headActions": "_3j77BW_headActions",
5274
- "linkBtn": "_3j77BW_linkBtn",
5275
- "pathDialogFoot": "_3j77BW_pathDialogFoot",
5276
- "foot": "_3j77BW_foot",
5277
- "catInstall": "_3j77BW_catInstall",
5278
- "catDiagnostics": "_3j77BW_catDiagnostics",
5279
- "pathDraft": "_3j77BW_pathDraft",
5318
+ "btn": "_3j77BW_btn",
5280
5319
  "clearBtn": "_3j77BW_clearBtn",
5281
- "footActions": "_3j77BW_footActions",
5320
+ "foot": "_3j77BW_foot",
5321
+ "pathDialog": "_3j77BW_pathDialog",
5282
5322
  "head": "_3j77BW_head",
5283
- "footFail": "_3j77BW_footFail",
5284
- "entry": "_3j77BW_entry",
5285
5323
  "logList": "_3j77BW_logList",
5286
- "more": "_3j77BW_more",
5287
- "badgeDebug": "_3j77BW_badgeDebug",
5288
- "footCount": "_3j77BW_footCount",
5289
- "catSettings": "_3j77BW_catSettings",
5290
- "btn": "_3j77BW_btn",
5291
5324
  "event": "_3j77BW_event",
5292
- "search": "_3j77BW_search",
5293
- "pathRow": "_3j77BW_pathRow",
5294
- "badgeWarn": "_3j77BW_badgeWarn",
5295
- "message": "_3j77BW_message",
5296
- "filterChipActive": "_3j77BW_filterChipActive",
5297
- "pathDialogDesc": "_3j77BW_pathDialogDesc",
5298
5325
  "moreEnd": "_3j77BW_moreEnd",
5299
- "footPath": "_3j77BW_footPath",
5300
- "pathDialog": "_3j77BW_pathDialog",
5326
+ "badge": "_3j77BW_badge",
5327
+ "actions": "_3j77BW_actions",
5301
5328
  "badgeInfo": "_3j77BW_badgeInfo",
5329
+ "catUninstall": "_3j77BW_catUninstall",
5330
+ "catSettings": "_3j77BW_catSettings",
5331
+ "pathDialogDesc": "_3j77BW_pathDialogDesc",
5332
+ "search": "_3j77BW_search",
5333
+ "headHint": "_3j77BW_headHint",
5334
+ "footCount": "_3j77BW_footCount",
5335
+ "catInstall": "_3j77BW_catInstall",
5336
+ "catSystem": "_3j77BW_catSystem",
5337
+ "filterChip": "_3j77BW_filterChip",
5338
+ "empty": "_3j77BW_empty",
5339
+ "more": "_3j77BW_more",
5340
+ "pathDialogRow": "_3j77BW_pathDialogRow",
5341
+ "time": "_3j77BW_time",
5342
+ "filterChipActive": "_3j77BW_filterChipActive",
5343
+ "pathDialogFoot": "_3j77BW_pathDialogFoot",
5344
+ "filterBar": "_3j77BW_filterBar",
5345
+ "badgeSuccess": "_3j77BW_badgeSuccess",
5346
+ "previewRow": "_3j77BW_previewRow",
5347
+ "list": "_3j77BW_list",
5348
+ "badgeWarn": "_3j77BW_badgeWarn",
5349
+ "panel": "_3j77BW_panel",
5350
+ "footFail": "_3j77BW_footFail",
5302
5351
  "catUpdate": "_3j77BW_catUpdate",
5303
- "searchInput": "_3j77BW_searchInput",
5352
+ "pathDialogHint": "_3j77BW_pathDialogHint",
5353
+ "badgeDebug": "_3j77BW_badgeDebug",
5304
5354
  "catBadge": "_3j77BW_catBadge",
5305
- "catUninstall": "_3j77BW_catUninstall",
5306
- "pathDialogHint": "_3j77BW_pathDialogHint"
5355
+ "catDiagnostics": "_3j77BW_catDiagnostics",
5356
+ "footPath": "_3j77BW_footPath",
5357
+ "searchInput": "_3j77BW_searchInput",
5358
+ "headActions": "_3j77BW_headActions",
5359
+ "entry": "_3j77BW_entry",
5360
+ "message": "_3j77BW_message",
5361
+ "pathText": "_3j77BW_pathText",
5362
+ "linkBtn": "_3j77BW_linkBtn",
5363
+ "pathDraft": "_3j77BW_pathDraft",
5364
+ "pathRow": "_3j77BW_pathRow",
5365
+ "pathDialogReset": "_3j77BW_pathDialogReset"
5307
5366
  };
5308
5367
  //#endregion
5309
5368
  //#region src/client/components/modals/LogsModal.tsx
@@ -6154,6 +6213,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6154
6213
  /** 命令行安装确认弹窗:记录待安装的裸目标(npm 包名 / GitHub 地址,DSH 命令已剥成裸目标)——
6155
6214
  * 与应用商店同一套确认/进度/结果弹窗,提供时 plugin 传 null 走 customTarget 模式 */
6156
6215
  const [confirmCustomTarget, setConfirmCustomTarget] = (0, react.useState)(null);
6216
+ /** 自定义安装入口渠道(三张卡片之一):随确认弹窗记录,提交时上报服务端,
6217
+ * 报错/日志据此精准溯源「从哪个入口发起」(npm 全局安装固定为 'npm') */
6218
+ const [confirmCustomChannel, setConfirmCustomChannel] = (0, react.useState)(null);
6157
6219
  /** 全局 npm 安装确认弹窗(官方 `npm install -g <pkgs>`):记录原始命令 + 解析出的包列表,
6158
6220
  * 走与应用商店同一套确认/进度/结果弹窗(plugin 传 null,InstallModal 走 globalNpm 模式) */
6159
6221
  const [confirmGlobalNpm, setConfirmGlobalNpm] = (0, react.useState)(null);
@@ -6306,6 +6368,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6306
6368
  if (e.key === "Escape") {
6307
6369
  setConfirmPlugin(null);
6308
6370
  setConfirmCustomTarget(null);
6371
+ setConfirmCustomChannel(null);
6309
6372
  setConfirmGlobalNpm(null);
6310
6373
  setUninstallPlugin(null);
6311
6374
  setUninstallItem(null);
@@ -6515,6 +6578,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6515
6578
  queue.clearModalTask();
6516
6579
  if (opts?.globalNpm && opts.globalNpm.length > 0) {
6517
6580
  setConfirmCustomTarget(null);
6581
+ setConfirmCustomChannel(null);
6518
6582
  setConfirmIsUpdate(false);
6519
6583
  setConfirmGlobalNpm({
6520
6584
  raw,
@@ -6523,6 +6587,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6523
6587
  return;
6524
6588
  }
6525
6589
  setConfirmGlobalNpm(null);
6590
+ setConfirmCustomChannel(opts.installChannel);
6526
6591
  setConfirmIsUpdate(customTargetInstalled(target));
6527
6592
  setConfirmCustomTarget(target);
6528
6593
  }
@@ -6542,7 +6607,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6542
6607
  openSection: settingsSection,
6543
6608
  onConsumedOpenSection: () => setSettingsSection(null)
6544
6609
  }), showHubUpdate && (0, react.createElement)(HubUpdateModal, {
6545
- info: catalog.hubUpdateInfo ?? { version: "1.3.8" },
6610
+ info: catalog.hubUpdateInfo ?? { version: "1.3.10" },
6546
6611
  lang,
6547
6612
  t,
6548
6613
  hasUpdate: catalog.hubHasUpdate,
@@ -6651,6 +6716,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6651
6716
  onClose: () => {
6652
6717
  setInstallDone(false);
6653
6718
  setConfirmCustomTarget(null);
6719
+ setConfirmCustomChannel(null);
6654
6720
  },
6655
6721
  onCopy: () => {
6656
6722
  doCopy(`pnpm add ${confirmCustomTarget}`);
@@ -6659,7 +6725,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6659
6725
  kind: "copied"
6660
6726
  });
6661
6727
  },
6662
- onInstall: () => void queue.installCustom(confirmCustomTarget, confirmIsUpdate ? { update: true } : void 0),
6728
+ onInstall: () => void queue.installCustom(confirmCustomTarget, {
6729
+ update: confirmIsUpdate,
6730
+ channel: confirmCustomChannel ?? "npm"
6731
+ }),
6663
6732
  onRestart: () => setShowRestartConfirm(true)
6664
6733
  }), confirmGlobalNpm && (0, react.createElement)(InstallModal, {
6665
6734
  plugin: null,
@@ -6676,6 +6745,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6676
6745
  onClose: () => {
6677
6746
  setInstallDone(false);
6678
6747
  setConfirmGlobalNpm(null);
6748
+ setConfirmCustomChannel(null);
6679
6749
  },
6680
6750
  onCopy: () => {
6681
6751
  doCopy(`npm install -g ${confirmGlobalNpm.pkgs.join(" ")}`);
@@ -6684,7 +6754,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6684
6754
  kind: "copied"
6685
6755
  });
6686
6756
  },
6687
- onInstall: () => void queue.installGlobalNpm(confirmGlobalNpm.pkgs),
6757
+ onInstall: () => void queue.installGlobalNpm(confirmGlobalNpm.pkgs, { channel: "npm" }),
6688
6758
  onRestart: () => setShowRestartConfirm(true)
6689
6759
  }), (uninstallPlugin || uninstallItem) && (0, react.createElement)(UninstallModal, {
6690
6760
  plugin: uninstallPlugin ?? pluginOfItem(uninstallItem),