dsh-plugin 2.2.4 → 2.2.5

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
@@ -433,6 +433,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
433
433
  update: "可更新",
434
434
  updateAvailable: "有更新",
435
435
  updateAvailableHint: "检测到更新:有版本号的仓库比对版本号,无版本号的仓库比对仓库最近更新时间",
436
+ updatePending: "暂缓到 {time} 后可更新",
437
+ updatePendingHint: "新版本发布未满 24 小时,pnpm 供应链门禁会拦下;到时间后再更新即可",
436
438
  hubUpdateHint: "检测到 DSH Plugin Hub 新版本,点击查看更新内容并更新",
437
439
  hubUpdateTitle: "DSH Plugin Hub 有新版本",
438
440
  hubUpdateDesc: "v{version} 已发布,点击下方按钮即可更新,完成后需重启宿主生效。",
@@ -872,6 +874,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
872
874
  update: "Update",
873
875
  updateAvailable: "Update available",
874
876
  updateAvailableHint: "An update was detected: repos with a release are compared by tag, repos without one by last push time",
877
+ updatePending: "Update available after {time}",
878
+ updatePendingHint: "The new release is less than 24 hours old, so the pnpm supply-chain hold rejects it until then",
875
879
  hubUpdateHint: "A new DSH Plugin Hub version is available — click to view the changelog and update",
876
880
  hubUpdateTitle: "A new DSH Plugin Hub version is available",
877
881
  hubUpdateDesc: "v{version} has been released — click below to update, then restart the host to apply it.",
@@ -908,42 +912,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
908
912
  css: css$11
909
913
  });
910
914
  var Header_module_css_default = {
911
- "header": "qikqja_header",
912
- "resultCount": "qikqja_resultCount",
913
- "controls": "qikqja_controls",
914
- "aboutBtn": "qikqja_aboutBtn",
915
- "copyIcon": "qikqja_copyIcon",
916
- "segGroup": "qikqja_segGroup",
917
- "langBtn": "qikqja_langBtn",
918
- "searchRow": "qikqja_searchRow",
919
- "title": "qikqja_title",
920
- "adArrow": "qikqja_adArrow",
921
- "taglineLink": "qikqja_taglineLink",
922
- "sortGroup": "qikqja_sortGroup",
923
- "adText": "qikqja_adText",
924
- "resultSeg": "qikqja_resultSeg",
915
+ "hubUpdateBadge": "qikqja_hubUpdateBadge",
925
916
  "tabActive": "qikqja_tabActive",
926
- "githubIcon": "qikqja_githubIcon",
927
- "tabs": "qikqja_tabs",
917
+ "adBadge": "qikqja_adBadge",
918
+ "search": "qikqja_search",
919
+ "resultSeg": "qikqja_resultSeg",
920
+ "segBtn": "qikqja_segBtn",
921
+ "adArrow": "qikqja_adArrow",
922
+ "root": "qikqja_root",
923
+ "segBtnActive": "qikqja_segBtnActive",
924
+ "tab": "qikqja_tab",
925
+ "copyIcon": "qikqja_copyIcon",
928
926
  "headerTitleRow": "qikqja_headerTitleRow",
929
- "tabCount": "qikqja_tabCount",
930
- "headerRight": "qikqja_headerRight",
931
- "versionBtn": "qikqja_versionBtn",
932
- "hubUpdateBadge": "qikqja_hubUpdateBadge",
933
927
  "brandTitle": "qikqja_brandTitle",
928
+ "aboutBtn": "qikqja_aboutBtn",
929
+ "logoIcon": "qikqja_logoIcon",
930
+ "headerRight": "qikqja_headerRight",
931
+ "controls": "qikqja_controls",
934
932
  "tagline": "qikqja_tagline",
935
- "segLabel": "qikqja_segLabel",
936
- "segBtnActive": "qikqja_segBtnActive",
937
- "tabsRow": "qikqja_tabsRow",
933
+ "taglineLink": "qikqja_taglineLink",
934
+ "tabCount": "qikqja_tabCount",
935
+ "langBtn": "qikqja_langBtn",
938
936
  "githubLink": "qikqja_githubLink",
939
- "search": "qikqja_search",
940
- "tab": "qikqja_tab",
941
- "logoIcon": "qikqja_logoIcon",
942
- "root": "qikqja_root",
943
- "adBadge": "qikqja_adBadge",
944
- "segBtn": "qikqja_segBtn",
937
+ "githubIcon": "qikqja_githubIcon",
945
938
  "version": "qikqja_version",
946
- "adBanner": "qikqja_adBanner"
939
+ "segLabel": "qikqja_segLabel",
940
+ "tabs": "qikqja_tabs",
941
+ "searchRow": "qikqja_searchRow",
942
+ "sortGroup": "qikqja_sortGroup",
943
+ "resultCount": "qikqja_resultCount",
944
+ "title": "qikqja_title",
945
+ "adText": "qikqja_adText",
946
+ "tabsRow": "qikqja_tabsRow",
947
+ "adBanner": "qikqja_adBanner",
948
+ "segGroup": "qikqja_segGroup",
949
+ "versionBtn": "qikqja_versionBtn",
950
+ "header": "qikqja_header"
947
951
  };
948
952
  //#endregion
949
953
  //#region \0dsh-css:src/client/styles/Modal.module.css.mjs
@@ -962,142 +966,142 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
962
966
  css: css$10
963
967
  });
