dsh-plugin 1.3.1 → 1.3.2

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
@@ -607,42 +607,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
607
607
  document.head.appendChild(tag);
608
608
  }
609
609
  var Header_module_css_default = {
610
- "root": "qikqja_root",
611
- "header": "qikqja_header",
612
- "adBanner": "qikqja_adBanner",
610
+ "brandTitle": "qikqja_brandTitle",
611
+ "githubLink": "qikqja_githubLink",
613
612
  "headerTitleRow": "qikqja_headerTitleRow",
614
- "tabs": "qikqja_tabs",
615
- "tab": "qikqja_tab",
616
- "copyIcon": "qikqja_copyIcon",
617
- "search": "qikqja_search",
618
- "tabCount": "qikqja_tabCount",
619
- "segBtnActive": "qikqja_segBtnActive",
620
613
  "hubUpdateBadge": "qikqja_hubUpdateBadge",
614
+ "copyIcon": "qikqja_copyIcon",
615
+ "logoIcon": "qikqja_logoIcon",
616
+ "sortGroup": "qikqja_sortGroup",
621
617
  "segGroup": "qikqja_segGroup",
622
- "resultSeg": "qikqja_resultSeg",
623
- "adText": "qikqja_adText",
624
- "resultCount": "qikqja_resultCount",
625
- "tagline": "qikqja_tagline",
626
618
  "segBtn": "qikqja_segBtn",
627
- "headerRight": "qikqja_headerRight",
628
- "logoIcon": "qikqja_logoIcon",
629
- "githubIcon": "qikqja_githubIcon",
619
+ "tabActive": "qikqja_tabActive",
620
+ "controls": "qikqja_controls",
621
+ "tab": "qikqja_tab",
622
+ "adBadge": "qikqja_adBadge",
623
+ "segBtnActive": "qikqja_segBtnActive",
630
624
  "aboutBtn": "qikqja_aboutBtn",
631
- "versionBtn": "qikqja_versionBtn",
625
+ "header": "qikqja_header",
626
+ "tabs": "qikqja_tabs",
627
+ "version": "qikqja_version",
632
628
  "taglineLink": "qikqja_taglineLink",
629
+ "headerRight": "qikqja_headerRight",
630
+ "resultCount": "qikqja_resultCount",
633
631
  "adArrow": "qikqja_adArrow",
634
- "adBadge": "qikqja_adBadge",
635
- "langBtn": "qikqja_langBtn",
636
- "searchRow": "qikqja_searchRow",
637
632
  "tabsRow": "qikqja_tabsRow",
638
- "controls": "qikqja_controls",
639
- "githubLink": "qikqja_githubLink",
640
- "version": "qikqja_version",
641
- "tabActive": "qikqja_tabActive",
633
+ "tagline": "qikqja_tagline",
634
+ "adText": "qikqja_adText",
635
+ "tabCount": "qikqja_tabCount",
636
+ "versionBtn": "qikqja_versionBtn",
637
+ "searchRow": "qikqja_searchRow",
638
+ "search": "qikqja_search",
639
+ "adBanner": "qikqja_adBanner",
642
640
  "title": "qikqja_title",
643
- "brandTitle": "qikqja_brandTitle",
644
- "sortGroup": "qikqja_sortGroup",
645
- "segLabel": "qikqja_segLabel"
641
+ "resultSeg": "qikqja_resultSeg",
642
+ "root": "qikqja_root",
643
+ "githubIcon": "qikqja_githubIcon",
644
+ "segLabel": "qikqja_segLabel",
645
+ "langBtn": "qikqja_langBtn"
646
646
  };
647
647
  //#endregion
648
648
  //#region \0dsh-css:src/client/styles/Modal.module.css.mjs
@@ -656,129 +656,129 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
656
656
  document.head.appendChild(tag);
657
657
  }
