dsh-plugin 2.3.0 → 2.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
@@ -361,7 +361,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
361
361
  failKind_pluginMissingDep: "插件依赖未发布",
362
362
  failReason_pluginMissingDep: "插件声明依赖的包在官方 npm 源上不存在(已删除或从未发布)。",
363
363
  failKind_registryVersionStale: "该版本在所用源上不存在",
364
- failReason_registryVersionStale: "实际安装用的源还没同步到这个版本,或版本号写错。",
364
+ failReason_registryVersionStale: "实际安装用的源还没同步到这个版本。可稍后重试,或到「设置 → npm 镜像源」换成官方源;也可先安装上一个可用版本。",
365
365
  failKind_registryAuth: "npm 源拒绝了访问",
366
366
  failReason_registryAuth: "registry 返回 401/403:这个源需要登录凭据,或当前网络不被允许。",
367
367
  failKind_profileExclusive: "profile 由桌面应用独占管理",
@@ -424,6 +424,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
424
424
  installEntryLine: "安装入口:{c}。",
425
425
  reportIssue: "去插件仓库提交 Issue",
426
426
  detail: "打开详情",
427
+ installDetail: "安装详情",
428
+ author: "作者",
427
429
  noResult: "没有找到匹配的插件",
428
430
  noResultDesc: "换个关键词试试,或前往网站浏览全部插件。",
429
431
  today: "今天更新",
@@ -456,7 +458,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
456
458
  hubPendingDesc: "最新版已发布,但发布尚未满 24 小时:此时更新会被 pnpm 静默回退到旧版本,因此暂不提示。稍后这里会自动出现更新入口。",
457
459
  followUs: "关注我们",
458
460
  aboutTitle: "关注我们",
459
- aboutDesc: "了解 DSH Plugin Hub 是做什么的,加入用户反馈群随时交流。",
461
+ aboutDesc: "了解 DSH Plugin Hub 是做什么的,访问主站浏览插件,或到 GitHub 提交 Issue。",
460
462
  aboutEmpty: "内容暂未发布,敬请期待。",
461
463
  aboutUpdated: "更新于",
462
464
  empty: "该分类暂无插件",
@@ -810,7 +812,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
810
812
  failKind_pluginMissingDep: "plugin dependency is not published",
811
813
  failReason_pluginMissingDep: "A package the plugin depends on does not exist on the official npm registry.",
812
814
  failKind_registryVersionStale: "this version is not available on the registry in use",
813
- failReason_registryVersionStale: "The registry that actually performs the install has not synced this version yet, or the version is mistyped.",
815
+ failReason_registryVersionStale: "The registry that actually performs the install has not synced this version yet. Retry later, switch to the official registry under Settings → npm mirror, or install a previous version for now.",
814
816
  failKind_registryAuth: "the npm registry rejected access",
815
817
  failReason_registryAuth: "The registry returned 401/403: it needs credentials, or the current network is not allowed.",
816
818
  failKind_profileExclusive: "the profile is managed only by the desktop app",
@@ -873,6 +875,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
873
875
  installEntryLine: "Install entry: {c}.",
874
876
  reportIssue: "Report an Issue to the plugin repo",
875
877
  detail: "Open details",
878
+ installDetail: "Install details",
879
+ author: "Author",
876
880
  noResult: "No plugins match your search",
877
881
  noResultDesc: "Try another keyword, or browse all plugins on the website.",
878
882
  today: "updated today",
@@ -905,7 +909,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
905
909
  hubPendingDesc: "The latest version has been released, but it is still within the 24-hour window where pnpm silently falls back to the older version, so the update is not offered yet. The update entry will appear here shortly.",
906
910
  followUs: "Follow us",
907
911
  aboutTitle: "Follow us",
908
- aboutDesc: "Learn what DSH Plugin Hub does and join our user feedback group.",
912
+ aboutDesc: "Learn what DSH Plugin Hub does — browse plugins on the website, or open an Issue on GitHub.",
909
913
  aboutEmpty: "Content not published yet — stay tuned.",
910
914
  aboutUpdated: "Updated",
911
915
  empty: "No plugins in this category yet",
@@ -928,42 +932,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
928
932
  css: css$11
929
933
  });
930
934
  var Header_module_css_default = {
931
- "copyIcon": "qikqja_copyIcon",
932
- "adBanner": "qikqja_adBanner",
933
935
  "adBadge": "qikqja_adBadge",
934
- "taglineLink": "qikqja_taglineLink",
935
- "tab": "qikqja_tab",
936
- "tabActive": "qikqja_tabActive",
937
- "tabsRow": "qikqja_tabsRow",
938
- "tagline": "qikqja_tagline",
939
- "githubIcon": "qikqja_githubIcon",
940
- "header": "qikqja_header",
941
- "searchRow": "qikqja_searchRow",
942
- "headerRight": "qikqja_headerRight",
943
- "segBtnActive": "qikqja_segBtnActive",
944
- "tabs": "qikqja_tabs",
945
- "headerTitleRow": "qikqja_headerTitleRow",
946
- "segBtn": "qikqja_segBtn",
947
- "logoIcon": "qikqja_logoIcon",
948
- "githubLink": "qikqja_githubLink",
949
- "version": "qikqja_version",
950
- "title": "qikqja_title",
951
- "segLabel": "qikqja_segLabel",
936
+ "adText": "qikqja_adText",
952
937
  "adArrow": "qikqja_adArrow",
953
- "versionBtn": "qikqja_versionBtn",
954
- "segGroup": "qikqja_segGroup",
955
938
  "root": "qikqja_root",
956
- "sortGroup": "qikqja_sortGroup",
957
- "search": "qikqja_search",
958
- "adText": "qikqja_adText",
939
+ "segBtnActive": "qikqja_segBtnActive",
940
+ "header": "qikqja_header",
941
+ "versionBtn": "qikqja_versionBtn",
959
942
  "hubUpdateBadge": "qikqja_hubUpdateBadge",
960
943
  "langBtn": "qikqja_langBtn",
961
- "brandTitle": "qikqja_brandTitle",
962
- "aboutBtn": "qikqja_aboutBtn",
944
+ "githubIcon": "qikqja_githubIcon",
963
945
  "resultCount": "qikqja_resultCount",
964
- "tabCount": "qikqja_tabCount",
946
+ "search": "qikqja_search",
965
947
  "controls": "qikqja_controls",
966
- "resultSeg": "qikqja_resultSeg"
948
+ "tabs": "qikqja_tabs",
949
+ "segGroup": "qikqja_segGroup",
950
+ "segBtn": "qikqja_segBtn",
951
+ "resultSeg": "qikqja_resultSeg",
952
+ "segLabel": "qikqja_segLabel",
953
+ "version": "qikqja_version",
954
+ "tagline": "qikqja_tagline",
955
+ "searchRow": "qikqja_searchRow",
956
+ "tabActive": "qikqja_tabActive",
957
+ "title": "qikqja_title",
958
+ "tab": "qikqja_tab",
959
+ "tabCount": "qikqja_tabCount",
960
+ "aboutBtn": "qikqja_aboutBtn",
961
+ "brandTitle": "qikqja_brandTitle",
962
+ "sortGroup": "qikqja_sortGroup",
963
+ "adBanner": "qikqja_adBanner",
964
+ "taglineLink": "qikqja_taglineLink",
965
+ "githubLink": "qikqja_githubLink",
966
+ "headerRight": "qikqja_headerRight",
967
+ "tabsRow": "qikqja_tabsRow",
968
+ "headerTitleRow": "qikqja_headerTitleRow",
969
+ "logoIcon": "qikqja_logoIcon",
970
+ "copyIcon": "qikqja_copyIcon"
967
971
  };
968
972
  //#endregion
969
973
  //#region \0dsh-css:src/client/styles/Modal.module.css.mjs
@@ -982,147 +986,147 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
982
986
  css: css$10
983
987
  });