964
968
  var Modal_module_css_default = {
965
- "noticeTextOk": "BiQ1zG_noticeTextOk",
966
- "stripCancel": "BiQ1zG_stripCancel",
967
- "restartLater": "BiQ1zG_restartLater",
968
- "modalCmdCopy": "BiQ1zG_modalCmdCopy",
969
- "noticeTextFail": "BiQ1zG_noticeTextFail",
970
- "cliOnlyHint": "BiQ1zG_cliOnlyHint",
971
- "failClear": "BiQ1zG_failClear",
972
- "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
973
- "hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
974
- "linkIcon": "BiQ1zG_linkIcon",
975
- "aboutModal": "BiQ1zG_aboutModal",
976
- "failList": "BiQ1zG_failList",
977
- "queueRowBody": "BiQ1zG_queueRowBody",
978
- "noticeRowMain": "BiQ1zG_noticeRowMain",
979
- "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
980
- "dangerConfirm": "BiQ1zG_dangerConfirm",
981
- "progressTrack": "BiQ1zG_progressTrack",
982
- "noticeRemove": "BiQ1zG_noticeRemove",
983
- "modalCmd": "BiQ1zG_modalCmd",
969
+ "failPrepareHint": "BiQ1zG_failPrepareHint",
970
+ "modalCmdText": "BiQ1zG_modalCmdText",
971
+ "errorHint": "BiQ1zG_errorHint",
972
+ "queueRowTrack": "BiQ1zG_queueRowTrack",
973
+ "noticeList": "BiQ1zG_noticeList",
974
+ "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
984
975
  "noticeVersion": "BiQ1zG_noticeVersion",
985
- "resultCheckIcon": "BiQ1zG_resultCheckIcon",
986
- "detailPath": "BiQ1zG_detailPath",
987
- "uninstallConfirm": "BiQ1zG_uninstallConfirm",
988
- "detailGrid": "BiQ1zG_detailGrid",
976
+ "failKindInstall": "BiQ1zG_failKindInstall",
989
977
  "detailModal": "BiQ1zG_detailModal",
990
- "detailStars": "BiQ1zG_detailStars",
978
+ "errorModal": "BiQ1zG_errorModal",
979
+ "detailPath": "BiQ1zG_detailPath",
980
+ "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
981
+ "helpModal": "BiQ1zG_helpModal",
982
+ "failBigIssue": "BiQ1zG_failBigIssue",
983
+ "detailStatusText": "BiQ1zG_detailStatusText",
991
984
  "logModal": "BiQ1zG_logModal",
992
- "overlayIn": "BiQ1zG_overlayIn",
993
- "progressText": "BiQ1zG_progressText",
994
- "queueRowHead": "BiQ1zG_queueRowHead",
995
- "detailPathBtn": "BiQ1zG_detailPathBtn",
996
- "modalLabel": "BiQ1zG_modalLabel",
997
- "noticeMain": "BiQ1zG_noticeMain",
998
985
  "pendingRowActions": "BiQ1zG_pendingRowActions",
999
- "modalBody": "BiQ1zG_modalBody",
1000
- "failRow": "BiQ1zG_failRow",
1001
- "noticeList": "BiQ1zG_noticeList",
1002
- "noticeRowOk": "BiQ1zG_noticeRowOk",
1003
- "failBigIssue": "BiQ1zG_failBigIssue",
1004
- "modalLink": "BiQ1zG_modalLink",
1005
- "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
1006
- "detailLabel": "BiQ1zG_detailLabel",
1007
- "noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
1008
- "overlay": "BiQ1zG_overlay",
1009
- "modalHead": "BiQ1zG_modalHead",
1010
- "modalValue": "BiQ1zG_modalValue",
1011
- "result": "BiQ1zG_result",
1012
- "failPrepareHint": "BiQ1zG_failPrepareHint",
986
+ "detailValue": "BiQ1zG_detailValue",
987
+ "queueRowDesc": "BiQ1zG_queueRowDesc",
988
+ "detailPathActions": "BiQ1zG_detailPathActions",
989
+ "modal": "BiQ1zG_modal",
990
+ "modalTitleBusy": "BiQ1zG_modalTitleBusy",
991
+ "detailLink": "BiQ1zG_detailLink",
992
+ "noticeTextFail": "BiQ1zG_noticeTextFail",
1013
993
  "detailUpdateHint": "BiQ1zG_detailUpdateHint",
1014
- "bundleDeselectedHint": "BiQ1zG_bundleDeselectedHint",
1015
- "detailStatusPending": "BiQ1zG_detailStatusPending",
1016
994
  "restartNow": "BiQ1zG_restartNow",
1017
995
  "trustHint": "BiQ1zG_trustHint",
1018
- "modalActions": "BiQ1zG_modalActions",
1019
- "queueRow": "BiQ1zG_queueRow",
1020
- "resultCheck": "BiQ1zG_resultCheck",
1021
- "detailPathActions": "BiQ1zG_detailPathActions",
1022
- "modalCancel": "BiQ1zG_modalCancel",
1023
- "failRepoLabel": "BiQ1zG_failRepoLabel",
1024
- "modalRow": "BiQ1zG_modalRow",
1025
- "modalCmdText": "BiQ1zG_modalCmdText",
1026
- "queueRowDesc": "BiQ1zG_queueRowDesc",
1027
996
  "restartNowWarning": "BiQ1zG_restartNowWarning",
1028
- "errorModal": "BiQ1zG_errorModal",
1029
- "progressFillFail": "BiQ1zG_progressFillFail",
1030
- "hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
1031
- "queuedHint": "BiQ1zG_queuedHint",
1032
- "modalDesc": "BiQ1zG_modalDesc",
1033
- "failedCopyHint": "BiQ1zG_failedCopyHint",
997
+ "hubUpdateModal": "BiQ1zG_hubUpdateModal",
998
+ "detailStatusPending": "BiQ1zG_detailStatusPending",
999
+ "progress": "BiQ1zG_progress",
1000
+ "pendingRowStatus": "BiQ1zG_pendingRowStatus",
1001
+ "queueRowBody": "BiQ1zG_queueRowBody",
1002
+ "failRepoLabel": "BiQ1zG_failRepoLabel",
1003
+ "modalValue": "BiQ1zG_modalValue",
1004
+ "modalBody": "BiQ1zG_modalBody",
1034
1005
  "toastIn": "BiQ1zG_toastIn",
1035
- "detailPathText": "BiQ1zG_detailPathText",
1036
- "confirmPrimary": "BiQ1zG_confirmPrimary",
1037
- "failEmpty": "BiQ1zG_failEmpty",
1038
- "aboutMeta": "BiQ1zG_aboutMeta",
1039
- "modalClose": "BiQ1zG_modalClose",
1040
- "queueRowTrack": "BiQ1zG_queueRowTrack",
1041
- "failReason": "BiQ1zG_failReason",
1042
- "errorHint": "BiQ1zG_errorHint",
1043
- "progressHead": "BiQ1zG_progressHead",
1006
+ "failNetworkTarget": "BiQ1zG_failNetworkTarget",
1007
+ "failCopy": "BiQ1zG_failCopy",
1044
1008
  "failKindTitle": "BiQ1zG_failKindTitle",
1045
- "queueSection": "BiQ1zG_queueSection",
1046
- "detailMono": "BiQ1zG_detailMono",
1047
1009
  "resultTitle": "BiQ1zG_resultTitle",
1048
- "failHead": "BiQ1zG_failHead",
1010
+ "detailGrid": "BiQ1zG_detailGrid",
1011
+ "failedCopyHint": "BiQ1zG_failedCopyHint",
1012
+ "queueRowHead": "BiQ1zG_queueRowHead",
1013
+ "noticeIgnore": "BiQ1zG_noticeIgnore",
1014
+ "queueRowTarget": "BiQ1zG_queueRowTarget",
1015
+ "failRepo": "BiQ1zG_failRepo",
1016
+ "resultCheckIcon": "BiQ1zG_resultCheckIcon",
1017
+ "detailPathText": "BiQ1zG_detailPathText",
1018
+ "detailStatusRunning": "BiQ1zG_detailStatusRunning",
1049
1019
  "noticeHead": "BiQ1zG_noticeHead",
1050
1020
  "failKindUninstall": "BiQ1zG_failKindUninstall",
1051
- "failNetworkTarget": "BiQ1zG_failNetworkTarget",
1052
- "failDiagBtn": "BiQ1zG_failDiagBtn",
1021
+ "modalActions": "BiQ1zG_modalActions",
1022
+ "dangerConfirm": "BiQ1zG_dangerConfirm",
1023
+ "modalLabel": "BiQ1zG_modalLabel",
1024
+ "modalInstall": "BiQ1zG_modalInstall",
1025
+ "bundleDeselectedHint": "BiQ1zG_bundleDeselectedHint",
1026
+ "modalRow": "BiQ1zG_modalRow",
1027
+ "aboutModal": "BiQ1zG_aboutModal",
1028
+ "detailArrow": "BiQ1zG_detailArrow",
1029
+ "uninstallConfirm": "BiQ1zG_uninstallConfirm",
1030
+ "progressTrack": "BiQ1zG_progressTrack",
1031
+ "errorCopySoft": "BiQ1zG_errorCopySoft",
1032
+ "modalIn": "BiQ1zG_modalIn",
1033
+ "modalTitle": "BiQ1zG_modalTitle",
1034
+ "detailLabel": "BiQ1zG_detailLabel",
1035
+ "linkIcon": "BiQ1zG_linkIcon",
1036
+ "aboutMeta": "BiQ1zG_aboutMeta",
1037
+ "restartLater": "BiQ1zG_restartLater",
1038
+ "queueSectionTitle": "BiQ1zG_queueSectionTitle",
1039
+ "resultCheck": "BiQ1zG_resultCheck",
1053
1040
  "detailRow": "BiQ1zG_detailRow",
1041
+ "modalClose": "BiQ1zG_modalClose",
1042
+ "queuedHint": "BiQ1zG_queuedHint",
1043
+ "resultRestarting": "BiQ1zG_resultRestarting",
1044
+ "modalLink": "BiQ1zG_modalLink",
1054
1045
  "detailDim": "BiQ1zG_detailDim",
1055
- "noticeTime": "BiQ1zG_noticeTime",
1056
- "noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
1057
- "detailValue": "BiQ1zG_detailValue",
1058
- "modalTitle": "BiQ1zG_modalTitle",
1059
- "queueRowTarget": "BiQ1zG_queueRowTarget",
1060
- "progressFill": "BiQ1zG_progressFill",
1061
- "noticeIgnore": "BiQ1zG_noticeIgnore",
1046
+ "modalHead": "BiQ1zG_modalHead",
1047
+ "modalCmd": "BiQ1zG_modalCmd",
1062
1048
  "failRepoUrl": "BiQ1zG_failRepoUrl",
1049
+ "hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
1050
+ "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
1051
+ "noticeRowOk": "BiQ1zG_noticeRowOk",
1052
+ "modalCopy": "BiQ1zG_modalCopy",
1053
+ "queueSection": "BiQ1zG_queueSection",
1054
+ "noticeRowMain": "BiQ1zG_noticeRowMain",
1055
+ "confirmIconDanger": "BiQ1zG_confirmIconDanger",
1063
1056
  "errorBox": "BiQ1zG_errorBox",
1064
- "detailStatusText": "BiQ1zG_detailStatusText",
1065
- "modalCloseIcon": "BiQ1zG_modalCloseIcon",
1066
- "toastFail": "BiQ1zG_toastFail",
1067
- "helpModal": "BiQ1zG_helpModal",
1068
- "failCopy": "BiQ1zG_failCopy",
1069
- "errorTitle": "BiQ1zG_errorTitle",
1070
- "modal": "BiQ1zG_modal",
1071
- "modalIn": "BiQ1zG_modalIn",
1057
+ "stripCancel": "BiQ1zG_stripCancel",
1058
+ "failHead": "BiQ1zG_failHead",
1059
+ "noticeMain": "BiQ1zG_noticeMain",
1072
1060
  "noticeFoot": "BiQ1zG_noticeFoot",
1061
+ "failRow": "BiQ1zG_failRow",
1062
+ "failKind": "BiQ1zG_failKind",
1063
+ "modalCmdCopy": "BiQ1zG_modalCmdCopy",
1073
1064
  "failMisjudgeLink": "BiQ1zG_failMisjudgeLink",
1074
- "detailStatusRunning": "BiQ1zG_detailStatusRunning",
1075
- "queueRowStatus": "BiQ1zG_queueRowStatus",
1076
- "resultRestarting": "BiQ1zG_resultRestarting",
1065
+ "modalCloseIcon": "BiQ1zG_modalCloseIcon",
1066
+ "failDiagBtn": "BiQ1zG_failDiagBtn",
1067
+ "progressHead": "BiQ1zG_progressHead",
1068
+ "detailStars": "BiQ1zG_detailStars",
1069
+ "failClear": "BiQ1zG_failClear",
1070
+ "toastFail": "BiQ1zG_toastFail",
1071
+ "overlay": "BiQ1zG_overlay",
1072
+ "confirmPrimary": "BiQ1zG_confirmPrimary",
1073
+ "progressFillFail": "BiQ1zG_progressFillFail",
1074
+ "noticeRow": "BiQ1zG_noticeRow",
1075
+ "failEmpty": "BiQ1zG_failEmpty",
1076
+ "progressFill": "BiQ1zG_progressFill",
1077
+ "confirmIcon": "BiQ1zG_confirmIcon",
1078
+ "queueRow": "BiQ1zG_queueRow",
1077
1079
  "queueRowPct": "BiQ1zG_queueRowPct",
1078
- "modalCopy": "BiQ1zG_modalCopy",
1079
- "detailArrow": "BiQ1zG_detailArrow",
1080
- "modalTitleQueued": "BiQ1zG_modalTitleQueued",
1081
- "errorCopySoft": "BiQ1zG_errorCopySoft",
1080
+ "detailMono": "BiQ1zG_detailMono",
1082
1081
  "resultDesc": "BiQ1zG_resultDesc",
1083
- "hubUpdateModal": "BiQ1zG_hubUpdateModal",
1084
1082
  "toast": "BiQ1zG_toast",
1085
- "noticeRow": "BiQ1zG_noticeRow",
1086
- "modalWide": "BiQ1zG_modalWide",
1087
- "confirmIcon": "BiQ1zG_confirmIcon",
1088
- "confirmIconDanger": "BiQ1zG_confirmIconDanger",
1089
- "modalTitleBusy": "BiQ1zG_modalTitleBusy",
1090
- "pendingRowStatus": "BiQ1zG_pendingRowStatus",
1091
- "detailLink": "BiQ1zG_detailLink",
1092
- "aboutContent": "BiQ1zG_aboutContent",
1093
- "queueSectionTitle": "BiQ1zG_queueSectionTitle",
1094
- "progress": "BiQ1zG_progress",
1095
- "failKind": "BiQ1zG_failKind",
1096
- "failRepo": "BiQ1zG_failRepo",
1097
- "modalInstall": "BiQ1zG_modalInstall",
1098
- "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
1083
+ "modalTitleQueued": "BiQ1zG_modalTitleQueued",
1084
+ "failReason": "BiQ1zG_failReason",
1085
+ "cliOnlyHint": "BiQ1zG_cliOnlyHint",
1086
+ "modalCancel": "BiQ1zG_modalCancel",
1087
+ "noticeRemove": "BiQ1zG_noticeRemove",
1099
1088
  "confirmIconWrap": "BiQ1zG_confirmIconWrap",
1100
- "failKindInstall": "BiQ1zG_failKindInstall"
1089
+ "queueRowStatus": "BiQ1zG_queueRowStatus",
1090
+ "noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
1091
+ "modalDesc": "BiQ1zG_modalDesc",
1092
+ "failList": "BiQ1zG_failList",
1093
+ "errorTitle": "BiQ1zG_errorTitle",
1094
+ "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
1095
+ "aboutContent": "BiQ1zG_aboutContent",
1096
+ "detailPathBtn": "BiQ1zG_detailPathBtn",
1097
+ "progressText": "BiQ1zG_progressText",
1098
+ "noticeTime": "BiQ1zG_noticeTime",
1099
+ "modalWide": "BiQ1zG_modalWide",
1100
+ "noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
1101
+ "noticeTextOk": "BiQ1zG_noticeTextOk",
1102
+ "result": "BiQ1zG_result",
1103
+ "hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
1104
+ "overlayIn": "BiQ1zG_overlayIn"
1101
1105
  };
