dsh-plugin 1.3.5 → 1.3.6

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
@@ -108,14 +108,15 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
108
108
  settingsUpdateDesc: "更新检查方式与安装走到的网络通道",
109
109
  settingsCheckOnStart: "启动时检查更新",
110
110
  settingsCheckOnStartDesc: "打开插件中心时检查已安装插件是否有新版,发现更新会提示",
111
+ settingsProxy: "HTTP 代理",
112
+ settingsProxyDesc: "npm / git / 目录数据请求统一走该代理;留空直连",
111
113
  settingsMirror: "npm 镜像源",
112
- settingsMirrorDesc: "npm 安装与版本反查走自定义镜像,网络不佳时更稳定;留空使用官方源",
114
+ settingsMirrorDesc: "默认跟随本机 npm 配置;官方源慢可换国内镜像",
115
+ mirrorNone: "未配置(跟随本机 npm 配置)",
113
116
  mirrorOfficial: "官方源 registry.npmjs.org",
114
117
  mirrorNpmmirror: "阿里云 npmmirror",
115
118
  mirrorTencent: "腾讯云镜像",
116
- mirrorCustom: "自定义镜像源",
117
- settingsProxy: "HTTP 代理",
118
- settingsProxyDesc: "npm / git / 目录数据请求统一走该代理;留空直连",
119
+ mirrorTsinghua: "清华大学 TUNA 镜像",
119
120
  settingsSecurity: "安全信任",
120
121
  settingsSecurityDesc: "命令行安装的三个通道开关:NPM 包、GitHub 源码与 DSH 命令",
121
122
  settingsEnableNpm: "启用 NPM 安装",
@@ -179,6 +180,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
179
180
  logEmptyFilter: "没有符合条件的日志",
180
181
  settingsDiagFail: "不可达",
181
182
  diagNpm: "npm 源",
183
+ diagNpmUnset: "未配置(跟随本机 npm 配置)",
182
184
  diagGithub: "GitHub",
183
185
  diagCatalog: "目录站点",
184
186
  diagOk: "OK",
@@ -227,6 +229,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
227
229
  installNow: "直接安装",
228
230
  installing: "安装中…",
229
231
  installDone: "安装成功",
232
+ updateDone: "更新成功",
230
233
  installResultTitle: "插件安装成功",
231
234
  installResultDesc: "",
232
235
  confirmUpdateTitle: "确认更新",
@@ -266,6 +269,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
266
269
  errorTitle: "操作失败",
267
270
  errorTitleInstall: "安装失败",
268
271
  errorTitleUninstall: "卸载失败",
272
+ errorTitleUpdate: "更新失败",
269
273
  errorPlugin: "插件",
270
274
  errorClose: "知道了",
271
275
  errorCopy: "复制错误信息",
@@ -411,14 +415,15 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
411
415
  settingsCheckOnStartDesc: "Check installed plugins for new versions when the hub opens; you will be notified when updates are found",
412
416
  settingsAutoInstall: "Auto-install updates",
413
417
  settingsAutoInstallDesc: "Install detected updates in the background without asking (a host restart applies them)",
414
- settingsMirror: "npm registry mirror",
415
- settingsMirrorDesc: "Route npm installs and lookups through a mirror for unstable networks; leave empty for the official registry",
418
+ settingsProxy: "HTTP proxy",
419
+ settingsProxyDesc: "Route npm, git and catalog requests through this proxy; leave empty to connect directly",
420
+ settingsMirror: "npm mirror",
421
+ settingsMirrorDesc: "Unset by default — follows local npm config; pick a domestic mirror if slow",
422
+ mirrorNone: "Unset (follow local npm config)",
416
423
  mirrorOfficial: "Official registry.npmjs.org",
417
424
  mirrorNpmmirror: "Alibaba npmmirror",
418
425
  mirrorTencent: "Tencent Cloud mirror",
419
- mirrorCustom: "Custom mirror",
420
- settingsProxy: "HTTP proxy",
421
- settingsProxyDesc: "Route npm, git and catalog requests through this proxy; leave empty to connect directly",
426
+ mirrorTsinghua: "Tsinghua TUNA mirror",
422
427
  settingsSecurity: "Security & Trust",
423
428
  settingsSecurityDesc: "Toggles for the three command-line install channels: npm packages, GitHub sources and DSH commands",
424
429
  settingsEnableNpm: "Enable npm installs",
@@ -482,6 +487,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
482
487
  logEmptyFilter: "No matching log entries",
483
488
  settingsDiagFail: "Unreachable",
484
489
  diagNpm: "npm registry",
490
+ diagNpmUnset: "Unset (follow local npm config)",
485
491
  diagGithub: "GitHub",
486
492
  diagCatalog: "Catalog site",
487
493
  diagOk: "OK",
@@ -530,6 +536,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
530
536
  installNow: "Install",
531
537
  installing: "Installing…",
532
538
  installDone: "Installed",
539
+ updateDone: "Updated",
533
540
  installResultTitle: "Plugin installed successfully",
534
541
  installResultDesc: "",
535
542
  confirmUpdateTitle: "Confirm update",
@@ -570,6 +577,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
570
577
  errorTitle: "Operation failed",
571
578
  errorTitleInstall: "Install failed",
572
579
  errorTitleUninstall: "Removal failed",
580
+ errorTitleUpdate: "Update failed",
573
581
  errorPlugin: "Plugin",
574
582
  errorClose: "Got it",
575
583
  errorCopy: "Copy error",
@@ -634,46 +642,46 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
634
642
  css: css$11
635
643
  });
636
644
  var Header_module_css_default = {
637
- "segBtnActive": "qikqja_segBtnActive",
638
645
  "adBanner": "qikqja_adBanner",
646
+ "githubIcon": "qikqja_githubIcon",
647
+ "tabsRow": "qikqja_tabsRow",
648
+ "segBtnActive": "qikqja_segBtnActive",
639
649
  "segBtn": "qikqja_segBtn",
640
- "brandTitle": "qikqja_brandTitle",
650
+ "aboutBtn": "qikqja_aboutBtn",
651
+ "version": "qikqja_version",
652
+ "segGroup": "qikqja_segGroup",
653
+ "tabs": "qikqja_tabs",
654
+ "taglineLink": "qikqja_taglineLink",
655
+ "tabCount": "qikqja_tabCount",
656
+ "tagline": "qikqja_tagline",
657
+ "headerTitleRow": "qikqja_headerTitleRow",
658
+ "resultSeg": "qikqja_resultSeg",
659
+ "adText": "qikqja_adText",
660
+ "root": "qikqja_root",
661
+ "langBtn": "qikqja_langBtn",
662
+ "sortGroup": "qikqja_sortGroup",
641
663
  "adArrow": "qikqja_adArrow",
664
+ "controls": "qikqja_controls",
665
+ "tabActive": "qikqja_tabActive",
666
+ "adBadge": "qikqja_adBadge",
667
+ "brandTitle": "qikqja_brandTitle",
668
+ "resultCount": "qikqja_resultCount",
642
669
  "header": "qikqja_header",
643
- "resultSeg": "qikqja_resultSeg",
644
- "githubIcon": "qikqja_githubIcon",
645
670
  "logoIcon": "qikqja_logoIcon",
646
- "tabs": "qikqja_tabs",
671
+ "search": "qikqja_search",
672
+ "headerRight": "qikqja_headerRight",
647
673
  "tab": "qikqja_tab",
648
- "adBadge": "qikqja_adBadge",
649
- "adText": "qikqja_adText",
650
- "title": "qikqja_title",
651
674
  "versionBtn": "qikqja_versionBtn",
652
- "taglineLink": "qikqja_taglineLink",
653
- "search": "qikqja_search",
654
- "headerTitleRow": "qikqja_headerTitleRow",
655
- "githubLink": "qikqja_githubLink",
675
+ "hubUpdateBadge": "qikqja_hubUpdateBadge",
676
+ "title": "qikqja_title",
656
677
  "copyIcon": "qikqja_copyIcon",
657
- "langBtn": "qikqja_langBtn",
678
+ "githubLink": "qikqja_githubLink",
658
679
  "searchRow": "qikqja_searchRow",
659
- "tabCount": "qikqja_tabCount",
660
- "root": "qikqja_root",
661
- "segGroup": "qikqja_segGroup",
662
- "version": "qikqja_version",
663
- "controls": "qikqja_controls",
664
- "hubUpdateBadge": "qikqja_hubUpdateBadge",
665
- "aboutBtn": "qikqja_aboutBtn",
666
- "headerRight": "qikqja_headerRight",
667
- "tagline": "qikqja_tagline",
668
- "resultCount": "qikqja_resultCount",
669
- "segLabel": "qikqja_segLabel",
670
- "tabActive": "qikqja_tabActive",
671
- "tabsRow": "qikqja_tabsRow",
672
- "sortGroup": "qikqja_sortGroup"
680
+ "segLabel": "qikqja_segLabel"
673
681
  };
674
682
  //#endregion
675
683
  //#region \0dsh-css:src/client/styles/Modal.module.css.mjs