984
988
  var Modal_module_css_default = {
985
- "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
986
- "modalLink": "BiQ1zG_modalLink",
989
+ "resultTitle": "BiQ1zG_resultTitle",
990
+ "detailPathBtn": "BiQ1zG_detailPathBtn",
991
+ "noticeHead": "BiQ1zG_noticeHead",
992
+ "detailStatusText": "BiQ1zG_detailStatusText",
993
+ "detailArrow": "BiQ1zG_detailArrow",
994
+ "detailPathActions": "BiQ1zG_detailPathActions",
987
995
  "progressHead": "BiQ1zG_progressHead",
988
- "failNetworkTarget": "BiQ1zG_failNetworkTarget",
989
- "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
990
- "detailModal": "BiQ1zG_detailModal",
991
- "toastFail": "BiQ1zG_toastFail",
992
- "queuedHint": "BiQ1zG_queuedHint",
993
- "failBigIssue": "BiQ1zG_failBigIssue",
994
- "noticeRowOk": "BiQ1zG_noticeRowOk",
995
- "queueRowTarget": "BiQ1zG_queueRowTarget",
996
- "progressTrack": "BiQ1zG_progressTrack",
997
- "restartNowWarning": "BiQ1zG_restartNowWarning",
998
- "failRepo": "BiQ1zG_failRepo",
999
- "stripCancel": "BiQ1zG_stripCancel",
1000
- "resultRestarting": "BiQ1zG_resultRestarting",
1001
- "queueRowDesc": "BiQ1zG_queueRowDesc",
1002
- "failedCopyHint": "BiQ1zG_failedCopyHint",
1003
- "noticeMain": "BiQ1zG_noticeMain",
1004
- "modalLabel": "BiQ1zG_modalLabel",
1005
- "detailGrid": "BiQ1zG_detailGrid",
1006
- "resultCheck": "BiQ1zG_resultCheck",
1007
- "detailStatusPending": "BiQ1zG_detailStatusPending",
996
+ "failCopy": "BiQ1zG_failCopy",
997
+ "noticeTextFail": "BiQ1zG_noticeTextFail",
1008
998
  "noticeTextOk": "BiQ1zG_noticeTextOk",
1009
- "modalCmdText": "BiQ1zG_modalCmdText",
999
+ "hubStateLatest": "BiQ1zG_hubStateLatest",
1000
+ "restartNow": "BiQ1zG_restartNow",
1001
+ "confirmPrimary": "BiQ1zG_confirmPrimary",
1002
+ "logModal": "BiQ1zG_logModal",
1003
+ "modalDesc": "BiQ1zG_modalDesc",
1004
+ "noticeRemove": "BiQ1zG_noticeRemove",
1005
+ "detailDim": "BiQ1zG_detailDim",
1010
1006
  "noticeRowMain": "BiQ1zG_noticeRowMain",
1011
- "queueRowStatus": "BiQ1zG_queueRowStatus",
1012
- "errorModal": "BiQ1zG_errorModal",
1013
- "confirmIconDanger": "BiQ1zG_confirmIconDanger",
1014
- "noticeVersion": "BiQ1zG_noticeVersion",
1015
- "modalRow": "BiQ1zG_modalRow",
1016
- "failClear": "BiQ1zG_failClear",
1017
- "errorTitle": "BiQ1zG_errorTitle",
1007
+ "failKind": "BiQ1zG_failKind",
1008
+ "noticeRow": "BiQ1zG_noticeRow",
1009
+ "noticeTime": "BiQ1zG_noticeTime",
1010
+ "failedCopyHint": "BiQ1zG_failedCopyHint",
1018
1011
  "cliOnlyHint": "BiQ1zG_cliOnlyHint",
1019
- "toast": "BiQ1zG_toast",
1020
- "resultCheckIcon": "BiQ1zG_resultCheckIcon",
1021
- "resultDesc": "BiQ1zG_resultDesc",
1022
- "failEmpty": "BiQ1zG_failEmpty",
1023
- "hubVersionBar": "BiQ1zG_hubVersionBar",
1012
+ "modalCmdCopy": "BiQ1zG_modalCmdCopy",
1013
+ "modalCloseIcon": "BiQ1zG_modalCloseIcon",
1014
+ "queueRowDesc": "BiQ1zG_queueRowDesc",
1015
+ "hubStateAvailable": "BiQ1zG_hubStateAvailable",
1024
1016
  "detailRow": "BiQ1zG_detailRow",
1025
- "queueRowBody": "BiQ1zG_queueRowBody",
1026
- "detailPathActions": "BiQ1zG_detailPathActions",
1027
- "noticeTime": "BiQ1zG_noticeTime",
1028
- "failCopy": "BiQ1zG_failCopy",
1029
- "hubVersionDate": "BiQ1zG_hubVersionDate",
1017
+ "hubVersionNumber": "BiQ1zG_hubVersionNumber",
1018
+ "detailPathText": "BiQ1zG_detailPathText",
1019
+ "hubUpdateModal": "BiQ1zG_hubUpdateModal",
1020
+ "progressFillFail": "BiQ1zG_progressFillFail",
1021
+ "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
1022
+ "detailStatusPending": "BiQ1zG_detailStatusPending",
1023
+ "errorModal": "BiQ1zG_errorModal",
1024
+ "failList": "BiQ1zG_failList",
1025
+ "aboutModal": "BiQ1zG_aboutModal",
1026
+ "progress": "BiQ1zG_progress",
1027
+ "failMisjudgeLink": "BiQ1zG_failMisjudgeLink",
1028
+ "failEmpty": "BiQ1zG_failEmpty",
1029
+ "detailGrid": "BiQ1zG_detailGrid",
1030
+ "trustHint": "BiQ1zG_trustHint",
1031
+ "errorCopySoft": "BiQ1zG_errorCopySoft",
1032
+ "modalTitle": "BiQ1zG_modalTitle",
1033
+ "result": "BiQ1zG_result",
1034
+ "modalBody": "BiQ1zG_modalBody",
1035
+ "modalTitleQueued": "BiQ1zG_modalTitleQueued",
1036
+ "modalCmd": "BiQ1zG_modalCmd",
1037
+ "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
1038
+ "modalClose": "BiQ1zG_modalClose",
1039
+ "aboutContent": "BiQ1zG_aboutContent",
1040
+ "modalActions": "BiQ1zG_modalActions",
1041
+ "confirmIconWrap": "BiQ1zG_confirmIconWrap",
1042
+ "aboutMeta": "BiQ1zG_aboutMeta",
1043
+ "failKindInstall": "BiQ1zG_failKindInstall",
1044
+ "modalLabel": "BiQ1zG_modalLabel",
1045
+ "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
1046
+ "detailPath": "BiQ1zG_detailPath",
1047
+ "detailStars": "BiQ1zG_detailStars",
1048
+ "uninstallConfirm": "BiQ1zG_uninstallConfirm",
1049
+ "noticeList": "BiQ1zG_noticeList",
1050
+ "queueRowPct": "BiQ1zG_queueRowPct",
1051
+ "resultDesc": "BiQ1zG_resultDesc",
1030
1052
  "dangerConfirm": "BiQ1zG_dangerConfirm",
1053
+ "queuedHint": "BiQ1zG_queuedHint",
1054
+ "restartLater": "BiQ1zG_restartLater",
1055
+ "noticeIgnore": "BiQ1zG_noticeIgnore",
1031
1056
  "toastIn": "BiQ1zG_toastIn",
1032
- "failRepoLabel": "BiQ1zG_failRepoLabel",
1033
- "helpModal": "BiQ1zG_helpModal",
1057
+ "modalHead": "BiQ1zG_modalHead",
1058
+ "hubStateChip": "BiQ1zG_hubStateChip",
1034
1059
  "failReason": "BiQ1zG_failReason",
1035
- "hubStateLatest": "BiQ1zG_hubStateLatest",
1036
- "progress": "BiQ1zG_progress",
1037
- "restartNow": "BiQ1zG_restartNow",
1060
+ "progressTrack": "BiQ1zG_progressTrack",
1061
+ "noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
1062
+ "toast": "BiQ1zG_toast",
1063
+ "modalCopy": "BiQ1zG_modalCopy",
1064
+ "progressText": "BiQ1zG_progressText",
1065
+ "failClear": "BiQ1zG_failClear",
1066
+ "hubVersionBar": "BiQ1zG_hubVersionBar",
1067
+ "pendingRowStatus": "BiQ1zG_pendingRowStatus",
1068
+ "hubVersionDate": "BiQ1zG_hubVersionDate",
1038
1069
  "detailLabel": "BiQ1zG_detailLabel",
1039
- "modalTitleBusy": "BiQ1zG_modalTitleBusy",
1040
- "noticeHead": "BiQ1zG_noticeHead",
1070
+ "detailModal": "BiQ1zG_detailModal",
1041
1071
  "hubStatePending": "BiQ1zG_hubStatePending",
1042
- "detailValue": "BiQ1zG_detailValue",
1043
- "modalCmd": "BiQ1zG_modalCmd",
1072
+ "confirmIconDanger": "BiQ1zG_confirmIconDanger",
1073
+ "errorTitle": "BiQ1zG_errorTitle",
1074
+ "overlay": "BiQ1zG_overlay",
1075
+ "helpModal": "BiQ1zG_helpModal",
1076
+ "noticeRowOk": "BiQ1zG_noticeRowOk",
1077
+ "modalTitleBusy": "BiQ1zG_modalTitleBusy",
1078
+ "modalLink": "BiQ1zG_modalLink",
1079
+ "noticeVersion": "BiQ1zG_noticeVersion",
1080
+ "queueRowTrack": "BiQ1zG_queueRowTrack",
1081
+ "confirmIcon": "BiQ1zG_confirmIcon",
1082
+ "errorHint": "BiQ1zG_errorHint",
1083
+ "modalRow": "BiQ1zG_modalRow",
1084
+ "resultRestarting": "BiQ1zG_resultRestarting",
1085
+ "failHead": "BiQ1zG_failHead",
1086
+ "failRepoUrl": "BiQ1zG_failRepoUrl",
1087
+ "detailLink": "BiQ1zG_detailLink",
1044
1088
  "detailStatusRunning": "BiQ1zG_detailStatusRunning",
1089
+ "queueSection": "BiQ1zG_queueSection",
1090
+ "modalCancel": "BiQ1zG_modalCancel",
1091
+ "resultCheck": "BiQ1zG_resultCheck",
1045
1092
  "overlayIn": "BiQ1zG_overlayIn",
1093
+ "detailMono": "BiQ1zG_detailMono",
1094
+ "queueRowBody": "BiQ1zG_queueRowBody",
1095
+ "failKindTitle": "BiQ1zG_failKindTitle",
1096
+ "failPrepareHint": "BiQ1zG_failPrepareHint",
1097
+ "modalIn": "BiQ1zG_modalIn",
1098
+ "queueRowStatus": "BiQ1zG_queueRowStatus",
1099
+ "resultCheckIcon": "BiQ1zG_resultCheckIcon",
1100
+ "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
1101
+ "failNetworkTarget": "BiQ1zG_failNetworkTarget",
1102
+ "modalValue": "BiQ1zG_modalValue",
1103
+ "toastFail": "BiQ1zG_toastFail",
1104
+ "stripCancel": "BiQ1zG_stripCancel",
1105
+ "bundleDeselectedHint": "BiQ1zG_bundleDeselectedHint",
1106
+ "failRepo": "BiQ1zG_failRepo",
1107
+ "failDiagBtn": "BiQ1zG_failDiagBtn",
1108
+ "failRepoLabel": "BiQ1zG_failRepoLabel",
1109
+ "failBigIssue": "BiQ1zG_failBigIssue",
1110
+ "detailValue": "BiQ1zG_detailValue",
1111
+ "restartNowWarning": "BiQ1zG_restartNowWarning",
1046
1112
  "errorBox": "BiQ1zG_errorBox",
1047
- "errorHint": "BiQ1zG_errorHint",
1048
- "modalTitleQueued": "BiQ1zG_modalTitleQueued",
1049
- "failMisjudgeLink": "BiQ1zG_failMisjudgeLink",
1050
- "hubStateChip": "BiQ1zG_hubStateChip",
1051
- "failRepoUrl": "BiQ1zG_failRepoUrl",
1052
- "noticeRow": "BiQ1zG_noticeRow",
1053
1113
  "modalInstall": "BiQ1zG_modalInstall",
1054
- "modalValue": "BiQ1zG_modalValue",
1114
+ "modalWide": "BiQ1zG_modalWide",
1115
+ "modal": "BiQ1zG_modal",
1116
+ "progressFill": "BiQ1zG_progressFill",
1117
+ "detailUpdateHint": "BiQ1zG_detailUpdateHint",
1055
1118
  "linkIcon": "BiQ1zG_linkIcon",
1056
- "detailMono": "BiQ1zG_detailMono",
1057
- "detailStars": "BiQ1zG_detailStars",
1058
- "queueRowHead": "BiQ1zG_queueRowHead",
1059
- "hubUpdateModal": "BiQ1zG_hubUpdateModal",
1060
- "confirmIconWrap": "BiQ1zG_confirmIconWrap",
1061
- "noticeList": "BiQ1zG_noticeList",
1062
- "modalCopy": "BiQ1zG_modalCopy",
1063
- "trustHint": "BiQ1zG_trustHint",
1064
- "noticeIgnore": "BiQ1zG_noticeIgnore",
1065
- "confirmIcon": "BiQ1zG_confirmIcon",
1066
- "noticeTextFail": "BiQ1zG_noticeTextFail",
1067
- "restartLater": "BiQ1zG_restartLater",
1068
- "noticeRemove": "BiQ1zG_noticeRemove",
1069
- "modalTitle": "BiQ1zG_modalTitle",
1070
- "detailArrow": "BiQ1zG_detailArrow",
1071
- "aboutModal": "BiQ1zG_aboutModal",
1072
- "noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
1073
- "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
1074
- "pendingRowStatus": "BiQ1zG_pendingRowStatus",
1075
- "progressText": "BiQ1zG_progressText",
1076
- "modalIn": "BiQ1zG_modalIn",
1077
- "failKindInstall": "BiQ1zG_failKindInstall",
1078
- "modalCloseIcon": "BiQ1zG_modalCloseIcon",
1119
+ "noticeMain": "BiQ1zG_noticeMain",
1120
+ "queueSectionTitle": "BiQ1zG_queueSectionTitle",
1079
1121
  "pendingRowActions": "BiQ1zG_pendingRowActions",
1080
- "hubVersionNumber": "BiQ1zG_hubVersionNumber",
1081
- "resultTitle": "BiQ1zG_resultTitle",
1082
1122
  "failKindUninstall": "BiQ1zG_failKindUninstall",
1083
- "detailPathText": "BiQ1zG_detailPathText",
1084
- "queueRow": "BiQ1zG_queueRow",
1085
- "failPrepareHint": "BiQ1zG_failPrepareHint",
1086
- "queueSectionTitle": "BiQ1zG_queueSectionTitle",
1087
- "failKind": "BiQ1zG_failKind",
1088
- "detailPath": "BiQ1zG_detailPath",
1089
- "failList": "BiQ1zG_failList",
1090
- "failDiagBtn": "BiQ1zG_failDiagBtn",
1091
- "modalHead": "BiQ1zG_modalHead",
1092
- "modalCancel": "BiQ1zG_modalCancel",
1093
- "logModal": "BiQ1zG_logModal",
1094
- "modalDesc": "BiQ1zG_modalDesc",
1095
- "uninstallConfirm": "BiQ1zG_uninstallConfirm",
1096
- "failKindTitle": "BiQ1zG_failKindTitle",
1097
- "detailStatusText": "BiQ1zG_detailStatusText",
1098
- "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
1099
- "modalCmdCopy": "BiQ1zG_modalCmdCopy",
1123
+ "queueRowHead": "BiQ1zG_queueRowHead",
1100
1124
  "noticeFoot": "BiQ1zG_noticeFoot",
1101
- "detailPathBtn": "BiQ1zG_detailPathBtn",
1102
- "modalBody": "BiQ1zG_modalBody",
1103
- "modal": "BiQ1zG_modal",
1104
- "errorCopySoft": "BiQ1zG_errorCopySoft",
1105
- "aboutMeta": "BiQ1zG_aboutMeta",
1106
- "failHead": "BiQ1zG_failHead",
1107
- "noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
1108
- "modalClose": "BiQ1zG_modalClose",
1109
- "progressFillFail": "BiQ1zG_progressFillFail",
1110
- "hubStateAvailable": "BiQ1zG_hubStateAvailable",
1111
- "aboutContent": "BiQ1zG_aboutContent",
1112
- "overlay": "BiQ1zG_overlay",
1113
- "modalWide": "BiQ1zG_modalWide",
1114
- "confirmPrimary": "BiQ1zG_confirmPrimary",
1125
+ "queueRowTarget": "BiQ1zG_queueRowTarget",
1126
+ "noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
1127
+ "modalCmdText": "BiQ1zG_modalCmdText",
1115
1128
  "failRow": "BiQ1zG_failRow",
1116
- "bundleDeselectedHint": "BiQ1zG_bundleDeselectedHint",
1117
- "progressFill": "BiQ1zG_progressFill",
1118
- "detailDim": "BiQ1zG_detailDim",
1119
- "queueSection": "BiQ1zG_queueSection",
1120
- "queueRowPct": "BiQ1zG_queueRowPct",
1121
- "detailUpdateHint": "BiQ1zG_detailUpdateHint",
1122
- "detailLink": "BiQ1zG_detailLink",
1123
- "queueRowTrack": "BiQ1zG_queueRowTrack",
1124
- "result": "BiQ1zG_result",
1125
- "modalActions": "BiQ1zG_modalActions"
1129
+ "queueRow": "BiQ1zG_queueRow"
1126
1130
  };
1127
1131
  //#endregion
1128
1132
  //#region src/server/services/install/release-target.ts
@@ -1167,11 +1171,15 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1167
1171
  }