1102
1106
  //#endregion
1103
1107
  //#region src/server/services/install/release-target.ts
@@ -1187,7 +1191,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1187
1191
  * tsdown 构建时用 define 把 __PLUGIN_VERSION__ 替换成 package.json 的版本号;
1188
1192
  * node --test 直接 import 本模块时该标识符不存在,typeof 守卫兜底为空串。
1189
1193
  */
1190
- const PLUGIN_VERSION = "2.2.4";
1194
+ const PLUGIN_VERSION = "2.2.5";
1191
1195
  const CATEGORY_ORDER = [
1192
1196
  "interface",
1193
1197
  "session",
@@ -1585,14 +1589,29 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1585
1589
  *
1586
1590
  * 更新命令执行的是 `pkg@latest`,所以「目录里标的版本」不是最终能装上的版本:
1587
1591
  * 作者可能只打了 GitHub release 没发 npm —— 此时提示会变成永远点不掉的循环。
1588
- * 任一信息缺失(查不到发布信息 / 没有已装版本记录)返回 true,交回调用方原有判定:
1592
+ * 任一信息缺失(查不到发布信息 / 没有已装版本记录)返回 offered,交回调用方原有判定:
1589
1593
  * 宁可提示,也不因为一次查询失败把真实更新吃掉。
1590
1594
  */
1591
- function isUpdateOffered(release, installedVersion, now) {
1592
- if (release === null) return true;
1593
- if (isReleaseTooFresh(release.publishedAt, now)) return false;
1594
- if (installedVersion !== null && compareVersions(release.version, installedVersion) <= 0) return false;
1595
- return true;
1595
+ function updateDecision(release, installedVersion, now) {
1596
+ if (release === null) return {
1597
+ offered: true,
1598
+ pendingUntil: null
1599
+ };
1600
+ if (isReleaseTooFresh(release.publishedAt, now)) {
1601
+ const ms = Date.parse(release.publishedAt);
1602
+ return {
1603
+ offered: false,
1604
+ pendingUntil: Number.isNaN(ms) ? null : ms + MIN_RELEASE_AGE_MS
1605
+ };
1606
+ }
1607
+ if (installedVersion !== null && compareVersions(release.version, installedVersion) <= 0) return {
1608
+ offered: false,
1609
+ pendingUntil: null
1610
+ };
1611
+ return {
1612
+ offered: true,
1613
+ pendingUntil: null
1614
+ };
1596
1615
  }
1597
1616
  /**
1598
1617
  * 选出本次真正该提示的更新版本。
@@ -1767,6 +1786,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1767
1786
  installedAt: rec?.installedAt ?? null,
1768
1787
  catalogVersion: p.version ?? null,
1769
1788
  hasUpdate: hasUpdateOf(p, installed, versions),
1789
+ pendingUntil: null,
1770
1790
  loaded: loadedNames?.includes(name) ?? false,
1771
1791
  dshCapable: dshCapableNames?.includes(name) ?? false
1772
1792
  });
@@ -1787,6 +1807,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1787
1807
  installedAt: rec?.installedAt ?? null,
1788
1808
  catalogVersion: null,
1789
1809
  hasUpdate: false,
1810
+ pendingUntil: null,
1790
1811
  loaded: loadedNames?.includes(name) ?? false,
1791
1812
  dshCapable: dshCapableNames?.includes(name) ?? false
1792
1813
  });
@@ -2020,18 +2041,23 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2020
2041
  * - npm 上最新版并不高于已装版本 —— 更新走的是 `pkg@latest`,此时无论目录标到哪个 tag,
2021
2042
  * 都不可能装上(作者可能只打了 GitHub release 没发 npm),提示只会变成永远点不掉的循环。
2022
2043
  */
2023
- const updateBlocked = (0, react.useMemo)(() => {
2024
- const blocked = /* @__PURE__ */ new Set();
2025
- if (!releaseAgeReady) return blocked;
2044
+ const updateDecisions = (0, react.useMemo)(() => {
2045
+ const map = /* @__PURE__ */ new Map();
2046
+ if (!releaseAgeReady) return map;
2026
2047
  const now = Date.now();
2027
- for (const pkg of releaseAgeCandidates) if (!isUpdateOffered(releaseAge.releases[pkg] ?? null, installedByPackage.get(pkg) ?? null, now)) blocked.add(pkg);
2028
- return blocked;
2048
+ for (const pkg of releaseAgeCandidates) map.set(pkg, updateDecision(releaseAge.releases[pkg] ?? null, installedByPackage.get(pkg) ?? null, now));
2049
+ return map;
2029
2050
  }, [
2030
2051
  releaseAgeReady,
2031
2052
  releaseAgeCandidates,
2032
2053
  releaseAge.releases,
2033
2054
  installedByPackage
2034
2055
  ]);
2056
+ const updateBlocked = (0, react.useMemo)(() => {
2057
+ const blocked = /* @__PURE__ */ new Set();
2058
+ for (const [pkg, decision] of updateDecisions) if (!decision.offered) blocked.add(pkg);
2059
+ return blocked;
2060
+ }, [updateDecisions]);
2035
2061
  /**
2036
2062
  * 是否有更新:仅对已安装插件有意义。
2037
2063
  * 双信号判定——有 release 版本的比版本;无版本(repo 不打 tag)的比仓库最近更新时间
@@ -2041,22 +2067,38 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2041
2067
  const hasUpdate = (p) => {
2042
2068
  if (!hasUpdateOf(p, installed, versions)) return false;
2043
2069
  const pkg = npmPackageOf(p, versions);
2044
- return pkg === null || !updateBlocked.has(pkg);
2070
+ if (pkg === null) return true;
2071
+ return releaseAgeReady && !updateBlocked.has(pkg);
2072
+ };
2073
+ /** 更新被门禁暂缓时的可重试时刻(毫秒);未安装/无更新/非门禁原因 → null。 */
2074
+ const updatePendingUntil = (p) => {
2075
+ if (!hasUpdateOf(p, installed, versions)) return null;
2076
+ const pkg = npmPackageOf(p, versions);
2077
+ if (pkg === null) return null;
2078
+ return updateDecisions.get(pkg)?.pendingUntil ?? null;
2045
2079
  };
2046
- /** 已安装项统一列表(目录元数据 + 运行时信息合并):被拦下的去掉更新标记,驱动「已安装」tab。 */
2080
+ /** 已安装项统一列表(目录元数据 + 运行时信息合并):校验未就绪/被拦下的去掉更新标记、
2081
+ * 门禁暂缓的带上可重试时刻,驱动「已安装」tab。 */
2047
2082
  const installedItems = (0, react.useMemo)(() => {
2048
- if (updateBlocked.size === 0) return rawInstalledItems;
2049
2083
  return rawInstalledItems.map((item) => {
2050
2084
  if (!item.hasUpdate || !item.plugin) return item;
2051
2085
  const pkg = npmPackageOf(item.plugin, versions);
2052
- return pkg !== null && updateBlocked.has(pkg) ? {
2086
+ if (pkg === null) return item;
2087
+ if (!releaseAgeReady) return {
2053
2088
  ...item,
2054
2089
  hasUpdate: false
2055
- } : item;
2090
+ };
2091
+ const decision = updateDecisions.get(pkg);
2092
+ return decision === void 0 || decision.offered ? item : {
2093
+ ...item,
2094
+ hasUpdate: false,
2095
+ pendingUntil: decision.pendingUntil
2096
+ };
2056
2097
  });
2057
2098
  }, [
2058
2099
  rawInstalledItems,
2059
- updateBlocked,
2100
+ releaseAgeReady,
2101
+ updateDecisions,
2060
2102
  versions
2061
2103
  ]);
2062
2104
  /**
@@ -2070,7 +2112,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2070
2112
  * registry 真实发布时间下发(同源),据此判断最准。门槛命中要单列成 `pending` 而不是
2071
2113
  * 落回「无更新」——回落会让弹窗在本机版本落后时谎称「已是最新」。
2072
2114
  */
2073
- const hubCurrentVersion = "2.2.4";
2115
+ const hubCurrentVersion = "2.2.5";
2074
2116
  const hubUpdateResult = hubUpdateInfo === null ? {
2075
2117
  state: "none",
2076
2118
  target: null
@@ -2133,6 +2175,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2133
2175
  installedName,
2134
2176
  installedVersion,
2135
2177
  hasUpdate,
2178
+ updatePendingUntil,
2136
2179
  hubHasUpdate,
2137
2180
  hubUpdateState,
2138
2181
  hubUpdateTarget,
@@ -4485,6 +4528,14 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4485
4528
  if (days < 365) return t("monthsAgo", { months: Math.floor(days / 30) });
4486
4529
  return t("yearsAgo", { years: Math.floor(days / 365) });
4487
4530
  }
4531
+ /** 具体时刻:当天只给「时:分」,跨天再补「月/日」,用于「暂缓到何时可更新」。 */
4532
+ function clockTime(ms) {
4533
+ const at = new Date(ms);
4534
+ const now = /* @__PURE__ */ new Date();
4535
+ const hh = String(at.getHours()).padStart(2, "0");
4536
+ const mm = String(at.getMinutes()).padStart(2, "0");
4537
+ return at.getFullYear() === now.getFullYear() && at.getMonth() === now.getMonth() && at.getDate() === now.getDate() ? `${hh}:${mm}` : `${at.getMonth() + 1}/${at.getDate()} ${hh}:${mm}`;
4538
+ }
4488
4539
  //#endregion
4489
4540
  //#region src/client/components/modals/InstalledDetailModal.tsx
4490
4541
  /**
@@ -4524,7 +4575,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4524
4575
  }, (0, react.createElement)(CloseIcon))), (0, react.createElement)("div", { className: Modal_module_css_default.modalBody }, p?.description ? (0, react.createElement)("div", { className: Modal_module_css_default.modalDesc }, p.description) : null, hasUpdate ? (0, react.createElement)("div", { className: Modal_module_css_default.detailUpdateHint }, item.installedVersion && item.catalogVersion ? t("versionUpHint", {
4525
4576
  from: item.installedVersion,
4526
4577
  to: item.catalogVersion
4527
- }) : t("updateAvailableHint")) : null, (0, react.createElement)("div", { className: Modal_module_css_default.detailGrid }, p?.category ? (0, react.createElement)("div", { className: Modal_module_css_default.detailRow }, (0, react.createElement)("span", { className: Modal_module_css_default.detailLabel }, t("detailCategory")), (0, react.createElement)("span", { className: Modal_module_css_default.detailValue }, categoryLabel(CATEGORY_LABELS, p.category, lang))) : null, (0, react.createElement)("div", { className: Modal_module_css_default.detailRow }, (0, react.createElement)("span", { className: Modal_module_css_default.detailLabel }, t("statusLabel")), (0, react.createElement)("span", { className: Modal_module_css_default.detailValue }, (0, react.createElement)("span", {
4578
+ }) : t("updateAvailableHint")) : item.pendingUntil != null ? (0, react.createElement)("div", { className: Modal_module_css_default.detailUpdateHint }, t("updatePending", { time: clockTime(item.pendingUntil) })) : null, (0, react.createElement)("div", { className: Modal_module_css_default.detailGrid }, p?.category ? (0, react.createElement)("div", { className: Modal_module_css_default.detailRow }, (0, react.createElement)("span", { className: Modal_module_css_default.detailLabel }, t("detailCategory")), (0, react.createElement)("span", { className: Modal_module_css_default.detailValue }, categoryLabel(CATEGORY_LABELS, p.category, lang))) : null, (0, react.createElement)("div", { className: Modal_module_css_default.detailRow }, (0, react.createElement)("span", { className: Modal_module_css_default.detailLabel }, t("statusLabel")), (0, react.createElement)("span", { className: Modal_module_css_default.detailValue }, (0, react.createElement)("span", {
4528
4579
  className: item.loaded ? Modal_module_css_default.detailStatusRunning : Modal_module_css_default.detailStatusPending,
4529
4580
  "aria-hidden": "true"
4530
4581
  }), (0, react.createElement)("span", { className: Modal_module_css_default.detailStatusText }, item.loaded ? t("statusRunning") : t("statusPending")))), item.installedVersion ? (0, react.createElement)("div", { className: Modal_module_css_default.detailRow }, (0, react.createElement)("span", { className: Modal_module_css_default.detailLabel }, t("installedVersionLabel")), (0, react.createElement)("span", { className: Modal_module_css_default.detailValue }, (0, react.createElement)("span", { className: Modal_module_css_default.detailMono }, item.installedVersion), item.catalogVersion && item.catalogVersion !== item.installedVersion ? (0, react.createElement)("span", { className: Modal_module_css_default.detailArrow }, "→", (0, react.createElement)("span", { className: Modal_module_css_default.detailMono }, item.catalogVersion), (0, react.createElement)("span", { className: Modal_module_css_default.detailDim }, t("catalogLatest"))) : null)) : null, item.repo ? (0, react.createElement)("div", { className: Modal_module_css_default.detailRow }, (0, react.createElement)("span", { className: Modal_module_css_default.detailLabel }, t("detailCatalog")), (0, react.createElement)("a", {
@@ -5103,40 +5154,40 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5103
5154
  css: css$9
5104
5155
  });
5105
5156
  var List_module_css_default = {
5106
- "topic": "_3XaZHa_topic",
5107
- "installBtnUpdate": "_3XaZHa_installBtnUpdate",
5108
- "footer": "_3XaZHa_footer",
5109
- "stats": "_3XaZHa_stats",
5110
- "cardHead": "_3XaZHa_cardHead",
5111
- "desc": "_3XaZHa_desc",
5112
- "versionBadge": "_3XaZHa_versionBadge",
5113
- "uninstallBtn": "_3XaZHa_uninstallBtn",
5114
- "list": "_3XaZHa_list",
5115
- "cardSide": "_3XaZHa_cardSide",
5116
- "categoryBadge": "_3XaZHa_categoryBadge",
5117
- "cardMain": "_3XaZHa_cardMain",
5118
- "date": "_3XaZHa_date",
5119
- "topics": "_3XaZHa_topics",
5120
- "installBtnCopied": "_3XaZHa_installBtnCopied",
5121
- "updateBadge": "_3XaZHa_updateBadge",
5122
- "installBtn": "_3XaZHa_installBtn",
5123
5157
  "body": "_3XaZHa_body",
5124
- "verified": "_3XaZHa_verified",
5125
- "stateDesc": "_3XaZHa_stateDesc",
5158
+ "list": "_3XaZHa_list",
5159
+ "uninstallBtn": "_3XaZHa_uninstallBtn",
5126
5160
  "stateActions": "_3XaZHa_stateActions",
5127
- "card": "_3XaZHa_card",
5161
+ "footLink": "_3XaZHa_footLink",
5162
+ "cardHead": "_3XaZHa_cardHead",
5128
5163
  "installBtnInstalled": "_3XaZHa_installBtnInstalled",
5164
+ "stateDesc": "_3XaZHa_stateDesc",
5165
+ "desc": "_3XaZHa_desc",
5166
+ "topic": "_3XaZHa_topic",
5167
+ "star": "_3XaZHa_star",
5168
+ "moreSentinel": "_3XaZHa_moreSentinel",
5129
5169
  "state": "_3XaZHa_state",
5130
- "stateTitle": "_3XaZHa_stateTitle",
5131
- "retryBtn": "_3XaZHa_retryBtn",
5132
- "footLink": "_3XaZHa_footLink",
5133
- "detailBtn": "_3XaZHa_detailBtn",
5134
- "actions": "_3XaZHa_actions",
5135
5170
  "diagBtn": "_3XaZHa_diagBtn",
5136
5171
  "fork": "_3XaZHa_fork",
5172
+ "footer": "_3XaZHa_footer",
5173
+ "installBtn": "_3XaZHa_installBtn",
5174
+ "actions": "_3XaZHa_actions",
5175
+ "stateTitle": "_3XaZHa_stateTitle",
5137
5176
  "cardTitle": "_3XaZHa_cardTitle",
5138
- "moreSentinel": "_3XaZHa_moreSentinel",
5139
- "star": "_3XaZHa_star"
5177
+ "retryBtn": "_3XaZHa_retryBtn",
5178
+ "cardSide": "_3XaZHa_cardSide",
5179
+ "stats": "_3XaZHa_stats",
5180
+ "installBtnCopied": "_3XaZHa_installBtnCopied",
5181
+ "card": "_3XaZHa_card",
5182
+ "cardMain": "_3XaZHa_cardMain",
5183
+ "detailBtn": "_3XaZHa_detailBtn",
5184
+ "topics": "_3XaZHa_topics",
5185
+ "date": "_3XaZHa_date",
5186
+ "installBtnUpdate": "_3XaZHa_installBtnUpdate",
5187
+ "updateBadge": "_3XaZHa_updateBadge",
5188
+ "verified": "_3XaZHa_verified",
5189
+ "versionBadge": "_3XaZHa_versionBadge",
5190
+ "categoryBadge": "_3XaZHa_categoryBadge"
5140
5191
  };
5141
5192
  //#endregion
5142
5193
  //#region src/client/hooks/useIncrementalList.ts
@@ -5184,11 +5235,12 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5184
5235
  * 目录列表里的单张插件卡片:名称/分类/verified 徽标、描述 + 标签、Star/Fork/日期
5185
5236
  * 统计,以及详情/安装/卸载动作。
5186
5237
  */
5187
- function PluginCard({ plugin: p, copied, installedName, installedVersion, hasUpdate, t, langKey, langPath, onInstall, onUninstall }) {
5238
+ function PluginCard({ plugin: p, copied, installedName, installedVersion, hasUpdate, updatePendingUntil, t, langKey, langPath, onInstall, onUninstall }) {
5188
5239
  const repo = p.source?.repo ?? "";
5189
5240
  const isCopied = copied === repo;
5190
5241
  const isInstalled = installedName(p) !== null;
5191
5242
  const update = hasUpdate(p);
5243
+ const pendingUntil = isInstalled && !update ? updatePendingUntil(p) : null;
5192
5244
  const versionShown = isInstalled ? installedVersion(p) : p.version;
5193
5245
  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", {
5194
5246
  className: List_module_css_default.cardTitle,
@@ -5199,7 +5251,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5199
5251
  }, versionShown) : null, update ? (0, react.createElement)("span", {
5200
5252
  className: List_module_css_default.updateBadge,
5201
5253
  title: t("updateAvailableHint")
5202
- }, t("updateAvailable")) : 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", {
5254
+ }, t("updateAvailable")) : null, pendingUntil !== null ? (0, react.createElement)("span", {
5255
+ className: List_module_css_default.updateBadge,
5256
+ title: t("updatePendingHint")
5257
+ }, 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", {
5203
5258
  key: topic,
5204
5259
  className: List_module_css_default.topic
5205
5260
  }, 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", {
@@ -5234,7 +5289,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5234
5289
  * 目录列表:承载加载/失败/空三态、插件卡片与计数页脚的滚动容器。分类或安装状态
5235
5290
  * 筛选变化时重置滚动位置,避免替换后的内容被误当成「没变化」。
5236
5291
  */
5237
- function CatalogList({ plugins, failed, visible, total, t, langPath, reload, forceReload, category, copied, installedName, installedVersion, hasUpdate, langKey, onInstall, onUninstall, hasProxy, onOpenDiagnostics }) {
5292
+ function CatalogList({ plugins, failed, visible, total, t, langPath, reload, forceReload, category, copied, installedName, installedVersion, hasUpdate, updatePendingUntil, langKey, onInstall, onUninstall, hasProxy, onOpenDiagnostics }) {
5238
5293
  /** 列表滚动容器:分类/搜索切换后列表内容替换但 scrollTop 保留,会让用户误以为列表没更新,需重置回顶部 */
5239
5294
  const listRef = (0, react.useRef)(null);
5240
5295
  /** 增量渲染:全量目录太大(4400+),只渲染首批,滚动接近底部时自动追加下一批 */
@@ -5262,6 +5317,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5262
5317
  installedName,
5263
5318
  installedVersion,
5264
5319
  hasUpdate,
5320
+ updatePendingUntil,
5265
5321
  t,
5266
5322
  langKey,
5267
5323
  langPath,
@@ -5317,6 +5373,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5317
5373
  installedName: catalog.installedName,
5318
5374
  installedVersion: catalog.installedVersion,
5319
5375
  hasUpdate: catalog.hasUpdate,
5376
+ updatePendingUntil: catalog.updatePendingUntil,
5320
5377
  langKey,
5321
5378
  onInstall,
5322
5379
  onUninstall,
@@ -5341,16 +5398,16 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5341
5398
  css: css$8
5342
5399
  });
5343
5400
  var SectionTabs_module_css_default = {
5344
- "tabIcon": "_7tvizq_tabIcon",
5345
- "tabActive": "_7tvizq_tabActive",
5346
- "noticeCount": "_7tvizq_noticeCount",
5347
- "tabLabel": "_7tvizq_tabLabel",
5348
5401
  "tabCount": "_7tvizq_tabCount",
5349
- "root": "_7tvizq_root",
5350
- "noticeBtn": "_7tvizq_noticeBtn",
5402
+ "noticeCount": "_7tvizq_noticeCount",
5351
5403
  "tab": "_7tvizq_tab",
5352
5404
  "tabCountActive": "_7tvizq_tabCountActive",
5353
- "noticeIcon": "_7tvizq_noticeIcon"
5405
+ "tabLabel": "_7tvizq_tabLabel",
5406
+ "noticeBtn": "_7tvizq_noticeBtn",
5407
+ "tabIcon": "_7tvizq_tabIcon",
5408
+ "noticeIcon": "_7tvizq_noticeIcon",
5409
+ "root": "_7tvizq_root",
5410
+ "tabActive": "_7tvizq_tabActive"
5354
5411
  };
5355
5412
  //#endregion
5356
5413
  //#region src/client/components/layout/SectionTabs.tsx
@@ -5426,42 +5483,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5426
5483
  css: css$7
5427
5484
  });