676
- const css$10 = ".BiQ1zG_overlay{z-index:998;-webkit-user-select:none;user-select:none;background:#00000061;justify-content:center;align-items:center;animation:.16s ease-out BiQ1zG_overlayIn;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.BiQ1zG_modal,.BiQ1zG_errorModal{background:var(--hub-bg-1);border:1px solid var(--hub-border-2);border-radius:10px;flex-direction:column;gap:10px;width:420px;max-width:calc(100vw - 32px);max-height:calc(100vh - 64px);padding:14px 16px;animation:.18s ease-out BiQ1zG_modalIn;display:flex;box-shadow:0 12px 40px #0000003d}.BiQ1zG_errorModal{width:640px;max-width:calc(100vw - 48px)}.BiQ1zG_modalWide{width:560px;max-width:calc(100vw - 48px)}.BiQ1zG_helpModal{width:720px;max-width:calc(100vw - 48px)}.BiQ1zG_logModal{width:780px;max-width:calc(100vw - 48px);height:min(540px,100vh - 64px)}.BiQ1zG_modalHead{flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;display:flex}.BiQ1zG_modalTitle{color:var(--hub-text-primary);font-size:14px;font-weight:600;line-height:20px}.BiQ1zG_modalTitleBusy{color:var(--hub-brand)}.BiQ1zG_modalTitleQueued{color:var(--hub-warning)}.BiQ1zG_modalClose{width:24px;height:24px;color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;font-size:16px;line-height:1;display:inline-flex}.BiQ1zG_modalClose:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}.BiQ1zG_modalCloseIcon{flex-shrink:0;width:14px;height:14px}.BiQ1zG_confirmIconWrap{justify-content:center;padding:2px 0 6px;display:flex}.BiQ1zG_confirmIcon{background:var(--hub-brand);border-radius:50%;flex:none;justify-content:center;align-items:center;width:48px;height:48px;display:inline-flex;box-shadow:0 4px 12px #4f6ef747}.BiQ1zG_confirmIconDanger{background:var(--hub-danger);box-shadow:0 4px 12px #d1242f4d}.BiQ1zG_dangerConfirm{color:#fff;background:var(--hub-danger);border:1px solid var(--hub-danger);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;flex:none;height:28px;padding:0 14px;font-size:12px;font-weight:600;transition:background-color .12s,border-color .12s}.BiQ1zG_dangerConfirm:hover:not(:disabled){background:var(--hub-danger-hover);border-color:var(--hub-danger-hover)}.BiQ1zG_dangerConfirm:disabled{opacity:.55;cursor:default}.BiQ1zG_confirmPrimary{color:#fff;background:var(--hub-brand);border:1px solid var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;flex:none;height:28px;padding:0 14px;font-size:12px;font-weight:600;transition:filter .12s}.BiQ1zG_confirmPrimary:hover:not(:disabled){filter:brightness(1.08)}.BiQ1zG_confirmPrimary:disabled{opacity:.55;cursor:default}.BiQ1zG_modalDesc{color:var(--hub-text-secondary);font-size:12px;line-height:18px}.BiQ1zG_trustHint{color:var(--hub-danger-text);background:var(--hub-danger-tint);border:1px solid var(--hub-danger-border-soft);border-radius:6px;padding:6px 10px;font-size:12px;font-weight:500;line-height:18px}.BiQ1zG_cliOnlyHint{color:var(--hub-text-secondary);background:var(--hub-bg-hover);border-radius:6px;padding:6px 10px;font-size:12px;line-height:18px}.BiQ1zG_failedCopyHint{color:var(--hub-danger-text);background:var(--hub-danger-tint);border:1px solid var(--hub-danger-border-soft);border-radius:6px;padding:6px 10px;font-size:12px;font-weight:500;line-height:18px}.BiQ1zG_modalRow{align-items:baseline;gap:8px;min-width:0;font-size:12px;line-height:18px;display:flex}.BiQ1zG_modalLabel{min-width:64px;color:var(--hub-text-tertiary);flex-shrink:0}.BiQ1zG_modalValue{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-text-primary);font-weight:500;overflow:hidden}.BiQ1zG_modalLink{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;font-weight:500;text-decoration:none;transition:color .12s;display:inline-flex;overflow:hidden}.BiQ1zG_modalLink:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_linkIcon{flex-shrink:0}.BiQ1zG_modalCmd{color:var(--hub-text-primary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:6px 6px 6px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:18px;transition:border-color .12s,background .12s;display:flex}.BiQ1zG_modalCmd:hover{border-color:var(--hub-border-ghost);background:var(--hub-bg-3)}.BiQ1zG_modalCmdText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.BiQ1zG_modalCmdCopy{color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:4px;flex-shrink:0;align-items:center;gap:3px;padding:1px 7px;font-family:inherit;font-size:11px;line-height:16px;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_modalCmdCopy:hover{color:var(--hub-brand-hover);background:var(--hub-bg-2)}.BiQ1zG_modalActions{justify-content:flex-end;align-items:center;gap:8px;margin-top:2px;display:flex}.BiQ1zG_modalBody{flex-direction:column;flex:auto;gap:10px;min-height:0;display:flex;overflow-y:auto}.BiQ1zG_toast{z-index:1000;background:var(--hub-btn-fill);color:var(--hub-text-on-fill);pointer-events:none;white-space:nowrap;border:none;border-radius:8px;padding:10px 16px;font-size:12px;font-weight:500;line-height:18px;animation:.22s ease-out BiQ1zG_toastIn;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 6px 24px #00000047}@keyframes BiQ1zG_toastIn{0%{opacity:0;transform:translate(-50%,-44%)}to{opacity:1;transform:translate(-50%,-50%)}}.BiQ1zG_toastFail{background:var(--hub-danger);color:#fff;border-color:#ffffff3d}.BiQ1zG_queueSection{flex-direction:column;gap:6px;display:flex}.BiQ1zG_queueSectionTitle{color:var(--hub-text-secondary);padding:4px 2px 0;font-size:12px;font-weight:600;line-height:18px}.BiQ1zG_pendingRowStatus{color:var(--hub-warn);flex-shrink:0;font-weight:500}.BiQ1zG_pendingRowActions{flex-shrink:0;gap:8px;margin-left:auto;display:flex}.BiQ1zG_queueRow{border:1px solid var(--hub-border-2);background:var(--hub-bg-2);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;flex-direction:column;gap:5px;padding:8px 10px;font-size:12px;line-height:18px;transition:background .12s;display:flex}.BiQ1zG_queueRow:hover{background:var(--hub-brand-tint)}.BiQ1zG_queueRowHead{align-items:center;gap:10px;display:flex}.BiQ1zG_queueRowTarget{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-text-primary);flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow:hidden}.BiQ1zG_queueRowDesc{color:var(--hub-text-tertiary);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.BiQ1zG_queueRowBody{align-items:center;gap:8px;display:flex}.BiQ1zG_queueRowStatus{color:var(--hub-brand);flex-shrink:0;font-weight:500}.BiQ1zG_queueRowTrack{flex:1;min-width:0}.BiQ1zG_queueRowPct{color:var(--hub-text-tertiary);font-variant-numeric:tabular-nums;flex-shrink:0}.BiQ1zG_stripCancel{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;flex-shrink:0;padding:2px 10px;font-size:12px;line-height:18px;transition:background .12s,color .12s}.BiQ1zG_stripCancel:hover{background:var(--hub-danger-tint);color:var(--hub-danger-text)}.BiQ1zG_stripCancel:disabled{opacity:.45;cursor:default}.BiQ1zG_queuedHint{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft);border-radius:6px;padding:5px 10px;font-size:12px;line-height:18px}.BiQ1zG_errorTitle{color:var(--hub-danger-text);font-size:14px;font-weight:600;line-height:20px}.BiQ1zG_errorBox{border:1px solid var(--hub-danger-border);background:var(--hub-danger-tint-weak);max-height:240px;color:var(--hub-text-primary);white-space:pre-wrap;word-break:break-word;-webkit-user-select:none;user-select:none;border-radius:6px;margin:0;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:17px;overflow:auto}.BiQ1zG_errorCopySoft{color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:4px;flex-shrink:0;align-items:center;padding:2px 8px;font-size:11px;line-height:16px;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_errorCopySoft:hover{color:var(--hub-text-secondary);background:var(--hub-bg-2)}.BiQ1zG_errorHint{color:var(--hub-text-tertiary);font-size:12px;line-height:18px}.BiQ1zG_modalCancel,.BiQ1zG_modalCopy{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;padding:5px 14px;font-size:12px;line-height:18px;transition:color .12s,background .12s}.BiQ1zG_modalCancel:hover,.BiQ1zG_modalCopy:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}.BiQ1zG_modalInstall{color:var(--hub-text-on-fill);background:var(--hub-btn-fill);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_modalInstall:hover{background:var(--hub-btn-hover)}.BiQ1zG_modalCopy:disabled,.BiQ1zG_modalInstall:disabled,.BiQ1zG_modalCancel:disabled,.BiQ1zG_modalClose:disabled,.BiQ1zG_uninstallConfirm:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.BiQ1zG_uninstallConfirm{color:#fff;background:var(--hub-danger);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_uninstallConfirm:hover{background:var(--hub-danger-hover)}.BiQ1zG_result{text-align:center;flex-direction:column;align-items:center;gap:5px;padding:10px 0 2px;display:flex}.BiQ1zG_resultCheck{background:var(--hub-success-tint);width:40px;height:40px;color:var(--hub-success);border-radius:50%;justify-content:center;align-items:center;margin-bottom:3px;display:inline-flex}.BiQ1zG_resultCheckIcon{flex-shrink:0;width:20px;height:20px}.BiQ1zG_resultTitle{color:var(--hub-text-primary);font-size:13px;font-weight:600;line-height:20px}.BiQ1zG_resultDesc{color:var(--hub-text-secondary);font-size:12px;line-height:18px}.BiQ1zG_resultRestarting{color:var(--hub-text-tertiary);padding:12px 0 6px;font-size:12px;line-height:18px}.BiQ1zG_restartLater{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;padding:5px 14px;font-size:12px;line-height:18px;transition:color .12s,background .12s}.BiQ1zG_restartLater:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}.BiQ1zG_restartNow{color:var(--hub-text-on-fill);background:var(--hub-btn-fill);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_restartNow:hover{background:var(--hub-btn-hover)}.BiQ1zG_restartNow:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.BiQ1zG_restartNowWarning{color:#fff;background:var(--hub-warning);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_restartNowWarning:hover{background:var(--hub-warning-hover)}.BiQ1zG_restartNowWarning:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.BiQ1zG_result .BiQ1zG_modalActions{justify-content:center;gap:10px;margin-top:0;padding:6px 0 2px}.BiQ1zG_result .BiQ1zG_modalActions .BiQ1zG_restartLater,.BiQ1zG_result .BiQ1zG_modalActions .BiQ1zG_restartNow,.BiQ1zG_result .BiQ1zG_modalActions .BiQ1zG_restartNowWarning{min-width:100px}.BiQ1zG_progress{margin:10px 0 2px}.BiQ1zG_progressHead{justify-content:flex-end;align-items:center;margin-bottom:3px;display:flex}.BiQ1zG_progressText{color:var(--hub-text-secondary);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:14px}.BiQ1zG_progressTrack{background:var(--hub-border-2);border-radius:2px;height:4px;overflow:hidden}.BiQ1zG_progressFill{background:var(--hub-brand);border-radius:2px;height:100%;transition:width .32s}.BiQ1zG_progressFillFail{background:var(--hub-danger)}@keyframes BiQ1zG_overlayIn{0%{opacity:0}to{opacity:1}}@keyframes BiQ1zG_modalIn{0%{opacity:0;transform:translateY(6px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.BiQ1zG_failList{flex-direction:column;gap:12px;padding-right:2px;display:flex}.BiQ1zG_failRow{border:1px solid var(--hub-border-2);background:var(--hub-bg-2);border-radius:8px;flex-direction:column;gap:8px;padding:10px 12px;display:flex}.BiQ1zG_failHead{align-items:center;gap:8px;min-width:0;display:flex}.BiQ1zG_noticeList{flex-direction:column;gap:10px;padding-right:2px;display:flex}.BiQ1zG_noticeRow{border:1px solid var(--hub-border-2);background:var(--hub-bg-2);border-radius:8px;flex-direction:column;align-items:stretch;gap:6px;padding:10px 12px;display:flex}.BiQ1zG_noticeRowMain{align-items:center;gap:10px;width:100%;min-width:0;display:flex}.BiQ1zG_noticeBadgeOk,.BiQ1zG_noticeBadgeFail{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex;box-shadow:0 2px 6px #0000002e}.BiQ1zG_noticeBadgeOk{background:var(--hub-success)}.BiQ1zG_noticeBadgeFail{background:var(--hub-danger)}.BiQ1zG_noticeBadgeIcon{flex-shrink:0;width:12px;height:12px}.BiQ1zG_noticeMain{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.BiQ1zG_noticeHead{align-items:center;gap:8px;min-width:0;display:flex}.BiQ1zG_noticeTextOk{color:var(--hub-success);flex-shrink:0;font-size:12px;font-weight:600;line-height:18px}.BiQ1zG_noticeTextFail{color:var(--hub-danger-text);flex-shrink:0;font-size:12px;font-weight:600;line-height:18px}.BiQ1zG_noticeFoot{justify-content:flex-end;align-items:center;display:flex}.BiQ1zG_noticeTime{color:var(--hub-text-tertiary);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:11px;line-height:16px}.BiQ1zG_noticeRemove{width:22px;height:22px;color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_noticeRemove:hover{color:var(--hub-danger-text);background:var(--hub-danger-tint)}.BiQ1zG_noticeRowOk .BiQ1zG_noticeRemove{margin-left:0}.BiQ1zG_noticeRowOk .BiQ1zG_noticeTime{margin-left:auto}.BiQ1zG_noticeRowUpdate{cursor:pointer;transition:border-color .12s,background .12s}.BiQ1zG_noticeRowUpdate:hover{border-color:var(--hub-brand);background:var(--hub-brand-tint)}.BiQ1zG_noticeVersion{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border);font-variant-numeric:tabular-nums;border-radius:5px;flex-shrink:0;padding:0 6px;font-size:11px;font-weight:600;line-height:18px}.BiQ1zG_noticeUpdateGo{color:#fff;background:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:5px;flex-shrink:0;margin-left:2px;padding:2px 8px;font-size:11px;font-weight:600;line-height:16px;transition:background .12s}.BiQ1zG_noticeUpdateGo:hover{background:var(--hub-brand-hover)}.BiQ1zG_noticeIgnore{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:5px;flex-shrink:0;margin-left:2px;padding:1px 8px;font-size:11px;font-weight:500;line-height:16px;transition:color .12s,border-color .12s,background .12s}.BiQ1zG_noticeIgnore:hover{color:var(--hub-danger-text);border-color:var(--hub-danger-border);background:var(--hub-danger-tint)}.BiQ1zG_failKind{border:1px solid #0000;border-radius:4px;flex-shrink:0;padding:0 6px;font-size:10px;font-weight:500;line-height:16px}.BiQ1zG_failKindInstall{color:var(--hub-danger-text);border-color:var(--hub-danger-border);background:var(--hub-danger-tint)}.BiQ1zG_failKindUninstall{color:var(--hub-warn);border-color:var(--hub-warn-border);background:var(--hub-warn-tint)}.BiQ1zG_failRepo{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:18px;text-decoration:none;overflow:hidden}.BiQ1zG_failRepo:hover{text-decoration:underline}.BiQ1zG_failCopy{color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:4px;flex-shrink:0;align-items:center;padding:2px 8px;font-size:11px;line-height:16px;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_failCopy:hover{color:var(--hub-text-secondary);background:var(--hub-bg-2)}.BiQ1zG_failEmpty{text-align:center;color:var(--hub-text-tertiary);padding:24px 0;font-size:12px;line-height:18px}.BiQ1zG_failClear{color:var(--hub-danger);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;padding:5px 14px;font-size:12px;line-height:18px;transition:color .12s,background .12s}.BiQ1zG_failClear:hover{color:#fff;background:var(--hub-danger)}.BiQ1zG_failBigIssue{box-sizing:border-box;text-align:center;color:#fff;background:var(--hub-danger);border:1px solid var(--hub-danger);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;width:100%;margin-top:4px;padding:3px 16px;font-size:13px;font-weight:600;line-height:18px;text-decoration:none;transition:background .12s,border-color .12s,box-shadow .12s;display:block}.BiQ1zG_failBigIssue:hover{background:var(--hub-danger-hover);border-color:var(--hub-danger-hover);box-shadow:0 3px 10px #d1242f59}.BiQ1zG_failPrepareHint{color:var(--hub-warning);background:var(--hub-warning-tint);border:1px solid var(--hub-warning-border);border-radius:6px;margin-top:6px;padding:8px 12px;font-size:12px;line-height:18px}.BiQ1zG_aboutModal{width:460px;max-width:calc(100vw - 48px)}.BiQ1zG_aboutContent{min-height:0;max-height:340px;color:var(--hub-text-secondary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);border-radius:8px;flex:auto;padding:10px 12px;font-size:12px;line-height:18px;overflow-y:auto}.BiQ1zG_aboutContent>:first-child{margin-top:0}.BiQ1zG_aboutContent>:last-child{margin-bottom:0}.BiQ1zG_aboutContent h2,.BiQ1zG_aboutContent h3,.BiQ1zG_aboutContent h4,.BiQ1zG_aboutContent h5{color:var(--hub-text-primary);margin:10px 0 4px;font-size:13px;font-weight:600;line-height:20px}.BiQ1zG_aboutContent h2{font-size:14px}.BiQ1zG_aboutContent p{margin:4px 0}.BiQ1zG_aboutContent ul,.BiQ1zG_aboutContent ol{margin:4px 0;padding-left:18px}.BiQ1zG_aboutContent li{margin:2px 0}.BiQ1zG_aboutContent code{background:var(--hub-bg-hover);color:var(--hub-text-primary);border-radius:4px;padding:1px 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.BiQ1zG_aboutContent pre{background:var(--hub-bg-1);border:1px solid var(--hub-border-2);border-radius:6px;margin:6px 0;padding:8px 10px;overflow-x:auto}.BiQ1zG_aboutContent pre code{background:0 0;border-radius:0;padding:0}.BiQ1zG_aboutContent blockquote{border-left:3px solid var(--hub-brand);background:var(--hub-bg-hover);color:var(--hub-text-tertiary);border-radius:0 6px 6px 0;margin:6px 0;padding:2px 10px}.BiQ1zG_aboutContent a{color:var(--hub-brand);text-decoration:none}.BiQ1zG_aboutContent a:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_aboutContent img{border-radius:8px;max-width:100%;max-height:220px;margin:8px auto;display:block;box-shadow:0 2px 8px #0000001f}.BiQ1zG_aboutMeta{color:var(--hub-text-tertiary);font-size:11px;line-height:16px}.BiQ1zG_hubUpdateModal{width:520px;max-width:calc(100vw - 48px)}.BiQ1zG_hubUpdateMeta{flex-wrap:wrap;align-items:center;gap:4px 14px;font-size:12px;line-height:18px;display:flex}.BiQ1zG_hubUpdateMetaItem{color:var(--hub-text-tertiary)}.BiQ1zG_hubUpdateNotes{min-height:0;max-height:300px;color:var(--hub-text-secondary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);border-radius:8px;flex:auto;padding:10px 12px;font-size:12px;line-height:18px;overflow-y:auto}.BiQ1zG_hubUpdateNotes>:first-child{margin-top:0}.BiQ1zG_hubUpdateNotes>:last-child{margin-bottom:0}.BiQ1zG_hubUpdateNotes h2,.BiQ1zG_hubUpdateNotes h3,.BiQ1zG_hubUpdateNotes h4,.BiQ1zG_hubUpdateNotes h5{color:var(--hub-text-primary);margin:10px 0 4px;font-size:13px;font-weight:600;line-height:20px}.BiQ1zG_hubUpdateNotes h2{font-size:14px}.BiQ1zG_hubUpdateNotes p{margin:4px 0}.BiQ1zG_hubUpdateNotes ul,.BiQ1zG_hubUpdateNotes ol{margin:4px 0;padding-left:18px}.BiQ1zG_hubUpdateNotes li{margin:2px 0}.BiQ1zG_hubUpdateNotes code{background:var(--hub-bg-hover);color:var(--hub-text-primary);border-radius:4px;padding:1px 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.BiQ1zG_hubUpdateNotes pre{background:var(--hub-bg-1);border:1px solid var(--hub-border-2);border-radius:6px;margin:6px 0;padding:8px 10px;overflow-x:auto}.BiQ1zG_hubUpdateNotes pre code{background:0 0;border-radius:0;padding:0}.BiQ1zG_hubUpdateNotes blockquote{border-left:3px solid var(--hub-brand);background:var(--hub-bg-hover);color:var(--hub-text-tertiary);border-radius:0 6px 6px 0;margin:6px 0;padding:2px 10px}.BiQ1zG_hubUpdateNotes a{color:var(--hub-brand);text-decoration:none}.BiQ1zG_hubUpdateNotes a:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_detailModal{width:480px;max-width:calc(100vw - 48px)}.BiQ1zG_detailUpdateHint{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft);border-radius:6px;padding:6px 10px;font-size:12px;line-height:18px}.BiQ1zG_detailGrid{flex-direction:column;gap:6px;display:flex}.BiQ1zG_detailRow{align-items:baseline;gap:10px;min-width:0;font-size:12px;line-height:20px;display:flex}.BiQ1zG_detailLabel{text-align:right;width:76px;color:var(--hub-text-tertiary);flex-shrink:0}.BiQ1zG_detailValue{min-width:0;color:var(--hub-text-primary);flex-wrap:wrap;flex:auto;align-items:baseline;gap:4px 6px;font-weight:500;display:flex}.BiQ1zG_detailMono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;font-weight:500}.BiQ1zG_detailArrow{color:var(--hub-text-tertiary);align-items:baseline;gap:4px;display:inline-flex}.BiQ1zG_detailDim{color:var(--hub-text-tertiary);font-size:11px;font-weight:400}.BiQ1zG_detailLink{min-width:0;color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;font-weight:500;text-decoration:none;transition:color .12s;display:inline-flex}.BiQ1zG_detailLink:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_detailStars{color:#b45309;font-weight:600}.BiQ1zG_detailPath{min-width:0;color:var(--hub-text-primary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);border-radius:6px;flex:auto;justify-content:space-between;align-items:center;gap:6px;padding:3px 3px 3px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:18px;transition:border-color .12s,background .12s;display:flex}.BiQ1zG_detailPath:hover{border-color:var(--hub-border-ghost);background:var(--hub-bg-3)}.BiQ1zG_detailPathText{text-overflow:ellipsis;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;min-width:0;overflow:hidden}.BiQ1zG_detailPathActions{flex-shrink:0;align-items:center;gap:4px;display:inline-flex}.BiQ1zG_detailPathBtn{width:28px;height:28px;color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;justify-content:center;align-items:center;transition:color .12s,background .12s,border-color .12s;display:inline-flex}.BiQ1zG_detailPathBtn svg{width:15px;height:15px}.BiQ1zG_detailPathBtn:hover{color:#fff;background:var(--hub-brand);border-color:var(--hub-brand)}.BiQ1zG_detailStatusRunning,.BiQ1zG_detailStatusPending{border-radius:50%;flex-shrink:0;align-self:center;width:8px;height:8px}.BiQ1zG_detailStatusRunning{background:var(--hub-success)}.BiQ1zG_detailStatusPending{background:var(--hub-warning)}.BiQ1zG_detailStatusText{font-weight:500}";
684
+ const css$10 = ".BiQ1zG_overlay{z-index:998;-webkit-user-select:none;user-select:none;background:#00000061;justify-content:center;align-items:center;animation:.16s ease-out BiQ1zG_overlayIn;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.BiQ1zG_modal,.BiQ1zG_errorModal{background:var(--hub-bg-1);border:1px solid var(--hub-border-2);border-radius:10px;flex-direction:column;gap:10px;width:420px;max-width:calc(100vw - 32px);max-height:calc(100vh - 64px);padding:14px 16px;animation:.18s ease-out BiQ1zG_modalIn;display:flex;box-shadow:0 12px 40px #0000003d}.BiQ1zG_errorModal{width:640px;max-width:calc(100vw - 48px)}.BiQ1zG_modalWide{width:560px;max-width:calc(100vw - 48px)}.BiQ1zG_helpModal{width:720px;max-width:calc(100vw - 48px)}.BiQ1zG_logModal{width:780px;max-width:calc(100vw - 48px);height:min(540px,100vh - 64px)}.BiQ1zG_modalHead{flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;display:flex}.BiQ1zG_modalTitle{color:var(--hub-text-primary);font-size:14px;font-weight:600;line-height:20px}.BiQ1zG_modalTitleBusy{color:var(--hub-brand)}.BiQ1zG_modalTitleQueued{color:var(--hub-warning)}.BiQ1zG_modalClose{width:24px;height:24px;color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;font-size:16px;line-height:1;display:inline-flex}.BiQ1zG_modalClose:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}.BiQ1zG_modalCloseIcon{flex-shrink:0;width:14px;height:14px}.BiQ1zG_confirmIconWrap{justify-content:center;padding:2px 0 6px;display:flex}.BiQ1zG_confirmIcon{background:var(--hub-brand);border-radius:50%;flex:none;justify-content:center;align-items:center;width:48px;height:48px;display:inline-flex;box-shadow:0 4px 12px #4f6ef747}.BiQ1zG_confirmIconDanger{background:var(--hub-danger);box-shadow:0 4px 12px #d1242f4d}.BiQ1zG_dangerConfirm{color:#fff;background:var(--hub-danger);border:1px solid var(--hub-danger);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;flex:none;height:28px;padding:0 14px;font-size:12px;font-weight:600;transition:background-color .12s,border-color .12s}.BiQ1zG_dangerConfirm:hover:not(:disabled){background:var(--hub-danger-hover);border-color:var(--hub-danger-hover)}.BiQ1zG_dangerConfirm:disabled{opacity:.55;cursor:default}.BiQ1zG_confirmPrimary{color:#fff;background:var(--hub-brand);border:1px solid var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;flex:none;height:28px;padding:0 14px;font-size:12px;font-weight:600;transition:filter .12s}.BiQ1zG_confirmPrimary:hover:not(:disabled){filter:brightness(1.08)}.BiQ1zG_confirmPrimary:disabled{opacity:.55;cursor:default}.BiQ1zG_modalDesc{color:var(--hub-text-secondary);font-size:12px;line-height:18px}.BiQ1zG_trustHint{color:var(--hub-danger-text);background:var(--hub-danger-tint);border:1px solid var(--hub-danger-border-soft);border-radius:6px;padding:6px 10px;font-size:12px;font-weight:500;line-height:18px}.BiQ1zG_cliOnlyHint{color:var(--hub-text-secondary);background:var(--hub-bg-hover);border-radius:6px;padding:6px 10px;font-size:12px;line-height:18px}.BiQ1zG_failedCopyHint{color:var(--hub-danger-text);background:var(--hub-danger-tint);border:1px solid var(--hub-danger-border-soft);border-radius:6px;padding:6px 10px;font-size:12px;font-weight:500;line-height:18px}.BiQ1zG_modalRow{align-items:baseline;gap:8px;min-width:0;font-size:12px;line-height:18px;display:flex}.BiQ1zG_modalLabel{min-width:64px;color:var(--hub-text-tertiary);flex-shrink:0}.BiQ1zG_modalValue{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-text-primary);font-weight:500;overflow:hidden}.BiQ1zG_modalLink{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;font-weight:500;text-decoration:none;transition:color .12s;display:inline-flex;overflow:hidden}.BiQ1zG_modalLink:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_linkIcon{flex-shrink:0}.BiQ1zG_modalCmd{color:var(--hub-text-primary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:6px 6px 6px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:18px;transition:border-color .12s,background .12s;display:flex}.BiQ1zG_modalCmd:hover{border-color:var(--hub-border-ghost);background:var(--hub-bg-3)}.BiQ1zG_modalCmdText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.BiQ1zG_modalCmdCopy{color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:4px;flex-shrink:0;align-items:center;gap:3px;padding:1px 7px;font-family:inherit;font-size:11px;line-height:16px;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_modalCmdCopy:hover{color:var(--hub-brand-hover);background:var(--hub-bg-2)}.BiQ1zG_modalActions{justify-content:flex-end;align-items:center;gap:8px;margin-top:2px;display:flex}.BiQ1zG_modalBody{flex-direction:column;flex:auto;gap:10px;min-height:0;display:flex;overflow-y:auto}.BiQ1zG_toast{z-index:1000;background:var(--hub-btn-fill);color:var(--hub-text-on-fill);pointer-events:none;white-space:nowrap;border:none;border-radius:8px;padding:10px 16px;font-size:12px;font-weight:500;line-height:18px;animation:.22s ease-out BiQ1zG_toastIn;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 6px 24px #00000047}@keyframes BiQ1zG_toastIn{0%{opacity:0;transform:translate(-50%,-44%)}to{opacity:1;transform:translate(-50%,-50%)}}.BiQ1zG_toastFail{background:var(--hub-danger);color:#fff;border-color:#ffffff3d}.BiQ1zG_queueSection{flex-direction:column;gap:6px;display:flex}.BiQ1zG_queueSectionTitle{color:var(--hub-text-secondary);padding:4px 2px 0;font-size:12px;font-weight:600;line-height:18px}.BiQ1zG_pendingRowStatus{color:var(--hub-warn);flex-shrink:0;font-weight:500}.BiQ1zG_pendingRowActions{flex-shrink:0;gap:8px;margin-left:auto;display:flex}.BiQ1zG_queueRow{border:1px solid var(--hub-border-2);background:var(--hub-bg-2);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;flex-direction:column;gap:5px;padding:8px 10px;font-size:12px;line-height:18px;transition:background .12s;display:flex}.BiQ1zG_queueRow:hover{background:var(--hub-brand-tint)}.BiQ1zG_queueRowHead{align-items:center;gap:10px;display:flex}.BiQ1zG_queueRowTarget{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-text-primary);flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow:hidden}.BiQ1zG_queueRowDesc{color:var(--hub-text-tertiary);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.BiQ1zG_queueRowBody{align-items:center;gap:8px;display:flex}.BiQ1zG_queueRowStatus{color:var(--hub-brand);flex-shrink:0;font-weight:500}.BiQ1zG_queueRowTrack{flex:1;min-width:0}.BiQ1zG_queueRowPct{color:var(--hub-text-tertiary);font-variant-numeric:tabular-nums;flex-shrink:0}.BiQ1zG_stripCancel{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;flex-shrink:0;padding:2px 10px;font-size:12px;line-height:18px;transition:background .12s,color .12s}.BiQ1zG_stripCancel:hover{background:var(--hub-danger-tint);color:var(--hub-danger-text)}.BiQ1zG_stripCancel:disabled{opacity:.45;cursor:default}.BiQ1zG_queuedHint{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft);border-radius:6px;padding:5px 10px;font-size:12px;line-height:18px}.BiQ1zG_errorTitle{color:var(--hub-danger-text);font-size:14px;font-weight:600;line-height:20px}.BiQ1zG_errorBox{border:1px solid var(--hub-danger-border);background:var(--hub-danger-tint-weak);max-height:240px;color:var(--hub-text-primary);white-space:pre-wrap;word-break:break-word;-webkit-user-select:none;user-select:none;border-radius:6px;margin:0;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:17px;overflow:auto}.BiQ1zG_errorCopySoft{color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:4px;flex-shrink:0;align-items:center;padding:2px 8px;font-size:11px;line-height:16px;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_errorCopySoft:hover{color:var(--hub-text-secondary);background:var(--hub-bg-2)}.BiQ1zG_errorHint{color:var(--hub-text-tertiary);font-size:12px;line-height:18px}.BiQ1zG_modalCancel,.BiQ1zG_modalCopy{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;padding:5px 14px;font-size:12px;line-height:18px;transition:color .12s,background .12s}.BiQ1zG_modalCancel:hover,.BiQ1zG_modalCopy:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}.BiQ1zG_modalInstall{color:var(--hub-text-on-fill);background:var(--hub-btn-fill);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_modalInstall:hover{background:var(--hub-btn-hover)}.BiQ1zG_modalCopy:disabled,.BiQ1zG_modalInstall:disabled,.BiQ1zG_modalCancel:disabled,.BiQ1zG_modalClose:disabled,.BiQ1zG_uninstallConfirm:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.BiQ1zG_uninstallConfirm{color:#fff;background:var(--hub-danger);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_uninstallConfirm:hover{background:var(--hub-danger-hover)}.BiQ1zG_result{text-align:center;flex-direction:column;align-items:center;gap:5px;padding:10px 0 2px;display:flex}.BiQ1zG_resultCheck{background:var(--hub-success-tint);width:40px;height:40px;color:var(--hub-success);border-radius:50%;justify-content:center;align-items:center;margin-bottom:3px;display:inline-flex}.BiQ1zG_resultCheckIcon{flex-shrink:0;width:20px;height:20px}.BiQ1zG_resultTitle{color:var(--hub-text-primary);font-size:13px;font-weight:600;line-height:20px}.BiQ1zG_resultDesc{color:var(--hub-text-secondary);font-size:12px;line-height:18px}.BiQ1zG_resultRestarting{color:var(--hub-text-tertiary);padding:12px 0 6px;font-size:12px;line-height:18px}.BiQ1zG_restartLater{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;padding:5px 14px;font-size:12px;line-height:18px;transition:color .12s,background .12s}.BiQ1zG_restartLater:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}.BiQ1zG_restartNow{color:var(--hub-text-on-fill);background:var(--hub-btn-fill);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_restartNow:hover{background:var(--hub-btn-hover)}.BiQ1zG_restartNow:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.BiQ1zG_restartNowWarning{color:#fff;background:var(--hub-warning);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_restartNowWarning:hover{background:var(--hub-warning-hover)}.BiQ1zG_restartNowWarning:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.BiQ1zG_result .BiQ1zG_modalActions{justify-content:center;gap:10px;margin-top:0;padding:6px 0 2px}.BiQ1zG_result .BiQ1zG_modalActions .BiQ1zG_restartLater,.BiQ1zG_result .BiQ1zG_modalActions .BiQ1zG_restartNow,.BiQ1zG_result .BiQ1zG_modalActions .BiQ1zG_restartNowWarning{min-width:100px}.BiQ1zG_progress{margin:10px 0 2px}.BiQ1zG_progressHead{justify-content:flex-end;align-items:center;margin-bottom:3px;display:flex}.BiQ1zG_progressText{color:var(--hub-text-secondary);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:14px}.BiQ1zG_progressTrack{background:var(--hub-border-2);border-radius:2px;height:4px;overflow:hidden}.BiQ1zG_progressFill{background:var(--hub-brand);border-radius:2px;height:100%;transition:width .32s}.BiQ1zG_progressFillFail{background:var(--hub-danger)}@keyframes BiQ1zG_overlayIn{0%{opacity:0}to{opacity:1}}@keyframes BiQ1zG_modalIn{0%{opacity:0;transform:translateY(6px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.BiQ1zG_failList{flex-direction:column;gap:12px;padding-right:2px;display:flex}.BiQ1zG_failRow{border:1px solid var(--hub-border-2);background:var(--hub-bg-2);border-radius:8px;flex-direction:column;gap:8px;padding:10px 12px;display:flex}.BiQ1zG_failHead{align-items:center;gap:8px;min-width:0;display:flex}.BiQ1zG_noticeList{flex-direction:column;gap:10px;padding-right:2px;display:flex}.BiQ1zG_noticeRow{border:1px solid var(--hub-border-2);background:var(--hub-bg-2);border-radius:8px;flex-direction:column;align-items:stretch;gap:6px;padding:10px 12px;display:flex}.BiQ1zG_noticeRowMain{align-items:center;gap:10px;width:100%;min-width:0;display:flex}.BiQ1zG_noticeBadgeOk,.BiQ1zG_noticeBadgeFail{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex;box-shadow:0 2px 6px #0000002e}.BiQ1zG_noticeBadgeOk{background:var(--hub-success)}.BiQ1zG_noticeBadgeFail{background:var(--hub-danger)}.BiQ1zG_noticeBadgeIcon{flex-shrink:0;width:12px;height:12px}.BiQ1zG_noticeMain{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.BiQ1zG_noticeHead{align-items:center;gap:8px;min-width:0;display:flex}.BiQ1zG_noticeTextOk{color:var(--hub-success);flex-shrink:0;font-size:12px;font-weight:600;line-height:18px}.BiQ1zG_noticeTextFail{color:var(--hub-danger-text);flex-shrink:0;font-size:12px;font-weight:600;line-height:18px}.BiQ1zG_noticeFoot{justify-content:flex-end;align-items:center;display:flex}.BiQ1zG_noticeTime{color:var(--hub-text-tertiary);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:11px;line-height:16px}.BiQ1zG_noticeRemove{width:22px;height:22px;color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_noticeRemove:hover{color:var(--hub-danger-text);background:var(--hub-danger-tint)}.BiQ1zG_noticeRowOk .BiQ1zG_noticeRemove{margin-left:0}.BiQ1zG_noticeRowOk .BiQ1zG_noticeTime{margin-left:auto}.BiQ1zG_noticeRowUpdate{cursor:pointer;transition:border-color .12s,background .12s}.BiQ1zG_noticeRowUpdate:hover{border-color:var(--hub-brand);background:var(--hub-brand-tint)}.BiQ1zG_noticeVersion{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border);font-variant-numeric:tabular-nums;border-radius:5px;flex-shrink:0;padding:0 6px;font-size:11px;font-weight:600;line-height:18px}.BiQ1zG_noticeUpdateGo{color:#fff;background:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:5px;flex-shrink:0;margin-left:2px;padding:2px 8px;font-size:11px;font-weight:600;line-height:16px;transition:background .12s}.BiQ1zG_noticeUpdateGo:hover{background:var(--hub-brand-hover)}.BiQ1zG_noticeIgnore{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:5px;flex-shrink:0;margin-left:2px;padding:1px 8px;font-size:11px;font-weight:500;line-height:16px;transition:color .12s,border-color .12s,background .12s}.BiQ1zG_noticeIgnore:hover{color:var(--hub-danger-text);border-color:var(--hub-danger-border);background:var(--hub-danger-tint)}.BiQ1zG_failKind{border:1px solid #0000;border-radius:4px;flex-shrink:0;padding:0 6px;font-size:10px;font-weight:500;line-height:16px}.BiQ1zG_failKindInstall{color:var(--hub-danger-text);border-color:var(--hub-danger-border);background:var(--hub-danger-tint)}.BiQ1zG_failKindUninstall{color:var(--hub-warn);border-color:var(--hub-warn-border);background:var(--hub-warn-tint)}.BiQ1zG_failRepo{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:18px;text-decoration:none;overflow:hidden}.BiQ1zG_failRepo:hover{text-decoration:underline}.BiQ1zG_failCopy{color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:4px;flex-shrink:0;align-items:center;padding:2px 8px;font-size:11px;line-height:16px;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_failCopy:hover{color:var(--hub-text-secondary);background:var(--hub-bg-2)}.BiQ1zG_failEmpty{text-align:center;color:var(--hub-text-tertiary);padding:24px 0;font-size:12px;line-height:18px}.BiQ1zG_failClear{color:var(--hub-danger);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;padding:5px 14px;font-size:12px;line-height:18px;transition:color .12s,background .12s}.BiQ1zG_failClear:hover{color:#fff;background:var(--hub-danger)}.BiQ1zG_failBigIssue{box-sizing:border-box;text-align:center;color:#fff;background:var(--hub-danger);border:1px solid var(--hub-danger);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;width:100%;margin-top:4px;padding:3px 16px;font-size:13px;font-weight:600;line-height:18px;text-decoration:none;transition:background .12s,border-color .12s,box-shadow .12s;display:block}.BiQ1zG_failBigIssue:hover{background:var(--hub-danger-hover);border-color:var(--hub-danger-hover);box-shadow:0 3px 10px #d1242f59}.BiQ1zG_failPrepareHint{color:var(--hub-warning);background:var(--hub-warning-tint);border:1px solid var(--hub-warning-border);border-radius:6px;margin-top:6px;padding:8px 12px;font-size:12px;line-height:18px}.BiQ1zG_aboutModal{width:460px;max-width:calc(100vw - 48px)}.BiQ1zG_aboutContent{min-height:0;max-height:340px;color:var(--hub-text-secondary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);border-radius:8px;flex:auto;padding:10px 12px;font-size:12px;line-height:18px;overflow-y:auto}.BiQ1zG_aboutContent>:first-child{margin-top:0}.BiQ1zG_aboutContent>:last-child{margin-bottom:0}.BiQ1zG_aboutContent h2,.BiQ1zG_aboutContent h3,.BiQ1zG_aboutContent h4,.BiQ1zG_aboutContent h5{color:var(--hub-text-primary);margin:10px 0 4px;font-size:13px;font-weight:600;line-height:20px}.BiQ1zG_aboutContent h2{font-size:14px}.BiQ1zG_aboutContent p{margin:4px 0}.BiQ1zG_aboutContent ul,.BiQ1zG_aboutContent ol{margin:4px 0;padding-left:18px}.BiQ1zG_aboutContent li{margin:2px 0}.BiQ1zG_aboutContent code{background:var(--hub-bg-hover);color:var(--hub-text-primary);border-radius:4px;padding:1px 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.BiQ1zG_aboutContent pre{background:var(--hub-bg-1);border:1px solid var(--hub-border-2);border-radius:6px;margin:6px 0;padding:8px 10px;overflow-x:auto}.BiQ1zG_aboutContent pre code{background:0 0;border-radius:0;padding:0}.BiQ1zG_aboutContent blockquote{border-left:3px solid var(--hub-brand);background:var(--hub-bg-hover);color:var(--hub-text-tertiary);border-radius:0 6px 6px 0;margin:6px 0;padding:2px 10px}.BiQ1zG_aboutContent a{color:var(--hub-brand);text-decoration:none}.BiQ1zG_aboutContent a:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_aboutContent img{border-radius:8px;max-width:100%;max-height:220px;margin:8px auto;display:block;box-shadow:0 2px 8px #0000001f}.BiQ1zG_aboutContent img[width=\"250\"]{object-fit:contain;width:250px;height:250px;max-height:250px}.BiQ1zG_aboutMeta{color:var(--hub-text-tertiary);font-size:11px;line-height:16px}.BiQ1zG_hubUpdateModal{width:520px;max-width:calc(100vw - 48px)}.BiQ1zG_hubUpdateMeta{flex-wrap:wrap;align-items:center;gap:4px 14px;font-size:12px;line-height:18px;display:flex}.BiQ1zG_hubUpdateMetaItem{color:var(--hub-text-tertiary)}.BiQ1zG_hubUpdateNotes{min-height:0;max-height:300px;color:var(--hub-text-secondary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);border-radius:8px;flex:auto;padding:10px 12px;font-size:12px;line-height:18px;overflow-y:auto}.BiQ1zG_hubUpdateNotes>:first-child{margin-top:0}.BiQ1zG_hubUpdateNotes>:last-child{margin-bottom:0}.BiQ1zG_hubUpdateNotes h2,.BiQ1zG_hubUpdateNotes h3,.BiQ1zG_hubUpdateNotes h4,.BiQ1zG_hubUpdateNotes h5{color:var(--hub-text-primary);margin:10px 0 4px;font-size:13px;font-weight:600;line-height:20px}.BiQ1zG_hubUpdateNotes h2{font-size:14px}.BiQ1zG_hubUpdateNotes p{margin:4px 0}.BiQ1zG_hubUpdateNotes ul,.BiQ1zG_hubUpdateNotes ol{margin:4px 0;padding-left:18px}.BiQ1zG_hubUpdateNotes li{margin:2px 0}.BiQ1zG_hubUpdateNotes code{background:var(--hub-bg-hover);color:var(--hub-text-primary);border-radius:4px;padding:1px 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.BiQ1zG_hubUpdateNotes pre{background:var(--hub-bg-1);border:1px solid var(--hub-border-2);border-radius:6px;margin:6px 0;padding:8px 10px;overflow-x:auto}.BiQ1zG_hubUpdateNotes pre code{background:0 0;border-radius:0;padding:0}.BiQ1zG_hubUpdateNotes blockquote{border-left:3px solid var(--hub-brand);background:var(--hub-bg-hover);color:var(--hub-text-tertiary);border-radius:0 6px 6px 0;margin:6px 0;padding:2px 10px}.BiQ1zG_hubUpdateNotes a{color:var(--hub-brand);text-decoration:none}.BiQ1zG_hubUpdateNotes a:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_detailModal{width:480px;max-width:calc(100vw - 48px)}.BiQ1zG_detailUpdateHint{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft);border-radius:6px;padding:6px 10px;font-size:12px;line-height:18px}.BiQ1zG_detailGrid{flex-direction:column;gap:6px;display:flex}.BiQ1zG_detailRow{align-items:baseline;gap:10px;min-width:0;font-size:12px;line-height:20px;display:flex}.BiQ1zG_detailLabel{text-align:right;width:76px;color:var(--hub-text-tertiary);flex-shrink:0}.BiQ1zG_detailValue{min-width:0;color:var(--hub-text-primary);flex-wrap:wrap;flex:auto;align-items:baseline;gap:4px 6px;font-weight:500;display:flex}.BiQ1zG_detailMono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;font-weight:500}.BiQ1zG_detailArrow{color:var(--hub-text-tertiary);align-items:baseline;gap:4px;display:inline-flex}.BiQ1zG_detailDim{color:var(--hub-text-tertiary);font-size:11px;font-weight:400}.BiQ1zG_detailLink{min-width:0;color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;font-weight:500;text-decoration:none;transition:color .12s;display:inline-flex}.BiQ1zG_detailLink:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_detailStars{color:#b45309;font-weight:600}.BiQ1zG_detailPath{min-width:0;color:var(--hub-text-primary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);border-radius:6px;flex:auto;justify-content:space-between;align-items:center;gap:6px;padding:3px 3px 3px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:18px;transition:border-color .12s,background .12s;display:flex}.BiQ1zG_detailPath:hover{border-color:var(--hub-border-ghost);background:var(--hub-bg-3)}.BiQ1zG_detailPathText{text-overflow:ellipsis;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;min-width:0;overflow:hidden}.BiQ1zG_detailPathActions{flex-shrink:0;align-items:center;gap:4px;display:inline-flex}.BiQ1zG_detailPathBtn{width:28px;height:28px;color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;justify-content:center;align-items:center;transition:color .12s,background .12s,border-color .12s;display:inline-flex}.BiQ1zG_detailPathBtn svg{width:15px;height:15px}.BiQ1zG_detailPathBtn:hover{color:#fff;background:var(--hub-brand);border-color:var(--hub-brand)}.BiQ1zG_detailStatusRunning,.BiQ1zG_detailStatusPending{border-radius:50%;flex-shrink:0;align-self:center;width:8px;height:8px}.BiQ1zG_detailStatusRunning{background:var(--hub-success)}.BiQ1zG_detailStatusPending{background:var(--hub-warning)}.BiQ1zG_detailStatusText{font-weight:500}";
677
685
  const tagId$10 = "dsh-plugin/Modal.module.css";