1168
1172
  /** 展示用安装命令(复制/弹窗):目录下发的权威命令优先(CLI-only 插件如 dsh-tui
1169
1173
  * 需专属 profile(--profile dsh-tui),无法从 npm 包名推断,必须用官方命令);
1170
- * 常规插件无目录命令时用 npm 包名回退生成。 */
1171
- function installCommandOf(p, withProfile = false) {
1174
+ * 常规插件无目录命令时用 npm 包名回退生成。
1175
+ * version 为已过供应链门禁的版本:带上它,手抄命令与原位安装的执行结果一致,
1176
+ * 不会因 pnpm 门禁静默回退到很旧的版本。 */
1177
+ function installCommandOf(p, withProfile = false, version) {
1172
1178
  const cmd = p.install?.command;
1173
1179
  if (cmd) return cmd;
1174
- return `${`dsh plugin${withProfile ? " --profile web" : ""} add `}${installTargetOf(p)}`;
1180
+ const prefix = `dsh plugin${withProfile ? " --profile web" : ""} add `;
1181
+ const target = installTargetOf(p);
1182
+ return `${prefix}${version === void 0 || version === "" ? target : `${target}@${version}`}`;
1175
1183
  }
1176
1184
  /** 把任务/安装目标归一化为 owner/repo 展示身份。 */
1177
1185
  function repoFromInstallTarget(value) {
@@ -1212,7 +1220,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1212
1220
  * tsdown 构建时用 define 把 __PLUGIN_VERSION__ 替换成 package.json 的版本号;
1213
1221
  * node --test 直接 import 本模块时该标识符不存在,typeof 守卫兜底为空串。
1214
1222
  */
1215
- const PLUGIN_VERSION = "2.3.0";
1223
+ const PLUGIN_VERSION = "2.3.2";
1216
1224
  const CATEGORY_ORDER = [
1217
1225
  "interface",
1218
1226
  "session",
@@ -2133,7 +2141,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2133
2141
  * registry 真实发布时间下发(同源),据此判断最准。门槛命中要单列成 `pending` 而不是
2134
2142
  * 落回「无更新」——回落会让弹窗在本机版本落后时谎称「已是最新」。
2135
2143
  */
2136
- const hubCurrentVersion = "2.3.0";
2144
+ const hubCurrentVersion = "2.3.2";
2137
2145
  const hubUpdateResult = hubUpdateInfo === null ? {
2138
2146
  state: "none",
2139
2147
  target: null
@@ -3352,7 +3360,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3352
3360
  desc: p.description,
3353
3361
  version: p.version,
3354
3362
  updatedAt: p.dates?.repoUpdatedAt,
3355
- command: installCommandOf(p, true),
3363
+ command: installCommandOf(p, true, opts?.pinVersion),
3356
3364
  source: "catalog",
3357
3365
  update: opts?.update,
3358
3366
  pinVersion: opts?.pinVersion
@@ -4039,7 +4047,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4039
4047
  * 目录插件与命令行安装(customTarget 模式)共用同一套确认/进度/结果流程。
4040
4048
  */
4041
4049
  function InstallModal(props) {
4042
- const { plugin, customTarget, globalNpm, done, task, t, langPath, restarting, submitting, update, cliOnly, needsRestart, needsReload, bundleDeselected, onClose, onCopy, onInstall, onRestart } = props;
4050
+ const { plugin, customTarget, globalNpm, done, task, t, langPath, restarting, submitting, update, pinVersion, cliOnly, needsRestart, needsReload, bundleDeselected, onClose, onCopy, onInstall, onRestart } = props;
4043
4051
  const busy = submitting || task !== null && (task.status === "pending" || task.status === "running");
4044
4052
  const name = customTarget ?? (globalNpm !== void 0 && globalNpm.length > 0 ? globalNpm.join(" ") : void 0) ?? plugin?.displayName ?? plugin?.slug ?? "";
4045
4053
  const busyTitle = (label) => langPath === "zh/" ? `${name} 插件${label}` : `${label} ${name}`;
@@ -4082,7 +4090,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4082
4090
  title: t("copyInstallCommand"),
4083
4091
  role: "button",
4084
4092
  tabIndex: 0
4085
- }, (0, react.createElement)("span", { className: Modal_module_css_default.modalCmdText }, globalNpm !== void 0 && globalNpm.length > 0 ? `npm install -g ${globalNpm.join(" ")}` : customTarget ? `pnpm add ${customTarget}` : installCommandOf(plugin)), (0, react.createElement)("span", { className: Modal_module_css_default.modalCmdCopy }, (0, react.createElement)(CopyIcon), t("copyCmdLabel"))), globalNpm !== void 0 && globalNpm.length > 0 ? (0, react.createElement)("div", { className: Modal_module_css_default.cliOnlyHint }, t("globalNpmHint")) : null, cliOnly ? (0, react.createElement)("div", { className: Modal_module_css_default.cliOnlyHint }, t(plugin?.install?.manualInstall === true ? "manualInstallOnlyHint" : "cliOnlyHint")) : null, task && task.status === "pending" ? (0, react.createElement)("div", { className: Modal_module_css_default.queuedHint }, t("queuedHint")) : null, task ? (0, react.createElement)(ProgressView, { task }) : null, task && task.status === "failed" ? (0, react.createElement)("div", { className: Modal_module_css_default.failedCopyHint }, t("failedCopyHint")) : null, (0, react.createElement)("div", { className: Modal_module_css_default.modalActions }, (0, react.createElement)("button", {
4093
+ }, (0, react.createElement)("span", { className: Modal_module_css_default.modalCmdText }, globalNpm !== void 0 && globalNpm.length > 0 ? `npm install -g ${globalNpm.join(" ")}` : customTarget ? `pnpm add ${customTarget}` : installCommandOf(plugin, false, pinVersion)), (0, react.createElement)("span", { className: Modal_module_css_default.modalCmdCopy }, (0, react.createElement)(CopyIcon), t("copyCmdLabel"))), globalNpm !== void 0 && globalNpm.length > 0 ? (0, react.createElement)("div", { className: Modal_module_css_default.cliOnlyHint }, t("globalNpmHint")) : null, cliOnly ? (0, react.createElement)("div", { className: Modal_module_css_default.cliOnlyHint }, t(plugin?.install?.manualInstall === true ? "manualInstallOnlyHint" : "cliOnlyHint")) : null, task && task.status === "pending" ? (0, react.createElement)("div", { className: Modal_module_css_default.queuedHint }, t("queuedHint")) : null, task ? (0, react.createElement)(ProgressView, { task }) : null, task && task.status === "failed" ? (0, react.createElement)("div", { className: Modal_module_css_default.failedCopyHint }, t("failedCopyHint")) : null, (0, react.createElement)("div", { className: Modal_module_css_default.modalActions }, (0, react.createElement)("button", {
4086
4094
  className: Modal_module_css_default.modalCopy,
4087
4095
  disabled: busy,
4088
4096
  onClick: onCopy
@@ -5190,7 +5198,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5190
5198
  }
5191
5199
  //#endregion
5192
5200
  //#region \0dsh-css:src/client/styles/List.module.css.mjs
5193
- const css$9 = "._3XaZHa_body{flex-direction:column;flex:1;min-height:0;display:flex}._3XaZHa_list{flex-direction:column;flex:1;gap:6px;min-height:0;padding:2px 4px 4px 2px;display:flex;overflow-y:auto}._3XaZHa_moreSentinel{flex-shrink:0;height:1px}._3XaZHa_card{border:1px solid var(--hub-border-2);background:var(--hub-bg-1);border-radius:8px;justify-content:space-between;align-items:stretch;gap:12px;padding:9px 12px;transition:border-color .12s,background .12s;display:flex}._3XaZHa_card:hover{border-color:var(--hub-brand);background:var(--hub-bg-2)}._3XaZHa_cardMain{flex-direction:column;gap:4px;min-width:0;display:flex}._3XaZHa_cardHead{align-items:center;gap:6px;min-width:0;display:flex}._3XaZHa_cardTitle{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;line-height:18px;overflow:hidden}._3XaZHa_categoryBadge,._3XaZHa_verified,._3XaZHa_versionBadge,._3XaZHa_updateBadge{border:1px solid #0000;border-radius:4px;flex-shrink:0;padding:0 6px;font-size:10px;line-height:16px}._3XaZHa_categoryBadge{color:var(--hub-brand);border-color:var(--hub-border-ghost)}._3XaZHa_verified{color:var(--hub-success);border-color:var(--hub-success-border)}._3XaZHa_versionBadge{color:var(--hub-text-secondary);border-color:var(--hub-border-input)}._3XaZHa_updateBadge{color:var(--hub-warn);border-color:var(--hub-warn-border);background:var(--hub-warn-tint)}._3XaZHa_desc{color:var(--hub-text-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:12px;line-height:18px;display:-webkit-box;overflow:hidden}._3XaZHa_topics{flex-wrap:wrap;align-items:center;gap:4px;min-width:0;display:flex}._3XaZHa_topic{color:var(--hub-text-tertiary);background:var(--hub-bg-3);white-space:nowrap;border-radius:4px;flex-shrink:0;padding:0 6px;font-size:10px;line-height:16px}._3XaZHa_cardSide{flex-direction:column;flex-shrink:0;justify-content:space-between;align-items:flex-end;gap:6px;display:flex}._3XaZHa_stats{flex-direction:column;align-items:flex-end;gap:1px;display:flex}._3XaZHa_star{color:var(--hub-warn);white-space:nowrap;font-size:11px;line-height:16px}._3XaZHa_fork{color:var(--hub-text-tertiary);white-space:nowrap;font-size:11px;line-height:16px}._3XaZHa_date{color:var(--hub-text-tertiary);white-space:nowrap;font-size:10px;line-height:14px}._3XaZHa_installBtn,._3XaZHa_installBtnCopied,._3XaZHa_installBtnInstalled,._3XaZHa_installBtnUpdate,._3XaZHa_uninstallBtn,._3XaZHa_detailBtn{cursor:pointer;border-radius:6px;padding:2px 10px;font-size:11px;line-height:18px;transition:color .12s,border-color .12s,background .12s}._3XaZHa_installBtnInstalled{color:var(--hub-success);background:var(--hub-success-tint);cursor:default;-webkit-user-select:none;user-select:none;border:none}._3XaZHa_installBtnUpdate{color:#fff;background:var(--hub-warn);-webkit-user-select:none;user-select:none;border:none;font-weight:500}._3XaZHa_installBtnUpdate:hover{background:var(--hub-warn-strong)}._3XaZHa_uninstallBtn{color:var(--hub-danger);background:var(--hub-danger-tint);-webkit-user-select:none;user-select:none;border:none}._3XaZHa_uninstallBtn:hover{color:#fff;background:var(--hub-danger-hover)}body[data-ds-dark-theme] ._3XaZHa_uninstallBtn{color:#fff;background:var(--hub-danger)}body[data-ds-dark-theme] ._3XaZHa_uninstallBtn:hover{background:var(--hub-danger-hover)}._3XaZHa_installBtn{color:var(--hub-text-on-fill);background:var(--hub-btn-fill);-webkit-user-select:none;user-select:none;border:none;font-weight:500}._3XaZHa_installBtn:hover{background:var(--hub-btn-hover)}._3XaZHa_detailBtn{color:var(--hub-text-secondary);-webkit-user-select:none;user-select:none;background:0 0;border:none;align-items:center;text-decoration:none;display:inline-flex}._3XaZHa_detailBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._3XaZHa_actions{align-items:center;gap:6px;display:flex}._3XaZHa_installBtnCopied{color:var(--hub-success);background:var(--hub-success-tint);-webkit-user-select:none;user-select:none;border:none}._3XaZHa_state{text-align:center;min-height:160px;color:var(--hub-text-tertiary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:24px;font-size:12px;line-height:18px;display:flex}._3XaZHa_stateTitle{color:var(--hub-text-primary);font-size:13px;font-weight:600}._3XaZHa_stateDesc{max-width:420px}._3XaZHa_retryBtn{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;padding:4px 12px;font-size:12px;line-height:18px}._3XaZHa_retryBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._3XaZHa_stateActions{align-items:center;gap:8px;margin-top:4px;display:flex}._3XaZHa_diagBtn{color:#fff;background:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:4px 12px;font-size:12px;line-height:18px}._3XaZHa_diagBtn:hover{background:var(--hub-brand-hover)}._3XaZHa_footer{border-top:1px solid var(--hub-border-1);flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;padding:6px 4px 0;display:flex}._3XaZHa_footLink{color:var(--hub-brand);white-space:nowrap;-webkit-user-select:none;user-select:none;font-size:11px;line-height:16px;text-decoration:none}._3XaZHa_footLink:hover{text-decoration:underline}";
5201
+ const css$9 = "._3XaZHa_body{flex-direction:column;flex:1;min-height:0;display:flex}._3XaZHa_list{flex-direction:column;flex:1;gap:6px;min-height:0;padding:2px 4px 4px 2px;display:flex;overflow-y:auto}._3XaZHa_moreSentinel{flex-shrink:0;height:1px}._3XaZHa_card{border:1px solid var(--hub-border-2);background:var(--hub-bg-1);border-radius:8px;justify-content:space-between;align-items:stretch;gap:12px;padding:9px 12px;transition:border-color .12s,background .12s;display:flex}._3XaZHa_card:hover{border-color:var(--hub-brand);background:var(--hub-bg-2)}._3XaZHa_cardMain{flex-direction:column;gap:4px;min-width:0;display:flex}._3XaZHa_cardTitleRow{align-items:center;gap:6px;min-width:0;display:flex}._3XaZHa_cardTitle{white-space:nowrap;text-overflow:ellipsis;min-width:0;color:inherit;flex:0 auto;font-size:13px;font-weight:600;line-height:18px;text-decoration:none;transition:color .12s;overflow:hidden}a._3XaZHa_cardTitle:hover{color:var(--hub-brand);text-decoration:underline}._3XaZHa_cardBadgeRow{flex-wrap:wrap;align-items:center;gap:6px;display:flex}._3XaZHa_categoryBadge,._3XaZHa_verified,._3XaZHa_authorBadge,._3XaZHa_versionBadge,._3XaZHa_updateBadge{border:1px solid #0000;border-radius:4px;flex-shrink:0;padding:0 5px;font-size:10px;line-height:14px}._3XaZHa_authorBadge{color:var(--hub-text-tertiary);border-color:var(--hub-border-ghost);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}._3XaZHa_categoryBadge{color:var(--hub-brand);border-color:var(--hub-border-ghost)}._3XaZHa_verified{color:var(--hub-success);border-color:var(--hub-success-border)}._3XaZHa_versionBadge{color:var(--hub-text-secondary);border-color:var(--hub-border-input)}._3XaZHa_updateBadge{color:var(--hub-warn);border-color:var(--hub-warn-border);background:var(--hub-warn-tint)}._3XaZHa_desc{color:var(--hub-text-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:12px;line-height:18px;display:-webkit-box;overflow:hidden}._3XaZHa_topics{flex-wrap:wrap;align-items:center;gap:4px;min-width:0;display:flex}._3XaZHa_topic{color:var(--hub-text-tertiary);background:var(--hub-bg-3);white-space:nowrap;border-radius:4px;flex-shrink:0;padding:0 6px;font-size:10px;line-height:16px}._3XaZHa_cardSide{flex-direction:column;flex-shrink:0;justify-content:space-between;align-items:flex-end;gap:6px;display:flex}._3XaZHa_stats{flex-direction:column;align-items:flex-end;gap:1px;display:flex}._3XaZHa_star{color:var(--hub-warn);white-space:nowrap;font-size:11px;line-height:16px}._3XaZHa_fork{color:var(--hub-text-tertiary);white-space:nowrap;font-size:11px;line-height:16px}._3XaZHa_date{color:var(--hub-text-tertiary);white-space:nowrap;font-size:10px;line-height:14px}._3XaZHa_installBtn,._3XaZHa_installBtnCopied,._3XaZHa_installBtnInstalled,._3XaZHa_installBtnUpdate,._3XaZHa_uninstallBtn,._3XaZHa_detailBtn{cursor:pointer;border-radius:6px;padding:2px 10px;font-size:11px;line-height:18px;transition:color .12s,border-color .12s,background .12s}._3XaZHa_installBtnInstalled{color:var(--hub-success);background:var(--hub-success-tint);cursor:default;-webkit-user-select:none;user-select:none;border:none}._3XaZHa_installBtnUpdate{color:#fff;background:var(--hub-warn);-webkit-user-select:none;user-select:none;border:none;font-weight:500}._3XaZHa_installBtnUpdate:hover{background:var(--hub-warn-strong)}._3XaZHa_uninstallBtn{color:var(--hub-danger);background:var(--hub-danger-tint);-webkit-user-select:none;user-select:none;border:none}._3XaZHa_uninstallBtn:hover{color:#fff;background:var(--hub-danger-hover)}body[data-ds-dark-theme] ._3XaZHa_uninstallBtn{color:#fff;background:var(--hub-danger)}body[data-ds-dark-theme] ._3XaZHa_uninstallBtn:hover{background:var(--hub-danger-hover)}._3XaZHa_installBtn{color:var(--hub-text-on-fill);background:var(--hub-btn-fill);-webkit-user-select:none;user-select:none;border:none;font-weight:500}._3XaZHa_installBtn:hover{background:var(--hub-btn-hover)}._3XaZHa_detailBtn{color:var(--hub-text-secondary);-webkit-user-select:none;user-select:none;background:0 0;border:none;align-items:center;text-decoration:none;display:inline-flex}._3XaZHa_detailBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._3XaZHa_actions{align-items:center;gap:6px;display:flex}._3XaZHa_installBtnCopied{color:var(--hub-success);background:var(--hub-success-tint);-webkit-user-select:none;user-select:none;border:none}._3XaZHa_state{text-align:center;min-height:160px;color:var(--hub-text-tertiary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:24px;font-size:12px;line-height:18px;display:flex}._3XaZHa_stateTitle{color:var(--hub-text-primary);font-size:13px;font-weight:600}._3XaZHa_stateDesc{max-width:420px}._3XaZHa_retryBtn{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;padding:4px 12px;font-size:12px;line-height:18px}._3XaZHa_retryBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._3XaZHa_stateActions{align-items:center;gap:8px;margin-top:4px;display:flex}._3XaZHa_diagBtn{color:#fff;background:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:4px 12px;font-size:12px;line-height:18px}._3XaZHa_diagBtn:hover{background:var(--hub-brand-hover)}._3XaZHa_footer{border-top:1px solid var(--hub-border-1);flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;padding:6px 4px 0;display:flex}._3XaZHa_footLink{color:var(--hub-brand);white-space:nowrap;-webkit-user-select:none;user-select:none;font-size:11px;line-height:16px;text-decoration:none}._3XaZHa_footLink:hover{text-decoration:underline}";
5194
5202
  const tagId$9 = "dsh-plugin/List.module.css";
5195
5203
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$9) + "]") === null) {
5196
5204
  const tag = document.createElement("style");
@@ -5205,40 +5213,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5205
5213
  css: css$9
5206
5214
  });
5207
5215
  var List_module_css_default = {
5208
- "moreSentinel": "_3XaZHa_moreSentinel",
5209
- "installBtnUpdate": "_3XaZHa_installBtnUpdate",
5210
- "verified": "_3XaZHa_verified",
5211
- "topic": "_3XaZHa_topic",
5212
- "cardSide": "_3XaZHa_cardSide",
5213
- "cardHead": "_3XaZHa_cardHead",
5216
+ "cardBadgeRow": "_3XaZHa_cardBadgeRow",
5214
5217
  "fork": "_3XaZHa_fork",
5215
- "footer": "_3XaZHa_footer",
5216
- "date": "_3XaZHa_date",
5217
- "uninstallBtn": "_3XaZHa_uninstallBtn",
5218
- "card": "_3XaZHa_card",
5219
- "footLink": "_3XaZHa_footLink",
5218
+ "detailBtn": "_3XaZHa_detailBtn",
5219
+ "installBtnCopied": "_3XaZHa_installBtnCopied",
5220
5220
  "diagBtn": "_3XaZHa_diagBtn",
5221
- "topics": "_3XaZHa_topics",
5222
- "installBtnInstalled": "_3XaZHa_installBtnInstalled",
5223
- "stateTitle": "_3XaZHa_stateTitle",
5224
- "versionBadge": "_3XaZHa_versionBadge",
5221
+ "footLink": "_3XaZHa_footLink",
5222
+ "verified": "_3XaZHa_verified",
5223
+ "desc": "_3XaZHa_desc",
5225
5224
  "cardTitle": "_3XaZHa_cardTitle",
5226
- "stateDesc": "_3XaZHa_stateDesc",
5225
+ "cardMain": "_3XaZHa_cardMain",
5226
+ "versionBadge": "_3XaZHa_versionBadge",
5227
+ "card": "_3XaZHa_card",
5227
5228
  "body": "_3XaZHa_body",
5229
+ "installBtn": "_3XaZHa_installBtn",
5230
+ "installBtnInstalled": "_3XaZHa_installBtnInstalled",
5231
+ "installBtnUpdate": "_3XaZHa_installBtnUpdate",
5232
+ "uninstallBtn": "_3XaZHa_uninstallBtn",
5233
+ "footer": "_3XaZHa_footer",
5234
+ "topic": "_3XaZHa_topic",
5228
5235
  "categoryBadge": "_3XaZHa_categoryBadge",
5229
- "stats": "_3XaZHa_stats",
5236
+ "topics": "_3XaZHa_topics",
5237
+ "state": "_3XaZHa_state",
5238
+ "cardTitleRow": "_3XaZHa_cardTitleRow",
5239
+ "authorBadge": "_3XaZHa_authorBadge",
5240
+ "stateActions": "_3XaZHa_stateActions",
5241
+ "cardSide": "_3XaZHa_cardSide",
5242
+ "date": "_3XaZHa_date",
5230
5243
  "updateBadge": "_3XaZHa_updateBadge",
5231
- "installBtn": "_3XaZHa_installBtn",
5232
- "detailBtn": "_3XaZHa_detailBtn",
5244
+ "stats": "_3XaZHa_stats",
5245
+ "stateTitle": "_3XaZHa_stateTitle",
5246
+ "stateDesc": "_3XaZHa_stateDesc",
5233
5247
  "star": "_3XaZHa_star",
5234
- "state": "_3XaZHa_state",
5235
5248
  "retryBtn": "_3XaZHa_retryBtn",
5236
- "installBtnCopied": "_3XaZHa_installBtnCopied",
5237
- "cardMain": "_3XaZHa_cardMain",
5238
- "desc": "_3XaZHa_desc",
5239
- "list": "_3XaZHa_list",
5249
+ "moreSentinel": "_3XaZHa_moreSentinel",
5240
5250
  "actions": "_3XaZHa_actions",
5241
- "stateActions": "_3XaZHa_stateActions"
5251
+ "list": "_3XaZHa_list"
5242
5252
  };
5243
5253
  //#endregion
5244
5254
  //#region src/client/hooks/useIncrementalList.ts
@@ -5293,7 +5303,14 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5293
5303
  const update = hasUpdate(p);
5294
5304
  const pendingUntil = isInstalled && !update ? updatePendingUntil(p) : null;
5295
5305
  const versionShown = isInstalled ? installedVersion(p) : p.version;
5296
- return (0, react.createElement)("div", { className: List_module_css_default.card }, (0, react.createElement)("div", { className: List_module_css_default.cardMain }, (0, react.createElement)("div", { className: List_module_css_default.cardHead }, (0, react.createElement)("div", {
5306
+ const author = p.ownerSlug ?? repo.split("/")[0]?.toLowerCase() ?? "";
5307
+ return (0, react.createElement)("div", { className: List_module_css_default.card }, (0, react.createElement)("div", { className: List_module_css_default.cardMain }, (0, react.createElement)("div", { className: List_module_css_default.cardTitleRow }, repo ? (0, react.createElement)("a", {
5308
+ className: List_module_css_default.cardTitle,
5309
+ href: pluginDetailUrl(p, langPath),
5310
+ target: "_blank",
5311
+ rel: "noopener noreferrer",
5312
+ title: p.description ?? ""
5313
+ }, p.displayName ?? p.slug) : (0, react.createElement)("div", {
5297
5314
  className: List_module_css_default.cardTitle,
5298
5315
  title: p.description ?? ""
5299
5316
  }, p.displayName ?? p.slug), versionShown ? (0, react.createElement)("span", {
@@ -5305,7 +5322,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5305
5322
  }, t("updateAvailable")) : null, pendingUntil !== null ? (0, react.createElement)("span", {
5306
5323
  className: List_module_css_default.updateBadge,
5307
5324
  title: t("updatePendingHint")
5308
- }, t("updatePending", { time: clockTime(pendingUntil) })) : null, p.category ? (0, react.createElement)("span", { className: List_module_css_default.categoryBadge }, categoryLabel(CATEGORY_LABELS, p.category, langKey)) : null, p.compatibility?.status === "verified" ? (0, react.createElement)("span", { className: List_module_css_default.verified }, t("verified")) : null), p.description ? (0, react.createElement)("p", { className: List_module_css_default.desc }, p.description) : null, (p.topics?.length ?? 0) > 0 ? (0, react.createElement)("div", { className: List_module_css_default.topics }, p.topics.slice(0, 3).map((topic) => (0, react.createElement)("span", {
5325
+ }, t("updatePending", { time: clockTime(pendingUntil) })) : null), author || p.category || p.compatibility?.status === "verified" ? (0, react.createElement)("div", { className: List_module_css_default.cardBadgeRow }, author ? (0, react.createElement)("span", {
5326
+ className: List_module_css_default.authorBadge,
5327
+ title: t("author")
5328
+ }, `@${author}`) : null, p.category ? (0, react.createElement)("span", { className: List_module_css_default.categoryBadge }, categoryLabel(CATEGORY_LABELS, p.category, langKey)) : null, p.compatibility?.status === "verified" ? (0, react.createElement)("span", { className: List_module_css_default.verified }, t("verified")) : null) : null, p.description ? (0, react.createElement)("p", { className: List_module_css_default.desc }, p.description) : null, (p.topics?.length ?? 0) > 0 ? (0, react.createElement)("div", { className: List_module_css_default.topics }, p.topics.slice(0, 3).map((topic) => (0, react.createElement)("span", {
5309
5329
  key: topic,
5310
5330
  className: List_module_css_default.topic
5311
5331
  }, topic))) : null), (0, react.createElement)("div", { className: List_module_css_default.cardSide }, (0, react.createElement)("div", { className: List_module_css_default.stats }, (0, react.createElement)("span", { className: List_module_css_default.star }, "★ ", fmtStars(p.stats?.stargazers_count)), (0, react.createElement)("span", { className: List_module_css_default.fork }, t("fork"), " ", fmtStars(p.stats?.forks_count)), (0, react.createElement)("span", { className: List_module_css_default.date }, relTime(p.dates?.repoUpdatedAt, t))), repo ? (0, react.createElement)("div", { className: List_module_css_default.actions }, (0, react.createElement)("a", {
@@ -5449,16 +5469,16 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5449
5469
  css: css$8
5450
5470
  });
5451
5471
  var SectionTabs_module_css_default = {
5452
- "noticeIcon": "_7tvizq_noticeIcon",
5472
+ "tabLabel": "_7tvizq_tabLabel",
5473
+ "tab": "_7tvizq_tab",
5474
+ "root": "_7tvizq_root",
5453
5475
  "tabIcon": "_7tvizq_tabIcon",
5454
5476
  "tabCount": "_7tvizq_tabCount",
5455
- "tab": "_7tvizq_tab",
5477
+ "tabActive": "_7tvizq_tabActive",
5456
5478
  "noticeBtn": "_7tvizq_noticeBtn",
5457
- "tabCountActive": "_7tvizq_tabCountActive",
5479
+ "noticeIcon": "_7tvizq_noticeIcon",
5458
5480
  "noticeCount": "_7tvizq_noticeCount",
5459
- "root": "_7tvizq_root",
5460
- "tabActive": "_7tvizq_tabActive",
5461
- "tabLabel": "_7tvizq_tabLabel"
5481
+ "tabCountActive": "_7tvizq_tabCountActive"
5462
5482
  };
5463
5483
  //#endregion
5464
5484
  //#region src/client/components/layout/SectionTabs.tsx
@@ -5519,7 +5539,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5519
5539
  }
5520
5540
  //#endregion
5521
5541
  //#region \0dsh-css:src/client/styles/InstalledView.module.css.mjs
5522
- const css$7 = "._1nXeGW_root{flex-direction:column;gap:8px;min-width:0;display:flex}._1nXeGW_toolbar{border-bottom:1px solid var(--hub-border-1);flex-direction:column;flex-shrink:0;gap:8px;padding:0 2px 10px;display:flex}._1nXeGW_searchWrap{width:100%;min-width:0;height:28px}._1nXeGW_searchInput{width:100%;height:28px;color:var(--hub-text-primary);border:1px solid var(--hub-border-2);background:0 0;border-radius:6px;outline:none;padding:0 9px;font-size:12px;line-height:26px;transition:border-color .12s}._1nXeGW_searchInput::placeholder{color:var(--hub-text-tertiary)}._1nXeGW_searchInput:focus{border-color:var(--hub-brand)}._1nXeGW_segRow{align-items:center;gap:8px;min-width:0;display:flex}._1nXeGW_segLabel{color:var(--hub-text-tertiary);flex-shrink:0;font-size:11px;line-height:16px}._1nXeGW_segGroup{border:1px solid var(--hub-border-2);border-radius:6px;flex-shrink:0;align-items:center;display:inline-flex;overflow:hidden}._1nXeGW_segBtn{height:24px;color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;background:0 0;border:none;justify-content:center;align-items:center;gap:4px;padding:0 10px;font-family:inherit;font-size:12px;line-height:24px;transition:color .12s,background .12s;display:inline-flex}._1nXeGW_segBtn svg{flex-shrink:0;display:block}._1nXeGW_segBtn+._1nXeGW_segBtn{border-left:1px solid var(--hub-border-2)}._1nXeGW_segBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._1nXeGW_segBtnActive,._1nXeGW_segBtnActive:hover{color:#fff;background:var(--hub-brand)}._1nXeGW_empty{color:var(--hub-text-tertiary);text-align:center;border:1px dashed var(--hub-border-2);border-radius:8px;flex-direction:column;align-items:center;gap:4px;padding:36px 12px;font-size:12px;line-height:18px;display:flex}._1nXeGW_emptyTitle{color:var(--hub-text-secondary);font-size:13px;font-weight:600}._1nXeGW_emptyDesc{color:var(--hub-text-tertiary)}._1nXeGW_list{border:1px solid var(--hub-border-1);border-radius:8px;flex-direction:column;margin:0;padding:0;list-style:none;display:flex;overflow:hidden}._1nXeGW_row{background:var(--hub-bg-1);cursor:pointer;-webkit-user-select:none;user-select:none;flex-direction:column;gap:4px;padding:8px 10px;transition:background .12s;display:flex}._1nXeGW_row+._1nXeGW_row{border-top:1px solid var(--hub-border-1)}._1nXeGW_row:hover{background:var(--hub-bg-2)}._1nXeGW_rowTitleLine{align-items:center;gap:8px;min-width:0;display:flex}._1nXeGW_rowDesc{color:var(--hub-text-tertiary);white-space:nowrap;text-overflow:ellipsis;min-width:0;padding-left:16px;font-size:11px;line-height:16px;overflow:hidden}._1nXeGW_statusDot{background:var(--hub-success);border-radius:50%;flex-shrink:0;width:8px;height:8px}._1nXeGW_statusDot._1nXeGW_statusPending{background:var(--hub-warning)}._1nXeGW_statusDot._1nXeGW_statusInactive{background:var(--hub-text-tertiary)}._1nXeGW_rowMain{flex:auto;align-items:baseline;gap:6px;min-width:0;display:flex}._1nXeGW_rowTitle{color:var(--hub-text-primary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:12px;font-weight:600;line-height:18px;overflow:hidden}._1nXeGW_versionBadge{color:var(--hub-text-tertiary);background:var(--hub-bg-hover);border-radius:4px;flex-shrink:0;padding:0 5px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:16px}._1nXeGW_updateBadge{color:var(--hub-warn);background:var(--hub-warn-tint);border:1px solid var(--hub-warn-border);border-radius:4px;flex-shrink:0;padding:0 5px;font-size:11px;font-weight:500;line-height:16px}._1nXeGW_rowSourceTag{box-sizing:border-box;text-align:center;white-space:nowrap;text-overflow:ellipsis;border-radius:4px;flex-shrink:0;width:60px;padding:0 4px;font-size:11px;font-weight:500;line-height:16px;overflow:hidden}._1nXeGW_rowSourceTagHub{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft)}._1nXeGW_rowSourceTagManual{color:var(--hub-warning);background:var(--hub-warning-tint);border:1px solid var(--hub-warning-border)}._1nXeGW_exampleBadge{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft);border-radius:4px;flex-shrink:0;padding:0 5px;font-size:11px;font-weight:500;line-height:16px}._1nXeGW_exampleRow{align-items:center;min-width:0;padding-left:16px;display:flex}._1nXeGW_rowMeta{align-items:center;gap:8px;min-width:0;padding-left:16px;display:flex;overflow:hidden}._1nXeGW_rowRepo{color:var(--hub-text-tertiary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:16px;overflow:hidden}._1nXeGW_rowCategory{color:var(--hub-text-tertiary);background:var(--hub-bg-hover);border-radius:4px;flex-shrink:0;padding:0 6px;font-size:11px;line-height:16px}._1nXeGW_rowActions{flex-shrink:0;align-items:center;gap:4px;display:flex}._1nXeGW_rowDetail{color:var(--hub-text-secondary);border:1px solid var(--hub-border-2);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border-radius:6px;padding:2px 10px;font-family:inherit;font-size:12px;line-height:18px;transition:color .12s,background .12s,border-color .12s}._1nXeGW_rowDetail:hover{color:var(--hub-text-primary);border-color:var(--hub-border-ghost);background:var(--hub-bg-hover)}._1nXeGW_rowRestart{color:var(--hub-warning);background:var(--hub-warning-tint);border:1px solid var(--hub-warning-border);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;padding:2px 10px;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;transition:color .12s,background .12s,border-color .12s}._1nXeGW_rowRestart:hover{color:#fff;background:var(--hub-warning);border-color:var(--hub-warning)}._1nXeGW_rowUpdate{color:#fff;background:var(--hub-warn);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:3px 10px;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;transition:background .12s}._1nXeGW_rowUpdate:hover{background:var(--hub-warn-strong)}._1nXeGW_rowUninstall{color:var(--hub-danger);border:1px solid var(--hub-danger-border-soft);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border-radius:6px;padding:2px 10px;font-family:inherit;font-size:12px;line-height:18px;transition:color .12s,background .12s,border-color .12s}._1nXeGW_rowUninstall:hover,body[data-ds-dark-theme] ._1nXeGW_rowUninstall{color:#fff;background:var(--hub-danger);border-color:var(--hub-danger)}body[data-ds-dark-theme] ._1nXeGW_rowUninstall:hover{background:var(--hub-danger-hover);border-color:var(--hub-danger-hover)}";
5542
+ const css$7 = "._1nXeGW_root{flex-direction:column;gap:8px;min-width:0;display:flex}._1nXeGW_toolbar{border-bottom:1px solid var(--hub-border-1);flex-direction:column;flex-shrink:0;gap:8px;padding:0 2px 10px;display:flex}._1nXeGW_searchWrap{width:100%;min-width:0;height:28px}._1nXeGW_searchInput{width:100%;height:28px;color:var(--hub-text-primary);border:1px solid var(--hub-border-2);background:0 0;border-radius:6px;outline:none;padding:0 9px;font-size:12px;line-height:26px;transition:border-color .12s}._1nXeGW_searchInput::placeholder{color:var(--hub-text-tertiary)}._1nXeGW_searchInput:focus{border-color:var(--hub-brand)}._1nXeGW_segRow{align-items:center;gap:8px;min-width:0;display:flex}._1nXeGW_segLabel{color:var(--hub-text-tertiary);flex-shrink:0;font-size:11px;line-height:16px}._1nXeGW_segGroup{border:1px solid var(--hub-border-2);border-radius:6px;flex-shrink:0;align-items:center;display:inline-flex;overflow:hidden}._1nXeGW_segBtn{height:24px;color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;background:0 0;border:none;justify-content:center;align-items:center;gap:4px;padding:0 10px;font-family:inherit;font-size:12px;line-height:24px;transition:color .12s,background .12s;display:inline-flex}._1nXeGW_segBtn svg{flex-shrink:0;display:block}._1nXeGW_segBtn+._1nXeGW_segBtn{border-left:1px solid var(--hub-border-2)}._1nXeGW_segBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._1nXeGW_segBtnActive,._1nXeGW_segBtnActive:hover{color:#fff;background:var(--hub-brand)}._1nXeGW_empty{color:var(--hub-text-tertiary);text-align:center;border:1px dashed var(--hub-border-2);border-radius:8px;flex-direction:column;align-items:center;gap:4px;padding:36px 12px;font-size:12px;line-height:18px;display:flex}._1nXeGW_emptyTitle{color:var(--hub-text-secondary);font-size:13px;font-weight:600}._1nXeGW_emptyDesc{color:var(--hub-text-tertiary)}._1nXeGW_list{border:1px solid var(--hub-border-1);border-radius:8px;flex-direction:column;margin:0;padding:0;list-style:none;display:flex;overflow:hidden}._1nXeGW_row{background:var(--hub-bg-1);cursor:pointer;-webkit-user-select:none;user-select:none;flex-direction:column;gap:4px;padding:8px 10px;transition:background .12s;display:flex}._1nXeGW_row+._1nXeGW_row{border-top:1px solid var(--hub-border-1)}._1nXeGW_row:hover{background:var(--hub-bg-2)}._1nXeGW_rowTitleLine{align-items:center;gap:8px;min-width:0;display:flex}._1nXeGW_rowDesc{color:var(--hub-text-tertiary);white-space:nowrap;text-overflow:ellipsis;min-width:0;padding-left:16px;font-size:11px;line-height:16px;overflow:hidden}._1nXeGW_statusDot{background:var(--hub-success);border-radius:50%;flex-shrink:0;width:8px;height:8px}._1nXeGW_statusDot._1nXeGW_statusPending{background:var(--hub-warning)}._1nXeGW_statusDot._1nXeGW_statusInactive{background:var(--hub-text-tertiary)}._1nXeGW_rowMain{flex:auto;align-items:baseline;gap:6px;min-width:0;display:flex}._1nXeGW_rowStats{white-space:nowrap;flex-shrink:0;align-items:center;gap:10px;margin-left:auto;display:flex}._1nXeGW_rowStar{color:var(--hub-warn);font-size:11px;line-height:16px}._1nXeGW_rowFork{color:var(--hub-text-tertiary);font-size:11px;line-height:16px}._1nXeGW_rowTitle{color:var(--hub-text-primary);white-space:nowrap;text-overflow:ellipsis;flex:0 auto;min-width:0;font-size:12px;font-weight:600;line-height:18px;text-decoration:none;overflow:hidden}a._1nXeGW_rowTitle:hover{color:var(--hub-brand);text-decoration:underline}._1nXeGW_versionBadge{color:var(--hub-text-tertiary);background:var(--hub-bg-hover);border:1px solid #0000;border-radius:4px;flex-shrink:0;padding:0 5px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:10px;line-height:14px}._1nXeGW_updateBadge{color:var(--hub-warn);background:var(--hub-warn-tint);border:1px solid var(--hub-warn-border);border-radius:4px;flex-shrink:0;padding:0 5px;font-size:10px;font-weight:500;line-height:14px}._1nXeGW_rowSourceTag{box-sizing:border-box;text-align:center;white-space:nowrap;text-overflow:ellipsis;border-radius:4px;flex-shrink:0;width:60px;padding:0 4px;font-size:10px;font-weight:500;line-height:14px;overflow:hidden}._1nXeGW_rowSourceTagHub{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft)}._1nXeGW_rowSourceTagManual{color:var(--hub-warning);background:var(--hub-warning-tint);border:1px solid var(--hub-warning-border)}._1nXeGW_exampleBadge{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft);border-radius:4px;flex-shrink:0;padding:0 5px;font-size:10px;font-weight:500;line-height:14px}._1nXeGW_exampleRow{align-items:center;min-width:0;padding-left:16px;display:flex}._1nXeGW_rowMeta{align-items:center;gap:8px;min-width:0;padding-left:16px;display:flex;overflow:hidden}._1nXeGW_rowRepo{color:var(--hub-text-tertiary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:16px;text-decoration:none;overflow:hidden}a._1nXeGW_rowRepo:hover{color:var(--hub-brand);text-decoration:underline}._1nXeGW_rowCategory{color:var(--hub-text-tertiary);background:var(--hub-bg-hover);border:1px solid #0000;border-radius:4px;flex-shrink:0;padding:0 5px;font-size:10px;line-height:14px}._1nXeGW_rowActionLine{justify-content:flex-end;align-items:center;gap:8px;min-width:0;padding-left:16px;display:flex}._1nXeGW_rowActions{flex-shrink:0;align-items:center;gap:4px;display:flex}._1nXeGW_rowDetail{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:1px solid #0000;border-radius:6px;padding:2px 10px;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;transition:color .12s,background .12s,border-color .12s}._1nXeGW_rowDetail:hover{color:var(--hub-text-primary);border-color:var(--hub-border-2);background:var(--hub-bg-hover)}._1nXeGW_rowRestart{color:var(--hub-warning);background:var(--hub-warning-tint);border:1px solid var(--hub-warning-border);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;padding:2px 10px;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;transition:color .12s,background .12s,border-color .12s}._1nXeGW_rowRestart:hover{color:#fff;background:var(--hub-warning);border-color:var(--hub-warning)}._1nXeGW_rowUpdate{color:#fff;background:var(--hub-warn);border:1px solid var(--hub-warn);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;padding:2px 10px;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;transition:background .12s}._1nXeGW_rowUpdate:hover{background:var(--hub-warn-strong)}._1nXeGW_rowUninstall{color:var(--hub-danger);border:1px solid var(--hub-danger-border-soft);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border-radius:6px;padding:2px 10px;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;transition:color .12s,background .12s,border-color .12s}._1nXeGW_rowUninstall:hover,body[data-ds-dark-theme] ._1nXeGW_rowUninstall{color:#fff;background:var(--hub-danger);border-color:var(--hub-danger)}body[data-ds-dark-theme] ._1nXeGW_rowUninstall:hover{background:var(--hub-danger-hover);border-color:var(--hub-danger-hover)}";
5523
5543
  const tagId$7 = "dsh-plugin/InstalledView.module.css";
5524
5544
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$7) + "]") === null) {
5525
5545
  const tag = document.createElement("style");
@@ -5534,42 +5554,46 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5534
5554
  css: css$7
5535
5555
  });
5536
5556
  var InstalledView_module_css_default = {
5537
- "searchInput": "_1nXeGW_searchInput",
5538
- "segLabel": "_1nXeGW_segLabel",
5539
- "segGroup": "_1nXeGW_segGroup",
5540
- "statusInactive": "_1nXeGW_statusInactive",
5541
- "emptyTitle": "_1nXeGW_emptyTitle",
5542
- "rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
5543
- "segBtn": "_1nXeGW_segBtn",
5544
- "rowTitle": "_1nXeGW_rowTitle",
5545
- "rowSourceTag": "_1nXeGW_rowSourceTag",
5546
- "rowRestart": "_1nXeGW_rowRestart",
5547
- "rowMain": "_1nXeGW_rowMain",
5548
- "rowMeta": "_1nXeGW_rowMeta",
5549
- "rowRepo": "_1nXeGW_rowRepo",
5550
- "rowCategory": "_1nXeGW_rowCategory",
5551
- "rowDetail": "_1nXeGW_rowDetail",
5552
5557
  "exampleBadge": "_1nXeGW_exampleBadge",
5553
- "rowUninstall": "_1nXeGW_rowUninstall",
5558
+ "statusInactive": "_1nXeGW_statusInactive",
5559
+ "rowDesc": "_1nXeGW_rowDesc",
5560
+ "emptyDesc": "_1nXeGW_emptyDesc",
5554
5561
  "statusDot": "_1nXeGW_statusDot",
5555
5562
  "segRow": "_1nXeGW_segRow",
5556
- "row": "_1nXeGW_row",
5557
- "searchWrap": "_1nXeGW_searchWrap",
5558
- "rowDesc": "_1nXeGW_rowDesc",
5559
- "exampleRow": "_1nXeGW_exampleRow",
5563
+ "rowMain": "_1nXeGW_rowMain",
5564
+ "emptyTitle": "_1nXeGW_emptyTitle",
5565
+ "rowStats": "_1nXeGW_rowStats",
5560
5566
  "list": "_1nXeGW_list",
5561
- "emptyDesc": "_1nXeGW_emptyDesc",
5567
+ "rowFork": "_1nXeGW_rowFork",
5562
5568
  "rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
5569
+ "rowCategory": "_1nXeGW_rowCategory",
5563
5570
  "toolbar": "_1nXeGW_toolbar",
5564
- "versionBadge": "_1nXeGW_versionBadge",
5565
- "rowUpdate": "_1nXeGW_rowUpdate",
5566
- "statusPending": "_1nXeGW_statusPending",
5571
+ "searchInput": "_1nXeGW_searchInput",
5572
+ "row": "_1nXeGW_row",
5573
+ "rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
5567
5574
  "segBtnActive": "_1nXeGW_segBtnActive",
5568
5575
  "updateBadge": "_1nXeGW_updateBadge",
5576
+ "rowActions": "_1nXeGW_rowActions",
5577
+ "rowRestart": "_1nXeGW_rowRestart",
5578
+ "statusPending": "_1nXeGW_statusPending",
5579
+ "searchWrap": "_1nXeGW_searchWrap",
5569
5580
  "root": "_1nXeGW_root",
5570
- "empty": "_1nXeGW_empty",
5571
5581
  "rowTitleLine": "_1nXeGW_rowTitleLine",
5572
- "rowActions": "_1nXeGW_rowActions"
5582
+ "rowTitle": "_1nXeGW_rowTitle",
5583
+ "rowActionLine": "_1nXeGW_rowActionLine",
5584
+ "segBtn": "_1nXeGW_segBtn",
5585
+ "rowRepo": "_1nXeGW_rowRepo",
5586
+ "rowSourceTag": "_1nXeGW_rowSourceTag",
5587
+ "versionBadge": "_1nXeGW_versionBadge",
5588
+ "empty": "_1nXeGW_empty",
5589
+ "rowMeta": "_1nXeGW_rowMeta",
5590
+ "rowStar": "_1nXeGW_rowStar",
5591
+ "segLabel": "_1nXeGW_segLabel",
5592
+ "segGroup": "_1nXeGW_segGroup",
5593
+ "rowDetail": "_1nXeGW_rowDetail",
5594
+ "rowUpdate": "_1nXeGW_rowUpdate",
5595
+ "rowUninstall": "_1nXeGW_rowUninstall",
5596
+ "exampleRow": "_1nXeGW_exampleRow"
5573
5597
  };
5574
5598
  //#endregion
5575
5599
  //#region src/client/components/views/InstalledView.tsx
@@ -5631,7 +5655,14 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5631
5655
  className: item.loaded ? InstalledView_module_css_default.statusDot : item.dshCapable && pendingRestart ? `${InstalledView_module_css_default.statusDot} ${InstalledView_module_css_default.statusPending}` : `${InstalledView_module_css_default.statusDot} ${InstalledView_module_css_default.statusInactive}`,
5632
5656
  title: item.loaded ? t("statusRunning") : item.dshCapable && pendingRestart ? t("statusPending") : item.dshCapable ? t("statusInactive") : t("exampleHint"),
5633
5657
  "aria-label": item.loaded ? t("statusRunning") : item.dshCapable && pendingRestart ? t("statusPending") : item.dshCapable ? t("statusInactive") : t("exampleHint")
5634
- }), (0, react.createElement)("div", { className: InstalledView_module_css_default.rowMain }, (0, react.createElement)("span", { className: InstalledView_module_css_default.rowTitle }, name), item.installedVersion ? (0, react.createElement)("span", {
5658
+ }), (0, react.createElement)("div", { className: InstalledView_module_css_default.rowMain }, repo ? (0, react.createElement)("a", {
5659
+ className: InstalledView_module_css_default.rowTitle,
5660
+ href: pluginSiteUrl(repo),
5661
+ target: "_blank",
5662
+ rel: "noopener noreferrer",
5663
+ title: t("detail"),
5664
+ onClick: (e) => e.stopPropagation()
5665
+ }, name) : (0, react.createElement)("span", { className: InstalledView_module_css_default.rowTitle }, name), item.installedVersion ? (0, react.createElement)("span", {
5635
5666
  className: InstalledView_module_css_default.versionBadge,
5636
5667
  title: t("installedVersionLabel")
5637
5668
  }, item.installedVersion) : null, item.hasUpdate ? (0, react.createElement)("span", {
@@ -5640,10 +5671,23 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5640
5671
  }, t("updateAvailable")) : item.pendingUntil != null ? (0, react.createElement)("span", {
5641
5672
  className: InstalledView_module_css_default.updateBadge,
5642
5673
  title: t("updatePendingHint")
5643
- }, t("updatePending", { time: clockTime(item.pendingUntil) })) : null), (0, react.createElement)("span", {
5674
+ }, t("updatePending", { time: clockTime(item.pendingUntil) })) : null), item.plugin ? (0, react.createElement)("div", { className: InstalledView_module_css_default.rowStats }, (0, react.createElement)("span", { className: InstalledView_module_css_default.rowStar }, "★ ", fmtStars(item.plugin.stats?.stargazers_count)), (0, react.createElement)("span", { className: InstalledView_module_css_default.rowFork }, t("fork"), " ", fmtStars(item.plugin.stats?.forks_count))) : null), !item.dshCapable ? (0, react.createElement)("div", { className: InstalledView_module_css_default.exampleRow }, (0, react.createElement)("span", {
5675
+ className: InstalledView_module_css_default.exampleBadge,
5676
+ title: t("exampleHint")
5677
+ }, t("exampleLabel"))) : null, (0, react.createElement)("div", { className: InstalledView_module_css_default.rowMeta }, item.repo ? (0, react.createElement)("a", {
5678
+ className: InstalledView_module_css_default.rowRepo,
5679
+ href: pluginSiteUrl(item.repo),
5680
+ target: "_blank",
5681
+ rel: "noopener noreferrer",
5682
+ title: t("detail"),
5683
+ onClick: (e) => e.stopPropagation()
5684
+ }, item.repo) : null, category ? (0, react.createElement)("span", { className: InstalledView_module_css_default.rowCategory }, categoryLabel(CATEGORY_LABELS, category, langKey)) : null, (0, react.createElement)("span", {
5644
5685
  className: isCustom ? `${InstalledView_module_css_default.rowSourceTag} ${InstalledView_module_css_default.rowSourceTagManual}` : `${InstalledView_module_css_default.rowSourceTag} ${InstalledView_module_css_default.rowSourceTagHub}`,
5645
5686
  title: isCustom ? t("manualInstallHint") : t("hubInstallHint")
5646
- }, isCustom ? t("manualInstall") : t("hubInstall")), (0, react.createElement)("div", { className: InstalledView_module_css_default.rowActions }, !item.loaded && item.dshCapable && pendingRestart ? (0, react.createElement)("button", {
5687
+ }, isCustom ? t("manualInstall") : t("hubInstall"))), desc ? (0, react.createElement)("div", {
5688
+ className: InstalledView_module_css_default.rowDesc,
5689
+ title: desc
5690
+ }, desc) : null, (0, react.createElement)("div", { className: InstalledView_module_css_default.rowActionLine }, (0, react.createElement)("div", { className: InstalledView_module_css_default.rowActions }, !item.loaded && item.dshCapable && pendingRestart ? (0, react.createElement)("button", {
5647
5691
  className: InstalledView_module_css_default.rowRestart,
5648
5692
  type: "button",
5649
5693
  title: t("restartPendingHint"),
@@ -5658,7 +5702,15 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5658
5702
  e.stopPropagation();
5659
5703
  onReveal(item);
5660
5704
  }
5661
- }, revealLabel) : null, item.hasUpdate && item.plugin ? (0, react.createElement)("button", {
5705
+ }, revealLabel) : null, (0, react.createElement)("button", {
5706
+ className: InstalledView_module_css_default.rowDetail,
5707
+ type: "button",
5708
+ title: t("detail"),
5709
+ onClick: (e) => {
5710
+ e.stopPropagation();
5711
+ onOpenDetail(item);
5712
+ }
5713
+ }, t("installDetail")), item.hasUpdate && item.plugin ? (0, react.createElement)("button", {
5662
5714
  className: InstalledView_module_css_default.rowUpdate,
5663
5715
  type: "button",
5664
5716
  title: t("updateAvailableHint"),
@@ -5673,13 +5725,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5673
5725
  e.stopPropagation();
5674
5726
  onUninstall(item);
5675
5727
  }
5676
- }, t("uninstall")))), !item.dshCapable ? (0, react.createElement)("div", { className: InstalledView_module_css_default.exampleRow }, (0, react.createElement)("span", {
5677
- className: InstalledView_module_css_default.exampleBadge,
5678
- title: t("exampleHint")
5679
- }, t("exampleLabel"))) : null, repo || category ? (0, react.createElement)("div", { className: InstalledView_module_css_default.rowMeta }, item.repo ? (0, react.createElement)("span", { className: InstalledView_module_css_default.rowRepo }, item.repo) : null, category ? (0, react.createElement)("span", { className: InstalledView_module_css_default.rowCategory }, categoryLabel(CATEGORY_LABELS, category, langKey)) : null) : null, desc ? (0, react.createElement)("div", {
5680
- className: InstalledView_module_css_default.rowDesc,
5681
- title: desc
5682
- }, desc) : null);
5728
+ }, t("uninstall")))));
5683
5729
  }