658
658
  var Modal_module_css_default = {
659
- "modalCloseIcon": "BiQ1zG_modalCloseIcon",
660
- "detailPathText": "BiQ1zG_detailPathText",
661
- "modalClose": "BiQ1zG_modalClose",
662
- "modalTitle": "BiQ1zG_modalTitle",
663
- "queueRowTrack": "BiQ1zG_queueRowTrack",
664
- "failKindInstall": "BiQ1zG_failKindInstall",
665
- "queueSection": "BiQ1zG_queueSection",
666
- "failRepo": "BiQ1zG_failRepo",
667
- "noticeTextFail": "BiQ1zG_noticeTextFail",
668
- "noticeVersion": "BiQ1zG_noticeVersion",
669
- "detailValue": "BiQ1zG_detailValue",
659
+ "noticeRemove": "BiQ1zG_noticeRemove",
660
+ "pendingRowActions": "BiQ1zG_pendingRowActions",
670
661
  "queueRowHead": "BiQ1zG_queueRowHead",
671
- "failClear": "BiQ1zG_failClear",
672
- "queueSectionTitle": "BiQ1zG_queueSectionTitle",
673
- "resultDesc": "BiQ1zG_resultDesc",
674
- "restartNowWarning": "BiQ1zG_restartNowWarning",
675
- "progress": "BiQ1zG_progress",
676
- "queueRowBody": "BiQ1zG_queueRowBody",
677
- "detailPath": "BiQ1zG_detailPath",
678
- "queueRowPct": "BiQ1zG_queueRowPct",
679
- "errorTitle": "BiQ1zG_errorTitle",
680
- "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
662
+ "modalCmdCopy": "BiQ1zG_modalCmdCopy",
663
+ "noticeRowOk": "BiQ1zG_noticeRowOk",
664
+ "modalLink": "BiQ1zG_modalLink",
681
665
  "pendingRowStatus": "BiQ1zG_pendingRowStatus",
682
- "modalValue": "BiQ1zG_modalValue",
683
- "hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
684
- "failEmpty": "BiQ1zG_failEmpty",
685
- "modalIn": "BiQ1zG_modalIn",
686
- "detailStatusRunning": "BiQ1zG_detailStatusRunning",
687
- "modalActions": "BiQ1zG_modalActions",
688
- "resultCheckIcon": "BiQ1zG_resultCheckIcon",
666
+ "modalInstall": "BiQ1zG_modalInstall",
689
667
  "noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
690
- "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
668
+ "detailLabel": "BiQ1zG_detailLabel",
691
669
  "modalBody": "BiQ1zG_modalBody",
692
- "overlayIn": "BiQ1zG_overlayIn",
693
- "modalInstall": "BiQ1zG_modalInstall",
694
- "progressHead": "BiQ1zG_progressHead",
695
- "failList": "BiQ1zG_failList",
696
- "errorBox": "BiQ1zG_errorBox",
697
- "noticeTime": "BiQ1zG_noticeTime",
698
- "queuedHint": "BiQ1zG_queuedHint",
699
- "modalRow": "BiQ1zG_modalRow",
700
- "modalCancel": "BiQ1zG_modalCancel",
701
- "modalWide": "BiQ1zG_modalWide",
702
- "detailPathBtn": "BiQ1zG_detailPathBtn",
670
+ "detailRow": "BiQ1zG_detailRow",
671
+ "noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
672
+ "modalCloseIcon": "BiQ1zG_modalCloseIcon",
703
673
  "modalTitleBusy": "BiQ1zG_modalTitleBusy",
704
- "failKindUninstall": "BiQ1zG_failKindUninstall",
705
- "errorHint": "BiQ1zG_errorHint",
706
- "modalCopy": "BiQ1zG_modalCopy",
707
- "modalDesc": "BiQ1zG_modalDesc",
708
- "detailArrow": "BiQ1zG_detailArrow",
674
+ "queueRowBody": "BiQ1zG_queueRowBody",
675
+ "progressText": "BiQ1zG_progressText",
676
+ "noticeTextOk": "BiQ1zG_noticeTextOk",
677
+ "detailStatusPending": "BiQ1zG_detailStatusPending",
678
+ "progressFillFail": "BiQ1zG_progressFillFail",
679
+ "noticeFoot": "BiQ1zG_noticeFoot",
680
+ "failPrepareHint": "BiQ1zG_failPrepareHint",
681
+ "detailStatusRunning": "BiQ1zG_detailStatusRunning",
682
+ "toastIn": "BiQ1zG_toastIn",
683
+ "aboutModal": "BiQ1zG_aboutModal",
684
+ "noticeList": "BiQ1zG_noticeList",
685
+ "noticeMain": "BiQ1zG_noticeMain",
686
+ "queuedHint": "BiQ1zG_queuedHint",
687
+ "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
688
+ "failKind": "BiQ1zG_failKind",
689
+ "errorModal": "BiQ1zG_errorModal",
709
690
  "restartLater": "BiQ1zG_restartLater",
710
- "failCopy": "BiQ1zG_failCopy",
691
+ "noticeVersion": "BiQ1zG_noticeVersion",
692
+ "failKindInstall": "BiQ1zG_failKindInstall",
693
+ "overlay": "BiQ1zG_overlay",
694
+ "modalTitle": "BiQ1zG_modalTitle",
695
+ "failList": "BiQ1zG_failList",
696
+ "failRow": "BiQ1zG_failRow",
697
+ "detailStatusText": "BiQ1zG_detailStatusText",
698
+ "resultCheck": "BiQ1zG_resultCheck",
711
699
  "queueRow": "BiQ1zG_queueRow",
712
700
  "detailGrid": "BiQ1zG_detailGrid",
713
- "detailUpdateHint": "BiQ1zG_detailUpdateHint",
714
- "aboutMeta": "BiQ1zG_aboutMeta",
701
+ "errorHint": "BiQ1zG_errorHint",
702
+ "modalCancel": "BiQ1zG_modalCancel",
703
+ "modalWide": "BiQ1zG_modalWide",
704
+ "uninstallConfirm": "BiQ1zG_uninstallConfirm",
705
+ "progressFill": "BiQ1zG_progressFill",
706
+ "cliOnlyHint": "BiQ1zG_cliOnlyHint",
707
+ "modalLabel": "BiQ1zG_modalLabel",
708
+ "queueRowDesc": "BiQ1zG_queueRowDesc",
709
+ "detailMono": "BiQ1zG_detailMono",
715
710
  "queueRowTarget": "BiQ1zG_queueRowTarget",
716
- "modalCmdCopy": "BiQ1zG_modalCmdCopy",
717
- "progressTrack": "BiQ1zG_progressTrack",
718
- "resultCheck": "BiQ1zG_resultCheck",
711
+ "resultRestarting": "BiQ1zG_resultRestarting",
712
+ "noticeRow": "BiQ1zG_noticeRow",
713
+ "modalCmdText": "BiQ1zG_modalCmdText",
714
+ "logModal": "BiQ1zG_logModal",
715
+ "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
716
+ "queueSectionTitle": "BiQ1zG_queueSectionTitle",
717
+ "failClear": "BiQ1zG_failClear",
718
+ "overlayIn": "BiQ1zG_overlayIn",
719
+ "progressHead": "BiQ1zG_progressHead",
720
+ "noticeTime": "BiQ1zG_noticeTime",
719
721
  "trustHint": "BiQ1zG_trustHint",
720
- "detailLabel": "BiQ1zG_detailLabel",
721
- "pendingRowActions": "BiQ1zG_pendingRowActions",
722
+ "detailArrow": "BiQ1zG_detailArrow",
723
+ "detailModal": "BiQ1zG_detailModal",
724
+ "result": "BiQ1zG_result",
725
+ "detailPath": "BiQ1zG_detailPath",
726
+ "toast": "BiQ1zG_toast",
727
+ "resultTitle": "BiQ1zG_resultTitle",
728
+ "modalActions": "BiQ1zG_modalActions",
729
+ "detailPathText": "BiQ1zG_detailPathText",
730
+ "detailStars": "BiQ1zG_detailStars",
731
+ "queueSection": "BiQ1zG_queueSection",
732
+ "failKindUninstall": "BiQ1zG_failKindUninstall",
733
+ "modalRow": "BiQ1zG_modalRow",
734
+ "stripCancel": "BiQ1zG_stripCancel",
735
+ "linkIcon": "BiQ1zG_linkIcon",
736
+ "detailPathActions": "BiQ1zG_detailPathActions",
737
+ "hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
738
+ "modalCopy": "BiQ1zG_modalCopy",
722
739
  "errorCopySoft": "BiQ1zG_errorCopySoft",
740
+ "detailDim": "BiQ1zG_detailDim",
741
+ "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
742
+ "detailUpdateHint": "BiQ1zG_detailUpdateHint",
743
+ "aboutMeta": "BiQ1zG_aboutMeta",
744
+ "detailValue": "BiQ1zG_detailValue",
745
+ "restartNowWarning": "BiQ1zG_restartNowWarning",
746
+ "failHead": "BiQ1zG_failHead",
747
+ "modalCmd": "BiQ1zG_modalCmd",
748
+ "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
749
+ "hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
750
+ "modalClose": "BiQ1zG_modalClose",
751
+ "failRepo": "BiQ1zG_failRepo",
752
+ "failBigIssue": "BiQ1zG_failBigIssue",
723
753
  "noticeRowMain": "BiQ1zG_noticeRowMain",
724
- "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
725
- "noticeRowOk": "BiQ1zG_noticeRowOk",
726
- "aboutContent": "BiQ1zG_aboutContent",
727
- "modalHead": "BiQ1zG_modalHead",
728
754
  "noticeIgnore": "BiQ1zG_noticeIgnore",
729
755
  "detailLink": "BiQ1zG_detailLink",
730
- "modalCmd": "BiQ1zG_modalCmd",
731
- "modalLabel": "BiQ1zG_modalLabel",
732
- "aboutModal": "BiQ1zG_aboutModal",
733
- "helpModal": "BiQ1zG_helpModal",
734
- "noticeList": "BiQ1zG_noticeList",
735
- "noticeHead": "BiQ1zG_noticeHead",
736
- "modalTitleQueued": "BiQ1zG_modalTitleQueued",
737
- "noticeTextOk": "BiQ1zG_noticeTextOk",
738
- "failRow": "BiQ1zG_failRow",
739
- "result": "BiQ1zG_result",
756
+ "modalHead": "BiQ1zG_modalHead",
740
757
  "restartNow": "BiQ1zG_restartNow",
741
- "cliOnlyHint": "BiQ1zG_cliOnlyHint",
742
- "overlay": "BiQ1zG_overlay",
743
- "modal": "BiQ1zG_modal",
744
- "noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
745
- "errorModal": "BiQ1zG_errorModal",
746
- "failBigIssue": "BiQ1zG_failBigIssue",
747
- "detailMono": "BiQ1zG_detailMono",
748
- "hubUpdateModal": "BiQ1zG_hubUpdateModal",
749
- "queueRowDesc": "BiQ1zG_queueRowDesc",
750
- "queueRowStatus": "BiQ1zG_queueRowStatus",
751
- "noticeFoot": "BiQ1zG_noticeFoot",
752
- "failPrepareHint": "BiQ1zG_failPrepareHint",
753
- "stripCancel": "BiQ1zG_stripCancel",
754
- "progressFillFail": "BiQ1zG_progressFillFail",
755
- "modalLink": "BiQ1zG_modalLink",
756
- "toast": "BiQ1zG_toast",
757
- "noticeRemove": "BiQ1zG_noticeRemove",
758
- "failKind": "BiQ1zG_failKind",
759
- "detailStatusPending": "BiQ1zG_detailStatusPending",
760
- "linkIcon": "BiQ1zG_linkIcon",
761
- "modalCmdText": "BiQ1zG_modalCmdText",
762
- "detailStatusText": "BiQ1zG_detailStatusText",
763
- "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
764
- "progressFill": "BiQ1zG_progressFill",
758
+ "queueRowPct": "BiQ1zG_queueRowPct",
759
+ "detailPathBtn": "BiQ1zG_detailPathBtn",
760
+ "helpModal": "BiQ1zG_helpModal",
761
+ "progress": "BiQ1zG_progress",
762
+ "progressTrack": "BiQ1zG_progressTrack",
763
+ "errorTitle": "BiQ1zG_errorTitle",
764
+ "resultDesc": "BiQ1zG_resultDesc",
765
765
  "failedCopyHint": "BiQ1zG_failedCopyHint",
766
- "failHead": "BiQ1zG_failHead",
767
- "detailModal": "BiQ1zG_detailModal",
768
- "detailPathActions": "BiQ1zG_detailPathActions",
769
- "progressText": "BiQ1zG_progressText",
770
- "resultRestarting": "BiQ1zG_resultRestarting",
771
- "detailRow": "BiQ1zG_detailRow",
772
766
  "toastFail": "BiQ1zG_toastFail",
773
- "logModal": "BiQ1zG_logModal",
774
- "uninstallConfirm": "BiQ1zG_uninstallConfirm",
775
- "noticeMain": "BiQ1zG_noticeMain",
776
- "detailDim": "BiQ1zG_detailDim",
777
- "hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
778
- "noticeRow": "BiQ1zG_noticeRow",
779
- "resultTitle": "BiQ1zG_resultTitle",
780
- "detailStars": "BiQ1zG_detailStars",
781
- "toastIn": "BiQ1zG_toastIn"
767
+ "queueRowStatus": "BiQ1zG_queueRowStatus",
768
+ "hubUpdateModal": "BiQ1zG_hubUpdateModal",
769
+ "errorBox": "BiQ1zG_errorBox",
770
+ "noticeHead": "BiQ1zG_noticeHead",
771
+ "noticeTextFail": "BiQ1zG_noticeTextFail",
772
+ "modalDesc": "BiQ1zG_modalDesc",
773
+ "failEmpty": "BiQ1zG_failEmpty",
774
+ "aboutContent": "BiQ1zG_aboutContent",
775
+ "modalValue": "BiQ1zG_modalValue",
776
+ "queueRowTrack": "BiQ1zG_queueRowTrack",
777
+ "failCopy": "BiQ1zG_failCopy",
778
+ "resultCheckIcon": "BiQ1zG_resultCheckIcon",
779
+ "modalTitleQueued": "BiQ1zG_modalTitleQueued",
780
+ "modalIn": "BiQ1zG_modalIn",
781
+ "modal": "BiQ1zG_modal"
782
782
  };