5428
5485
  var InstalledView_module_css_default = {
5429
- "emptyDesc": "_1nXeGW_emptyDesc",
5486
+ "row": "_1nXeGW_row",
5487
+ "segBtnActive": "_1nXeGW_segBtnActive",
5488
+ "rowTitleLine": "_1nXeGW_rowTitleLine",
5430
5489
  "statusPending": "_1nXeGW_statusPending",
5431
- "statusDot": "_1nXeGW_statusDot",
5432
- "list": "_1nXeGW_list",
5490
+ "root": "_1nXeGW_root",
5491
+ "statusInactive": "_1nXeGW_statusInactive",
5492
+ "rowMain": "_1nXeGW_rowMain",
5433
5493
  "rowRestart": "_1nXeGW_rowRestart",
5434
- "exampleRow": "_1nXeGW_exampleRow",
5435
- "toolbar": "_1nXeGW_toolbar",
5436
5494
  "empty": "_1nXeGW_empty",
5437
- "segLabel": "_1nXeGW_segLabel",
5495
+ "rowRepo": "_1nXeGW_rowRepo",
5496
+ "rowActions": "_1nXeGW_rowActions",
5497
+ "rowSourceTag": "_1nXeGW_rowSourceTag",
5498
+ "segRow": "_1nXeGW_segRow",
5499
+ "rowCategory": "_1nXeGW_rowCategory",
5500
+ "versionBadge": "_1nXeGW_versionBadge",
5501
+ "rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
5502
+ "toolbar": "_1nXeGW_toolbar",
5503
+ "exampleBadge": "_1nXeGW_exampleBadge",
5438
5504
  "rowDetail": "_1nXeGW_rowDetail",
5439
- "searchInput": "_1nXeGW_searchInput",
5440
5505
  "updateBadge": "_1nXeGW_updateBadge",
5441
- "rowActions": "_1nXeGW_rowActions",
5442
- "emptyTitle": "_1nXeGW_emptyTitle",
5443
- "rowTitleLine": "_1nXeGW_rowTitleLine",
5444
- "rowMeta": "_1nXeGW_rowMeta",
5445
- "rowUninstall": "_1nXeGW_rowUninstall",
5506
+ "statusDot": "_1nXeGW_statusDot",
5446
5507
  "rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
5447
- "row": "_1nXeGW_row",
5508
+ "searchWrap": "_1nXeGW_searchWrap",
5509
+ "emptyTitle": "_1nXeGW_emptyTitle",
5448
5510
  "segBtn": "_1nXeGW_segBtn",
5449
- "rowMain": "_1nXeGW_rowMain",
5450
- "versionBadge": "_1nXeGW_versionBadge",
5451
- "rowCategory": "_1nXeGW_rowCategory",
5452
- "segGroup": "_1nXeGW_segGroup",
5511
+ "searchInput": "_1nXeGW_searchInput",
5512
+ "emptyDesc": "_1nXeGW_emptyDesc",
5513
+ "list": "_1nXeGW_list",
5514
+ "exampleRow": "_1nXeGW_exampleRow",
5515
+ "segLabel": "_1nXeGW_segLabel",
5453
5516
  "rowUpdate": "_1nXeGW_rowUpdate",
5454
- "root": "_1nXeGW_root",
5517
+ "rowMeta": "_1nXeGW_rowMeta",
5455
5518
  "rowDesc": "_1nXeGW_rowDesc",
5456
- "rowSourceTag": "_1nXeGW_rowSourceTag",
5457
- "exampleBadge": "_1nXeGW_exampleBadge",
5458
- "searchWrap": "_1nXeGW_searchWrap",
5459
- "statusInactive": "_1nXeGW_statusInactive",
5460
- "segRow": "_1nXeGW_segRow",
5461
5519
  "rowTitle": "_1nXeGW_rowTitle",
5462
- "rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
5463
- "rowRepo": "_1nXeGW_rowRepo",
5464
- "segBtnActive": "_1nXeGW_segBtnActive"
5520
+ "segGroup": "_1nXeGW_segGroup",
5521
+ "rowUninstall": "_1nXeGW_rowUninstall"
5465
5522
  };