5684
5730
  /** 行列表:单个已安装列表(自定义安装与目录插件混排,靠徽标区分)。 */
5685
5731
  function RowList({ items, t, langKey, canReveal, revealLabel, pendingRestarts, onOpenDetail, onReveal, onUpdate, onUninstall, onRestart }) {
@@ -5816,26 +5862,26 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5816
5862
  css: css$6
5817
5863
  });
5818
5864
  var CustomInstallView_module_css_default = {
5819
- "channelOffBtn": "zISxCG_channelOffBtn",
5820
- "installCardHead": "zISxCG_installCardHead",
5821
- "installError": "zISxCG_installError",
5822
- "channelOff": "zISxCG_channelOff",
5823
- "installRow": "zISxCG_installRow",
5824
- "helpNote": "zISxCG_helpNote",
5825
- "helpCmd": "zISxCG_helpCmd",
5826
- "helpLine": "zISxCG_helpLine",
5827
- "installLabel": "zISxCG_installLabel",
5828
- "installCardDisabled": "zISxCG_installCardDisabled",
5829
- "desc": "zISxCG_desc",
5830
- "installCard": "zISxCG_installCard",
5831
- "helpBody": "zISxCG_helpBody",
5832
- "installCards": "zISxCG_installCards",
5833
5865
  "installHelpBtn": "zISxCG_installHelpBtn",
5834
- "channelOffText": "zISxCG_channelOffText",
5866
+ "installBtn": "zISxCG_installBtn",
5867
+ "installCards": "zISxCG_installCards",
5835
5868
  "installInputError": "zISxCG_installInputError",
5869
+ "installCard": "zISxCG_installCard",
5836
5870
  "installInput": "zISxCG_installInput",
5837
- "installBtn": "zISxCG_installBtn",
5871
+ "installError": "zISxCG_installError",
5872
+ "desc": "zISxCG_desc",
5873
+ "channelOff": "zISxCG_channelOff",
5874
+ "channelOffText": "zISxCG_channelOffText",
5838
5875
  "root": "zISxCG_root",
5876
+ "installCardHead": "zISxCG_installCardHead",
5877
+ "installLabel": "zISxCG_installLabel",
5878
+ "helpBody": "zISxCG_helpBody",
5879
+ "helpLine": "zISxCG_helpLine",
5880
+ "channelOffBtn": "zISxCG_channelOffBtn",
5881
+ "helpNote": "zISxCG_helpNote",
5882
+ "installRow": "zISxCG_installRow",
5883
+ "installCardDisabled": "zISxCG_installCardDisabled",
5884
+ "helpCmd": "zISxCG_helpCmd",
5839
5885
  "installExample": "zISxCG_installExample"
5840
5886
  };