783
783
  //#endregion
784
784
  //#region src/client/logic/install-command.ts
@@ -848,7 +848,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
848
848
  * tsdown 构建时用 define 把 __PLUGIN_VERSION__ 替换成 package.json 的版本号;
849
849
  * node --test 直接 import 本模块时该标识符不存在,typeof 守卫兜底为空串。
850
850
  */
851
- const PLUGIN_VERSION = "1.3.1";
851
+ const PLUGIN_VERSION = "1.3.2";
852
852
  const CATEGORY_ORDER = [
853
853
  "interface",
854
854
  "session",
@@ -1438,7 +1438,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1438
1438
  */
1439
1439
  const hubHasUpdate = (() => {
1440
1440
  if (!hubUpdateInfo) return false;
1441
- return hubUpdateInfo.version !== "1.3.1";
1441
+ return hubUpdateInfo.version !== "1.3.2";
1442
1442
  })();
1443
1443
  (0, react.useMemo)(() => {
1444
1444
  if (!plugins) return [];
@@ -3645,41 +3645,41 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3645
3645
  tag.dataset.plugin = "dsh-plugin";
3646
3646
  tag.dataset.pluginCss = tagId$9;
3647
3647
  tag.textContent = css$9;
3648
- document.head.appendChild(tag);
3649
- }
3650
- var List_module_css_default = {
3651
- "installBtnUpdate": "_3XaZHa_installBtnUpdate",
3652
- "fork": "_3XaZHa_fork",
3653
- "body": "_3XaZHa_body",
3654
- "categoryBadge": "_3XaZHa_categoryBadge",
3655
- "desc": "_3XaZHa_desc",
3656
- "stateTitle": "_3XaZHa_stateTitle",
3657
- "list": "_3XaZHa_list",
3648
+ document.head.appendChild(tag);
3649
+ }
3650
+ var List_module_css_default = {
3651
+ "cardTitle": "_3XaZHa_cardTitle",
3652
+ "installBtnInstalled": "_3XaZHa_installBtnInstalled",
3658
3653
  "topic": "_3XaZHa_topic",
3659
- "footLink": "_3XaZHa_footLink",
3654
+ "body": "_3XaZHa_body",
3655
+ "cardHead": "_3XaZHa_cardHead",
3656
+ "card": "_3XaZHa_card",
3657
+ "detailBtn": "_3XaZHa_detailBtn",
3658
+ "cardSide": "_3XaZHa_cardSide",
3660
3659
  "state": "_3XaZHa_state",
3661
- "installBtn": "_3XaZHa_installBtn",
3662
- "moreSentinel": "_3XaZHa_moreSentinel",
3663
- "stats": "_3XaZHa_stats",
3660
+ "footLink": "_3XaZHa_footLink",
3664
3661
  "actions": "_3XaZHa_actions",
3665
- "date": "_3XaZHa_date",
3666
- "installBtnInstalled": "_3XaZHa_installBtnInstalled",
3667
- "cardTitle": "_3XaZHa_cardTitle",
3668
- "stateDesc": "_3XaZHa_stateDesc",
3669
- "cardSide": "_3XaZHa_cardSide",
3662
+ "verified": "_3XaZHa_verified",
3663
+ "installBtnUpdate": "_3XaZHa_installBtnUpdate",
3664
+ "fork": "_3XaZHa_fork",
3670
3665
  "footer": "_3XaZHa_footer",
3671
- "detailBtn": "_3XaZHa_detailBtn",
3672
- "versionBadge": "_3XaZHa_versionBadge",
3673
3666
  "cardMain": "_3XaZHa_cardMain",
3667
+ "moreSentinel": "_3XaZHa_moreSentinel",
3668
+ "list": "_3XaZHa_list",
3669
+ "retryBtn": "_3XaZHa_retryBtn",
3670
+ "categoryBadge": "_3XaZHa_categoryBadge",
3671
+ "uninstallBtn": "_3XaZHa_uninstallBtn",
3672
+ "stats": "_3XaZHa_stats",
3673
+ "versionBadge": "_3XaZHa_versionBadge",
3674
+ "desc": "_3XaZHa_desc",
3675
+ "updateBadge": "_3XaZHa_updateBadge",
3674
3676
  "topics": "_3XaZHa_topics",
3675
- "verified": "_3XaZHa_verified",
3676
3677
  "installBtnCopied": "_3XaZHa_installBtnCopied",
3677
- "cardHead": "_3XaZHa_cardHead",
3678
- "updateBadge": "_3XaZHa_updateBadge",
3679
- "retryBtn": "_3XaZHa_retryBtn",
3680
- "card": "_3XaZHa_card",
3678
+ "stateDesc": "_3XaZHa_stateDesc",
3681
3679
  "star": "_3XaZHa_star",
3682
- "uninstallBtn": "_3XaZHa_uninstallBtn"
3680
+ "installBtn": "_3XaZHa_installBtn",
3681
+ "stateTitle": "_3XaZHa_stateTitle",
3682
+ "date": "_3XaZHa_date"
3683
3683
  };
3684
3684
  //#endregion
3685
3685
  //#region src/client/hooks/useIncrementalList.ts
@@ -3876,15 +3876,15 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3876
3876
  document.head.appendChild(tag);
3877
3877
  }
3878
3878
  var SectionTabs_module_css_default = {
3879
- "noticeIcon": "_7tvizq_noticeIcon",
3880
- "tabIcon": "_7tvizq_tabIcon",
3881
- "tab": "_7tvizq_tab",
3882
3879
  "tabActive": "_7tvizq_tabActive",
3880
+ "noticeIcon": "_7tvizq_noticeIcon",
3883
3881
  "noticeCount": "_7tvizq_noticeCount",
3884
- "tabCountActive": "_7tvizq_tabCountActive",
3885
- "tabCount": "_7tvizq_tabCount",
3886
3882
  "root": "_7tvizq_root",
3887
- "noticeBtn": "_7tvizq_noticeBtn"
3883
+ "noticeBtn": "_7tvizq_noticeBtn",
3884
+ "tab": "_7tvizq_tab",
3885
+ "tabCount": "_7tvizq_tabCount",
3886
+ "tabIcon": "_7tvizq_tabIcon",
3887
+ "tabCountActive": "_7tvizq_tabCountActive"
3888
3888
  };
3889
3889
  //#endregion
3890
3890
  //#region src/client/components/layout/SectionTabs.tsx
@@ -3956,42 +3956,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3956
3956
  document.head.appendChild(tag);
3957
3957
  }