5466
5523
  //#endregion
5467
5524
  //#region src/client/components/views/InstalledView.tsx
@@ -5529,7 +5586,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5529
5586
  }, item.installedVersion) : null, item.hasUpdate ? (0, react.createElement)("span", {
5530
5587
  className: InstalledView_module_css_default.updateBadge,
5531
5588
  title: t("updateAvailableHint")
5532
- }, t("updateAvailable")) : null), (0, react.createElement)("span", {
5589
+ }, t("updateAvailable")) : item.pendingUntil != null ? (0, react.createElement)("span", {
5590
+ className: InstalledView_module_css_default.updateBadge,
5591
+ title: t("updatePendingHint")
5592
+ }, t("updatePending", { time: clockTime(item.pendingUntil) })) : null), (0, react.createElement)("span", {
5533
5593
  className: isCustom ? `${InstalledView_module_css_default.rowSourceTag} ${InstalledView_module_css_default.rowSourceTagManual}` : `${InstalledView_module_css_default.rowSourceTag} ${InstalledView_module_css_default.rowSourceTagHub}`,
5534
5594
  title: isCustom ? t("manualInstallHint") : t("hubInstallHint")
5535
5595
  }, isCustom ? t("manualInstall") : t("hubInstall")), (0, react.createElement)("div", { className: InstalledView_module_css_default.rowActions }, !item.loaded && item.dshCapable && pendingRestart ? (0, react.createElement)("button", {
@@ -5705,27 +5765,27 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5705
5765
  css: css$6
5706
5766
  });
5707
5767
  var CustomInstallView_module_css_default = {
5708
- "root": "zISxCG_root",
5709
- "installError": "zISxCG_installError",
5710
- "installExample": "zISxCG_installExample",
5711
- "installCardDisabled": "zISxCG_installCardDisabled",
5712
- "installBtn": "zISxCG_installBtn",
5713
- "desc": "zISxCG_desc",
5768
+ "installLabel": "zISxCG_installLabel",
5714
5769
  "channelOff": "zISxCG_channelOff",
5715
5770
  "installRow": "zISxCG_installRow",
5771
+ "installError": "zISxCG_installError",
5716
5772
  "installCards": "zISxCG_installCards",
5717
- "installCardHead": "zISxCG_installCardHead",
5718
5773
  "installInputError": "zISxCG_installInputError",
5719
- "helpLine": "zISxCG_helpLine",
5720
- "installLabel": "zISxCG_installLabel",
5721
- "helpCmd": "zISxCG_helpCmd",
5722
5774
  "installCard": "zISxCG_installCard",
5723
- "channelOffText": "zISxCG_channelOffText",
5775
+ "installInput": "zISxCG_installInput",
5776
+ "root": "zISxCG_root",
5777
+ "installExample": "zISxCG_installExample",
5778
+ "installCardDisabled": "zISxCG_installCardDisabled",
5779
+ "installHelpBtn": "zISxCG_installHelpBtn",
5724
5780
  "channelOffBtn": "zISxCG_channelOffBtn",
5781
+ "helpLine": "zISxCG_helpLine",
5782
+ "helpCmd": "zISxCG_helpCmd",
5725
5783
  "helpNote": "zISxCG_helpNote",
5726
- "installHelpBtn": "zISxCG_installHelpBtn",
5727
- "installInput": "zISxCG_installInput",
5728
- "helpBody": "zISxCG_helpBody"
5784
+ "helpBody": "zISxCG_helpBody",
5785
+ "channelOffText": "zISxCG_channelOffText",
5786
+ "installBtn": "zISxCG_installBtn",
5787
+ "installCardHead": "zISxCG_installCardHead",
5788
+ "desc": "zISxCG_desc"
5729
5789
  };
5730
5790
  //#endregion
5731
5791
  //#region src/client/components/views/CustomInstallView.tsx
@@ -5881,30 +5941,30 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5881
5941
  css: css$5
5882
5942
  });