5841
5887
  //#endregion
@@ -5992,30 +6038,30 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5992
6038
  css: css$5
5993
6039
  });
5994
6040
  var SettingsView_module_css_default = {
5995
- "proxyHintOk": "_506LLG_proxyHintOk",
5996
- "navItemActive": "_506LLG_navItemActive",
5997
- "settingLabel": "_506LLG_settingLabel",
5998
- "card": "_506LLG_card",
6041
+ "pageTitle": "_506LLG_pageTitle",
5999
6042
  "proxyHint": "_506LLG_proxyHint",
6000
- "controlDropdown": "_506LLG_controlDropdown",
6043
+ "settingDesc": "_506LLG_settingDesc",
6044
+ "card": "_506LLG_card",
6045
+ "pageHeader": "_506LLG_pageHeader",
6046
+ "settingControlStack": "_506LLG_settingControlStack",
6047
+ "textInput": "_506LLG_textInput",
6048
+ "proxyControl": "_506LLG_proxyControl",
6049
+ "sidebar": "_506LLG_sidebar",
6001
6050
  "proxyHintFail": "_506LLG_proxyHintFail",
6002
- "content": "_506LLG_content",
6003
6051
  "settingRowStack": "_506LLG_settingRowStack",
6004
- "settingDesc": "_506LLG_settingDesc",
6005
6052
  "settingTitle": "_506LLG_settingTitle",
6006
- "navItem": "_506LLG_navItem",
6053
+ "settingControl": "_506LLG_settingControl",
6054
+ "resetBtn": "_506LLG_resetBtn",
6055
+ "content": "_506LLG_content",
6056
+ "controlDropdown": "_506LLG_controlDropdown",
6007
6057
  "navIcon": "_506LLG_navIcon",
6008
- "sidebar": "_506LLG_sidebar",
6009
- "textInput": "_506LLG_textInput",
6010
- "pageTitle": "_506LLG_pageTitle",
6058
+ "navItemActive": "_506LLG_navItemActive",
6059
+ "navItem": "_506LLG_navItem",
6060
+ "pageDesc": "_506LLG_pageDesc",
6011
6061
  "settingRow": "_506LLG_settingRow",
6012
- "settingControlStack": "_506LLG_settingControlStack",
6013
6062
  "root": "_506LLG_root",
6014
- "resetBtn": "_506LLG_resetBtn",
6015
- "pageDesc": "_506LLG_pageDesc",
6016
- "settingControl": "_506LLG_settingControl",
6017
- "pageHeader": "_506LLG_pageHeader",
6018
- "proxyControl": "_506LLG_proxyControl"
6063
+ "settingLabel": "_506LLG_settingLabel",
6064
+ "proxyHintOk": "_506LLG_proxyHintOk"
6019
6065
  };