678
686
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$10) + "]") === null) {
679
687
  const tag = document.createElement("style");
@@ -688,134 +696,134 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
688
696
  css: css$10
689
697
  });
690
698
  var Modal_module_css_default = {
691
- "noticeRemove": "BiQ1zG_noticeRemove",
692
- "restartNow": "BiQ1zG_restartNow",
693
- "failPrepareHint": "BiQ1zG_failPrepareHint",
694
- "modalValue": "BiQ1zG_modalValue",
695
- "aboutModal": "BiQ1zG_aboutModal",
696
- "overlay": "BiQ1zG_overlay",
697
- "noticeList": "BiQ1zG_noticeList",
698
- "aboutContent": "BiQ1zG_aboutContent",
699
- "detailUpdateHint": "BiQ1zG_detailUpdateHint",
700
- "modalIn": "BiQ1zG_modalIn",
701
- "noticeTextOk": "BiQ1zG_noticeTextOk",
702
- "pendingRowActions": "BiQ1zG_pendingRowActions",
703
- "failHead": "BiQ1zG_failHead",
704
- "resultCheckIcon": "BiQ1zG_resultCheckIcon",
699
+ "modalCancel": "BiQ1zG_modalCancel",
705
700
  "errorTitle": "BiQ1zG_errorTitle",
706
- "logModal": "BiQ1zG_logModal",
707
- "detailMono": "BiQ1zG_detailMono",
708
- "modalClose": "BiQ1zG_modalClose",
709
- "hubUpdateModal": "BiQ1zG_hubUpdateModal",
710
- "failRow": "BiQ1zG_failRow",
711
- "detailValue": "BiQ1zG_detailValue",
712
- "overlayIn": "BiQ1zG_overlayIn",
713
- "noticeIgnore": "BiQ1zG_noticeIgnore",
714
- "queueSectionTitle": "BiQ1zG_queueSectionTitle",
715
- "modalCmdText": "BiQ1zG_modalCmdText",
716
- "noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
701
+ "noticeTime": "BiQ1zG_noticeTime",
702
+ "queueSection": "BiQ1zG_queueSection",
703
+ "modalTitleQueued": "BiQ1zG_modalTitleQueued",
704
+ "queueRowStatus": "BiQ1zG_queueRowStatus",
705
+ "uninstallConfirm": "BiQ1zG_uninstallConfirm",
706
+ "noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
707
+ "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
708
+ "detailModal": "BiQ1zG_detailModal",
709
+ "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
710
+ "detailUpdateHint": "BiQ1zG_detailUpdateHint",
711
+ "modalWide": "BiQ1zG_modalWide",
712
+ "modalDesc": "BiQ1zG_modalDesc",
713
+ "modalLink": "BiQ1zG_modalLink",
714
+ "resultTitle": "BiQ1zG_resultTitle",
715
+ "noticeRowMain": "BiQ1zG_noticeRowMain",
717
716
  "detailPathBtn": "BiQ1zG_detailPathBtn",
718
- "confirmIconWrap": "BiQ1zG_confirmIconWrap",
717
+ "errorBox": "BiQ1zG_errorBox",
718
+ "trustHint": "BiQ1zG_trustHint",
719
+ "queueRowHead": "BiQ1zG_queueRowHead",
720
+ "failedCopyHint": "BiQ1zG_failedCopyHint",
721
+ "modalTitleBusy": "BiQ1zG_modalTitleBusy",
722
+ "queueSectionTitle": "BiQ1zG_queueSectionTitle",
723
+ "restartLater": "BiQ1zG_restartLater",
724
+ "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
725
+ "confirmIcon": "BiQ1zG_confirmIcon",
726
+ "toastIn": "BiQ1zG_toastIn",
719
727
  "resultCheck": "BiQ1zG_resultCheck",
720
- "detailDim": "BiQ1zG_detailDim",
721
- "modalCmd": "BiQ1zG_modalCmd",
722
- "queueRowDesc": "BiQ1zG_queueRowDesc",
723
- "modalRow": "BiQ1zG_modalRow",
724
- "noticeTextFail": "BiQ1zG_noticeTextFail",
725
- "resultDesc": "BiQ1zG_resultDesc",
726
- "failClear": "BiQ1zG_failClear",
727
- "progressFill": "BiQ1zG_progressFill",
728
- "detailPathText": "BiQ1zG_detailPathText",
729
- "queueRowTarget": "BiQ1zG_queueRowTarget",
730
- "detailStars": "BiQ1zG_detailStars",
731
- "cliOnlyHint": "BiQ1zG_cliOnlyHint",
732
- "aboutMeta": "BiQ1zG_aboutMeta",
733
- "noticeFoot": "BiQ1zG_noticeFoot",
734
728
  "modalInstall": "BiQ1zG_modalInstall",
735
- "modal": "BiQ1zG_modal",
736
- "failRepo": "BiQ1zG_failRepo",
737
- "detailLink": "BiQ1zG_detailLink",
738
- "hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
739
- "errorModal": "BiQ1zG_errorModal",
740
729
  "result": "BiQ1zG_result",
741
- "noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
742
- "failedCopyHint": "BiQ1zG_failedCopyHint",
743
- "progressFillFail": "BiQ1zG_progressFillFail",
744
- "noticeRowMain": "BiQ1zG_noticeRowMain",
745
- "queueRowTrack": "BiQ1zG_queueRowTrack",
746
- "detailRow": "BiQ1zG_detailRow",
747
730
  "noticeMain": "BiQ1zG_noticeMain",
748
- "queueRowHead": "BiQ1zG_queueRowHead",
749
- "toastIn": "BiQ1zG_toastIn",
750
- "modalTitle": "BiQ1zG_modalTitle",
751
- "modalBody": "BiQ1zG_modalBody",
752
- "modalActions": "BiQ1zG_modalActions",
753
- "linkIcon": "BiQ1zG_linkIcon",
754
- "uninstallConfirm": "BiQ1zG_uninstallConfirm",
755
- "pendingRowStatus": "BiQ1zG_pendingRowStatus",
756
- "errorHint": "BiQ1zG_errorHint",
731
+ "confirmIconDanger": "BiQ1zG_confirmIconDanger",
757
732
  "detailPath": "BiQ1zG_detailPath",
758
- "noticeHead": "BiQ1zG_noticeHead",
759
- "modalLabel": "BiQ1zG_modalLabel",
733
+ "detailLink": "BiQ1zG_detailLink",
760
734
  "resultRestarting": "BiQ1zG_resultRestarting",
761
- "progressText": "BiQ1zG_progressText",
762
- "modalHead": "BiQ1zG_modalHead",
763
- "failList": "BiQ1zG_failList",
764
- "noticeVersion": "BiQ1zG_noticeVersion",
735
+ "failCopy": "BiQ1zG_failCopy",
765
736
  "noticeRowOk": "BiQ1zG_noticeRowOk",
766
- "detailPathActions": "BiQ1zG_detailPathActions",
767
- "detailGrid": "BiQ1zG_detailGrid",
768
- "toast": "BiQ1zG_toast",
769
- "errorCopySoft": "BiQ1zG_errorCopySoft",
770
- "modalCloseIcon": "BiQ1zG_modalCloseIcon",
771
- "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
772
- "modalCmdCopy": "BiQ1zG_modalCmdCopy",
773
- "detailArrow": "BiQ1zG_detailArrow",
737
+ "failList": "BiQ1zG_failList",
738
+ "modalRow": "BiQ1zG_modalRow",
739
+ "failKindInstall": "BiQ1zG_failKindInstall",
740
+ "modalLabel": "BiQ1zG_modalLabel",
741
+ "queueRowDesc": "BiQ1zG_queueRowDesc",
742
+ "detailRow": "BiQ1zG_detailRow",
743
+ "hubUpdateModal": "BiQ1zG_hubUpdateModal",
744
+ "logModal": "BiQ1zG_logModal",
745
+ "linkIcon": "BiQ1zG_linkIcon",
746
+ "aboutContent": "BiQ1zG_aboutContent",
747
+ "pendingRowStatus": "BiQ1zG_pendingRowStatus",
774
748
  "restartNowWarning": "BiQ1zG_restartNowWarning",
749
+ "detailPathText": "BiQ1zG_detailPathText",
750
+ "failKindUninstall": "BiQ1zG_failKindUninstall",
751
+ "detailStars": "BiQ1zG_detailStars",
752
+ "noticeTextOk": "BiQ1zG_noticeTextOk",
753
+ "detailStatusText": "BiQ1zG_detailStatusText",
754
+ "confirmPrimary": "BiQ1zG_confirmPrimary",
755
+ "modalClose": "BiQ1zG_modalClose",
756
+ "pendingRowActions": "BiQ1zG_pendingRowActions",
757
+ "dangerConfirm": "BiQ1zG_dangerConfirm",
758
+ "errorModal": "BiQ1zG_errorModal",
759
+ "modalActions": "BiQ1zG_modalActions",
760
+ "detailMono": "BiQ1zG_detailMono",
761
+ "failRepo": "BiQ1zG_failRepo",
762
+ "detailPathActions": "BiQ1zG_detailPathActions",
775
763
  "failKind": "BiQ1zG_failKind",
776
- "detailModal": "BiQ1zG_detailModal",
777
- "queueRow": "BiQ1zG_queueRow",
778
- "confirmIcon": "BiQ1zG_confirmIcon",
779
- "queuedHint": "BiQ1zG_queuedHint",
780
- "errorBox": "BiQ1zG_errorBox",
781
- "trustHint": "BiQ1zG_trustHint",
764
+ "modalValue": "BiQ1zG_modalValue",
782
765
  "toastFail": "BiQ1zG_toastFail",
783
- "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
784
- "detailStatusPending": "BiQ1zG_detailStatusPending",
785
- "queueRowStatus": "BiQ1zG_queueRowStatus",
786
- "resultTitle": "BiQ1zG_resultTitle",
787
- "failKindUninstall": "BiQ1zG_failKindUninstall",
788
- "failEmpty": "BiQ1zG_failEmpty",
789
- "modalCopy": "BiQ1zG_modalCopy",
790
- "failCopy": "BiQ1zG_failCopy",
791
- "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
792
- "failKindInstall": "BiQ1zG_failKindInstall",
766
+ "noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
767
+ "queuedHint": "BiQ1zG_queuedHint",
768
+ "detailDim": "BiQ1zG_detailDim",
793
769
  "queueRowPct": "BiQ1zG_queueRowPct",
794
- "stripCancel": "BiQ1zG_stripCancel",
795
- "confirmPrimary": "BiQ1zG_confirmPrimary",
796
- "queueSection": "BiQ1zG_queueSection",
770
+ "noticeHead": "BiQ1zG_noticeHead",
771
+ "noticeVersion": "BiQ1zG_noticeVersion",
772
+ "progressFillFail": "BiQ1zG_progressFillFail",
773
+ "queueRowTrack": "BiQ1zG_queueRowTrack",
774
+ "modalIn": "BiQ1zG_modalIn",
775
+ "modalHead": "BiQ1zG_modalHead",
776
+ "modalCmdCopy": "BiQ1zG_modalCmdCopy",
777
+ "progressHead": "BiQ1zG_progressHead",
797
778
  "progressTrack": "BiQ1zG_progressTrack",
798
- "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
779
+ "stripCancel": "BiQ1zG_stripCancel",
780
+ "aboutModal": "BiQ1zG_aboutModal",
781
+ "errorCopySoft": "BiQ1zG_errorCopySoft",
782
+ "failPrepareHint": "BiQ1zG_failPrepareHint",
783
+ "modal": "BiQ1zG_modal",
784
+ "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
785
+ "cliOnlyHint": "BiQ1zG_cliOnlyHint",
786
+ "detailArrow": "BiQ1zG_detailArrow",
787
+ "progressFill": "BiQ1zG_progressFill",
788
+ "confirmIconWrap": "BiQ1zG_confirmIconWrap",
789
+ "modalBody": "BiQ1zG_modalBody",
790
+ "noticeRemove": "BiQ1zG_noticeRemove",
791
+ "detailStatusRunning": "BiQ1zG_detailStatusRunning",
792
+ "detailGrid": "BiQ1zG_detailGrid",
793
+ "overlay": "BiQ1zG_overlay",
794
+ "failRow": "BiQ1zG_failRow",
795
+ "hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
796
+ "aboutMeta": "BiQ1zG_aboutMeta",
799
797
  "detailLabel": "BiQ1zG_detailLabel",
800
- "hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
801
- "dangerConfirm": "BiQ1zG_dangerConfirm",
802
- "failBigIssue": "BiQ1zG_failBigIssue",
803
- "restartLater": "BiQ1zG_restartLater",
804
- "progress": "BiQ1zG_progress",
805
- "detailStatusText": "BiQ1zG_detailStatusText",
806
- "modalCancel": "BiQ1zG_modalCancel",
807
798
  "noticeRow": "BiQ1zG_noticeRow",
808
- "modalDesc": "BiQ1zG_modalDesc",
809
- "modalWide": "BiQ1zG_modalWide",
810
- "confirmIconDanger": "BiQ1zG_confirmIconDanger",
811
- "modalTitleQueued": "BiQ1zG_modalTitleQueued",
812
- "detailStatusRunning": "BiQ1zG_detailStatusRunning",
813
- "queueRowBody": "BiQ1zG_queueRowBody",
814
- "modalLink": "BiQ1zG_modalLink",
815
- "progressHead": "BiQ1zG_progressHead",
799
+ "progress": "BiQ1zG_progress",
800
+ "detailValue": "BiQ1zG_detailValue",
801
+ "modalTitle": "BiQ1zG_modalTitle",
802
+ "modalCopy": "BiQ1zG_modalCopy",
803
+ "noticeTextFail": "BiQ1zG_noticeTextFail",
804
+ "progressText": "BiQ1zG_progressText",
805
+ "failHead": "BiQ1zG_failHead",
816
806
  "helpModal": "BiQ1zG_helpModal",
817
- "noticeTime": "BiQ1zG_noticeTime",
818
- "modalTitleBusy": "BiQ1zG_modalTitleBusy"
807
+ "toast": "BiQ1zG_toast",
808
+ "queueRowBody": "BiQ1zG_queueRowBody",
809
+ "modalCmdText": "BiQ1zG_modalCmdText",
810
+ "restartNow": "BiQ1zG_restartNow",
811
+ "noticeList": "BiQ1zG_noticeList",
812
+ "detailStatusPending": "BiQ1zG_detailStatusPending",
813
+ "overlayIn": "BiQ1zG_overlayIn",
814
+ "modalCloseIcon": "BiQ1zG_modalCloseIcon",
815
+ "queueRow": "BiQ1zG_queueRow",
816
+ "resultDesc": "BiQ1zG_resultDesc",
817
+ "resultCheckIcon": "BiQ1zG_resultCheckIcon",
818
+ "errorHint": "BiQ1zG_errorHint",
819
+ "noticeIgnore": "BiQ1zG_noticeIgnore",
820
+ "failClear": "BiQ1zG_failClear",
821
+ "queueRowTarget": "BiQ1zG_queueRowTarget",
822
+ "failEmpty": "BiQ1zG_failEmpty",
823
+ "modalCmd": "BiQ1zG_modalCmd",
824
+ "hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
825
+ "noticeFoot": "BiQ1zG_noticeFoot",
826
+ "failBigIssue": "BiQ1zG_failBigIssue"
819
827
  };