5883
5943
  var SettingsView_module_css_default = {
5884
- "root": "_506LLG_root",
5944
+ "card": "_506LLG_card",
5885
5945
  "content": "_506LLG_content",
5886
5946
  "settingControl": "_506LLG_settingControl",
5887
- "controlDropdown": "_506LLG_controlDropdown",
5888
- "sidebar": "_506LLG_sidebar",
5889
- "proxyHint": "_506LLG_proxyHint",
5890
- "settingRow": "_506LLG_settingRow",
5891
- "settingRowStack": "_506LLG_settingRowStack",
5892
5947
  "textInput": "_506LLG_textInput",
5893
- "proxyHintOk": "_506LLG_proxyHintOk",
5894
- "settingDesc": "_506LLG_settingDesc",
5895
- "navIcon": "_506LLG_navIcon",
5896
- "proxyControl": "_506LLG_proxyControl",
5897
5948
  "settingLabel": "_506LLG_settingLabel",
5949
+ "settingControlStack": "_506LLG_settingControlStack",
5950
+ "proxyHintOk": "_506LLG_proxyHintOk",
5898
5951
  "navItem": "_506LLG_navItem",
5899
- "pageTitle": "_506LLG_pageTitle",
5900
5952
  "navItemActive": "_506LLG_navItemActive",
5901
- "resetBtn": "_506LLG_resetBtn",
5902
- "card": "_506LLG_card",
5903
- "settingControlStack": "_506LLG_settingControlStack",
5953
+ "proxyHint": "_506LLG_proxyHint",
5904
5954
  "pageDesc": "_506LLG_pageDesc",
5905
- "settingTitle": "_506LLG_settingTitle",
5955
+ "settingRow": "_506LLG_settingRow",
5956
+ "sidebar": "_506LLG_sidebar",
5957
+ "proxyControl": "_506LLG_proxyControl",
5958
+ "proxyHintFail": "_506LLG_proxyHintFail",
5959
+ "controlDropdown": "_506LLG_controlDropdown",
5960
+ "resetBtn": "_506LLG_resetBtn",
5961
+ "root": "_506LLG_root",
5962
+ "navIcon": "_506LLG_navIcon",
5963
+ "pageTitle": "_506LLG_pageTitle",
5964
+ "settingDesc": "_506LLG_settingDesc",
5906
5965
  "pageHeader": "_506LLG_pageHeader",
5907
- "proxyHintFail": "_506LLG_proxyHintFail"
5966
+ "settingRowStack": "_506LLG_settingRowStack",
5967
+ "settingTitle": "_506LLG_settingTitle"
5908
5968
  };