3958
3958
  var InstalledView_module_css_default = {
3959
- "statusDot": "_1nXeGW_statusDot",
3960
- "emptyTitle": "_1nXeGW_emptyTitle",
3961
- "rowTitleLine": "_1nXeGW_rowTitleLine",
3962
- "rowMain": "_1nXeGW_rowMain",
3959
+ "segRow": "_1nXeGW_segRow",
3960
+ "root": "_1nXeGW_root",
3961
+ "emptyDesc": "_1nXeGW_emptyDesc",
3962
+ "row": "_1nXeGW_row",
3963
3963
  "rowCategory": "_1nXeGW_rowCategory",
3964
- "rowUpdate": "_1nXeGW_rowUpdate",
3964
+ "emptyTitle": "_1nXeGW_emptyTitle",
3965
+ "empty": "_1nXeGW_empty",
3966
+ "rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
3965
3967
  "rowMeta": "_1nXeGW_rowMeta",
3966
- "versionBadge": "_1nXeGW_versionBadge",
3967
3968
  "segLabel": "_1nXeGW_segLabel",
3968
- "toolbar": "_1nXeGW_toolbar",
3969
- "segBtn": "_1nXeGW_segBtn",
3970
- "row": "_1nXeGW_row",
3971
3969
  "rowSourceTag": "_1nXeGW_rowSourceTag",
3972
- "rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
3970
+ "exampleBadge": "_1nXeGW_exampleBadge",
3971
+ "segBtn": "_1nXeGW_segBtn",
3972
+ "rowDetail": "_1nXeGW_rowDetail",
3973
+ "rowUpdate": "_1nXeGW_rowUpdate",
3974
+ "segBtnActive": "_1nXeGW_segBtnActive",
3975
+ "toolbar": "_1nXeGW_toolbar",
3973
3976
  "list": "_1nXeGW_list",
3974
- "rowUninstall": "_1nXeGW_rowUninstall",
3977
+ "statusPending": "_1nXeGW_statusPending",
3978
+ "rowRepo": "_1nXeGW_rowRepo",
3979
+ "updateBadge": "_1nXeGW_updateBadge",
3980
+ "rowTitle": "_1nXeGW_rowTitle",
3981
+ "rowRestart": "_1nXeGW_rowRestart",
3975
3982
  "searchWrap": "_1nXeGW_searchWrap",
3976
3983
  "segGroup": "_1nXeGW_segGroup",
3977
- "emptyDesc": "_1nXeGW_emptyDesc",
3978
- "rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
3979
- "exampleBadge": "_1nXeGW_exampleBadge",
3980
- "rowActions": "_1nXeGW_rowActions",
3981
- "statusPending": "_1nXeGW_statusPending",
3984
+ "rowDesc": "_1nXeGW_rowDesc",
3982
3985
  "statusInactive": "_1nXeGW_statusInactive",
3983
- "segRow": "_1nXeGW_segRow",
3984
- "updateBadge": "_1nXeGW_updateBadge",
3985
- "rowRepo": "_1nXeGW_rowRepo",
3986
+ "rowUninstall": "_1nXeGW_rowUninstall",
3987
+ "rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
3986
3988
  "searchInput": "_1nXeGW_searchInput",
3987
- "rowDetail": "_1nXeGW_rowDetail",
3988
- "rowTitle": "_1nXeGW_rowTitle",
3989
- "empty": "_1nXeGW_empty",
3990
3989
  "exampleRow": "_1nXeGW_exampleRow",
3991
- "rowDesc": "_1nXeGW_rowDesc",
3992
- "root": "_1nXeGW_root",
3993
- "rowRestart": "_1nXeGW_rowRestart",
3994
- "segBtnActive": "_1nXeGW_segBtnActive"
3990
+ "rowActions": "_1nXeGW_rowActions",
3991
+ "rowTitleLine": "_1nXeGW_rowTitleLine",
3992
+ "rowMain": "_1nXeGW_rowMain",
3993
+ "statusDot": "_1nXeGW_statusDot",
3994
+ "versionBadge": "_1nXeGW_versionBadge"
3995
3995
  };