820
828
  //#endregion
821
829
  //#region src/client/logic/install-command.ts
@@ -885,7 +893,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
885
893
  * tsdown 构建时用 define 把 __PLUGIN_VERSION__ 替换成 package.json 的版本号;
886
894
  * node --test 直接 import 本模块时该标识符不存在,typeof 守卫兜底为空串。
887
895
  */
888
- const PLUGIN_VERSION = "1.3.5";
896
+ const PLUGIN_VERSION = "1.3.6";
889
897
  const CATEGORY_ORDER = [
890
898
  "interface",
891
899
  "session",
@@ -1518,7 +1526,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1518
1526
  */
1519
1527
  const hubHasUpdate = (() => {
1520
1528
  if (!hubUpdateInfo) return false;
1521
- return hubUpdateInfo.version !== "1.3.5";
1529
+ return hubUpdateInfo.version !== "1.3.6";
1522
1530
  })();
1523
1531
  (0, react.useMemo)(() => {
1524
1532
  if (!plugins) return [];
@@ -1785,6 +1793,14 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1785
1793
  function pluginSiteUrl(repo) {
1786
1794
  return `${SITE_URL}plugins/${repo}`;
1787
1795
  }
1796
+ /** 根据实际执行的命令判定失败动作标签(安装/更新/卸载):
1797
+ * 命令形如 `dsh plugin --profile web add|update|remove <target>`,
1798
+ * 出现 remove/update 动词即对应归类,其余(add、全局 npm 命令、未知)一律算安装。 */
1799
+ function actionLabelOf(command) {
1800
+ if (command && /\s+remove\s+/i.test(command)) return "Remove";
1801
+ if (command && /\s+update\s+/i.test(command)) return "Update";
1802
+ return "Install";
1803
+ }
1788
1804
  /**
1789
1805
  * 一键反馈 GitHub Issue 的预填链接:标题带「来自 dsh-plugin.org」标识,正文只带
1790
1806
  * 核心信息 —— 原因判定 + 关键错误代码 + 尝试过的安装方式 + 宿主机器环境快照 +
@@ -1795,7 +1811,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1795
1811
  * 组织 scope 与 GitHub 用户名不一致时也能直接指认正确的 npm 包名。
1796
1812
  */
1797
1813
  function pluginIssueUrl(repo, message, env, command, attempts) {
1798
- const title = `[dsh-plugin.org | dsh-plugin-hub] Install/Remove failed: ${repo}`;
1814
+ const title = `[dsh-plugin.org | dsh-plugin-hub] ${actionLabelOf(command)} failed: ${repo}`;
1799
1815
  const kind = classifyFailure(message);
1800
1816
  const reason = /\[packaging\]/i.test(message) ? "plugin distribution is incomplete — the entry file declared in package.json is missing from the published package (github tarball or npm package); please commit build output or publish a complete package" : kind === "pluginPrepare" ? "plugin prepare/build script failed during install (packaging/distribution issue)" : kind === "pnpmIgnoredBuild" ? "plugin depends on a native module whose build script pnpm blocks by default (use a prebuilt variant)" : "plugin-side install failure";
1801
1817
  const code = coreErrorCode(message);
@@ -1903,8 +1919,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1903
1919
  */
1904
1920
  const DEFAULT_SETTINGS = {
1905
1921
  checkUpdatesOnStart: true,
1906
- npmRegistry: "",
1907
1922
  proxy: "",
1923
+ npmRegistry: "",
1908
1924
  enableNpmInstall: true,
1909
1925
  enableGitInstall: true,
1910
1926
  enableDshInstall: true,
@@ -2090,11 +2106,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2090
2106
  desc: q.desc,
2091
2107
  version: q.version
2092
2108
  });
2093
- onInstallDone(modalTaskRef.current === q.id, q.repo, q.needsRestart);
2109
+ onInstallDone(modalTaskRef.current === q.id, q.repo, q.needsRestart, q.action === "update");
2094
2110
  }
2095
2111
  } else {
2096
2112
  const detail = lines.length > 0 ? [...lines].reverse().join("\n") : q.kind === "uninstall" ? t("uninstallFail") : t("installFail");
2097
- onError(detail, q.repo, q.kind, q.command, q.attempts);
2113
+ onError(detail, q.repo, q.kind, q.command, q.attempts, q.action === "update");
2098
2114
  }
2099
2115
  maybeStopPoll();
2100
2116
  };