5909
5969
  //#endregion
5910
5970
  //#region \0dsh-css:src/client/styles/Dropdown.module.css.mjs
@@ -5923,18 +5983,18 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5923
5983
  css: css$4
5924
5984
  });
5925
5985
  var Dropdown_module_css_default = {
5926
- "dropdownLabel": "B_Gxsq_dropdownLabel",
5986
+ "dropdown": "B_Gxsq_dropdown",
5987
+ "dropdownItemActive": "B_Gxsq_dropdownItemActive",
5927
5988
  "dropdownItemLabel": "B_Gxsq_dropdownItemLabel",
5928
- "dropdownPanel": "B_Gxsq_dropdownPanel",
5929
- "dropdownCountActive": "B_Gxsq_dropdownCountActive",
5989
+ "dropdownFill": "B_Gxsq_dropdownFill",
5990
+ "dropdownBtn": "B_Gxsq_dropdownBtn",
5991
+ "dropdownItem": "B_Gxsq_dropdownItem",
5930
5992
  "dropdownCount": "B_Gxsq_dropdownCount",
5993
+ "dropdownCountActive": "B_Gxsq_dropdownCountActive",
5994
+ "dropdownLabel": "B_Gxsq_dropdownLabel",
5931
5995
  "dropdownArrow": "B_Gxsq_dropdownArrow",
5932
- "dropdown": "B_Gxsq_dropdown",
5933
- "dropdownBtn": "B_Gxsq_dropdownBtn",
5934
- "dropdownItemActive": "B_Gxsq_dropdownItemActive",
5935
5996
  "dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen",
5936
- "dropdownFill": "B_Gxsq_dropdownFill",
5937
- "dropdownItem": "B_Gxsq_dropdownItem"
5997
+ "dropdownPanel": "B_Gxsq_dropdownPanel"
5938
5998
  };
5939
5999
  //#endregion
5940
6000
  //#region \0dsh-css:src/client/styles/Toggle.module.css.mjs
@@ -6052,29 +6112,29 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6052
6112
  css: css$2
6053
6113
  });