6020
6066
  //#endregion
6021
6067
  //#region \0dsh-css:src/client/styles/Dropdown.module.css.mjs
@@ -6034,18 +6080,18 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6034
6080
  css: css$4
6035
6081
  });
6036
6082
  var Dropdown_module_css_default = {
6083
+ "dropdownFill": "B_Gxsq_dropdownFill",
6037
6084
  "dropdownArrow": "B_Gxsq_dropdownArrow",
6038
- "dropdownItemLabel": "B_Gxsq_dropdownItemLabel",
6039
6085
  "dropdownPanel": "B_Gxsq_dropdownPanel",
6040
- "dropdownCount": "B_Gxsq_dropdownCount",
6041
- "dropdown": "B_Gxsq_dropdown",
6042
- "dropdownFill": "B_Gxsq_dropdownFill",
6086
+ "dropdownItemActive": "B_Gxsq_dropdownItemActive",
6043
6087
  "dropdownLabel": "B_Gxsq_dropdownLabel",
6044
- "dropdownItem": "B_Gxsq_dropdownItem",
6088
+ "dropdown": "B_Gxsq_dropdown",
6089
+ "dropdownItemLabel": "B_Gxsq_dropdownItemLabel",
6090
+ "dropdownCount": "B_Gxsq_dropdownCount",
6045
6091
  "dropdownCountActive": "B_Gxsq_dropdownCountActive",
6046
- "dropdownBtn": "B_Gxsq_dropdownBtn",
6047
- "dropdownItemActive": "B_Gxsq_dropdownItemActive",
6048
- "dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen"
6092
+ "dropdownItem": "B_Gxsq_dropdownItem",
6093
+ "dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen",
6094
+ "dropdownBtn": "B_Gxsq_dropdownBtn"
6049
6095
  };