3996
3996
  //#endregion
3997
3997
  //#region src/client/components/views/InstalledView.tsx
@@ -4232,27 +4232,27 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4232
4232
  document.head.appendChild(tag);
4233
4233
  }
4234
4234
  var CustomInstallView_module_css_default = {
4235
- "installCardHead": "zISxCG_installCardHead",
4235
+ "helpLine": "zISxCG_helpLine",
4236
4236
  "installError": "zISxCG_installError",
4237
+ "installCards": "zISxCG_installCards",
4238
+ "installLabel": "zISxCG_installLabel",
4239
+ "installCardDisabled": "zISxCG_installCardDisabled",
4237
4240
  "helpBody": "zISxCG_helpBody",
4238
- "helpLine": "zISxCG_helpLine",
4239
- "root": "zISxCG_root",
4240
- "installExample": "zISxCG_installExample",
4241
4241
  "installInput": "zISxCG_installInput",
4242
- "channelOffBtn": "zISxCG_channelOffBtn",
4242
+ "installCard": "zISxCG_installCard",
4243
4243
  "helpCmd": "zISxCG_helpCmd",
4244
- "installHelpBtn": "zISxCG_installHelpBtn",
4245
- "desc": "zISxCG_desc",
4246
- "channelOff": "zISxCG_channelOff",
4244
+ "channelOffText": "zISxCG_channelOffText",
4247
4245
  "helpNote": "zISxCG_helpNote",
4248
- "installLabel": "zISxCG_installLabel",
4249
- "installCardDisabled": "zISxCG_installCardDisabled",
4250
- "installCard": "zISxCG_installCard",
4251
- "installBtn": "zISxCG_installBtn",
4246
+ "installCardHead": "zISxCG_installCardHead",
4252
4247
  "installRow": "zISxCG_installRow",
4253
- "channelOffText": "zISxCG_channelOffText",
4248
+ "channelOff": "zISxCG_channelOff",
4254
4249
  "installInputError": "zISxCG_installInputError",
4255
- "installCards": "zISxCG_installCards"
4250
+ "channelOffBtn": "zISxCG_channelOffBtn",
4251
+ "installBtn": "zISxCG_installBtn",
4252
+ "installExample": "zISxCG_installExample",
4253
+ "installHelpBtn": "zISxCG_installHelpBtn",
4254
+ "desc": "zISxCG_desc",
4255
+ "root": "zISxCG_root"
4256
4256
  };
4257
4257
  //#endregion
4258
4258
  //#region src/client/components/views/CustomInstallView.tsx
@@ -4520,26 +4520,26 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4520
4520
  document.head.appendChild(tag);
4521
4521
  }
4522
4522
  var SettingsView_module_css_default = {
4523
- "settingRow": "_506LLG_settingRow",
4524
- "textInput": "_506LLG_textInput",
4525
- "content": "_506LLG_content",
4526
- "navItem": "_506LLG_navItem",
4523
+ "pageTitle": "_506LLG_pageTitle",
4527
4524
  "settingControlStack": "_506LLG_settingControlStack",
4525
+ "navItem": "_506LLG_navItem",
4526
+ "navItemActive": "_506LLG_navItemActive",
4527
+ "content": "_506LLG_content",
4528
+ "settingLabel": "_506LLG_settingLabel",
4528
4529
  "sidebar": "_506LLG_sidebar",
4530
+ "settingRowStack": "_506LLG_settingRowStack",
4531
+ "settingDesc": "_506LLG_settingDesc",
4532
+ "pageHeader": "_506LLG_pageHeader",
4529
4533
  "controlDropdown": "_506LLG_controlDropdown",
4530
- "settingTitle": "_506LLG_settingTitle",
4531
- "settingLabel": "_506LLG_settingLabel",
4532
- "card": "_506LLG_card",
4533
4534
  "root": "_506LLG_root",
4534
- "pageTitle": "_506LLG_pageTitle",
4535
+ "card": "_506LLG_card",
4536
+ "textInput": "_506LLG_textInput",
4535
4537
  "pageDesc": "_506LLG_pageDesc",
4536
- "navItemActive": "_506LLG_navItemActive",
4537
- "resetBtn": "_506LLG_resetBtn",
4538
- "settingControl": "_506LLG_settingControl",
4539
- "pageHeader": "_506LLG_pageHeader",
4540
- "settingDesc": "_506LLG_settingDesc",
4538
+ "settingTitle": "_506LLG_settingTitle",
4539
+ "settingRow": "_506LLG_settingRow",
4541
4540
  "navIcon": "_506LLG_navIcon",
4542
- "settingRowStack": "_506LLG_settingRowStack"
4541
+ "settingControl": "_506LLG_settingControl",
4542
+ "resetBtn": "_506LLG_resetBtn"
4543
4543
  };