6054
6114
  var DiagnosticsView_module_css_default = {
6115
+ "summaryFail": "k9eRya_summaryFail",
6055
6116
  "envCopyBtn": "k9eRya_envCopyBtn",
6056
- "envTitle": "k9eRya_envTitle",
6057
- "head": "k9eRya_head",
6058
- "summaryOk": "k9eRya_summaryOk",
6059
- "display": "k9eRya_display",
6060
- "envRow": "k9eRya_envRow",
6061
6117
  "envLabel": "k9eRya_envLabel",
6062
- "summaryFail": "k9eRya_summaryFail",
6063
- "row": "k9eRya_row",
6064
- "name": "k9eRya_name",
6065
- "badge": "k9eRya_badge",
6066
- "meta": "k9eRya_meta",
6067
6118
  "runBtn": "k9eRya_runBtn",
6068
- "diagPulse": "k9eRya_diagPulse",
6069
- "envDesc": "k9eRya_envDesc",
6119
+ "display": "k9eRya_display",
6120
+ "badgeOk": "k9eRya_badgeOk",
6121
+ "badgeIdle": "k9eRya_badgeIdle",
6122
+ "meta": "k9eRya_meta",
6123
+ "summary": "k9eRya_summary",
6070
6124
  "panel": "k9eRya_panel",
6125
+ "envDesc": "k9eRya_envDesc",
6126
+ "badge": "k9eRya_badge",
6127
+ "badgeFail": "k9eRya_badgeFail",
6071
6128
  "badgeRunning": "k9eRya_badgeRunning",
6129
+ "head": "k9eRya_head",
6130
+ "headHint": "k9eRya_headHint",
6131
+ "row": "k9eRya_row",
6132
+ "diagPulse": "k9eRya_diagPulse",
6133
+ "summaryOk": "k9eRya_summaryOk",
6134
+ "name": "k9eRya_name",
6072
6135
  "summaryRunning": "k9eRya_summaryRunning",
6073
- "badgeOk": "k9eRya_badgeOk",
6074
- "badgeFail": "k9eRya_badgeFail",
6075
- "summary": "k9eRya_summary",
6076
- "badgeIdle": "k9eRya_badgeIdle",
6077
- "headHint": "k9eRya_headHint"
6136
+ "envRow": "k9eRya_envRow",
6137
+ "envTitle": "k9eRya_envTitle"
6078
6138
  };
6079
6139
  //#endregion
6080
6140
  //#region src/client/components/views/DiagnosticsView.tsx
@@ -6249,57 +6309,57 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6249
6309
  css: css$1
6250
6310
  });
6251
6311
  var LogsView_module_css_default = {
6252
- "pathDialogReset": "_3j77BW_pathDialogReset",
6253
- "event": "_3j77BW_event",
6254
- "panel": "_3j77BW_panel",
6312
+ "clearBtn": "_3j77BW_clearBtn",
6313
+ "headActions": "_3j77BW_headActions",
6255
6314
  "list": "_3j77BW_list",
6256
- "entry": "_3j77BW_entry",
6257
- "footPath": "_3j77BW_footPath",
6258
- "footActions": "_3j77BW_footActions",
6259
- "catUninstall": "_3j77BW_catUninstall",
6260
- "head": "_3j77BW_head",
6261
- "badgeSuccess": "_3j77BW_badgeSuccess",
6262
6315
  "headHint": "_3j77BW_headHint",
6316
+ "entry": "_3j77BW_entry",
6317
+ "pathLabel": "_3j77BW_pathLabel",
6318
+ "event": "_3j77BW_event",
6319
+ "footFail": "_3j77BW_footFail",
6320
+ "pathDialogDesc": "_3j77BW_pathDialogDesc",
6263
6321
  "badgeWarn": "_3j77BW_badgeWarn",
6264
- "filterBar": "_3j77BW_filterBar",
6322
+ "catUninstall": "_3j77BW_catUninstall",
6323
+ "searchInput": "_3j77BW_searchInput",
6265
6324
  "logList": "_3j77BW_logList",
6325
+ "more": "_3j77BW_more",
6326
+ "catUpdate": "_3j77BW_catUpdate",
6327
+ "badgeSuccess": "_3j77BW_badgeSuccess",
6328
+ "badgeError": "_3j77BW_badgeError",
6329
+ "head": "_3j77BW_head",
6330
+ "pathText": "_3j77BW_pathText",
6331
+ "moreEnd": "_3j77BW_moreEnd",
6332
+ "badgeInfo": "_3j77BW_badgeInfo",
6266
6333
  "catSystem": "_3j77BW_catSystem",
6267
- "pathDialogRow": "_3j77BW_pathDialogRow",
6268
- "headActions": "_3j77BW_headActions",
6269
- "pathDraft": "_3j77BW_pathDraft",
6270
- "pathDialog": "_3j77BW_pathDialog",
6334
+ "filterChipActive": "_3j77BW_filterChipActive",
6335
+ "catSettings": "_3j77BW_catSettings",
6336
+ "panel": "_3j77BW_panel",
6337
+ "btn": "_3j77BW_btn",
6338
+ "filterBar": "_3j77BW_filterBar",
6339
+ "previewRow": "_3j77BW_previewRow",
6271
6340
  "linkBtn": "_3j77BW_linkBtn",
6272
- "catUpdate": "_3j77BW_catUpdate",
6273
- "actions": "_3j77BW_actions",
6274
6341
  "message": "_3j77BW_message",
6275
- "previewRow": "_3j77BW_previewRow",
6276
- "catSettings": "_3j77BW_catSettings",
6277
- "searchInput": "_3j77BW_searchInput",
6278
- "pathLabel": "_3j77BW_pathLabel",
6279
- "filterChip": "_3j77BW_filterChip",
6280
- "badgeInfo": "_3j77BW_badgeInfo",
6342
+ "pathDialog": "_3j77BW_pathDialog",
6343
+ "pathDialogReset": "_3j77BW_pathDialogReset",
6344
+ "footCount": "_3j77BW_footCount",
6345
+ "catDiagnostics": "_3j77BW_catDiagnostics",
6346
+ "pathRow": "_3j77BW_pathRow",
6281
6347
  "time": "_3j77BW_time",
6282
- "filterChipActive": "_3j77BW_filterChipActive",
6283
- "footFail": "_3j77BW_footFail",
6284
- "badgeDebug": "_3j77BW_badgeDebug",
6285
- "badgeError": "_3j77BW_badgeError",
6286
- "search": "_3j77BW_search",
6287
- "badge": "_3j77BW_badge",
6348
+ "pathDialogRow": "_3j77BW_pathDialogRow",
6349
+ "footPath": "_3j77BW_footPath",
6350
+ "pathDraft": "_3j77BW_pathDraft",
6288
6351
  "pathDialogFoot": "_3j77BW_pathDialogFoot",
6289
- "moreEnd": "_3j77BW_moreEnd",
6290
- "catDiagnostics": "_3j77BW_catDiagnostics",
6291
- "pathDialogHint": "_3j77BW_pathDialogHint",
6292
- "footCount": "_3j77BW_footCount",
6293
- "btn": "_3j77BW_btn",
6352
+ "search": "_3j77BW_search",
6294
6353
  "foot": "_3j77BW_foot",
6295
- "pathRow": "_3j77BW_pathRow",
6296
- "catBadge": "_3j77BW_catBadge",
6297
- "pathText": "_3j77BW_pathText",
6354
+ "badgeDebug": "_3j77BW_badgeDebug",
6298
6355
  "catInstall": "_3j77BW_catInstall",
6356
+ "actions": "_3j77BW_actions",
6357
+ "pathDialogHint": "_3j77BW_pathDialogHint",
6358
+ "footActions": "_3j77BW_footActions",
6359
+ "catBadge": "_3j77BW_catBadge",
6299
6360
  "empty": "_3j77BW_empty",
6300
- "pathDialogDesc": "_3j77BW_pathDialogDesc",
6301
- "clearBtn": "_3j77BW_clearBtn",
6302
- "more": "_3j77BW_more"
6361
+ "filterChip": "_3j77BW_filterChip",
6362
+ "badge": "_3j77BW_badge"
6303
6363
  };
6304
6364
  //#endregion
6305
6365
  //#region src/client/components/modals/LogsModal.tsx
@@ -7573,7 +7633,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
7573
7633
  openSection: settingsSection,
7574
7634
  onConsumedOpenSection: () => setSettingsSection(null)
7575
7635
  }), showHubUpdate && (0, react.createElement)(HubUpdateModal, {
7576
- info: catalog.hubUpdateTarget ?? catalog.hubUpdateInfo ?? { version: "2.2.4" },
7636
+ info: catalog.hubUpdateTarget ?? catalog.hubUpdateInfo ?? { version: "2.2.5" },
7577
7637
  state: catalog.hubUpdateState,
7578
7638
  currentVersion: catalog.hubCurrentVersion,
7579
7639
  lang,