6050
6096
  //#endregion
6051
6097
  //#region \0dsh-css:src/client/styles/Toggle.module.css.mjs
@@ -6064,9 +6110,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6064
6110
  css: css$3
6065
6111
  });
6066
6112
  var Toggle_module_css_default = {
6113
+ "toggleOn": "k-cD4G_toggleOn",
6067
6114
  "knob": "k-cD4G_knob",
6068
- "toggle": "k-cD4G_toggle",
6069
- "toggleOn": "k-cD4G_toggleOn"
6115
+ "toggle": "k-cD4G_toggle"
6070
6116
  };
6071
6117
  //#endregion
6072
6118
  //#region src/client/components/ui/Toggle.tsx
@@ -6163,29 +6209,29 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6163
6209
  css: css$2
6164
6210
  });
6165
6211
  var DiagnosticsView_module_css_default = {
6166
- "envTitle": "k9eRya_envTitle",
6167
- "envCopyBtn": "k9eRya_envCopyBtn",
6212
+ "badgeIdle": "k9eRya_badgeIdle",
6213
+ "head": "k9eRya_head",
6214
+ "summary": "k9eRya_summary",
6215
+ "runBtn": "k9eRya_runBtn",
6216
+ "envRow": "k9eRya_envRow",
6168
6217
  "display": "k9eRya_display",
6218
+ "envDesc": "k9eRya_envDesc",
6219
+ "summaryRunning": "k9eRya_summaryRunning",
6220
+ "meta": "k9eRya_meta",
6169
6221
  "badge": "k9eRya_badge",
6170
- "panel": "k9eRya_panel",
6171
- "badgeRunning": "k9eRya_badgeRunning",
6222
+ "row": "k9eRya_row",
6223
+ "name": "k9eRya_name",
6224
+ "badgeFail": "k9eRya_badgeFail",
6225
+ "diagPulse": "k9eRya_diagPulse",
6172
6226
  "summaryOk": "k9eRya_summaryOk",
6173
6227
  "summaryFail": "k9eRya_summaryFail",
6228
+ "envCopyBtn": "k9eRya_envCopyBtn",
6229
+ "headHint": "k9eRya_headHint",
6174
6230
  "envLabel": "k9eRya_envLabel",
6231
+ "panel": "k9eRya_panel",
6232
+ "envTitle": "k9eRya_envTitle",
6175
6233
  "badgeOk": "k9eRya_badgeOk",
6176
- "headHint": "k9eRya_headHint",
6177
- "name": "k9eRya_name",
6178
- "badgeIdle": "k9eRya_badgeIdle",
6179
- "meta": "k9eRya_meta",
6180
- "runBtn": "k9eRya_runBtn",
6181
- "row": "k9eRya_row",
6182
- "envRow": "k9eRya_envRow",
6183
- "badgeFail": "k9eRya_badgeFail",
6184
- "diagPulse": "k9eRya_diagPulse",
6185
- "summaryRunning": "k9eRya_summaryRunning",
6186
- "summary": "k9eRya_summary",
6187
- "head": "k9eRya_head",
6188
- "envDesc": "k9eRya_envDesc"
6234
+ "badgeRunning": "k9eRya_badgeRunning"
6189
6235
  };
6190
6236
  //#endregion
6191
6237
  //#region src/client/components/views/DiagnosticsView.tsx