4544
4544
  //#endregion
4545
4545
  //#region \0dsh-css:src/client/styles/Dropdown.module.css.mjs
@@ -4553,17 +4553,17 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4553
4553
  document.head.appendChild(tag);
4554
4554
  }
4555
4555
  var Dropdown_module_css_default = {
4556
+ "dropdown": "B_Gxsq_dropdown",
4557
+ "dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen",
4558
+ "dropdownCountActive": "B_Gxsq_dropdownCountActive",
4559
+ "dropdownPanel": "B_Gxsq_dropdownPanel",
4556
4560
  "dropdownItemLabel": "B_Gxsq_dropdownItemLabel",
4557
4561
  "dropdownLabel": "B_Gxsq_dropdownLabel",
4562
+ "dropdownCount": "B_Gxsq_dropdownCount",
4558
4563
  "dropdownBtn": "B_Gxsq_dropdownBtn",
4559
- "dropdownPanel": "B_Gxsq_dropdownPanel",
4560
- "dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen",
4561
4564
  "dropdownArrow": "B_Gxsq_dropdownArrow",
4562
- "dropdownItemActive": "B_Gxsq_dropdownItemActive",
4563
- "dropdownCountActive": "B_Gxsq_dropdownCountActive",
4564
- "dropdownCount": "B_Gxsq_dropdownCount",
4565
- "dropdown": "B_Gxsq_dropdown",
4566
- "dropdownItem": "B_Gxsq_dropdownItem"
4565
+ "dropdownItem": "B_Gxsq_dropdownItem",
4566
+ "dropdownItemActive": "B_Gxsq_dropdownItemActive"
4567
4567
  };
4568
4568
  //#endregion
4569
4569
  //#region src/client/components/ui/Dropdown.tsx
@@ -4636,9 +4636,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4636
4636
  document.head.appendChild(tag);
4637
4637
  }
4638
4638
  var Toggle_module_css_default = {
4639
+ "knob": "k-cD4G_knob",
4639
4640
  "toggle": "k-cD4G_toggle",
4640
- "toggleOn": "k-cD4G_toggleOn",
4641
- "knob": "k-cD4G_knob"
4641
+ "toggleOn": "k-cD4G_toggleOn"
4642
4642
  };
4643
4643
  //#endregion
4644
4644
  //#region src/client/components/ui/Toggle.tsx
@@ -4674,29 +4674,29 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4674
4674
  document.head.appendChild(tag);
4675
4675
  }
4676
4676
  var DiagnosticsView_module_css_default = {
4677
- "badgeRunning": "k9eRya_badgeRunning",
4678
- "meta": "k9eRya_meta",
4679
- "envLabel": "k9eRya_envLabel",
4680
- "summaryOk": "k9eRya_summaryOk",
4681
- "runBtn": "k9eRya_runBtn",
4682
- "head": "k9eRya_head",
4683
- "badge": "k9eRya_badge",
4684
- "badgeOk": "k9eRya_badgeOk",
4685
- "badgeFail": "k9eRya_badgeFail",
4677
+ "envDesc": "k9eRya_envDesc",
4686
4678
  "panel": "k9eRya_panel",
4687
- "display": "k9eRya_display",
4688
- "envCopyBtn": "k9eRya_envCopyBtn",
4689
- "summaryFail": "k9eRya_summaryFail",
4690
- "row": "k9eRya_row",
4691
- "badgeIdle": "k9eRya_badgeIdle",
4692
4679
  "envRow": "k9eRya_envRow",
4680
+ "badge": "k9eRya_badge",
4681
+ "display": "k9eRya_display",
4682
+ "envLabel": "k9eRya_envLabel",
4683
+ "badgeFail": "k9eRya_badgeFail",
4693
4684
  "envTitle": "k9eRya_envTitle",
4694
- "diagPulse": "k9eRya_diagPulse",
4685
+ "head": "k9eRya_head",
4686
+ "badgeRunning": "k9eRya_badgeRunning",
4687
+ "badgeIdle": "k9eRya_badgeIdle",
4695
4688
  "summary": "k9eRya_summary",
4689
+ "runBtn": "k9eRya_runBtn",
4690
+ "envCopyBtn": "k9eRya_envCopyBtn",
4691
+ "summaryOk": "k9eRya_summaryOk",
4692
+ "diagPulse": "k9eRya_diagPulse",
4696
4693
  "summaryRunning": "k9eRya_summaryRunning",
4697
- "envDesc": "k9eRya_envDesc",
4694
+ "name": "k9eRya_name",
4695
+ "badgeOk": "k9eRya_badgeOk",
4698
4696
  "headHint": "k9eRya_headHint",
4699
- "name": "k9eRya_name"
4697
+ "meta": "k9eRya_meta",
4698
+ "summaryFail": "k9eRya_summaryFail",
4699
+ "row": "k9eRya_row"
4700
4700
  };
4701
4701
  //#endregion
4702
4702
  //#region src/client/components/views/DiagnosticsView.tsx
@@ -4854,56 +4854,56 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4854
4854
  document.head.appendChild(tag);
4855
4855
  }