@@ -2232,6 +2248,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2232
2248
  kind: isRemove ? "uninstall" : "install",
2233
2249
  target: isRemove ? fallback : display || fallback,
2234
2250
  repo: isRemove ? null : display || fallback,
2251
+ action: a.action === "add" || a.action === "update" || a.action === "remove" ? a.action : "add",
2235
2252
  status: a.status === "running" ? "running" : "pending",
2236
2253
  progress: typeof a.progress === "number" ? a.progress : 0,
2237
2254
  lines: Array.isArray(a.lines) ? a.lines : [],
@@ -2274,6 +2291,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2274
2291
  lines: [],
2275
2292
  optimistic: true,
2276
2293
  command: input.command,
2294
+ action: input.update ? "update" : "add",
2277
2295
  attempts: [],
2278
2296
  needsRestart: true
2279
2297
  }]);
@@ -3648,7 +3666,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3648
3666
  onClick: () => onUpdate(r.repo),
3649
3667
  title: t("updateNoticeGo")
3650
3668
  } : {}
3651
- }, (0, react.createElement)("div", { className: Modal_module_css_default.noticeRowMain }, (0, react.createElement)("div", { className: r.ok ? Modal_module_css_default.noticeBadgeOk : Modal_module_css_default.noticeBadgeFail }, (0, react.createElement)(BadgeGlyph, { ok: r.ok })), (0, react.createElement)("div", { className: Modal_module_css_default.noticeMain }, (0, react.createElement)("div", { className: Modal_module_css_default.noticeHead }, (0, react.createElement)("span", { className: r.ok ? Modal_module_css_default.noticeTextOk : Modal_module_css_default.noticeTextFail }, r.ok ? isUpdate ? t("updateNoticeTitle") : r.kind === "install" ? t("installDone") : t("uninstallDone") : r.kind === "install" ? t("errorTitleInstall") : t("errorTitleUninstall")), isUpdate && r.version ? (0, react.createElement)("span", {
3669
+ }, (0, react.createElement)("div", { className: Modal_module_css_default.noticeRowMain }, (0, react.createElement)("div", { className: r.ok ? Modal_module_css_default.noticeBadgeOk : Modal_module_css_default.noticeBadgeFail }, (0, react.createElement)(BadgeGlyph, { ok: r.ok })), (0, react.createElement)("div", { className: Modal_module_css_default.noticeMain }, (0, react.createElement)("div", { className: Modal_module_css_default.noticeHead }, (0, react.createElement)("span", { className: r.ok ? Modal_module_css_default.noticeTextOk : Modal_module_css_default.noticeTextFail }, r.ok ? isUpdate ? t("updateNoticeTitle") : r.action === "update" ? t("updateDone") : r.kind === "install" ? t("installDone") : t("uninstallDone") : r.action === "update" ? t("errorTitleUpdate") : r.kind === "install" ? t("errorTitleInstall") : t("errorTitleUninstall")), isUpdate && r.version ? (0, react.createElement)("span", {
3652
3670
  className: Modal_module_css_default.noticeVersion,
3653
3671
  title: r.version
3654
3672
  }, `v${r.version}`) : null, r.repo ? isUpdate ? (0, react.createElement)("span", {
@@ -3660,7 +3678,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3660
3678
  target: "_blank",
3661
3679
  rel: "noopener noreferrer",
3662
3680
  title: shownRepo
3663
- }, shownRepo) : null : null, !r.ok && (0, react.createElement)("button", {
3681
+ }, shownRepo) : (0, react.createElement)("span", {
3682
+ className: Modal_module_css_default.failRepo,
3683
+ title: r.repo
3684
+ }, r.repo) : null, !r.ok && (0, react.createElement)("button", {
3664
3685
  className: Modal_module_css_default.failCopy,
3665
3686
  onClick: () => onCopy(r.message)
3666
3687
  }, t("failCopy")), r.ok ? (0, react.createElement)("span", {
@@ -3886,38 +3907,38 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3886
3907
  css: css$9
3887
3908
  });
3888
3909
  var List_module_css_default = {
3889
- "body": "_3XaZHa_body",
3890
- "verified": "_3XaZHa_verified",
3891
- "actions": "_3XaZHa_actions",
3892
- "topic": "_3XaZHa_topic",
3893
3910
  "cardSide": "_3XaZHa_cardSide",
3894
- "uninstallBtn": "_3XaZHa_uninstallBtn",
3895
- "footLink": "_3XaZHa_footLink",
3896
- "versionBadge": "_3XaZHa_versionBadge",
3897
- "desc": "_3XaZHa_desc",
3898
- "cardMain": "_3XaZHa_cardMain",
3899
- "fork": "_3XaZHa_fork",
3900
- "categoryBadge": "_3XaZHa_categoryBadge",
3901
- "stateDesc": "_3XaZHa_stateDesc",
3902
- "installBtnInstalled": "_3XaZHa_installBtnInstalled",
3911
+ "card": "_3XaZHa_card",
3912
+ "actions": "_3XaZHa_actions",
3903
3913
  "topics": "_3XaZHa_topics",
3904
- "cardHead": "_3XaZHa_cardHead",
3905
- "stats": "_3XaZHa_stats",
3914
+ "cardMain": "_3XaZHa_cardMain",
3915
+ "body": "_3XaZHa_body",
3906
3916
  "list": "_3XaZHa_list",
3917
+ "installBtnInstalled": "_3XaZHa_installBtnInstalled",
3907
3918
  "footer": "_3XaZHa_footer",
3908
- "state": "_3XaZHa_state",
3909
- "updateBadge": "_3XaZHa_updateBadge",
3919
+ "cardTitle": "_3XaZHa_cardTitle",
3910
3920
  "retryBtn": "_3XaZHa_retryBtn",
3911
- "stateTitle": "_3XaZHa_stateTitle",
3912
- "card": "_3XaZHa_card",
3913
- "detailBtn": "_3XaZHa_detailBtn",
3921
+ "uninstallBtn": "_3XaZHa_uninstallBtn",
3914
3922
  "date": "_3XaZHa_date",
3915
- "installBtnUpdate": "_3XaZHa_installBtnUpdate",
3916
- "installBtnCopied": "_3XaZHa_installBtnCopied",
3923
+ "topic": "_3XaZHa_topic",
3924
+ "fork": "_3XaZHa_fork",
3925
+ "categoryBadge": "_3XaZHa_categoryBadge",
3926
+ "versionBadge": "_3XaZHa_versionBadge",
3917
3927
  "installBtn": "_3XaZHa_installBtn",
3928
+ "detailBtn": "_3XaZHa_detailBtn",
3929
+ "desc": "_3XaZHa_desc",
3930
+ "verified": "_3XaZHa_verified",
3918
3931
  "star": "_3XaZHa_star",
3932
+ "installBtnUpdate": "_3XaZHa_installBtnUpdate",
3933
+ "stateDesc": "_3XaZHa_stateDesc",
3934
+ "footLink": "_3XaZHa_footLink",
3935
+ "state": "_3XaZHa_state",
3919
3936
  "moreSentinel": "_3XaZHa_moreSentinel",
3920
- "cardTitle": "_3XaZHa_cardTitle"
3937
+ "updateBadge": "_3XaZHa_updateBadge",
3938
+ "stats": "_3XaZHa_stats",
3939
+ "stateTitle": "_3XaZHa_stateTitle",
3940
+ "cardHead": "_3XaZHa_cardHead",
3941
+ "installBtnCopied": "_3XaZHa_installBtnCopied"
3921
3942
  };
3922
3943
  //#endregion
3923
3944
  //#region src/client/hooks/useIncrementalList.ts
@@ -4119,15 +4140,15 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4119
4140
  css: css$8
4120
4141
  });
4121
4142
  var SectionTabs_module_css_default = {
4122
- "tabCountActive": "_7tvizq_tabCountActive",
4123
- "noticeBtn": "_7tvizq_noticeBtn",
4124
- "noticeIcon": "_7tvizq_noticeIcon",
4125
- "tabActive": "_7tvizq_tabActive",
4126
4143
  "tabCount": "_7tvizq_tabCount",
4144
+ "tabActive": "_7tvizq_tabActive",
4127
4145
  "tabIcon": "_7tvizq_tabIcon",
4146
+ "noticeIcon": "_7tvizq_noticeIcon",
4147
+ "noticeBtn": "_7tvizq_noticeBtn",
4148
+ "noticeCount": "_7tvizq_noticeCount",
4128
4149
  "root": "_7tvizq_root",
4129
4150
  "tab": "_7tvizq_tab",
4130
- "noticeCount": "_7tvizq_noticeCount"
4151
+ "tabCountActive": "_7tvizq_tabCountActive"
4131
4152
  };
4132
4153
  //#endregion
4133
4154
  //#region src/client/components/layout/SectionTabs.tsx
@@ -4204,42 +4225,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4204
4225
  css: css$7
4205
4226
  });
4206
4227
  var InstalledView_module_css_default = {
4207
- "searchWrap": "_1nXeGW_searchWrap",
4208
- "toolbar": "_1nXeGW_toolbar",
4228
+ "segBtn": "_1nXeGW_segBtn",
4229
+ "list": "_1nXeGW_list",
4230
+ "rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
4231
+ "rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
4232
+ "rowUpdate": "_1nXeGW_rowUpdate",
4209
4233
  "segBtnActive": "_1nXeGW_segBtnActive",
4210
- "rowRepo": "_1nXeGW_rowRepo",
4234
+ "statusInactive": "_1nXeGW_statusInactive",
4235
+ "rowCategory": "_1nXeGW_rowCategory",
4236
+ "emptyDesc": "_1nXeGW_emptyDesc",
4237
+ "rowTitleLine": "_1nXeGW_rowTitleLine",
4238
+ "segLabel": "_1nXeGW_segLabel",
4211
4239
  "row": "_1nXeGW_row",
4212
- "rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
4240
+ "statusDot": "_1nXeGW_statusDot",
4241
+ "rowMeta": "_1nXeGW_rowMeta",
4242
+ "searchInput": "_1nXeGW_searchInput",
4243
+ "updateBadge": "_1nXeGW_updateBadge",
4244
+ "searchWrap": "_1nXeGW_searchWrap",
4213
4245
  "root": "_1nXeGW_root",
4214
- "versionBadge": "_1nXeGW_versionBadge",
4215
- "rowMain": "_1nXeGW_rowMain",
4216
4246
  "rowSourceTag": "_1nXeGW_rowSourceTag",
4247
+ "exampleRow": "_1nXeGW_exampleRow",
4248
+ "rowDesc": "_1nXeGW_rowDesc",
4217
4249
  "segRow": "_1nXeGW_segRow",
4218
- "emptyDesc": "_1nXeGW_emptyDesc",
4219
- "rowRestart": "_1nXeGW_rowRestart",
4220
- "rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
4221
- "rowCategory": "_1nXeGW_rowCategory",
4222
- "empty": "_1nXeGW_empty",
4223
- "searchInput": "_1nXeGW_searchInput",
4224
- "updateBadge": "_1nXeGW_updateBadge",
4225
4250
  "emptyTitle": "_1nXeGW_emptyTitle",
4226
4251
  "rowActions": "_1nXeGW_rowActions",
4227
- "rowUninstall": "_1nXeGW_rowUninstall",
4228
- "rowTitleLine": "_1nXeGW_rowTitleLine",
4229
- "exampleBadge": "_1nXeGW_exampleBadge",
4230
- "statusInactive": "_1nXeGW_statusInactive",
4252
+ "versionBadge": "_1nXeGW_versionBadge",
4231
4253
  "segGroup": "_1nXeGW_segGroup",
4232
- "rowDetail": "_1nXeGW_rowDetail",
4233
- "rowMeta": "_1nXeGW_rowMeta",
4234
- "rowTitle": "_1nXeGW_rowTitle",
4235
- "segLabel": "_1nXeGW_segLabel",
4236
- "statusDot": "_1nXeGW_statusDot",
4237
4254
  "statusPending": "_1nXeGW_statusPending",
4238
- "list": "_1nXeGW_list",
4239
- "rowUpdate": "_1nXeGW_rowUpdate",
4240
- "segBtn": "_1nXeGW_segBtn",
4241
- "exampleRow": "_1nXeGW_exampleRow",
4242
- "rowDesc": "_1nXeGW_rowDesc"
4255
+ "rowTitle": "_1nXeGW_rowTitle",
4256
+ "exampleBadge": "_1nXeGW_exampleBadge",
4257
+ "empty": "_1nXeGW_empty",
4258
+ "rowRepo": "_1nXeGW_rowRepo",
4259
+ "rowRestart": "_1nXeGW_rowRestart",
4260
+ "rowMain": "_1nXeGW_rowMain",
4261
+ "rowUninstall": "_1nXeGW_rowUninstall",
4262
+ "toolbar": "_1nXeGW_toolbar",
4263
+ "rowDetail": "_1nXeGW_rowDetail"
4243
4264
  };
4244
4265
  //#endregion
4245
4266
  //#region src/client/components/views/InstalledView.tsx
@@ -4485,28 +4506,28 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4485
4506
  css: css$6
4486
4507
  });
4487
4508
  var CustomInstallView_module_css_default = {
4488
- "helpBody": "zISxCG_helpBody",
4489
- "helpCmd": "zISxCG_helpCmd",
4490
- "helpNote": "zISxCG_helpNote",
4491
- "channelOff": "zISxCG_channelOff",
4492
- "installInsertBtn": "zISxCG_installInsertBtn",
4493
- "installError": "zISxCG_installError",
4494
- "installCard": "zISxCG_installCard",
4495
- "installRow": "zISxCG_installRow",
4496
- "helpLine": "zISxCG_helpLine",
4497
- "root": "zISxCG_root",
4509
+ "installInput": "zISxCG_installInput",
4498
4510
  "installExample": "zISxCG_installExample",
4511
+ "desc": "zISxCG_desc",
4499
4512
  "installCards": "zISxCG_installCards",
4513
+ "installInsertBtn": "zISxCG_installInsertBtn",
4514
+ "helpNote": "zISxCG_helpNote",
4515
+ "installLabel": "zISxCG_installLabel",
4516
+ "channelOffText": "zISxCG_channelOffText",
4517
+ "channelOffBtn": "zISxCG_channelOffBtn",
4518
+ "helpLine": "zISxCG_helpLine",
4500
4519
  "installCardDisabled": "zISxCG_installCardDisabled",
4520
+ "root": "zISxCG_root",
4521
+ "channelOff": "zISxCG_channelOff",
4522
+ "helpBody": "zISxCG_helpBody",
4501
4523
  "installCardHead": "zISxCG_installCardHead",
4502
- "desc": "zISxCG_desc",
4503
4524
  "installHelpBtn": "zISxCG_installHelpBtn",
4504
- "installInput": "zISxCG_installInput",
4525
+ "installRow": "zISxCG_installRow",
4526
+ "installBtn": "zISxCG_installBtn",
4527
+ "helpCmd": "zISxCG_helpCmd",
4505
4528
  "installInputError": "zISxCG_installInputError",
4506
- "channelOffText": "zISxCG_channelOffText",
4507
- "installLabel": "zISxCG_installLabel",
4508
- "channelOffBtn": "zISxCG_channelOffBtn",
4509
- "installBtn": "zISxCG_installBtn"
4529
+ "installCard": "zISxCG_installCard",
4530
+ "installError": "zISxCG_installError"
4510
4531
  };
4511
4532
  //#endregion
4512
4533
  //#region src/client/components/views/CustomInstallView.tsx
@@ -4793,30 +4814,30 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4793
4814
  css: css$5
4794
4815
  });