@@ -6360,57 +6406,57 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6360
6406
  css: css$1
6361
6407
  });
6362
6408
  var LogsView_module_css_default = {
6363
- "pathDialogReset": "_3j77BW_pathDialogReset",
6364
- "catUninstall": "_3j77BW_catUninstall",
6365
- "pathDialogFoot": "_3j77BW_pathDialogFoot",
6366
- "filterChip": "_3j77BW_filterChip",
6367
- "catUpdate": "_3j77BW_catUpdate",
6368
- "catSettings": "_3j77BW_catSettings",
6369
- "badgeSuccess": "_3j77BW_badgeSuccess",
6370
- "badgeInfo": "_3j77BW_badgeInfo",
6409
+ "filterChipActive": "_3j77BW_filterChipActive",
6410
+ "headActions": "_3j77BW_headActions",
6411
+ "pathLabel": "_3j77BW_pathLabel",
6412
+ "actions": "_3j77BW_actions",
6413
+ "pathDraft": "_3j77BW_pathDraft",
6371
6414
  "btn": "_3j77BW_btn",
6372
- "badge": "_3j77BW_badge",
6415
+ "list": "_3j77BW_list",
6373
6416
  "entry": "_3j77BW_entry",
6374
- "catDiagnostics": "_3j77BW_catDiagnostics",
6375
- "panel": "_3j77BW_panel",
6376
- "headActions": "_3j77BW_headActions",
6417
+ "footFail": "_3j77BW_footFail",
6418
+ "filterChip": "_3j77BW_filterChip",
6419
+ "more": "_3j77BW_more",
6377
6420
  "moreEnd": "_3j77BW_moreEnd",
6378
- "footActions": "_3j77BW_footActions",
6379
- "pathDialog": "_3j77BW_pathDialog",
6380
- "empty": "_3j77BW_empty",
6421
+ "pathDialogReset": "_3j77BW_pathDialogReset",
6422
+ "footCount": "_3j77BW_footCount",
6423
+ "badgeSuccess": "_3j77BW_badgeSuccess",
6424
+ "pathDialogDesc": "_3j77BW_pathDialogDesc",
6425
+ "badgeError": "_3j77BW_badgeError",
6426
+ "badgeWarn": "_3j77BW_badgeWarn",
6381
6427
  "head": "_3j77BW_head",
6382
- "catInstall": "_3j77BW_catInstall",
6383
- "message": "_3j77BW_message",
6384
6428
  "logList": "_3j77BW_logList",
6385
- "footPath": "_3j77BW_footPath",
6386
- "catBadge": "_3j77BW_catBadge",
6387
- "list": "_3j77BW_list",
6388
- "footFail": "_3j77BW_footFail",
6389
- "catSystem": "_3j77BW_catSystem",
6390
6429
  "badgeDebug": "_3j77BW_badgeDebug",
6391
- "pathDialogHint": "_3j77BW_pathDialogHint",
6392
- "filterBar": "_3j77BW_filterBar",
6393
- "event": "_3j77BW_event",
6430
+ "catSettings": "_3j77BW_catSettings",
6431
+ "badge": "_3j77BW_badge",
6432
+ "empty": "_3j77BW_empty",
6433
+ "headHint": "_3j77BW_headHint",
6394
6434
  "pathRow": "_3j77BW_pathRow",
6395
- "pathLabel": "_3j77BW_pathLabel",
6396
- "time": "_3j77BW_time",
6397
- "pathDraft": "_3j77BW_pathDraft",
6398
- "clearBtn": "_3j77BW_clearBtn",
6399
6435
  "pathDialogRow": "_3j77BW_pathDialogRow",
6400
- "previewRow": "_3j77BW_previewRow",
6401
- "filterChipActive": "_3j77BW_filterChipActive",
6436
+ "time": "_3j77BW_time",
6437
+ "event": "_3j77BW_event",
6438
+ "footPath": "_3j77BW_footPath",
6439
+ "catDiagnostics": "_3j77BW_catDiagnostics",
6440
+ "badgeInfo": "_3j77BW_badgeInfo",
6441
+ "panel": "_3j77BW_panel",
6442
+ "catInstall": "_3j77BW_catInstall",
6443
+ "catSystem": "_3j77BW_catSystem",
6444
+ "catUpdate": "_3j77BW_catUpdate",
6445
+ "linkBtn": "_3j77BW_linkBtn",
6446
+ "pathDialogFoot": "_3j77BW_pathDialogFoot",
6447
+ "message": "_3j77BW_message",
6448
+ "filterBar": "_3j77BW_filterBar",
6449
+ "footActions": "_3j77BW_footActions",
6402
6450
  "search": "_3j77BW_search",
6451
+ "previewRow": "_3j77BW_previewRow",
6452
+ "catBadge": "_3j77BW_catBadge",
6453
+ "clearBtn": "_3j77BW_clearBtn",
6454
+ "catUninstall": "_3j77BW_catUninstall",
6455
+ "foot": "_3j77BW_foot",
6403
6456
  "searchInput": "_3j77BW_searchInput",
6404
6457
  "pathText": "_3j77BW_pathText",
6405
- "more": "_3j77BW_more",
6406
- "pathDialogDesc": "_3j77BW_pathDialogDesc",
6407
- "foot": "_3j77BW_foot",
6408
- "footCount": "_3j77BW_footCount",
6409
- "badgeError": "_3j77BW_badgeError",
6410
- "badgeWarn": "_3j77BW_badgeWarn",
6411
- "actions": "_3j77BW_actions",
6412
- "linkBtn": "_3j77BW_linkBtn",
6413
- "headHint": "_3j77BW_headHint"
6458
+ "pathDialog": "_3j77BW_pathDialog",
6459
+ "pathDialogHint": "_3j77BW_pathDialogHint"
6414
6460
  };
6415
6461
  //#endregion
6416
6462
  //#region src/client/components/modals/LogsModal.tsx
@@ -7249,9 +7295,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
7249
7295
  const [confirmPlugin, setConfirmPlugin] = (0, react.useState)(null);
7250
7296
  /** 弹窗动作是否为「更新」:已安装插件点「更新」→ 走同一条 add 命令原位覆盖重装,文案区分安装/更新 */
7251
7297
  const [confirmIsUpdate, setConfirmIsUpdate] = (0, react.useState)(false);
7252
- /** Hub 自我更新指定的精确版本:连续发版时提示的是「已过供应链门禁」的旧一版,
7253
- * 安装必须钉在该版本上,否则又会被 @latest 带回门禁内的最新版。 */
7298
+ /** 安装要钉住的精确版本:Hub 连续发版时提示的旧一版、以及新安装的「已过供应链门禁」版本,
7299
+ * 都必须钉住,否则 @latest 会被 pnpm 门禁带回门禁内的版本或静默回退到很旧的版本。 */
7254
7300
  const [confirmPinVersion, setConfirmPinVersion] = (0, react.useState)(null);
7301
+ /** 门禁版本查询的在途序号:只采用最后一次弹窗的查询结果,避免切换插件后旧结果覆盖 */
7302
+ const installPinSeq = (0, react.useRef)(0);
7255
7303
  /** 命令行安装确认弹窗:记录待安装的裸目标(npm 包名)——
7256
7304
  * 与应用商店同一套确认/进度/结果弹窗,提供时 plugin 传 null 走 customTarget 模式 */
7257
7305
  const [confirmCustomTarget, setConfirmCustomTarget] = (0, react.useState)(null);
@@ -7501,9 +7549,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
7501
7549
  return catalog.installedItems.some((i) => i.name.toLowerCase() === pkg) || Object.keys(catalog.installed).some((k) => k.toLowerCase() === pkg);
7502
7550
  };
7503
7551
  /** 弹窗动作一:复制安装命令到剪贴板,引导去终端粘贴执行(npm 安装显示包名命令)。 */
7504
- const copyCommand = async (p) => {
7552
+ const copyCommand = async (p, version) => {
7505
7553
  const repo = p.source?.repo ?? "";
7506
- if (await doCopy(installCommandOf(p))) {
7554
+ if (await doCopy(installCommandOf(p, false, version))) {
7507
7555
  setCopied(repo);
7508
7556
  setToast({
7509
7557
  id: Date.now(),
@@ -7513,6 +7561,19 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
7513
7561
  }
7514
7562
  setConfirmPlugin(null);
7515
7563
  };
7564
+ /** 新安装先查「已过 pnpm 供应链门禁」的版本:命令条与执行都钉住它,
7565
+ * 否则 pnpm 会把发布未满 24h 的最新版静默回退成很旧的版本。查不到则不钉,由服务端兜底解析。 */
7566
+ const resolveInstallPin = (p) => {
7567
+ if (p.install?.command !== void 0 && p.install.command !== "") return;
7568
+ const pkg = installTargetOf(p);
7569
+ if (!pkg) return;
7570
+ const seq = ++installPinSeq.current;
7571
+ fetchNpmReleaseAge([pkg]).then((res) => {
7572
+ if (installPinSeq.current !== seq) return;
7573
+ const version = res?.[pkg]?.installable?.version;
7574
+ if (version !== void 0 && version !== "") setConfirmPinVersion(version);
7575
+ });
7576
+ };
7516
7577
  /** 卸载弹窗动作:复制卸载命令,万一直接卸载失败可去终端手动执行。
7517
7578
  * 自定义安装(无目录数据)按已安装项包名直卸,同样给复制通道。 */
7518
7579
  const copyUninstallCommand = async () => {
@@ -7605,11 +7666,14 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
7605
7666
  copied,
7606
7667
  resultText: catalog.plugins === null || catalog.failed ? null : catalog.category === "all" && count === total ? t("pluginsTotal", { n: count }) : t("filterResults", { n: count }),
7607
7668
  onInstall: (p, opts) => {
7669
+ const update = opts?.update ?? false;
7608
7670
  setInstallDone(false);
7609
- setConfirmIsUpdate(opts?.update ?? false);
7671
+ setConfirmIsUpdate(update);
7610
7672
  setConfirmPinVersion(null);
7673
+ ++installPinSeq.current;
7611
7674
  queue.clearModalTask();
7612
7675
  setConfirmPlugin(p);
7676
+ if (!update) resolveInstallPin(p);
7613
7677
  },
7614
7678
  onUninstall: (p) => {
7615
7679
  setUninstallDone(false);
@@ -7634,6 +7698,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
7634
7698
  setInstallDone(false);
7635
7699
  setConfirmIsUpdate(true);
7636
7700
  setConfirmPinVersion(null);
7701
+ ++installPinSeq.current;
7637
7702
  queue.clearModalTask();
7638
7703
  setConfirmPlugin(item.plugin);
7639
7704
  },
@@ -7684,7 +7749,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
7684
7749
  openSection: settingsSection,
7685
7750
  onConsumedOpenSection: () => setSettingsSection(null)
7686
7751
  }), showHubUpdate && (0, react.createElement)(HubUpdateModal, {
7687
- info: catalog.hubUpdateTarget ?? catalog.hubUpdateInfo ?? { version: "2.3.0" },
7752
+ info: catalog.hubUpdateTarget ?? catalog.hubUpdateInfo ?? { version: "2.3.2" },
7688
7753
  state: catalog.hubUpdateState,
7689
7754
  currentVersion: catalog.hubCurrentVersion,
7690
7755
  lang,
@@ -7696,6 +7761,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
7696
7761
  setInstallDone(false);
7697
7762
  setConfirmIsUpdate(true);
7698
7763
  setConfirmPinVersion(catalog.hubUpdateTarget?.version ?? null);
7764
+ ++installPinSeq.current;
7699
7765
  queue.clearModalTask();
7700
7766
  setConfirmPlugin(hubEntry);
7701
7767
  }
@@ -7774,6 +7840,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
7774
7840
  langPath,
7775
7841
  restarting,
7776
7842
  update: confirmIsUpdate,
7843
+ pinVersion: confirmPinVersion ?? void 0,
7777
7844
  cliOnly: confirmPlugin.install?.webInstallable === false || confirmPlugin.install?.manualInstall === true,
7778
7845
  submitting: queue.submitting,
7779
7846
  needsRestart: installNeedsRestart,
@@ -7785,11 +7852,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
7785
7852
  setInstallBundleDeselected(false);
7786
7853
  if (reload) window.location.reload();
7787
7854
  },
7788
- onCopy: () => copyCommand(confirmPlugin),
7789
- onInstall: () => queue.installNow(confirmPlugin, confirmIsUpdate ? {
7790
- update: true,
7855
+ onCopy: () => copyCommand(confirmPlugin, confirmPinVersion ?? void 0),
7856
+ onInstall: () => queue.installNow(confirmPlugin, {
7857
+ update: confirmIsUpdate,
7791
7858
  pinVersion: confirmPinVersion ?? void 0
7792
- } : void 0),
7859
+ }),
7793
7860
  onRestart: () => setShowRestartConfirm(true)
7794
7861
  }), confirmCustomTarget && (0, react.createElement)(InstallModal, {
7795
7862
  plugin: null,