4856
4856
  var LogsView_module_css_default = {
4857
- "filterBar": "_3j77BW_filterBar",
4858
- "pathDialog": "_3j77BW_pathDialog",
4859
- "search": "_3j77BW_search",
4860
- "logList": "_3j77BW_logList",
4861
- "badgeError": "_3j77BW_badgeError",
4857
+ "pathDialogFoot": "_3j77BW_pathDialogFoot",
4862
4858
  "pathLabel": "_3j77BW_pathLabel",
4859
+ "footCount": "_3j77BW_footCount",
4860
+ "headHint": "_3j77BW_headHint",
4861
+ "actions": "_3j77BW_actions",
4862
+ "panel": "_3j77BW_panel",
4863
4863
  "btnPrimary": "_3j77BW_btnPrimary",
4864
- "head": "_3j77BW_head",
4865
- "badgeDebug": "_3j77BW_badgeDebug",
4864
+ "badgeInfo": "_3j77BW_badgeInfo",
4866
4865
  "message": "_3j77BW_message",
4867
- "filterChip": "_3j77BW_filterChip",
4868
- "pathText": "_3j77BW_pathText",
4869
- "pathDialogDesc": "_3j77BW_pathDialogDesc",
4870
- "pathDialogFoot": "_3j77BW_pathDialogFoot",
4871
4866
  "linkBtn": "_3j77BW_linkBtn",
4872
- "searchInput": "_3j77BW_searchInput",
4873
- "footCount": "_3j77BW_footCount",
4874
- "catBadge": "_3j77BW_catBadge",
4867
+ "badgeSuccess": "_3j77BW_badgeSuccess",
4868
+ "pathText": "_3j77BW_pathText",
4869
+ "search": "_3j77BW_search",
4875
4870
  "catInstall": "_3j77BW_catInstall",
4876
- "catUninstall": "_3j77BW_catUninstall",
4877
- "catDiagnostics": "_3j77BW_catDiagnostics",
4878
- "footPath": "_3j77BW_footPath",
4871
+ "badgeDebug": "_3j77BW_badgeDebug",
4872
+ "catBadge": "_3j77BW_catBadge",
4873
+ "badgeError": "_3j77BW_badgeError",
4874
+ "empty": "_3j77BW_empty",
4875
+ "pathDialogReset": "_3j77BW_pathDialogReset",
4876
+ "searchInput": "_3j77BW_searchInput",
4877
+ "catSystem": "_3j77BW_catSystem",
4878
+ "catSettings": "_3j77BW_catSettings",
4879
4879
  "footFail": "_3j77BW_footFail",
4880
- "badgeSuccess": "_3j77BW_badgeSuccess",
4881
- "footActions": "_3j77BW_footActions",
4882
- "entry": "_3j77BW_entry",
4880
+ "filterChipActive": "_3j77BW_filterChipActive",
4883
4881
  "more": "_3j77BW_more",
4884
- "list": "_3j77BW_list",
4885
- "pathRow": "_3j77BW_pathRow",
4886
- "time": "_3j77BW_time",
4887
- "pathDialogRow": "_3j77BW_pathDialogRow",
4888
4882
  "pathDialogHint": "_3j77BW_pathDialogHint",
4889
4883
  "foot": "_3j77BW_foot",
4890
- "badge": "_3j77BW_badge",
4891
- "btn": "_3j77BW_btn",
4892
- "badgeWarn": "_3j77BW_badgeWarn",
4893
- "catUpdate": "_3j77BW_catUpdate",
4894
- "catSystem": "_3j77BW_catSystem",
4895
- "empty": "_3j77BW_empty",
4896
- "pathDialogReset": "_3j77BW_pathDialogReset",
4897
- "actions": "_3j77BW_actions",
4898
- "panel": "_3j77BW_panel",
4899
- "previewRow": "_3j77BW_previewRow",
4884
+ "filterBar": "_3j77BW_filterBar",
4900
4885
  "event": "_3j77BW_event",
4886
+ "filterChip": "_3j77BW_filterChip",
4901
4887
  "pathDraft": "_3j77BW_pathDraft",
4902
- "badgeInfo": "_3j77BW_badgeInfo",
4903
- "headHint": "_3j77BW_headHint",
4904
- "filterChipActive": "_3j77BW_filterChipActive",
4888
+ "footPath": "_3j77BW_footPath",
4889
+ "catDiagnostics": "_3j77BW_catDiagnostics",
4890
+ "pathRow": "_3j77BW_pathRow",
4891
+ "list": "_3j77BW_list",
4892
+ "previewRow": "_3j77BW_previewRow",
4905
4893
  "moreEnd": "_3j77BW_moreEnd",
4906
- "catSettings": "_3j77BW_catSettings"
4894
+ "entry": "_3j77BW_entry",
4895
+ "head": "_3j77BW_head",
4896
+ "footActions": "_3j77BW_footActions",
4897
+ "logList": "_3j77BW_logList",
4898
+ "badge": "_3j77BW_badge",
4899
+ "badgeWarn": "_3j77BW_badgeWarn",
4900
+ "pathDialog": "_3j77BW_pathDialog",
4901
+ "pathDialogRow": "_3j77BW_pathDialogRow",
4902
+ "catUninstall": "_3j77BW_catUninstall",
4903
+ "catUpdate": "_3j77BW_catUpdate",
4904
+ "pathDialogDesc": "_3j77BW_pathDialogDesc",
4905
+ "time": "_3j77BW_time",
4906
+ "btn": "_3j77BW_btn"
4907
4907
  };
4908
4908
  //#endregion
4909
4909
  //#region src/client/components/modals/LogsModal.tsx
@@ -6040,7 +6040,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6040
6040
  });
6041
6041
  }
6042
6042
  }), showHubUpdate && (0, react.createElement)(HubUpdateModal, {
6043
- info: catalog.hubUpdateInfo ?? { version: "1.3.1" },
6043
+ info: catalog.hubUpdateInfo ?? { version: "1.3.2" },
6044
6044
  lang,
6045
6045
  t,
6046
6046
  hasUpdate: catalog.hubHasUpdate,
@@ -660,6 +660,8 @@ export function mountPluginHubRoutes(webServer, profile, loader) {
660
660
  attempts,
661
661
  timeoutMs: COMMAND_TIMEOUT_MS,
662
662
  env: mutationEnv(settings),
663
+ // 覆盖更新:npm 通道命令显式 @latest(pnpm add 无版本对已存在依赖是幂等的,不加版本不会真更新)
664
+ updateNpm: mode === 'update',
663
665
  });
664
666
  sendJson(response, 200, { ok: true, task: task.id });
665
667
  }