4795
4816
  var SettingsView_module_css_default = {
4817
+ "root": "_506LLG_root",
4818
+ "navItem": "_506LLG_navItem",
4819
+ "pageHeader": "_506LLG_pageHeader",
4820
+ "settingDesc": "_506LLG_settingDesc",
4821
+ "settingRowStack": "_506LLG_settingRowStack",
4796
4822
  "controlDropdown": "_506LLG_controlDropdown",
4797
- "settingTitle": "_506LLG_settingTitle",
4798
- "settingControl": "_506LLG_settingControl",
4799
- "settingControlStack": "_506LLG_settingControlStack",
4800
- "sidebar": "_506LLG_sidebar",
4801
- "navItemActive": "_506LLG_navItemActive",
4802
4823
  "settingLabel": "_506LLG_settingLabel",
4824
+ "navItemActive": "_506LLG_navItemActive",
4803
4825
  "card": "_506LLG_card",
4804
4826
  "pageTitle": "_506LLG_pageTitle",
4805
- "navIcon": "_506LLG_navIcon",
4806
- "pageHeader": "_506LLG_pageHeader",
4807
- "pageDesc": "_506LLG_pageDesc",
4827
+ "content": "_506LLG_content",
4808
4828
  "textInput": "_506LLG_textInput",
4809
- "root": "_506LLG_root",
4810
- "navItem": "_506LLG_navItem",
4811
- "settingDesc": "_506LLG_settingDesc",
4829
+ "pageDesc": "_506LLG_pageDesc",
4830
+ "settingControlStack": "_506LLG_settingControlStack",
4812
4831
  "resetBtn": "_506LLG_resetBtn",
4813
- "content": "_506LLG_content",
4832
+ "sidebar": "_506LLG_sidebar",
4833
+ "navIcon": "_506LLG_navIcon",
4834
+ "settingTitle": "_506LLG_settingTitle",
4814
4835
  "settingRow": "_506LLG_settingRow",
4815
- "settingRowStack": "_506LLG_settingRowStack"
4836
+ "settingControl": "_506LLG_settingControl"
4816
4837
  };
4817
4838
  //#endregion
4818
4839
  //#region \0dsh-css:src/client/styles/Dropdown.module.css.mjs
4819
- const css$4 = ".B_Gxsq_dropdown{flex-shrink:0;position:relative}.B_Gxsq_dropdownBtn{box-sizing:border-box;border:1px solid var(--hub-border-2);height:28px;color:var(--hub-text-primary);background:var(--hub-bg-hover);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;align-items:center;gap:6px;padding:0 10px;font-size:12px;line-height:26px;transition:color .12s,background .12s,border-color .12s;display:inline-flex}.B_Gxsq_dropdownBtn:hover{background:#80808047}.B_Gxsq_dropdownLabel{white-space:nowrap}.B_Gxsq_dropdownArrow,.B_Gxsq_dropdownArrowOpen{color:var(--hub-text-tertiary);transition:transform .12s,color .12s;display:inline-flex}.B_Gxsq_dropdownArrowOpen{color:var(--hub-text-secondary);transform:rotate(180deg)}.B_Gxsq_dropdownPanel{z-index:20;border:1px solid var(--hub-border-2);background:var(--hub-bg-1);border-radius:8px;flex-direction:column;gap:1px;min-width:100%;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);left:0}.B_Gxsq_dropdownItem,.B_Gxsq_dropdownItemActive{text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:5px 8px;font-size:12px;line-height:16px;transition:color .12s,background .12s;display:flex}.B_Gxsq_dropdownItem{color:var(--hub-text-secondary);background:0 0}.B_Gxsq_dropdownItem:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}.B_Gxsq_dropdownItemActive{color:var(--hub-brand);background:var(--hub-brand-tint);font-weight:600}.B_Gxsq_dropdownItemLabel{white-space:nowrap}.B_Gxsq_dropdownCount,.B_Gxsq_dropdownCountActive{text-align:center;border-radius:999px;min-width:16px;padding:0 5px;font-size:10px;line-height:14px}.B_Gxsq_dropdownCount{color:var(--hub-text-tertiary);background:var(--hub-bg-btn)}.B_Gxsq_dropdownCountActive{color:var(--hub-text-on-fill);background:var(--hub-btn-fill)}";
4840
+ const css$4 = ".B_Gxsq_dropdown{flex-shrink:0;position:relative}.B_Gxsq_dropdownFill{width:100%}.B_Gxsq_dropdownFill>.B_Gxsq_dropdownBtn{justify-content:space-between;width:100%}.B_Gxsq_dropdownBtn{box-sizing:border-box;border:1px solid var(--hub-border-2);height:28px;color:var(--hub-text-primary);background:var(--hub-bg-hover);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;align-items:center;gap:6px;padding:0 10px;font-size:12px;line-height:26px;transition:color .12s,background .12s,border-color .12s;display:inline-flex}.B_Gxsq_dropdownBtn:hover{background:#80808047}.B_Gxsq_dropdownLabel{white-space:nowrap}.B_Gxsq_dropdownArrow,.B_Gxsq_dropdownArrowOpen{color:var(--hub-text-tertiary);transition:transform .12s,color .12s;display:inline-flex}.B_Gxsq_dropdownArrowOpen{color:var(--hub-text-secondary);transform:rotate(180deg)}.B_Gxsq_dropdownPanel{z-index:20;border:1px solid var(--hub-border-2);background:var(--hub-bg-1);border-radius:8px;flex-direction:column;gap:1px;min-width:100%;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);left:0}.B_Gxsq_dropdownItem,.B_Gxsq_dropdownItemActive{text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:5px 8px;font-size:12px;line-height:16px;transition:color .12s,background .12s;display:flex}.B_Gxsq_dropdownItem{color:var(--hub-text-secondary);background:0 0}.B_Gxsq_dropdownItem:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}.B_Gxsq_dropdownItemActive{color:var(--hub-brand);background:var(--hub-brand-tint);font-weight:600}.B_Gxsq_dropdownItemLabel{white-space:nowrap}.B_Gxsq_dropdownCount,.B_Gxsq_dropdownCountActive{text-align:center;border-radius:999px;min-width:16px;padding:0 5px;font-size:10px;line-height:14px}.B_Gxsq_dropdownCount{color:var(--hub-text-tertiary);background:var(--hub-bg-btn)}.B_Gxsq_dropdownCountActive{color:var(--hub-text-on-fill);background:var(--hub-btn-fill)}";
4820
4841
  const tagId$4 = "dsh-plugin/Dropdown.module.css";