@@ -227,20 +227,26 @@ function pumpQueue() {
227
227
  * Never rejects; failures surface through the result / task state.
228
228
  */
229
229
  function spawnMutation(options) {
230
- const { action, profile, target, timeoutMs = 5 * 60 * 1000, env, task, displayTarget, uninstallLoader, globalNpm } = options;
230
+ const { action, profile, target, timeoutMs = 5 * 60 * 1000, env, task, displayTarget, uninstallLoader, globalNpm, updateNpm } = options;
231
231
  // 全局 npm 安装:直接 spawn 本机 npm(`npm install -g <pkgs>`),不是 dsh plugin 命令
232
232
  const isGlobalNpm = (globalNpm ?? []).length > 0;
233
233
  const invocation = isGlobalNpm
234
234
  ? { file: 'npm', prefixArgs: [], cwd: process.cwd(), useShell: process.platform === 'win32' }
235
235
  : cliInvocation();
236
+ // 更新已安装的 npm 包:显式指定 @latest。pnpm add <pkg>(无版本)对已存在依赖
237
+ // (尤其精确 spec 如 "1.3.0")是幂等的 —— 输出 "Already up to date" 且不改 package.json,
238
+ // 导致「更新成功」但实际仍停留在旧版本;git 地址与全局安装不受此影响。
239
+ const npmUpdateTarget = updateNpm && !isGlobalNpm && githubRepoOf(target) === null
240
+ ? `${target}@latest`
241
+ : target;
236
242
  const args = isGlobalNpm
237
243
  ? ['install', '-g', ...(globalNpm ?? [])]
238
- : [...invocation.prefixArgs, 'plugin', '--profile', profile, action, target];
244
+ : [...invocation.prefixArgs, 'plugin', '--profile', profile, action, npmUpdateTarget];
239
245
  // 记录实际执行的命令(npm 通道显示包名,git 通道显示 HTTPS 源),
240
246
  // 失败提 Issue 时作为「已尝试的安装方式」随附
241
247
  const executed = isGlobalNpm
242
248
  ? `npm install -g ${(globalNpm ?? []).join(' ')}`
243
- : `dsh plugin --profile ${profile} ${action} ${target}`;
249
+ : `dsh plugin --profile ${profile} ${action} ${npmUpdateTarget}`;
244
250
  if (task && !task.attempts.includes(executed)) {
245
251
  task.attempts.push(executed);
246
252
  }
@@ -50,6 +50,8 @@ export declare function startPluginMutation(options: {
50
50
  uninstallLoader?: LoaderHandle;
51
51
  /** 入队前已尝试的安装方式(npm registry 反查等):失败提 Issue 时如实展示;实际执行的命令由 spawn 时追加 */
52
52
  attempts?: string[];
53
+ /** 更新已安装的 npm 包(mode=update):命令显式带 @latest,让 pnpm 真正解析最新版本 */
54
+ updateNpm?: boolean;
53
55
  }): InstallTask;
54
56
  /**
55
57
  * 安装后校验已装包的入口文件(package.json 的 main / exports["."].default)是否真实存在。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-plugin",
3
- "version": "1.3.1",
3
+ "version": "1.3.2",
4
4
  "description": "A community plugin marketplace for DeepSeek Harness, built to the official plugin spec — browse, search and install 4000+ human-curated community plugins without leaving the app. · DeepSeek Harness 社区插件市场(遵循官方开发规范):4000+ 人工精选社区插件,每日更新。",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -659,6 +659,8 @@ export function mountPluginHubRoutes(webServer: WebServerService, profile: strin
659
659
  attempts,
660
660
  timeoutMs: COMMAND_TIMEOUT_MS,
661
661
  env: mutationEnv(settings),
662
+ // 覆盖更新:npm 通道命令显式 @latest(pnpm add 无版本对已存在依赖是幂等的,不加版本不会真更新)
663
+ updateNpm: mode === 'update',
662
664
  })
663
665
  sendJson(response, 200, { ok: true, task: task.id })
664
666
  } catch (error) {
@@ -177,6 +177,8 @@ export function startPluginMutation(options: {
177
177
  uninstallLoader?: LoaderHandle
178
178
  /** 入队前已尝试的安装方式(npm registry 反查等):失败提 Issue 时如实展示;实际执行的命令由 spawn 时追加 */
179
179
  attempts?: string[]
180
+ /** 更新已安装的 npm 包(mode=update):命令显式带 @latest,让 pnpm 真正解析最新版本 */
181
+ updateNpm?: boolean
180
182
  }): InstallTask {
181
183
  const task: InstallTask = { id: nextTaskId, target: options.target, displayTarget: options.displayTarget, globalNpm: options.globalNpm, action: options.action, status: 'pending', timedOut: false, exitCode: null, progress: 0, lines: [], attempts: options.attempts ?? [], needsRestart: false }
182
184
  nextTaskId = nextTaskId >= Number.MAX_SAFE_INTEGER ? 1 : nextTaskId + 1
@@ -266,21 +268,29 @@ function spawnMutation(options: {
266
268
  uninstallLoader?: LoaderHandle
267
269
  /** 全局 npm 安装(官方 `npm install -g <pkgs>`):非空时执行全局安装,不进任何 profile、无需宿主重启 */
268
270
  globalNpm?: string[]
271
+ /** 更新已安装的 npm 包(mode=update):命令显式带 @latest,让 pnpm 真正解析最新版本 */
272
+ updateNpm?: boolean
269
273
  }): Promise<InstallResult> {
270
- const { action, profile, target, timeoutMs = 5 * 60 * 1000, env, task, displayTarget, uninstallLoader, globalNpm } = options
274
+ const { action, profile, target, timeoutMs = 5 * 60 * 1000, env, task, displayTarget, uninstallLoader, globalNpm, updateNpm } = options
271
275
  // 全局 npm 安装:直接 spawn 本机 npm(`npm install -g <pkgs>`),不是 dsh plugin 命令
272
276
  const isGlobalNpm = (globalNpm ?? []).length > 0
273
277
  const invocation = isGlobalNpm
274
278
  ? { file: 'npm', prefixArgs: [], cwd: process.cwd(), useShell: process.platform === 'win32' }
275
279
  : cliInvocation()
280
+ // 更新已安装的 npm 包:显式指定 @latest。pnpm add <pkg>(无版本)对已存在依赖
281
+ // (尤其精确 spec 如 "1.3.0")是幂等的 —— 输出 "Already up to date" 且不改 package.json,
282
+ // 导致「更新成功」但实际仍停留在旧版本;git 地址与全局安装不受此影响。
283
+ const npmUpdateTarget = updateNpm && !isGlobalNpm && githubRepoOf(target) === null
284
+ ? `${target}@latest`
285
+ : target
276
286
  const args = isGlobalNpm
277
287
  ? ['install', '-g', ...(globalNpm ?? [])]
278
- : [...invocation.prefixArgs, 'plugin', '--profile', profile, action, target]
288
+ : [...invocation.prefixArgs, 'plugin', '--profile', profile, action, npmUpdateTarget]
279
289
  // 记录实际执行的命令(npm 通道显示包名,git 通道显示 HTTPS 源),
280
290
  // 失败提 Issue 时作为「已尝试的安装方式」随附
281
291
  const executed = isGlobalNpm
282
292
  ? `npm install -g ${(globalNpm ?? []).join(' ')}`
283
- : `dsh plugin --profile ${profile} ${action} ${target}`
293
+ : `dsh plugin --profile ${profile} ${action} ${npmUpdateTarget}`
284
294
  if (task && !task.attempts.includes(executed)) {
285
295
  task.attempts.push(executed)
286
296
  }