4821
4842
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$4) + "]") === null) {
4822
4843
  const tag = document.createElement("style");
@@ -4831,19 +4852,63 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4831
4852
  css: css$4
4832
4853
  });
4833
4854
  var Dropdown_module_css_default = {
4834
- "dropdownArrow": "B_Gxsq_dropdownArrow",
4835
- "dropdownItemActive": "B_Gxsq_dropdownItemActive",
4836
- "dropdownLabel": "B_Gxsq_dropdownLabel",
4837
- "dropdownCount": "B_Gxsq_dropdownCount",
4838
4855
  "dropdownBtn": "B_Gxsq_dropdownBtn",
4856
+ "dropdownArrow": "B_Gxsq_dropdownArrow",
4857
+ "dropdownItem": "B_Gxsq_dropdownItem",
4858
+ "dropdownFill": "B_Gxsq_dropdownFill",
4839
4859
  "dropdown": "B_Gxsq_dropdown",
4840
- "dropdownPanel": "B_Gxsq_dropdownPanel",
4860
+ "dropdownLabel": "B_Gxsq_dropdownLabel",
4861
+ "dropdownItemActive": "B_Gxsq_dropdownItemActive",
4841
4862
  "dropdownCountActive": "B_Gxsq_dropdownCountActive",
4842
- "dropdownItem": "B_Gxsq_dropdownItem",
4843
4863
  "dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen",
4864
+ "dropdownPanel": "B_Gxsq_dropdownPanel",
4865
+ "dropdownCount": "B_Gxsq_dropdownCount",
4844
4866
  "dropdownItemLabel": "B_Gxsq_dropdownItemLabel"
4845
4867
  };
4846
4868
  //#endregion
4869
+ //#region \0dsh-css:src/client/styles/Toggle.module.css.mjs
4870
+ const css$3 = ".k-cD4G_toggle,.k-cD4G_toggleOn{cursor:pointer;border:none;border-radius:999px;flex:none;align-items:center;width:34px;height:18px;padding:0;transition:background-color .15s;display:inline-flex}.k-cD4G_toggle{background:var(--hub-bg-3);box-shadow:inset 0 0 0 1px var(--hub-border-2)}.k-cD4G_toggle:hover{background:var(--hub-bg-hover)}.k-cD4G_toggleOn{background:var(--hub-brand)}.k-cD4G_toggleOn:hover{background:var(--hub-brand-hover)}.k-cD4G_toggle:disabled,.k-cD4G_toggleOn:disabled{opacity:.5;cursor:not-allowed}.k-cD4G_knob{background:#fff;border-radius:999px;width:14px;height:14px;transition:transform .15s;display:block;transform:translate(2px);box-shadow:0 1px 2px #00000040}.k-cD4G_toggleOn .k-cD4G_knob{transform:translate(18px)}";
4871
+ const tagId$3 = "dsh-plugin/Toggle.module.css";
4872
+ if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
4873
+ const tag = document.createElement("style");
4874
+ tag.dataset.plugin = "dsh-plugin";
4875
+ tag.dataset.pluginCss = tagId$3;
4876
+ tag.textContent = css$3;
4877
+ document.head.appendChild(tag);
4878
+ }
4879
+ const cssRegistry$3 = globalThis.__DSH_PLUGIN_CSS__ ??= [];
4880
+ if (!cssRegistry$3.some((e) => e.tagId === tagId$3)) cssRegistry$3.push({
4881
+ tagId: tagId$3,
4882
+ css: css$3
4883
+ });
4884
+ var Toggle_module_css_default = {
4885
+ "knob": "k-cD4G_knob",
4886
+ "toggle": "k-cD4G_toggle",
4887
+ "toggleOn": "k-cD4G_toggleOn"
4888
+ };
4889
+ //#endregion
4890
+ //#region src/client/components/ui/Toggle.tsx
4891
+ /**
4892
+ * DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
4893
+ * Website: https://dsh-plugin.org
4894
+ * GitHub: https://github.com/dshplugin/dsh-plugin-hub
4895
+ *
4896
+ * Compact switch used by the settings rows. Native-button based so it is
4897
+ * keyboard focusable and announces state via aria-checked; styling driven
4898
+ * by the --hub-* tokens (on = brand fill, off = neutral track).
4899
+ */
4900
+ function Toggle({ checked, onChange, title, disabled }) {
4901
+ return (0, react.createElement)("button", {
4902
+ type: "button",
4903
+ role: "switch",
4904
+ "aria-checked": checked,
4905
+ disabled,
4906
+ title,
4907
+ className: checked ? Toggle_module_css_default.toggleOn : Toggle_module_css_default.toggle,
4908
+ onClick: () => onChange(!checked)
4909
+ }, (0, react.createElement)("span", { className: Toggle_module_css_default.knob }));
4910
+ }
4911
+ //#endregion
4847
4912
  //#region src/client/components/ui/Dropdown.tsx
4848
4913
  /**
4849
4914
  * DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
@@ -4903,49 +4968,6 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4903
4968
  }, (0, react.createElement)("span", { className: Dropdown_module_css_default.dropdownItemLabel }, o.label), typeof o.count === "number" ? (0, react.createElement)("span", { className: o.value === value ? Dropdown_module_css_default.dropdownCountActive : Dropdown_module_css_default.dropdownCount }, o.count) : null))));
4904
4969
  }
4905
4970
  //#endregion
4906
- //#region \0dsh-css:src/client/styles/Toggle.module.css.mjs
4907
- const css$3 = ".k-cD4G_toggle,.k-cD4G_toggleOn{cursor:pointer;border:none;border-radius:999px;flex:none;align-items:center;width:34px;height:18px;padding:0;transition:background-color .15s;display:inline-flex}.k-cD4G_toggle{background:var(--hub-bg-3);box-shadow:inset 0 0 0 1px var(--hub-border-2)}.k-cD4G_toggle:hover{background:var(--hub-bg-hover)}.k-cD4G_toggleOn{background:var(--hub-brand)}.k-cD4G_toggleOn:hover{background:var(--hub-brand-hover)}.k-cD4G_toggle:disabled,.k-cD4G_toggleOn:disabled{opacity:.5;cursor:not-allowed}.k-cD4G_knob{background:#fff;border-radius:999px;width:14px;height:14px;transition:transform .15s;display:block;transform:translate(2px);box-shadow:0 1px 2px #00000040}.k-cD4G_toggleOn .k-cD4G_knob{transform:translate(18px)}";
4908
- const tagId$3 = "dsh-plugin/Toggle.module.css";
4909
- if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
4910
- const tag = document.createElement("style");
4911
- tag.dataset.plugin = "dsh-plugin";
4912
- tag.dataset.pluginCss = tagId$3;
4913
- tag.textContent = css$3;
4914
- document.head.appendChild(tag);
4915
- }
4916
- const cssRegistry$3 = globalThis.__DSH_PLUGIN_CSS__ ??= [];
4917
- if (!cssRegistry$3.some((e) => e.tagId === tagId$3)) cssRegistry$3.push({
4918
- tagId: tagId$3,
4919
- css: css$3
4920
- });
4921
- var Toggle_module_css_default = {
4922
- "knob": "k-cD4G_knob",
4923
- "toggleOn": "k-cD4G_toggleOn",
4924
- "toggle": "k-cD4G_toggle"
4925
- };
4926
- //#endregion
4927
- //#region src/client/components/ui/Toggle.tsx
4928
- /**
4929
- * DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
4930
- * Website: https://dsh-plugin.org
4931
- * GitHub: https://github.com/dshplugin/dsh-plugin-hub
4932
- *
4933
- * Compact switch used by the settings rows. Native-button based so it is
4934
- * keyboard focusable and announces state via aria-checked; styling driven
4935
- * by the --hub-* tokens (on = brand fill, off = neutral track).
4936
- */
4937
- function Toggle({ checked, onChange, title, disabled }) {
4938
- return (0, react.createElement)("button", {
4939
- type: "button",
4940
- role: "switch",
4941
- "aria-checked": checked,
4942
- disabled,
4943
- title,
4944
- className: checked ? Toggle_module_css_default.toggleOn : Toggle_module_css_default.toggle,
4945
- onClick: () => onChange(!checked)
4946
- }, (0, react.createElement)("span", { className: Toggle_module_css_default.knob }));
4947
- }
4948
- //#endregion
4949
4971
  //#region \0dsh-css:src/client/styles/DiagnosticsView.module.css.mjs
4950
4972
  const css$2 = ".k9eRya_panel{flex-direction:column;min-width:0;display:flex}.k9eRya_envRow{border-bottom:1px solid var(--hub-border-1);align-items:center;gap:10px;padding:8px 12px;display:flex}.k9eRya_envLabel{flex:1;min-width:0}.k9eRya_envTitle{color:var(--hub-text-primary);font-size:12.5px;font-weight:500;line-height:18px}.k9eRya_envDesc{color:var(--hub-text-tertiary);font-size:11px;line-height:16px}.k9eRya_envCopyBtn{height:24px;color:var(--hub-text-secondary);background:var(--hub-bg-hover);border:1px solid var(--hub-border-2);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;flex:none;padding:0 12px;font-size:11.5px;font-weight:500;transition:color .12s,background-color .12s,border-color .12s}.k9eRya_envCopyBtn:hover:not(:disabled){color:var(--hub-text-primary);background:var(--hub-bg-2)}.k9eRya_envCopyBtn:disabled{opacity:.55;cursor:default}.k9eRya_head{border-bottom:1px solid var(--hub-border-1);align-items:center;gap:10px;padding:8px 12px;display:flex}.k9eRya_headHint{min-width:0;color:var(--hub-text-tertiary);flex:1;font-size:11px;line-height:16px}.k9eRya_runBtn{height:24px;color:var(--hub-brand);background:var(--hub-brand-tint);cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid #0000;border-radius:6px;flex:none;padding:0 12px;font-size:11.5px;font-weight:500;transition:color .12s,background-color .12s,border-color .12s}.k9eRya_runBtn:hover:not(:disabled){color:#fff;background:var(--hub-brand);border-color:var(--hub-brand)}.k9eRya_runBtn:disabled{opacity:.55;cursor:default}.k9eRya_row{box-sizing:border-box;border:none;border-bottom:1px solid var(--hub-border-1);width:100%;min-width:0;font:inherit;text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;align-items:center;gap:10px;padding:9px 12px;transition:background-color .12s;display:flex}.k9eRya_row:last-of-type{border-bottom:none}.k9eRya_row:hover:not(:disabled){background:var(--hub-bg-hover)}.k9eRya_row:disabled{cursor:default}.k9eRya_name{color:var(--hub-text-primary);white-space:nowrap;flex:none;font-size:12.5px;font-weight:500;line-height:18px}.k9eRya_display{min-width:0;color:var(--hub-text-tertiary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:11px;line-height:16px;overflow:hidden}.k9eRya_meta{color:var(--hub-text-tertiary);font-variant-numeric:tabular-nums;flex:none;font-size:11px;line-height:16px}.k9eRya_badge{text-align:center;white-space:nowrap;font-variant-numeric:tabular-nums;border-radius:999px;flex:none;height:17px;padding:0 8px;font-size:10.5px;line-height:17px}.k9eRya_badgeOk{color:var(--hub-success);background:var(--hub-success-tint)}.k9eRya_badgeFail{color:var(--hub-danger-text);background:var(--hub-danger-tint)}.k9eRya_badgeRunning{color:var(--hub-text-secondary);background:var(--hub-bg-hover);animation:1s ease-in-out infinite k9eRya_diagPulse}.k9eRya_badgeIdle{color:var(--hub-text-disabled);background:var(--hub-bg-hover)}@keyframes k9eRya_diagPulse{0%,to{opacity:1}50%{opacity:.4}}.k9eRya_summary{padding:8px 12px 10px;font-size:11px;line-height:16px}.k9eRya_summaryOk{color:var(--hub-success)}.k9eRya_summaryFail{color:var(--hub-danger-text)}.k9eRya_summaryRunning{color:var(--hub-text-tertiary)}";
4951
4973
  const tagId$2 = "dsh-plugin/DiagnosticsView.module.css";
@@ -4962,29 +4984,29 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4962
4984
  css: css$2
4963
4985
  });
4964
4986
  var DiagnosticsView_module_css_default = {
4965
- "panel": "k9eRya_panel",
4966
- "summaryRunning": "k9eRya_summaryRunning",
4967
- "envRow": "k9eRya_envRow",
4968
- "headHint": "k9eRya_headHint",
4969
- "runBtn": "k9eRya_runBtn",
4970
- "display": "k9eRya_display",
4987
+ "badgeFail": "k9eRya_badgeFail",
4988
+ "row": "k9eRya_row",
4971
4989
  "badge": "k9eRya_badge",
4972
- "envCopyBtn": "k9eRya_envCopyBtn",
4973
- "envDesc": "k9eRya_envDesc",
4974
- "diagPulse": "k9eRya_diagPulse",
4975
- "envLabel": "k9eRya_envLabel",
4976
4990
  "summaryOk": "k9eRya_summaryOk",
4991
+ "summaryRunning": "k9eRya_summaryRunning",
4977
4992
  "head": "k9eRya_head",
4978
- "summaryFail": "k9eRya_summaryFail",
4979
- "row": "k9eRya_row",
4980
- "badgeOk": "k9eRya_badgeOk",
4981
- "summary": "k9eRya_summary",
4993
+ "envLabel": "k9eRya_envLabel",
4994
+ "name": "k9eRya_name",
4995
+ "runBtn": "k9eRya_runBtn",
4996
+ "envDesc": "k9eRya_envDesc",
4997
+ "meta": "k9eRya_meta",
4982
4998
  "envTitle": "k9eRya_envTitle",
4983
4999
  "badgeIdle": "k9eRya_badgeIdle",
4984
- "badgeFail": "k9eRya_badgeFail",
5000
+ "summary": "k9eRya_summary",
5001
+ "summaryFail": "k9eRya_summaryFail",
5002
+ "panel": "k9eRya_panel",
4985
5003
  "badgeRunning": "k9eRya_badgeRunning",
4986
- "name": "k9eRya_name",
4987
- "meta": "k9eRya_meta"
5004
+ "display": "k9eRya_display",
5005
+ "diagPulse": "k9eRya_diagPulse",
5006
+ "envCopyBtn": "k9eRya_envCopyBtn",
5007
+ "headHint": "k9eRya_headHint",
5008
+ "badgeOk": "k9eRya_badgeOk",
5009
+ "envRow": "k9eRya_envRow"
4988
5010
  };
4989
5011
  //#endregion
4990
5012
  //#region src/client/components/views/DiagnosticsView.tsx
@@ -5014,7 +5036,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5014
5036
  const INITIAL_ROWS = [
5015
5037
  {
5016
5038
  key: "npm",
5017
- display: "registry.npmjs.org",
5039
+ display: "",
5018
5040
  nameKey: "diagNpm",
5019
5041
  status: "idle",
5020
5042
  ms: null,
@@ -5083,7 +5105,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5083
5105
  if (ev.type === "ok" || ev.type === "fail") patchRows(ev.key, {
5084
5106
  status: ev.type === "ok" ? "ok" : "fail",
5085
5107
  ms: typeof ev.ms === "number" ? ev.ms : null,
5086
- statusCode: typeof ev.status === "number" ? ev.status : null
5108
+ statusCode: typeof ev.status === "number" ? ev.status : null,
5109
+ display: typeof ev.display === "string" ? ev.display : ""
5087
5110
  });
5088
5111
  }
5089
5112
  nl = buf.indexOf("\n");
@@ -5127,7 +5150,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5127
5150
  disabled: r.status === "running",
5128
5151
  onClick: () => run(r.key),
5129
5152
  title: t("diagRecheck")
5130
- }, (0, react.createElement)("span", { className: DiagnosticsView_module_css_default.name }, t(r.nameKey)), (0, react.createElement)("span", { className: DiagnosticsView_module_css_default.display }, r.display), (0, react.createElement)("span", { className: DiagnosticsView_module_css_default.meta }, r.status === "ok" && r.ms !== null ? `${r.ms} ms` : ""), badge);
5153
+ }, (0, react.createElement)("span", { className: DiagnosticsView_module_css_default.name }, t(r.nameKey)), (0, react.createElement)("span", { className: DiagnosticsView_module_css_default.display }, r.display !== "" ? r.display : t("diagNpmUnset")), (0, react.createElement)("span", { className: DiagnosticsView_module_css_default.meta }, r.status === "ok" && r.ms !== null ? `${r.ms} ms` : ""), badge);
5131
5154
  }), (0, react.createElement)("div", { className: `${DiagnosticsView_module_css_default.summary} ${anyRunning ? DiagnosticsView_module_css_default.summaryRunning : allOk ? DiagnosticsView_module_css_default.summaryOk : DiagnosticsView_module_css_default.summaryFail}` }, anyRunning ? t("diagSummaryRunning") : allOk ? t("diagSummaryOk") : t("diagSummaryFail")));
5132
5155
  }
5133
5156
  //#endregion
@@ -5147,57 +5170,57 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5147
5170
  css: css$1
5148
5171
  });
5149
5172
  var LogsView_module_css_default = {
5150
- "badgeError": "_3j77BW_badgeError",
5173
+ "footCount": "_3j77BW_footCount",
5174
+ "footActions": "_3j77BW_footActions",
5175
+ "catBadge": "_3j77BW_catBadge",
5176
+ "catInstall": "_3j77BW_catInstall",
5177
+ "pathDialogFoot": "_3j77BW_pathDialogFoot",
5151
5178
  "pathDialogHint": "_3j77BW_pathDialogHint",
5152
- "search": "_3j77BW_search",
5153
- "catUpdate": "_3j77BW_catUpdate",
5179
+ "badgeWarn": "_3j77BW_badgeWarn",
5180
+ "badgeDebug": "_3j77BW_badgeDebug",
5181
+ "catSystem": "_3j77BW_catSystem",
5182
+ "badge": "_3j77BW_badge",
5183
+ "linkBtn": "_3j77BW_linkBtn",
5184
+ "actions": "_3j77BW_actions",
5185
+ "pathDialogDesc": "_3j77BW_pathDialogDesc",
5186
+ "head": "_3j77BW_head",
5154
5187
  "more": "_3j77BW_more",
5155
- "panel": "_3j77BW_panel",
5156
- "entry": "_3j77BW_entry",
5188
+ "list": "_3j77BW_list",
5189
+ "pathDialogRow": "_3j77BW_pathDialogRow",
5190
+ "searchInput": "_3j77BW_searchInput",
5157
5191
  "filterChip": "_3j77BW_filterChip",
5192
+ "panel": "_3j77BW_panel",
5193
+ "empty": "_3j77BW_empty",
5194
+ "headHint": "_3j77BW_headHint",
5195
+ "catDiagnostics": "_3j77BW_catDiagnostics",
5196
+ "clearBtn": "_3j77BW_clearBtn",
5158
5197
  "event": "_3j77BW_event",
5159
- "pathDialogRow": "_3j77BW_pathDialogRow",
5160
- "foot": "_3j77BW_foot",
5161
- "pathDialogReset": "_3j77BW_pathDialogReset",
5162
- "actions": "_3j77BW_actions",
5163
- "badgeWarn": "_3j77BW_badgeWarn",
5198
+ "footPath": "_3j77BW_footPath",
5164
5199
  "catUninstall": "_3j77BW_catUninstall",
5165
5200
  "catSettings": "_3j77BW_catSettings",
5166
- "clearBtn": "_3j77BW_clearBtn",
5167
- "pathLabel": "_3j77BW_pathLabel",
5168
5201
  "logList": "_3j77BW_logList",
5169
- "footCount": "_3j77BW_footCount",
5170
- "catInstall": "_3j77BW_catInstall",
5171
- "previewRow": "_3j77BW_previewRow",
5172
- "badgeInfo": "_3j77BW_badgeInfo",
5173
5202
  "moreEnd": "_3j77BW_moreEnd",
5174
- "catSystem": "_3j77BW_catSystem",
5175
- "footFail": "_3j77BW_footFail",
5176
- "btn": "_3j77BW_btn",
5177
- "catBadge": "_3j77BW_catBadge",
5203
+ "message": "_3j77BW_message",
5204
+ "pathLabel": "_3j77BW_pathLabel",
5178
5205
  "pathDraft": "_3j77BW_pathDraft",
5179
- "linkBtn": "_3j77BW_linkBtn",
5180
- "head": "_3j77BW_head",
5181
- "badge": "_3j77BW_badge",
5182
- "list": "_3j77BW_list",
5183
- "searchInput": "_3j77BW_searchInput",
5184
- "catDiagnostics": "_3j77BW_catDiagnostics",
5185
- "empty": "_3j77BW_empty",
5186
- "footActions": "_3j77BW_footActions",
5206
+ "btn": "_3j77BW_btn",
5207
+ "previewRow": "_3j77BW_previewRow",
5187
5208
  "badgeSuccess": "_3j77BW_badgeSuccess",
5188
- "badgeDebug": "_3j77BW_badgeDebug",
5189
- "pathDialogFoot": "_3j77BW_pathDialogFoot",
5190
- "footPath": "_3j77BW_footPath",
5191
- "pathText": "_3j77BW_pathText",
5192
- "filterBar": "_3j77BW_filterBar",
5193
- "pathRow": "_3j77BW_pathRow",
5194
- "pathDialog": "_3j77BW_pathDialog",
5209
+ "badgeInfo": "_3j77BW_badgeInfo",
5210
+ "footFail": "_3j77BW_footFail",
5211
+ "foot": "_3j77BW_foot",
5212
+ "catUpdate": "_3j77BW_catUpdate",
5213
+ "entry": "_3j77BW_entry",
5195
5214
  "filterChipActive": "_3j77BW_filterChipActive",
5196
5215
  "time": "_3j77BW_time",
5197
5216
  "headActions": "_3j77BW_headActions",
5198
- "message": "_3j77BW_message",
5199
- "headHint": "_3j77BW_headHint",
5200
- "pathDialogDesc": "_3j77BW_pathDialogDesc"
5217
+ "filterBar": "_3j77BW_filterBar",
5218
+ "pathText": "_3j77BW_pathText",
5219
+ "search": "_3j77BW_search",
5220
+ "pathDialog": "_3j77BW_pathDialog",
5221
+ "pathDialogReset": "_3j77BW_pathDialogReset",
5222
+ "badgeError": "_3j77BW_badgeError",
5223
+ "pathRow": "_3j77BW_pathRow"
5201
5224
  };
5202
5225
  //#endregion
5203
5226
  //#region src/client/components/modals/LogsModal.tsx
@@ -5768,6 +5791,30 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5768
5791
  * Diagnostics — live connectivity probe + environment snapshot
5769
5792
  * Logs — system log viewer + storage location
5770
5793
  */
5794
+ /** npm 镜像源预设:空串 = 未配置(跟随用户本机 npm 配置,本插件不注入任何 registry)。
5795
+ * 只提供常见国内顶级镜像下拉,不做自定义输入 —— 想用其它镜像直接在 ~/.npmrc 配置即可。 */
5796
+ const MIRROR_PRESETS = [
5797
+ {
5798
+ value: "",
5799
+ labelKey: "mirrorNone"
5800
+ },
5801
+ {
5802
+ value: "https://registry.npmjs.org",
5803
+ labelKey: "mirrorOfficial"
5804
+ },
5805
+ {
5806
+ value: "https://registry.npmmirror.com",
5807
+ labelKey: "mirrorNpmmirror"
5808
+ },
5809
+ {
5810
+ value: "https://mirrors.cloud.tencent.com/npm/",
5811
+ labelKey: "mirrorTencent"
5812
+ },
5813
+ {
5814
+ value: "https://mirrors.tuna.tsinghua.edu.cn/npm/",
5815
+ labelKey: "mirrorTsinghua"
5816
+ }
5817
+ ];
5771
5818
  /** 左侧导航:顺序即展示顺序;labelKey 是分组标题,icon 是行内小图标。 */
5772
5819
  const NAV = [
5773
5820
  {
@@ -5796,21 +5843,6 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5796
5843
  icon: ResetIcon
5797
5844
  }
5798
5845
  ];
5799
- /** npm 镜像源预设:空串 = 官方源;值相等即视为选中对应预设,其余进入「自定义」输入。 */
5800
- const MIRROR_PRESETS = [
5801
- {
5802
- value: "",
5803
- labelKey: "mirrorOfficial"
5804
- },
5805
- {
5806
- value: "https://registry.npmmirror.com",
5807
- labelKey: "mirrorNpmmirror"
5808
- },
5809
- {
5810
- value: "https://mirrors.cloud.tencent.com/npm/",
5811
- labelKey: "mirrorTencent"
5812
- }
5813
- ];
5814
5846
  /** 设置行:默认标签左控件右;stack=true 时控件独占一行(文本框整行显示),hairline 分隔。 */
5815
5847
  function SettingRow({ title, desc, children, stack = false }) {
5816
5848
  return (0, react.createElement)("div", { className: stack ? SettingsView_module_css_default.settingRowStack : SettingsView_module_css_default.settingRow }, (0, react.createElement)("div", { className: SettingsView_module_css_default.settingLabel }, (0, react.createElement)("div", { className: SettingsView_module_css_default.settingTitle }, title), desc ? (0, react.createElement)("div", { className: SettingsView_module_css_default.settingDesc }, desc) : null), (0, react.createElement)("div", { className: stack ? SettingsView_module_css_default.settingControlStack : SettingsView_module_css_default.settingControl }, children));
@@ -5820,13 +5852,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5820
5852
  const [section, setSection] = (0, react.useState)("updates");
5821
5853
  /** 恢复默认确认弹窗:点按钮先弹窗询问,确认后才真正 reset(不做两段式按钮) */
5822
5854
  const [resetConfirm, setResetConfirm] = (0, react.useState)(false);
5823
- const mirrorCustom = !MIRROR_PRESETS.some((p) => p.value === settings.npmRegistry);
5824
- const onMirrorChange = (value) => {
5825
- if (value === "custom") return;
5826
- update({ npmRegistry: value });
5827
- };
5828
- const onMirrorInput = (e) => update({ npmRegistry: e.target.value });
5829
5855
  const onProxyChange = (e) => update({ proxy: e.target.value });
5856
+ const onMirrorChange = (value) => update({ npmRegistry: value });
5830
5857
  /** 每个分组的页面副标题(导航标题之上再补一句说明,保持桌面设置质感) */
5831
5858
  const pageDesc = {
5832
5859
  updates: t("settingsUpdateDesc"),
@@ -5847,29 +5874,16 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5847
5874
  }), (0, react.createElement)(SettingRow, {
5848
5875
  title: t("settingsMirror"),
5849
5876
  desc: t("settingsMirrorDesc"),
5877
+ stack: true,
5850
5878
  children: (0, react.createElement)(Dropdown, {
5851
- value: mirrorCustom ? "custom" : settings.npmRegistry,
5852
- options: [...MIRROR_PRESETS.map((p) => ({
5853
- value: p.value,
5854
- label: t(p.labelKey)
5855
- })), {
5856
- value: "custom",
5857
- label: t("mirrorCustom")
5858
- }],
5879
+ value: settings.npmRegistry,
5880
+ options: MIRROR_PRESETS.map((m) => ({
5881
+ value: m.value,
5882
+ label: t(m.labelKey)
5883
+ })),
5859
5884
  onChange: onMirrorChange,
5860
5885
  title: t("settingsMirror"),
5861
- className: SettingsView_module_css_default.controlDropdown
5862
- })
5863
- }), mirrorCustom && (0, react.createElement)(SettingRow, {
5864
- title: t("mirrorCustom"),
5865
- stack: true,
5866
- children: (0, react.createElement)("input", {
5867
- className: SettingsView_module_css_default.textInput,
5868
- type: "url",
5869
- value: settings.npmRegistry,
5870
- placeholder: "https://registry.npmjs.org",
5871
- spellCheck: false,
5872
- onChange: onMirrorInput
5886
+ className: `${SettingsView_module_css_default.controlDropdown} ${Dropdown_module_css_default.dropdownFill}`
5873
5887
  })
5874
5888
  }), (0, react.createElement)(SettingRow, {
5875
5889
  title: t("settingsProxy"),
@@ -6045,7 +6059,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6045
6059
  const queue = useTaskQueue({
6046
6060
  t,
6047
6061
  refreshInstalled: catalog.refreshInstalled,
6048
- onInstallDone: (viaModal, repo, needsRestart) => {
6062
+ onInstallDone: (viaModal, repo, needsRestart, update) => {
6049
6063
  setInstallNeedsRestart(needsRestart);
6050
6064
  if (viaModal) setInstallDone(true);
6051
6065
  else setToast({
@@ -6054,6 +6068,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6054
6068
  });
6055
6069
  setNotifications(addSuccess({
6056
6070
  kind: "install",
6071
+ action: update ? "update" : "install",
6057
6072
  repo: repo ?? ""
6058
6073
  }));
6059
6074
  },
@@ -6069,7 +6084,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6069
6084
  repo: repo ?? ""
6070
6085
  }));
6071
6086
  },
6072
- onError: (message, repo, kind, command, attempts) => {
6087
+ onError: (message, repo, kind, command, attempts, update) => {
6073
6088
  const issueRepo = issueRepoOf(repo ?? "", catalog.installedItems, catalog.plugins);
6074
6089
  setErrorMsg({
6075
6090
  message,
@@ -6080,7 +6095,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6080
6095
  });
6081
6096
  setNotifications(addFailure({
6082
6097
  kind,
6083
- repo: issueRepo ?? "",
6098
+ action: update ? "update" : "install",
6099
+ repo: repo ?? "",
6084
6100
  message,
6085
6101
  command,
6086
6102
  attempts
@@ -6376,7 +6392,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6376
6392
  });
6377
6393
  }
6378
6394
  }), showHubUpdate && (0, react.createElement)(HubUpdateModal, {
6379
- info: catalog.hubUpdateInfo ?? { version: "1.3.5" },
6395
+ info: catalog.hubUpdateInfo ?? { version: "1.3.6" },
6380
6396
  lang,
6381
6397
  t,
6382
6398
  hasUpdate: catalog.hubHasUpdate,