dsh-plugin 1.3.5 → 1.3.7
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/README.en.md +72 -18
- package/README.md +72 -18
- package/client/client.js +582 -425
- package/client/client.js.map +1 -1
- package/lib/http/routes.js +90 -9
- package/lib/services/install/npm-resolve.js +3 -1
- package/lib/services/probe.js +43 -0
- package/lib/services/settings.js +1 -1
- package/lib/types/services/install/npm-resolve.d.ts +3 -1
- package/lib/types/services/probe.d.ts +11 -0
- package/lib/types/services/settings.d.ts +2 -2
- package/package.json +3 -3
- package/src/client/components/PluginHubSection.tsx +42 -7
- package/src/client/components/modals/NotificationsModal.tsx +27 -5
- package/src/client/components/modals/modals.tsx +18 -3
- package/src/client/components/views/DiagnosticsView.tsx +21 -7
- package/src/client/components/views/SettingsView.tsx +94 -46
- package/src/client/hooks/useSettings.ts +3 -3
- package/src/client/hooks/useTaskQueue.ts +18 -8
- package/src/client/locales.ts +48 -11
- package/src/client/logic/failures.ts +41 -9
- package/src/client/logic/renderMarkdown.ts +2 -2
- package/src/client/logic/urls.ts +26 -8
- package/src/client/styles/Dropdown.module.css +10 -0
- package/src/client/styles/Modal.module.css +52 -0
- package/src/client/styles/SettingsView.module.css +24 -0
- package/src/server/http/routes.ts +87 -9
- package/src/server/services/install/npm-resolve.ts +3 -1
- package/src/server/services/probe.ts +43 -0
- package/src/server/services/settings.ts +3 -3
package/client/client.js
CHANGED
|
@@ -108,14 +108,18 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
108
108
|
settingsUpdateDesc: "更新检查方式与安装走到的网络通道",
|
|
109
109
|
settingsCheckOnStart: "启动时检查更新",
|
|
110
110
|
settingsCheckOnStartDesc: "打开插件中心时检查已安装插件是否有新版,发现更新会提示",
|
|
111
|
+
settingsProxy: "HTTP 代理",
|
|
112
|
+
settingsProxyDesc: "npm / git / 目录数据请求统一走该代理;留空直连",
|
|
113
|
+
proxyCheckChecking: "正在测试该代理地址…",
|
|
114
|
+
proxyCheckOk: "测试可达,安装与目录请求将统一走该代理",
|
|
115
|
+
proxyCheckFail: "此地址测试不通,仍可保存;请确认代理已开启、地址与端口无误",
|
|
111
116
|
settingsMirror: "npm 镜像源",
|
|
112
|
-
settingsMirrorDesc: "npm
|
|
117
|
+
settingsMirrorDesc: "默认跟随本机 npm 配置;官方源慢可换国内镜像",
|
|
118
|
+
mirrorNone: "未配置(跟随本机 npm 配置)",
|
|
113
119
|
mirrorOfficial: "官方源 registry.npmjs.org",
|
|
114
120
|
mirrorNpmmirror: "阿里云 npmmirror",
|
|
115
121
|
mirrorTencent: "腾讯云镜像",
|
|
116
|
-
|
|
117
|
-
settingsProxy: "HTTP 代理",
|
|
118
|
-
settingsProxyDesc: "npm / git / 目录数据请求统一走该代理;留空直连",
|
|
122
|
+
mirrorTsinghua: "清华大学 TUNA 镜像",
|
|
119
123
|
settingsSecurity: "安全信任",
|
|
120
124
|
settingsSecurityDesc: "命令行安装的三个通道开关:NPM 包、GitHub 源码与 DSH 命令",
|
|
121
125
|
settingsEnableNpm: "启用 NPM 安装",
|
|
@@ -179,8 +183,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
179
183
|
logEmptyFilter: "没有符合条件的日志",
|
|
180
184
|
settingsDiagFail: "不可达",
|
|
181
185
|
diagNpm: "npm 源",
|
|
186
|
+
diagNpmUnset: "未配置(跟随本机 npm 配置)",
|
|
182
187
|
diagGithub: "GitHub",
|
|
183
188
|
diagCatalog: "目录站点",
|
|
189
|
+
diagProxy: "HTTP 代理",
|
|
184
190
|
diagOk: "OK",
|
|
185
191
|
diagChecking: "检测中…",
|
|
186
192
|
diagIdle: "未检测",
|
|
@@ -227,6 +233,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
227
233
|
installNow: "直接安装",
|
|
228
234
|
installing: "安装中…",
|
|
229
235
|
installDone: "安装成功",
|
|
236
|
+
updateDone: "更新成功",
|
|
230
237
|
installResultTitle: "插件安装成功",
|
|
231
238
|
installResultDesc: "",
|
|
232
239
|
confirmUpdateTitle: "确认更新",
|
|
@@ -266,6 +273,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
266
273
|
errorTitle: "操作失败",
|
|
267
274
|
errorTitleInstall: "安装失败",
|
|
268
275
|
errorTitleUninstall: "卸载失败",
|
|
276
|
+
errorTitleUpdate: "更新失败",
|
|
269
277
|
errorPlugin: "插件",
|
|
270
278
|
errorClose: "知道了",
|
|
271
279
|
errorCopy: "复制错误信息",
|
|
@@ -275,9 +283,12 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
275
283
|
failIssueBig: "一键提交 BUG 到 GitHub Issue 为开源作贡献",
|
|
276
284
|
failPrepareHint: "该插件安装时的构建脚本执行失败(git 分发常缺失子模块或构建产物),属插件打包分发问题。请向作者仓库提交 Issue 反馈。",
|
|
277
285
|
failPackagingHint: "该插件不支持官方默认安装方式:其 git 分发缺少构建产物(package.json 声明的入口文件在仓库中不存在),说明作者未适配官方安装流程。请到作者仓库提交 Issue 反馈,请其提交构建产物或发布 npm 版。",
|
|
278
|
-
failIgnoredBuild: "
|
|
286
|
+
failIgnoredBuild: "该插件或其依赖需要执行构建脚本,被 pnpm 的安全白名单(allowBuilds)默认拦截导致安装失败(如原生模块 node-pty、或 git 安装时插件的 prepare 脚本)—— 其他插件不受影响,属该插件的依赖/打包问题。建议向作者仓库一键反馈,请作者改用预编译版本(如 node-pty-prebuilt-multiarch)或移除安装期构建。",
|
|
279
287
|
failNpmTooLow: "怀疑本机 npm 版本过低:npm 解析插件依赖时内部崩溃(这是 npm 自身的已知缺陷,不是插件问题)。请升级 npm 后重试:npm install -g npm@latest",
|
|
280
288
|
failNpmTooLowV: "本机 npm 版本过低(当前 v{v}):npm 解析插件依赖时内部崩溃(这是 npm 自身的已知缺陷,不是插件问题)。请升级 npm 后重试:npm install -g npm@latest",
|
|
289
|
+
failNetworkHint: "安装前检测到网络不通:无法连接到安装源(可能是断网、DNS 解析失败、被防火墙拦截,或代理配置有问题)。这不是插件本身的问题 —— 请检查网络连接,或到「设置」里确认 HTTP 代理配置,再到「系统诊断」运行一次连通性检测,然后重试。",
|
|
290
|
+
failNetworkTarget: "无法访问 {url} —— 你的网络连接不通",
|
|
291
|
+
failNetworkRunDiag: "去系统诊断检测网络",
|
|
281
292
|
reportIssue: "去插件仓库提交 Issue",
|
|
282
293
|
detail: "打开详情",
|
|
283
294
|
noResult: "没有找到匹配的插件",
|
|
@@ -411,14 +422,18 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
411
422
|
settingsCheckOnStartDesc: "Check installed plugins for new versions when the hub opens; you will be notified when updates are found",
|
|
412
423
|
settingsAutoInstall: "Auto-install updates",
|
|
413
424
|
settingsAutoInstallDesc: "Install detected updates in the background without asking (a host restart applies them)",
|
|
414
|
-
|
|
415
|
-
|
|
425
|
+
settingsProxy: "HTTP proxy",
|
|
426
|
+
settingsProxyDesc: "Route npm, git and catalog requests through this proxy; leave empty to connect directly",
|
|
427
|
+
proxyCheckChecking: "Testing this proxy address…",
|
|
428
|
+
proxyCheckOk: "Reachable — installs and catalog requests will route through it",
|
|
429
|
+
proxyCheckFail: "Unreachable, but you can still save it; make sure the proxy is running and the address and port are correct",
|
|
430
|
+
settingsMirror: "npm mirror",
|
|
431
|
+
settingsMirrorDesc: "Unset by default — follows local npm config; pick a domestic mirror if slow",
|
|
432
|
+
mirrorNone: "Unset (follow local npm config)",
|
|
416
433
|
mirrorOfficial: "Official registry.npmjs.org",
|
|
417
434
|
mirrorNpmmirror: "Alibaba npmmirror",
|
|
418
435
|
mirrorTencent: "Tencent Cloud mirror",
|
|
419
|
-
|
|
420
|
-
settingsProxy: "HTTP proxy",
|
|
421
|
-
settingsProxyDesc: "Route npm, git and catalog requests through this proxy; leave empty to connect directly",
|
|
436
|
+
mirrorTsinghua: "Tsinghua TUNA mirror",
|
|
422
437
|
settingsSecurity: "Security & Trust",
|
|
423
438
|
settingsSecurityDesc: "Toggles for the three command-line install channels: npm packages, GitHub sources and DSH commands",
|
|
424
439
|
settingsEnableNpm: "Enable npm installs",
|
|
@@ -482,8 +497,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
482
497
|
logEmptyFilter: "No matching log entries",
|
|
483
498
|
settingsDiagFail: "Unreachable",
|
|
484
499
|
diagNpm: "npm registry",
|
|
500
|
+
diagNpmUnset: "Unset (follow local npm config)",
|
|
485
501
|
diagGithub: "GitHub",
|
|
486
502
|
diagCatalog: "Catalog site",
|
|
503
|
+
diagProxy: "HTTP proxy",
|
|
487
504
|
diagOk: "OK",
|
|
488
505
|
diagChecking: "Checking…",
|
|
489
506
|
diagIdle: "Not checked",
|
|
@@ -530,6 +547,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
530
547
|
installNow: "Install",
|
|
531
548
|
installing: "Installing…",
|
|
532
549
|
installDone: "Installed",
|
|
550
|
+
updateDone: "Updated",
|
|
533
551
|
installResultTitle: "Plugin installed successfully",
|
|
534
552
|
installResultDesc: "",
|
|
535
553
|
confirmUpdateTitle: "Confirm update",
|
|
@@ -570,6 +588,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
570
588
|
errorTitle: "Operation failed",
|
|
571
589
|
errorTitleInstall: "Install failed",
|
|
572
590
|
errorTitleUninstall: "Removal failed",
|
|
591
|
+
errorTitleUpdate: "Update failed",
|
|
573
592
|
errorPlugin: "Plugin",
|
|
574
593
|
errorClose: "Got it",
|
|
575
594
|
errorCopy: "Copy error",
|
|
@@ -579,9 +598,12 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
579
598
|
failIssueBig: "Report this bug to GitHub — contribute to open source",
|
|
580
599
|
failPrepareHint: "This plugin failed while running its build scripts during install (git tarballs often miss submodules or build output). This is a packaging issue of the plugin itself — please report it to the author repository.",
|
|
581
600
|
failPackagingHint: "This plugin does not support the official default install method: its git distribution lacks the build output (the entry file declared in package.json is not in the repository), so it has not been adapted to the official install flow. Please file an Issue on the author's repo asking for committed build output or an npm release.",
|
|
582
|
-
failIgnoredBuild: "This plugin
|
|
601
|
+
failIgnoredBuild: "This plugin (or its dependencies) needs to run build scripts, which pnpm blocks by default via its allowBuilds allowlist, so the install fails (e.g. native modules like node-pty, or the plugin's own prepare script on git installs) — other plugins are unaffected. This is a dependency/packaging issue of the plugin itself. Please report it to the author repository and ask the author to ship a prebuilt variant (e.g. node-pty-prebuilt-multiarch) or drop install-time builds.",
|
|
583
602
|
failNpmTooLow: "Your local npm may be too old: npm crashed internally while resolving the plugin's dependencies (a known npm bug — not a plugin issue). Please upgrade npm and retry: npm install -g npm@latest",
|
|
584
603
|
failNpmTooLowV: "Your local npm is too old (v{v}): npm crashed internally while resolving the plugin's dependencies (a known npm bug — not a plugin issue). Please upgrade npm and retry: npm install -g npm@latest",
|
|
604
|
+
failNetworkHint: "The network could not be reached before install: the install source is unreachable (offline, DNS failure, firewall block, or a misconfigured proxy). This is not a problem with the plugin itself — please check your connection, confirm the HTTP proxy in Settings, run a connectivity check under System Diagnostics, then retry.",
|
|
605
|
+
failNetworkTarget: "Cannot reach {url} — your network connection is down",
|
|
606
|
+
failNetworkRunDiag: "Run a network diagnostic",
|
|
585
607
|
reportIssue: "Report an Issue to the plugin repo",
|
|
586
608
|
detail: "Open details",
|
|
587
609
|
noResult: "No plugins match your search",
|
|
@@ -634,46 +656,46 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
634
656
|
css: css$11
|
|
635
657
|
});
|
|
636
658
|
var Header_module_css_default = {
|
|
637
|
-
"
|
|
638
|
-
"
|
|
639
|
-
"
|
|
640
|
-
"
|
|
641
|
-
"
|
|
659
|
+
"copyIcon": "qikqja_copyIcon",
|
|
660
|
+
"hubUpdateBadge": "qikqja_hubUpdateBadge",
|
|
661
|
+
"resultCount": "qikqja_resultCount",
|
|
662
|
+
"taglineLink": "qikqja_taglineLink",
|
|
663
|
+
"sortGroup": "qikqja_sortGroup",
|
|
642
664
|
"header": "qikqja_header",
|
|
643
|
-
"resultSeg": "qikqja_resultSeg",
|
|
644
|
-
"githubIcon": "qikqja_githubIcon",
|
|
645
|
-
"logoIcon": "qikqja_logoIcon",
|
|
646
|
-
"tabs": "qikqja_tabs",
|
|
647
665
|
"tab": "qikqja_tab",
|
|
648
|
-
"
|
|
649
|
-
"adText": "qikqja_adText",
|
|
650
|
-
"title": "qikqja_title",
|
|
666
|
+
"segGroup": "qikqja_segGroup",
|
|
651
667
|
"versionBtn": "qikqja_versionBtn",
|
|
652
|
-
"taglineLink": "qikqja_taglineLink",
|
|
653
|
-
"search": "qikqja_search",
|
|
654
|
-
"headerTitleRow": "qikqja_headerTitleRow",
|
|
655
|
-
"githubLink": "qikqja_githubLink",
|
|
656
|
-
"copyIcon": "qikqja_copyIcon",
|
|
657
|
-
"langBtn": "qikqja_langBtn",
|
|
658
|
-
"searchRow": "qikqja_searchRow",
|
|
659
668
|
"tabCount": "qikqja_tabCount",
|
|
660
|
-
"
|
|
661
|
-
"
|
|
662
|
-
"
|
|
663
|
-
"
|
|
664
|
-
"
|
|
665
|
-
"
|
|
666
|
-
"headerRight": "qikqja_headerRight",
|
|
669
|
+
"tabsRow": "qikqja_tabsRow",
|
|
670
|
+
"brandTitle": "qikqja_brandTitle",
|
|
671
|
+
"tabs": "qikqja_tabs",
|
|
672
|
+
"title": "qikqja_title",
|
|
673
|
+
"logoIcon": "qikqja_logoIcon",
|
|
674
|
+
"githubIcon": "qikqja_githubIcon",
|
|
667
675
|
"tagline": "qikqja_tagline",
|
|
668
|
-
"
|
|
676
|
+
"adText": "qikqja_adText",
|
|
669
677
|
"segLabel": "qikqja_segLabel",
|
|
670
|
-
"
|
|
671
|
-
"
|
|
672
|
-
"
|
|
678
|
+
"headerRight": "qikqja_headerRight",
|
|
679
|
+
"githubLink": "qikqja_githubLink",
|
|
680
|
+
"resultSeg": "qikqja_resultSeg",
|
|
681
|
+
"headerTitleRow": "qikqja_headerTitleRow",
|
|
682
|
+
"controls": "qikqja_controls",
|
|
683
|
+
"adBadge": "qikqja_adBadge",
|
|
684
|
+
"root": "qikqja_root",
|
|
685
|
+
"aboutBtn": "qikqja_aboutBtn",
|
|
686
|
+
"version": "qikqja_version",
|
|
687
|
+
"searchRow": "qikqja_searchRow",
|
|
688
|
+
"search": "qikqja_search",
|
|
689
|
+
"segBtnActive": "qikqja_segBtnActive",
|
|
690
|
+
"adBanner": "qikqja_adBanner",
|
|
691
|
+
"langBtn": "qikqja_langBtn",
|
|
692
|
+
"adArrow": "qikqja_adArrow",
|
|
693
|
+
"segBtn": "qikqja_segBtn",
|
|
694
|
+
"tabActive": "qikqja_tabActive"
|
|
673
695
|
};
|
|
674
696
|
//#endregion
|
|
675
697
|
//#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}";
|
|
698
|
+
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_failDiagBtn{box-sizing:border-box;text-align:center;width:100%;color:var(--hub-text-on-fill);background:var(--hub-btn-fill);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:8px;margin-top:8px;padding:5px 16px;font-size:13px;font-weight:600;line-height:18px;transition:background .12s,box-shadow .12s;display:block}.BiQ1zG_failDiagBtn:hover{background:var(--hub-btn-hover);box-shadow:0 3px 10px #0000001f}.BiQ1zG_failNetworkTarget{word-break:break-all;color:var(--hub-danger);background:var(--hub-danger-tint);border:1px solid var(--hub-danger-border);border-radius:6px;margin-top:6px;padding:8px 12px;font-size:13px;font-weight:700;line-height:20px}.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=\"100\"]{object-fit:contain;width:100px;height:100px;max-height:100px}.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
699
|
const tagId$10 = "dsh-plugin/Modal.module.css";
|
|
678
700
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$10) + "]") === null) {
|
|
679
701
|
const tag = document.createElement("style");
|
|
@@ -688,134 +710,136 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
688
710
|
css: css$10
|
|
689
711
|
});
|
|
690
712
|
var Modal_module_css_default = {
|
|
691
|
-
"
|
|
692
|
-
"
|
|
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",
|
|
713
|
+
"aboutMeta": "BiQ1zG_aboutMeta",
|
|
714
|
+
"resultDesc": "BiQ1zG_resultDesc",
|
|
701
715
|
"noticeTextOk": "BiQ1zG_noticeTextOk",
|
|
702
|
-
"
|
|
703
|
-
"failHead": "BiQ1zG_failHead",
|
|
704
|
-
"resultCheckIcon": "BiQ1zG_resultCheckIcon",
|
|
716
|
+
"progressTrack": "BiQ1zG_progressTrack",
|
|
705
717
|
"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",
|
|
717
|
-
"detailPathBtn": "BiQ1zG_detailPathBtn",
|
|
718
|
-
"confirmIconWrap": "BiQ1zG_confirmIconWrap",
|
|
719
|
-
"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
|
-
"modalInstall": "BiQ1zG_modalInstall",
|
|
735
718
|
"modal": "BiQ1zG_modal",
|
|
719
|
+
"restartNow": "BiQ1zG_restartNow",
|
|
720
|
+
"cliOnlyHint": "BiQ1zG_cliOnlyHint",
|
|
721
|
+
"restartLater": "BiQ1zG_restartLater",
|
|
722
|
+
"detailStatusRunning": "BiQ1zG_detailStatusRunning",
|
|
723
|
+
"modalHead": "BiQ1zG_modalHead",
|
|
724
|
+
"progressText": "BiQ1zG_progressText",
|
|
725
|
+
"resultTitle": "BiQ1zG_resultTitle",
|
|
726
|
+
"noticeIgnore": "BiQ1zG_noticeIgnore",
|
|
736
727
|
"failRepo": "BiQ1zG_failRepo",
|
|
737
|
-
"
|
|
738
|
-
"hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
|
|
739
|
-
"errorModal": "BiQ1zG_errorModal",
|
|
740
|
-
"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
|
-
"noticeMain": "BiQ1zG_noticeMain",
|
|
728
|
+
"failCopy": "BiQ1zG_failCopy",
|
|
748
729
|
"queueRowHead": "BiQ1zG_queueRowHead",
|
|
749
|
-
"
|
|
750
|
-
"
|
|
751
|
-
"
|
|
752
|
-
"
|
|
753
|
-
"
|
|
754
|
-
"
|
|
755
|
-
"pendingRowStatus": "BiQ1zG_pendingRowStatus",
|
|
756
|
-
"errorHint": "BiQ1zG_errorHint",
|
|
757
|
-
"detailPath": "BiQ1zG_detailPath",
|
|
758
|
-
"noticeHead": "BiQ1zG_noticeHead",
|
|
759
|
-
"modalLabel": "BiQ1zG_modalLabel",
|
|
760
|
-
"resultRestarting": "BiQ1zG_resultRestarting",
|
|
761
|
-
"progressText": "BiQ1zG_progressText",
|
|
762
|
-
"modalHead": "BiQ1zG_modalHead",
|
|
763
|
-
"failList": "BiQ1zG_failList",
|
|
764
|
-
"noticeVersion": "BiQ1zG_noticeVersion",
|
|
765
|
-
"noticeRowOk": "BiQ1zG_noticeRowOk",
|
|
766
|
-
"detailPathActions": "BiQ1zG_detailPathActions",
|
|
730
|
+
"modalLink": "BiQ1zG_modalLink",
|
|
731
|
+
"queueRowPct": "BiQ1zG_queueRowPct",
|
|
732
|
+
"detailValue": "BiQ1zG_detailValue",
|
|
733
|
+
"confirmPrimary": "BiQ1zG_confirmPrimary",
|
|
734
|
+
"failKindInstall": "BiQ1zG_failKindInstall",
|
|
735
|
+
"detailModal": "BiQ1zG_detailModal",
|
|
767
736
|
"detailGrid": "BiQ1zG_detailGrid",
|
|
768
|
-
"
|
|
737
|
+
"modalIn": "BiQ1zG_modalIn",
|
|
738
|
+
"modalLabel": "BiQ1zG_modalLabel",
|
|
739
|
+
"failBigIssue": "BiQ1zG_failBigIssue",
|
|
740
|
+
"toastIn": "BiQ1zG_toastIn",
|
|
769
741
|
"errorCopySoft": "BiQ1zG_errorCopySoft",
|
|
770
|
-
"
|
|
771
|
-
"
|
|
742
|
+
"noticeMain": "BiQ1zG_noticeMain",
|
|
743
|
+
"aboutContent": "BiQ1zG_aboutContent",
|
|
744
|
+
"errorHint": "BiQ1zG_errorHint",
|
|
745
|
+
"noticeTime": "BiQ1zG_noticeTime",
|
|
772
746
|
"modalCmdCopy": "BiQ1zG_modalCmdCopy",
|
|
773
|
-
"
|
|
774
|
-
"
|
|
775
|
-
"failKind": "BiQ1zG_failKind",
|
|
776
|
-
"detailModal": "BiQ1zG_detailModal",
|
|
777
|
-
"queueRow": "BiQ1zG_queueRow",
|
|
778
|
-
"confirmIcon": "BiQ1zG_confirmIcon",
|
|
779
|
-
"queuedHint": "BiQ1zG_queuedHint",
|
|
747
|
+
"result": "BiQ1zG_result",
|
|
748
|
+
"noticeRowOk": "BiQ1zG_noticeRowOk",
|
|
780
749
|
"errorBox": "BiQ1zG_errorBox",
|
|
781
|
-
"
|
|
750
|
+
"detailStars": "BiQ1zG_detailStars",
|
|
751
|
+
"hubUpdateModal": "BiQ1zG_hubUpdateModal",
|
|
752
|
+
"logModal": "BiQ1zG_logModal",
|
|
753
|
+
"detailStatusText": "BiQ1zG_detailStatusText",
|
|
754
|
+
"failedCopyHint": "BiQ1zG_failedCopyHint",
|
|
755
|
+
"linkIcon": "BiQ1zG_linkIcon",
|
|
756
|
+
"detailUpdateHint": "BiQ1zG_detailUpdateHint",
|
|
782
757
|
"toastFail": "BiQ1zG_toastFail",
|
|
783
|
-
"
|
|
784
|
-
"
|
|
785
|
-
"
|
|
786
|
-
"
|
|
787
|
-
"
|
|
788
|
-
"failEmpty": "BiQ1zG_failEmpty",
|
|
789
|
-
"modalCopy": "BiQ1zG_modalCopy",
|
|
790
|
-
"failCopy": "BiQ1zG_failCopy",
|
|
791
|
-
"noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
|
|
792
|
-
"failKindInstall": "BiQ1zG_failKindInstall",
|
|
793
|
-
"queueRowPct": "BiQ1zG_queueRowPct",
|
|
794
|
-
"stripCancel": "BiQ1zG_stripCancel",
|
|
795
|
-
"confirmPrimary": "BiQ1zG_confirmPrimary",
|
|
796
|
-
"queueSection": "BiQ1zG_queueSection",
|
|
797
|
-
"progressTrack": "BiQ1zG_progressTrack",
|
|
758
|
+
"dangerConfirm": "BiQ1zG_dangerConfirm",
|
|
759
|
+
"confirmIconDanger": "BiQ1zG_confirmIconDanger",
|
|
760
|
+
"progressFillFail": "BiQ1zG_progressFillFail",
|
|
761
|
+
"pendingRowActions": "BiQ1zG_pendingRowActions",
|
|
762
|
+
"modalWide": "BiQ1zG_modalWide",
|
|
798
763
|
"noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
|
|
764
|
+
"noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
|
|
765
|
+
"detailDim": "BiQ1zG_detailDim",
|
|
766
|
+
"resultCheckIcon": "BiQ1zG_resultCheckIcon",
|
|
799
767
|
"detailLabel": "BiQ1zG_detailLabel",
|
|
800
|
-
"
|
|
801
|
-
"dangerConfirm": "BiQ1zG_dangerConfirm",
|
|
802
|
-
"failBigIssue": "BiQ1zG_failBigIssue",
|
|
803
|
-
"restartLater": "BiQ1zG_restartLater",
|
|
804
|
-
"progress": "BiQ1zG_progress",
|
|
805
|
-
"detailStatusText": "BiQ1zG_detailStatusText",
|
|
768
|
+
"modalTitle": "BiQ1zG_modalTitle",
|
|
806
769
|
"modalCancel": "BiQ1zG_modalCancel",
|
|
807
|
-
"
|
|
770
|
+
"detailStatusPending": "BiQ1zG_detailStatusPending",
|
|
771
|
+
"pendingRowStatus": "BiQ1zG_pendingRowStatus",
|
|
772
|
+
"noticeList": "BiQ1zG_noticeList",
|
|
773
|
+
"modalInstall": "BiQ1zG_modalInstall",
|
|
774
|
+
"noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
|
|
775
|
+
"hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
|
|
776
|
+
"noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
|
|
777
|
+
"queueRowTarget": "BiQ1zG_queueRowTarget",
|
|
778
|
+
"modalCmdText": "BiQ1zG_modalCmdText",
|
|
779
|
+
"resultCheck": "BiQ1zG_resultCheck",
|
|
780
|
+
"failKind": "BiQ1zG_failKind",
|
|
781
|
+
"aboutModal": "BiQ1zG_aboutModal",
|
|
782
|
+
"detailLink": "BiQ1zG_detailLink",
|
|
808
783
|
"modalDesc": "BiQ1zG_modalDesc",
|
|
809
|
-
"
|
|
810
|
-
"
|
|
784
|
+
"confirmIcon": "BiQ1zG_confirmIcon",
|
|
785
|
+
"modalCloseIcon": "BiQ1zG_modalCloseIcon",
|
|
786
|
+
"restartNowWarning": "BiQ1zG_restartNowWarning",
|
|
787
|
+
"detailPathText": "BiQ1zG_detailPathText",
|
|
788
|
+
"overlay": "BiQ1zG_overlay",
|
|
789
|
+
"noticeRow": "BiQ1zG_noticeRow",
|
|
790
|
+
"failNetworkTarget": "BiQ1zG_failNetworkTarget",
|
|
791
|
+
"modalValue": "BiQ1zG_modalValue",
|
|
811
792
|
"modalTitleQueued": "BiQ1zG_modalTitleQueued",
|
|
812
|
-
"
|
|
793
|
+
"noticeRemove": "BiQ1zG_noticeRemove",
|
|
794
|
+
"confirmIconWrap": "BiQ1zG_confirmIconWrap",
|
|
795
|
+
"modalCopy": "BiQ1zG_modalCopy",
|
|
796
|
+
"stripCancel": "BiQ1zG_stripCancel",
|
|
797
|
+
"detailPathActions": "BiQ1zG_detailPathActions",
|
|
798
|
+
"errorModal": "BiQ1zG_errorModal",
|
|
799
|
+
"failKindUninstall": "BiQ1zG_failKindUninstall",
|
|
800
|
+
"helpModal": "BiQ1zG_helpModal",
|
|
801
|
+
"noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
|
|
802
|
+
"detailPathBtn": "BiQ1zG_detailPathBtn",
|
|
803
|
+
"detailMono": "BiQ1zG_detailMono",
|
|
804
|
+
"noticeRowMain": "BiQ1zG_noticeRowMain",
|
|
805
|
+
"modalClose": "BiQ1zG_modalClose",
|
|
806
|
+
"queueSectionTitle": "BiQ1zG_queueSectionTitle",
|
|
807
|
+
"queueRowDesc": "BiQ1zG_queueRowDesc",
|
|
808
|
+
"queueRowTrack": "BiQ1zG_queueRowTrack",
|
|
809
|
+
"resultRestarting": "BiQ1zG_resultRestarting",
|
|
810
|
+
"progressFill": "BiQ1zG_progressFill",
|
|
811
|
+
"noticeTextFail": "BiQ1zG_noticeTextFail",
|
|
812
|
+
"queuedHint": "BiQ1zG_queuedHint",
|
|
813
|
+
"modalCmd": "BiQ1zG_modalCmd",
|
|
814
|
+
"failDiagBtn": "BiQ1zG_failDiagBtn",
|
|
813
815
|
"queueRowBody": "BiQ1zG_queueRowBody",
|
|
814
|
-
"
|
|
816
|
+
"modalTitleBusy": "BiQ1zG_modalTitleBusy",
|
|
817
|
+
"uninstallConfirm": "BiQ1zG_uninstallConfirm",
|
|
818
|
+
"hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
|
|
819
|
+
"trustHint": "BiQ1zG_trustHint",
|
|
820
|
+
"failPrepareHint": "BiQ1zG_failPrepareHint",
|
|
821
|
+
"modalActions": "BiQ1zG_modalActions",
|
|
822
|
+
"toast": "BiQ1zG_toast",
|
|
815
823
|
"progressHead": "BiQ1zG_progressHead",
|
|
816
|
-
"
|
|
817
|
-
"
|
|
818
|
-
"
|
|
824
|
+
"noticeVersion": "BiQ1zG_noticeVersion",
|
|
825
|
+
"overlayIn": "BiQ1zG_overlayIn",
|
|
826
|
+
"modalRow": "BiQ1zG_modalRow",
|
|
827
|
+
"detailRow": "BiQ1zG_detailRow",
|
|
828
|
+
"failEmpty": "BiQ1zG_failEmpty",
|
|
829
|
+
"queueRow": "BiQ1zG_queueRow",
|
|
830
|
+
"noticeHead": "BiQ1zG_noticeHead",
|
|
831
|
+
"failRow": "BiQ1zG_failRow",
|
|
832
|
+
"hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
|
|
833
|
+
"queueSection": "BiQ1zG_queueSection",
|
|
834
|
+
"modalBody": "BiQ1zG_modalBody",
|
|
835
|
+
"failClear": "BiQ1zG_failClear",
|
|
836
|
+
"detailArrow": "BiQ1zG_detailArrow",
|
|
837
|
+
"progress": "BiQ1zG_progress",
|
|
838
|
+
"queueRowStatus": "BiQ1zG_queueRowStatus",
|
|
839
|
+
"detailPath": "BiQ1zG_detailPath",
|
|
840
|
+
"noticeFoot": "BiQ1zG_noticeFoot",
|
|
841
|
+
"failList": "BiQ1zG_failList",
|
|
842
|
+
"failHead": "BiQ1zG_failHead"
|
|
819
843
|
};
|
|
820
844
|
//#endregion
|
|
821
845
|
//#region src/client/logic/install-command.ts
|
|
@@ -885,7 +909,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
885
909
|
* tsdown 构建时用 define 把 __PLUGIN_VERSION__ 替换成 package.json 的版本号;
|
|
886
910
|
* node --test 直接 import 本模块时该标识符不存在,typeof 守卫兜底为空串。
|
|
887
911
|
*/
|
|
888
|
-
const PLUGIN_VERSION = "1.3.
|
|
912
|
+
const PLUGIN_VERSION = "1.3.7";
|
|
889
913
|
const CATEGORY_ORDER = [
|
|
890
914
|
"interface",
|
|
891
915
|
"session",
|
|
@@ -1518,7 +1542,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1518
1542
|
*/
|
|
1519
1543
|
const hubHasUpdate = (() => {
|
|
1520
1544
|
if (!hubUpdateInfo) return false;
|
|
1521
|
-
return hubUpdateInfo.version !== "1.3.
|
|
1545
|
+
return hubUpdateInfo.version !== "1.3.7";
|
|
1522
1546
|
})();
|
|
1523
1547
|
(0, react.useMemo)(() => {
|
|
1524
1548
|
if (!plugins) return [];
|
|
@@ -1697,23 +1721,28 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1697
1721
|
return next;
|
|
1698
1722
|
}
|
|
1699
1723
|
/**
|
|
1700
|
-
*
|
|
1724
|
+
* 失败归类,五态。无论底层机制如何(pnpm 白名单拦截 / 构建脚本被忽略 / prepare 失败),
|
|
1701
1725
|
* 对用户而言结果都一样 —— 当前安装通道(npm 或 git)装不上,就是插件分发/依赖的问题,
|
|
1702
|
-
* 一律引导提 Issue
|
|
1726
|
+
* 一律引导提 Issue;唯一的两个例外是本机环境问题(npm 版本过低 / 网络不通):
|
|
1703
1727
|
* - npmTooOld:失败输出含 npm arborist 的 `edgesOut` 崩溃特征(build-ideal-tree.js 解 peer 依赖时
|
|
1704
1728
|
* 内部抛错,npm 11.6.0 前必现的已知缺陷,npm/cli#8261、#9787),或服务端已核实本机版本低于
|
|
1705
1729
|
* 阈值并打了 `[npm-too-low]` 标记 —— 是本机 npm 版本过低/自身缺陷,不是插件问题 → 引导升级 npm
|
|
1706
|
-
* -
|
|
1707
|
-
*
|
|
1708
|
-
*
|
|
1730
|
+
* - network:安装前连通性预检拦截(服务端 `[network]` 标记)或底层连接失败
|
|
1731
|
+
* (ERR_PNPM_GIT_FETCH_FAILED / ETIMEDOUT / DNS 解析 / TLS 握手 / 代理拒绝)——
|
|
1732
|
+
* 是本机网络不通/被墙/代理有问题,不是插件问题 → 提示检查网络,不引导提 Issue
|
|
1733
|
+
* - pnpmIgnoredBuild:插件自身或依赖的构建脚本被 pnpm 安全白名单(allowBuilds)默认拦截
|
|
1734
|
+
* (`ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED` / `ERR_PNPM_IGNORED_BUILDS`)。只影响带安装期
|
|
1735
|
+
* 构建的插件,其他插件不受影响 —— 差异在插件的依赖/打包方式,属插件依赖/打包问题
|
|
1736
|
+
* → 引导去仓库提 Issue(建议改用预编译版本或关闭安装期构建)
|
|
1709
1737
|
* - pluginPrepare:插件的 prepare/构建脚本实际执行失败(git tarball 常因缺失子模块或
|
|
1710
1738
|
* 构建产物导致)—— 属插件打包/分发问题,应引导去仓库提 Issue
|
|
1711
1739
|
* - repo:其余失败(含 git prepare 被 pnpm 白名单拦截等),默认按插件仓库问题引导提 Issue
|
|
1712
1740
|
*/
|
|
1713
1741
|
function classifyFailure(message) {
|
|
1714
1742
|
if (/\[npm-too-low\]|edgesOut/i.test(message)) return "npmTooOld";
|
|
1743
|
+
if (/ERR_PNPM_IGNORED_BUILDS|Ignored build scripts:|ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED/i.test(message)) return "pnpmIgnoredBuild";
|
|
1744
|
+
if (/\[network\]|ERR_PNPM_GIT_FETCH_FAILED|ETIMEDOUT|ECONNREFUSED|ECONNRESET|ENOTFOUND|EAI_AGAIN|EPIPE|EHOSTUNREACH|ENETUNREACH|getaddrinfo|Could not connect|Could not resolve host|Network unreachable|Failed to connect|socket hang up|CERT_HAS_EXPIRED|SSL certificate problem|\bTLS\b|\bSSL\b/i.test(message)) return "network";
|
|
1715
1745
|
if (/\[packaging\]|entry file missing/i.test(message)) return "pluginPrepare";
|
|
1716
|
-
if (/ERR_PNPM_IGNORED_BUILDS|Ignored build scripts:/i.test(message)) return "pnpmIgnoredBuild";
|
|
1717
1746
|
if (/ERR_PNPM_PREPARE_PACKAGE|ELIFECYCLE|Command failed|prepare-guard/i.test(message)) return "pluginPrepare";
|
|
1718
1747
|
return "repo";
|
|
1719
1748
|
}
|
|
@@ -1764,6 +1793,18 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1764
1793
|
const m = message.match(/\[?ERR_[A-Z_]+\]?/);
|
|
1765
1794
|
return m ? m[0].replace(/^\[|\]$/g, "") : null;
|
|
1766
1795
|
}
|
|
1796
|
+
/**
|
|
1797
|
+
* 从网络类失败消息里提取「具体连不上的地址」,供弹窗精准提示(你的网络无法访问什么)。
|
|
1798
|
+
* 优先取服务端 [network] 预检消息括号里的探测地址(中文「(…)」/ 英文「(…)」),
|
|
1799
|
+
* 否则取消息里出现的第一个 URL(git fetch 的仓库地址、registry 域名等)。
|
|
1800
|
+
* 提取不到返回 null —— 调用方据此跳过地址行。
|
|
1801
|
+
*/
|
|
1802
|
+
function unreachableTargetOf(message) {
|
|
1803
|
+
const paren = message.match(/[((](https?:\/\/[^\s'"`<>()+]+)[))]/);
|
|
1804
|
+
if (paren) return paren[1];
|
|
1805
|
+
const url = message.match(/https?:\/\/[^\s'"`<>()()]+/);
|
|
1806
|
+
return url ? url[0].replace(/[.,;:))\]]+$/, "") : null;
|
|
1807
|
+
}
|
|
1767
1808
|
//#endregion
|
|
1768
1809
|
//#region src/client/logic/urls.ts
|
|
1769
1810
|
/** dsh-plugin.org 中文页挂在 /zh/ 前缀下,英文在根路径。 */
|
|
@@ -1785,9 +1826,21 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1785
1826
|
function pluginSiteUrl(repo) {
|
|
1786
1827
|
return `${SITE_URL}plugins/${repo}`;
|
|
1787
1828
|
}
|
|
1829
|
+
/** 按失败类型给出简洁的错误原因标题(对外用英文):
|
|
1830
|
+
* 标题直接点明问题出在哪一侧(构建白名单/分发物/本机 npm/网络/插件侧),
|
|
1831
|
+
* 作者与用户扫一眼列表就能分流 —— 不再用含糊的 Install/Remove 动作词。 */
|
|
1832
|
+
function reasonTitleOf(kind) {
|
|
1833
|
+
switch (kind) {
|
|
1834
|
+
case "npmTooOld": return "npm too old to install";
|
|
1835
|
+
case "pnpmIgnoredBuild": return "build scripts blocked by pnpm allowlist";
|
|
1836
|
+
case "pluginPrepare": return "plugin distribution incomplete";
|
|
1837
|
+
case "network": return "network failure on the user side";
|
|
1838
|
+
default: return "plugin install failed";
|
|
1839
|
+
}
|
|
1840
|
+
}
|
|
1788
1841
|
/**
|
|
1789
|
-
* 一键反馈 GitHub Issue 的预填链接:标题带「来自 dsh-plugin.org
|
|
1790
|
-
*
|
|
1842
|
+
* 一键反馈 GitHub Issue 的预填链接:标题带「来自 dsh-plugin.org」标识 + 错误原因,
|
|
1843
|
+
* 正文只带核心信息 —— 原因判定 + 关键错误代码 + 尝试过的安装方式 + 宿主机器环境快照 +
|
|
1791
1844
|
* 错误核心摘要(完整日志太长,塞进 URL 会被 GitHub 以「request URL too long」拒绝,
|
|
1792
1845
|
* 故只收集重点)。错误弹窗、失败记录共用此逻辑。
|
|
1793
1846
|
* env 取不到时为 null,链接照常生成、只是少环境段。
|
|
@@ -1795,9 +1848,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1795
1848
|
* 组织 scope 与 GitHub 用户名不一致时也能直接指认正确的 npm 包名。
|
|
1796
1849
|
*/
|
|
1797
1850
|
function pluginIssueUrl(repo, message, env, command, attempts) {
|
|
1798
|
-
const title = `[dsh-plugin.org | dsh-plugin-hub] Install/Remove failed: ${repo}`;
|
|
1799
1851
|
const kind = classifyFailure(message);
|
|
1800
|
-
const
|
|
1852
|
+
const title = `[dsh-plugin.org | dsh-plugin-hub] ${reasonTitleOf(kind)}: ${repo}`;
|
|
1853
|
+
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 === "network" ? "network connectivity issue on the user side (DNS, proxy, firewall, or a blocked connection)" : 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
1854
|
const code = coreErrorCode(message);
|
|
1802
1855
|
const build = (coreChars) => {
|
|
1803
1856
|
const body = [
|
|
@@ -1903,8 +1956,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1903
1956
|
*/
|
|
1904
1957
|
const DEFAULT_SETTINGS = {
|
|
1905
1958
|
checkUpdatesOnStart: true,
|
|
1906
|
-
npmRegistry: "",
|
|
1907
1959
|
proxy: "",
|
|
1960
|
+
npmRegistry: "",
|
|
1908
1961
|
enableNpmInstall: true,
|
|
1909
1962
|
enableGitInstall: true,
|
|
1910
1963
|
enableDshInstall: true,
|
|
@@ -1981,7 +2034,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1981
2034
|
* 给足余量;超时主动中止,避免服务端 preflight 网络挂起时前端永久卡「安装中 0%」。 */
|
|
1982
2035
|
const REQUEST_TIMEOUT_MS = 6e4;
|
|
1983
2036
|
function useTaskQueue(opts) {
|
|
1984
|
-
const { t, refreshInstalled, onInstallDone, onUninstallDone, onError, installPlugin, installCustomTarget, installGlobalTarget, uninstallPlugin, uninstallName, installedName, resolvePending } = opts;
|
|
2037
|
+
const { t, langKey, refreshInstalled, onInstallDone, onUninstallDone, onError, installPlugin, installCustomTarget, installGlobalTarget, uninstallPlugin, uninstallName, installedName, resolvePending } = opts;
|
|
1985
2038
|
const [queue, setQueue] = (0, react.useState)([]);
|
|
1986
2039
|
const queueRef = (0, react.useRef)([]);
|
|
1987
2040
|
/** 待重启列表(服务端内存态 + 本地展示信息补齐);与 queue 一样以 ref 为唯一事实来源。 */
|
|
@@ -2090,11 +2143,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2090
2143
|
desc: q.desc,
|
|
2091
2144
|
version: q.version
|
|
2092
2145
|
});
|
|
2093
|
-
onInstallDone(modalTaskRef.current === q.id, q.repo, q.needsRestart);
|
|
2146
|
+
onInstallDone(modalTaskRef.current === q.id, q.repo, q.needsRestart, q.action === "update");
|
|
2094
2147
|
}
|
|
2095
2148
|
} else {
|
|
2096
2149
|
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);
|
|
2150
|
+
onError(detail, q.repo, q.kind, q.command, q.attempts, q.action === "update");
|
|
2098
2151
|
}
|
|
2099
2152
|
maybeStopPoll();
|
|
2100
2153
|
};
|
|
@@ -2232,6 +2285,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2232
2285
|
kind: isRemove ? "uninstall" : "install",
|
|
2233
2286
|
target: isRemove ? fallback : display || fallback,
|
|
2234
2287
|
repo: isRemove ? null : display || fallback,
|
|
2288
|
+
action: a.action === "add" || a.action === "update" || a.action === "remove" ? a.action : "add",
|
|
2235
2289
|
status: a.status === "running" ? "running" : "pending",
|
|
2236
2290
|
progress: typeof a.progress === "number" ? a.progress : 0,
|
|
2237
2291
|
lines: Array.isArray(a.lines) ? a.lines : [],
|
|
@@ -2274,6 +2328,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2274
2328
|
lines: [],
|
|
2275
2329
|
optimistic: true,
|
|
2276
2330
|
command: input.command,
|
|
2331
|
+
action: input.update ? "update" : "add",
|
|
2277
2332
|
attempts: [],
|
|
2278
2333
|
needsRestart: true
|
|
2279
2334
|
}]);
|
|
@@ -2289,6 +2344,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2289
2344
|
display: input.repo,
|
|
2290
2345
|
source: input.source,
|
|
2291
2346
|
mode: input.update ? "update" : void 0,
|
|
2347
|
+
...langKey ? { lang: langKey } : {},
|
|
2292
2348
|
...input.globalNpm && input.globalNpm.length > 0 ? { globalNpm: input.globalNpm } : {}
|
|
2293
2349
|
}),
|
|
2294
2350
|
signal: controller.signal
|
|
@@ -3124,7 +3180,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3124
3180
|
}
|
|
3125
3181
|
/** 预填插件仓库的 GitHub Issue 链接:标题带插件名,正文附完整错误信息,方便用户一键反馈。 */
|
|
3126
3182
|
/** 安装/卸载失败弹窗:布局与失败记录一致(类型徽标 + 仓库超链接 + 隐蔽复制按钮),报错完整展示,底部一键提交 Issue。 */
|
|
3127
|
-
function ErrorModal({ message, repo, kind, command, attempts, t, env, onCopy, onClose }) {
|
|
3183
|
+
function ErrorModal({ message, repo, kind, command, attempts, t, env, onCopy, onClose, onRunDiagnostics }) {
|
|
3128
3184
|
const failureKind = classifyFailure(message);
|
|
3129
3185
|
const npmVersion = npmTooLowVersion(message);
|
|
3130
3186
|
const copyText = [
|
|
@@ -3154,7 +3210,17 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3154
3210
|
}, repo) : null, (0, react.createElement)("button", {
|
|
3155
3211
|
className: Modal_module_css_default.errorCopySoft,
|
|
3156
3212
|
onClick: () => onCopy(copyText)
|
|
3157
|
-
}, t("errorCopy"))), (0, react.createElement)("pre", { className: Modal_module_css_default.errorBox }, message), failureKind === "npmTooOld" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t(npmVersion ? "failNpmTooLowV" : "failNpmTooLow", npmVersion ? { v: npmVersion } : void 0)) : failureKind === "
|
|
3213
|
+
}, t("errorCopy"))), (0, react.createElement)("pre", { className: Modal_module_css_default.errorBox }, message), failureKind === "npmTooOld" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t(npmVersion ? "failNpmTooLowV" : "failNpmTooLow", npmVersion ? { v: npmVersion } : void 0)) : failureKind === "network" ? (0, react.createElement)("div", null, [
|
|
3214
|
+
(() => {
|
|
3215
|
+
const target = unreachableTargetOf(message);
|
|
3216
|
+
return target ? (0, react.createElement)("div", { className: Modal_module_css_default.failNetworkTarget }, t("failNetworkTarget", { url: target })) : null;
|
|
3217
|
+
})(),
|
|
3218
|
+
(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failNetworkHint")),
|
|
3219
|
+
onRunDiagnostics ? (0, react.createElement)("button", {
|
|
3220
|
+
className: Modal_module_css_default.failDiagBtn,
|
|
3221
|
+
onClick: onRunDiagnostics
|
|
3222
|
+
}, t("failNetworkRunDiag")) : null
|
|
3223
|
+
]) : failureKind === "pluginPrepare" || failureKind === "pnpmIgnoredBuild" ? (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, failureKind === "pnpmIgnoredBuild" ? t("failIgnoredBuild") : /\[packaging\]/i.test(message) ? t("failPackagingHint") : t("failPrepareHint")), repo ? (0, react.createElement)("a", {
|
|
3158
3224
|
className: Modal_module_css_default.failBigIssue,
|
|
3159
3225
|
href: pluginIssueUrl(repo, message, env, command, attempts),
|
|
3160
3226
|
target: "_blank",
|
|
@@ -3241,7 +3307,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3241
3307
|
out = out.replace(/!\[([^\]]*)\]\(([^)\s]+)\)/g, (m, alt, url) => {
|
|
3242
3308
|
const src = String(url);
|
|
3243
3309
|
if (!/^https?:\/\//i.test(src) || /[\u0000]/.test(src)) return m;
|
|
3244
|
-
if (/\/dsh-plugin-user-group-qr-[^/]*$/i.test(src)) return `<img src="${src}" alt="${String(alt)}" width="
|
|
3310
|
+
if (/\/dsh-plugin-user-group-qr-[^/]*$/i.test(src)) return `<img src="${src}" alt="${String(alt)}" width="100" height="100" loading="lazy">`;
|
|
3245
3311
|
return `<img src="${src}" alt="${String(alt)}" loading="lazy">`;
|
|
3246
3312
|
});
|
|
3247
3313
|
out = out.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g, (m, text, url) => /^https?:\/\//i.test(String(url)) && !/[\u0000]/.test(String(url)) ? `<a href="${String(url)}" target="_blank" rel="noopener noreferrer">${String(text)}</a>` : m);
|
|
@@ -3586,7 +3652,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3586
3652
|
strokeLinecap: "round"
|
|
3587
3653
|
}));
|
|
3588
3654
|
}
|
|
3589
|
-
function NotificationsModal({ records, tasks, pendingRestarts, t, env, onClose, onCopy, onClear, onRemove, onUpdate, onIgnoreUpdate, cancelTask, restarting, onRestart, resolveRepo }) {
|
|
3655
|
+
function NotificationsModal({ records, tasks, pendingRestarts, t, env, onClose, onCopy, onClear, onRemove, onUpdate, onIgnoreUpdate, cancelTask, restarting, onRestart, onRunDiagnostics, resolveRepo }) {
|
|
3590
3656
|
const [confirmClear, setConfirmClear] = (0, react.useState)(false);
|
|
3591
3657
|
const [confirmRemoveId, setConfirmRemoveId] = (0, react.useState)(null);
|
|
3592
3658
|
return (0, react.createElement)("div", {
|
|
@@ -3648,7 +3714,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3648
3714
|
onClick: () => onUpdate(r.repo),
|
|
3649
3715
|
title: t("updateNoticeGo")
|
|
3650
3716
|
} : {}
|
|
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", {
|
|
3717
|
+
}, (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
3718
|
className: Modal_module_css_default.noticeVersion,
|
|
3653
3719
|
title: r.version
|
|
3654
3720
|
}, `v${r.version}`) : null, r.repo ? isUpdate ? (0, react.createElement)("span", {
|
|
@@ -3660,7 +3726,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3660
3726
|
target: "_blank",
|
|
3661
3727
|
rel: "noopener noreferrer",
|
|
3662
3728
|
title: shownRepo
|
|
3663
|
-
}, shownRepo) :
|
|
3729
|
+
}, shownRepo) : (0, react.createElement)("span", {
|
|
3730
|
+
className: Modal_module_css_default.failRepo,
|
|
3731
|
+
title: r.repo
|
|
3732
|
+
}, r.repo) : null, !r.ok && (0, react.createElement)("button", {
|
|
3664
3733
|
className: Modal_module_css_default.failCopy,
|
|
3665
3734
|
onClick: () => onCopy(r.message)
|
|
3666
3735
|
}, t("failCopy")), r.ok ? (0, react.createElement)("span", {
|
|
@@ -3692,6 +3761,17 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3692
3761
|
const v = npmTooLowVersion(r.message);
|
|
3693
3762
|
return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t(v ? "failNpmTooLowV" : "failNpmTooLow", v ? { v } : void 0));
|
|
3694
3763
|
}
|
|
3764
|
+
if (kind === "network") return (0, react.createElement)("div", null, [
|
|
3765
|
+
(() => {
|
|
3766
|
+
const target = unreachableTargetOf(r.message);
|
|
3767
|
+
return target ? (0, react.createElement)("div", { className: Modal_module_css_default.failNetworkTarget }, t("failNetworkTarget", { url: target })) : null;
|
|
3768
|
+
})(),
|
|
3769
|
+
(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failNetworkHint")),
|
|
3770
|
+
onRunDiagnostics ? (0, react.createElement)("button", {
|
|
3771
|
+
className: Modal_module_css_default.failDiagBtn,
|
|
3772
|
+
onClick: onRunDiagnostics
|
|
3773
|
+
}, t("failNetworkRunDiag")) : null
|
|
3774
|
+
]);
|
|
3695
3775
|
if (kind === "pluginPrepare" || kind === "pnpmIgnoredBuild") return (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, kind === "pnpmIgnoredBuild" ? t("failIgnoredBuild") : /\[packaging\]/i.test(r.message) ? t("failPackagingHint") : t("failPrepareHint")), r.repo && shownRepo ? (0, react.createElement)("a", {
|
|
3696
3776
|
className: Modal_module_css_default.failBigIssue,
|
|
3697
3777
|
href: pluginIssueUrl(shownRepo, r.message, env, r.command, r.attempts),
|
|
@@ -3886,38 +3966,38 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3886
3966
|
css: css$9
|
|
3887
3967
|
});
|
|
3888
3968
|
var List_module_css_default = {
|
|
3889
|
-
"
|
|
3890
|
-
"
|
|
3891
|
-
"
|
|
3892
|
-
"
|
|
3893
|
-
"cardSide": "_3XaZHa_cardSide",
|
|
3969
|
+
"stats": "_3XaZHa_stats",
|
|
3970
|
+
"detailBtn": "_3XaZHa_detailBtn",
|
|
3971
|
+
"date": "_3XaZHa_date",
|
|
3972
|
+
"installBtnInstalled": "_3XaZHa_installBtnInstalled",
|
|
3894
3973
|
"uninstallBtn": "_3XaZHa_uninstallBtn",
|
|
3895
|
-
"
|
|
3896
|
-
"versionBadge": "_3XaZHa_versionBadge",
|
|
3974
|
+
"footer": "_3XaZHa_footer",
|
|
3897
3975
|
"desc": "_3XaZHa_desc",
|
|
3898
|
-
"
|
|
3899
|
-
"
|
|
3900
|
-
"
|
|
3976
|
+
"card": "_3XaZHa_card",
|
|
3977
|
+
"footLink": "_3XaZHa_footLink",
|
|
3978
|
+
"installBtn": "_3XaZHa_installBtn",
|
|
3979
|
+
"cardTitle": "_3XaZHa_cardTitle",
|
|
3901
3980
|
"stateDesc": "_3XaZHa_stateDesc",
|
|
3902
|
-
"
|
|
3903
|
-
"topics": "_3XaZHa_topics",
|
|
3904
|
-
"cardHead": "_3XaZHa_cardHead",
|
|
3905
|
-
"stats": "_3XaZHa_stats",
|
|
3981
|
+
"installBtnCopied": "_3XaZHa_installBtnCopied",
|
|
3906
3982
|
"list": "_3XaZHa_list",
|
|
3907
|
-
"footer": "_3XaZHa_footer",
|
|
3908
3983
|
"state": "_3XaZHa_state",
|
|
3909
|
-
"updateBadge": "_3XaZHa_updateBadge",
|
|
3910
|
-
"retryBtn": "_3XaZHa_retryBtn",
|
|
3911
3984
|
"stateTitle": "_3XaZHa_stateTitle",
|
|
3912
|
-
"
|
|
3913
|
-
"detailBtn": "_3XaZHa_detailBtn",
|
|
3914
|
-
"date": "_3XaZHa_date",
|
|
3915
|
-
"installBtnUpdate": "_3XaZHa_installBtnUpdate",
|
|
3916
|
-
"installBtnCopied": "_3XaZHa_installBtnCopied",
|
|
3917
|
-
"installBtn": "_3XaZHa_installBtn",
|
|
3918
|
-
"star": "_3XaZHa_star",
|
|
3985
|
+
"cardSide": "_3XaZHa_cardSide",
|
|
3919
3986
|
"moreSentinel": "_3XaZHa_moreSentinel",
|
|
3920
|
-
"
|
|
3987
|
+
"star": "_3XaZHa_star",
|
|
3988
|
+
"cardHead": "_3XaZHa_cardHead",
|
|
3989
|
+
"updateBadge": "_3XaZHa_updateBadge",
|
|
3990
|
+
"installBtnUpdate": "_3XaZHa_installBtnUpdate",
|
|
3991
|
+
"categoryBadge": "_3XaZHa_categoryBadge",
|
|
3992
|
+
"body": "_3XaZHa_body",
|
|
3993
|
+
"actions": "_3XaZHa_actions",
|
|
3994
|
+
"cardMain": "_3XaZHa_cardMain",
|
|
3995
|
+
"verified": "_3XaZHa_verified",
|
|
3996
|
+
"versionBadge": "_3XaZHa_versionBadge",
|
|
3997
|
+
"retryBtn": "_3XaZHa_retryBtn",
|
|
3998
|
+
"topic": "_3XaZHa_topic",
|
|
3999
|
+
"topics": "_3XaZHa_topics",
|
|
4000
|
+
"fork": "_3XaZHa_fork"
|
|
3921
4001
|
};
|
|
3922
4002
|
//#endregion
|
|
3923
4003
|
//#region src/client/hooks/useIncrementalList.ts
|
|
@@ -4119,15 +4199,15 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4119
4199
|
css: css$8
|
|
4120
4200
|
});
|
|
4121
4201
|
var SectionTabs_module_css_default = {
|
|
4122
|
-
"
|
|
4202
|
+
"tab": "_7tvizq_tab",
|
|
4123
4203
|
"noticeBtn": "_7tvizq_noticeBtn",
|
|
4204
|
+
"root": "_7tvizq_root",
|
|
4124
4205
|
"noticeIcon": "_7tvizq_noticeIcon",
|
|
4206
|
+
"noticeCount": "_7tvizq_noticeCount",
|
|
4207
|
+
"tabCountActive": "_7tvizq_tabCountActive",
|
|
4125
4208
|
"tabActive": "_7tvizq_tabActive",
|
|
4126
|
-
"tabCount": "_7tvizq_tabCount",
|
|
4127
4209
|
"tabIcon": "_7tvizq_tabIcon",
|
|
4128
|
-
"
|
|
4129
|
-
"tab": "_7tvizq_tab",
|
|
4130
|
-
"noticeCount": "_7tvizq_noticeCount"
|
|
4210
|
+
"tabCount": "_7tvizq_tabCount"
|
|
4131
4211
|
};
|
|
4132
4212
|
//#endregion
|
|
4133
4213
|
//#region src/client/components/layout/SectionTabs.tsx
|
|
@@ -4204,42 +4284,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4204
4284
|
css: css$7
|
|
4205
4285
|
});
|
|
4206
4286
|
var InstalledView_module_css_default = {
|
|
4207
|
-
"searchWrap": "_1nXeGW_searchWrap",
|
|
4208
|
-
"toolbar": "_1nXeGW_toolbar",
|
|
4209
|
-
"segBtnActive": "_1nXeGW_segBtnActive",
|
|
4210
|
-
"rowRepo": "_1nXeGW_rowRepo",
|
|
4211
|
-
"row": "_1nXeGW_row",
|
|
4212
|
-
"rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
|
|
4213
|
-
"root": "_1nXeGW_root",
|
|
4214
|
-
"versionBadge": "_1nXeGW_versionBadge",
|
|
4215
|
-
"rowMain": "_1nXeGW_rowMain",
|
|
4216
|
-
"rowSourceTag": "_1nXeGW_rowSourceTag",
|
|
4217
|
-
"segRow": "_1nXeGW_segRow",
|
|
4218
|
-
"emptyDesc": "_1nXeGW_emptyDesc",
|
|
4219
4287
|
"rowRestart": "_1nXeGW_rowRestart",
|
|
4220
|
-
"
|
|
4221
|
-
"rowCategory": "_1nXeGW_rowCategory",
|
|
4222
|
-
"empty": "_1nXeGW_empty",
|
|
4223
|
-
"searchInput": "_1nXeGW_searchInput",
|
|
4224
|
-
"updateBadge": "_1nXeGW_updateBadge",
|
|
4225
|
-
"emptyTitle": "_1nXeGW_emptyTitle",
|
|
4288
|
+
"statusDot": "_1nXeGW_statusDot",
|
|
4226
4289
|
"rowActions": "_1nXeGW_rowActions",
|
|
4227
|
-
"rowUninstall": "_1nXeGW_rowUninstall",
|
|
4228
4290
|
"rowTitleLine": "_1nXeGW_rowTitleLine",
|
|
4229
|
-
"
|
|
4230
|
-
"
|
|
4231
|
-
"
|
|
4232
|
-
"
|
|
4233
|
-
"rowMeta": "_1nXeGW_rowMeta",
|
|
4291
|
+
"rowUpdate": "_1nXeGW_rowUpdate",
|
|
4292
|
+
"emptyTitle": "_1nXeGW_emptyTitle",
|
|
4293
|
+
"toolbar": "_1nXeGW_toolbar",
|
|
4294
|
+
"root": "_1nXeGW_root",
|
|
4234
4295
|
"rowTitle": "_1nXeGW_rowTitle",
|
|
4296
|
+
"segBtnActive": "_1nXeGW_segBtnActive",
|
|
4297
|
+
"exampleRow": "_1nXeGW_exampleRow",
|
|
4298
|
+
"statusInactive": "_1nXeGW_statusInactive",
|
|
4299
|
+
"rowMain": "_1nXeGW_rowMain",
|
|
4300
|
+
"rowCategory": "_1nXeGW_rowCategory",
|
|
4235
4301
|
"segLabel": "_1nXeGW_segLabel",
|
|
4236
|
-
"statusDot": "_1nXeGW_statusDot",
|
|
4237
|
-
"statusPending": "_1nXeGW_statusPending",
|
|
4238
4302
|
"list": "_1nXeGW_list",
|
|
4239
|
-
"
|
|
4303
|
+
"rowDetail": "_1nXeGW_rowDetail",
|
|
4304
|
+
"exampleBadge": "_1nXeGW_exampleBadge",
|
|
4305
|
+
"versionBadge": "_1nXeGW_versionBadge",
|
|
4240
4306
|
"segBtn": "_1nXeGW_segBtn",
|
|
4241
|
-
"
|
|
4242
|
-
"
|
|
4307
|
+
"emptyDesc": "_1nXeGW_emptyDesc",
|
|
4308
|
+
"statusPending": "_1nXeGW_statusPending",
|
|
4309
|
+
"searchInput": "_1nXeGW_searchInput",
|
|
4310
|
+
"rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
|
|
4311
|
+
"rowDesc": "_1nXeGW_rowDesc",
|
|
4312
|
+
"rowRepo": "_1nXeGW_rowRepo",
|
|
4313
|
+
"rowUninstall": "_1nXeGW_rowUninstall",
|
|
4314
|
+
"empty": "_1nXeGW_empty",
|
|
4315
|
+
"row": "_1nXeGW_row",
|
|
4316
|
+
"rowMeta": "_1nXeGW_rowMeta",
|
|
4317
|
+
"searchWrap": "_1nXeGW_searchWrap",
|
|
4318
|
+
"segRow": "_1nXeGW_segRow",
|
|
4319
|
+
"rowSourceTag": "_1nXeGW_rowSourceTag",
|
|
4320
|
+
"updateBadge": "_1nXeGW_updateBadge",
|
|
4321
|
+
"segGroup": "_1nXeGW_segGroup",
|
|
4322
|
+
"rowSourceTagHub": "_1nXeGW_rowSourceTagHub"
|
|
4243
4323
|
};
|
|
4244
4324
|
//#endregion
|
|
4245
4325
|
//#region src/client/components/views/InstalledView.tsx
|
|
@@ -4485,28 +4565,28 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4485
4565
|
css: css$6
|
|
4486
4566
|
});
|
|
4487
4567
|
var CustomInstallView_module_css_default = {
|
|
4488
|
-
"
|
|
4489
|
-
"
|
|
4490
|
-
"helpNote": "zISxCG_helpNote",
|
|
4491
|
-
"channelOff": "zISxCG_channelOff",
|
|
4492
|
-
"installInsertBtn": "zISxCG_installInsertBtn",
|
|
4493
|
-
"installError": "zISxCG_installError",
|
|
4494
|
-
"installCard": "zISxCG_installCard",
|
|
4568
|
+
"installLabel": "zISxCG_installLabel",
|
|
4569
|
+
"installHelpBtn": "zISxCG_installHelpBtn",
|
|
4495
4570
|
"installRow": "zISxCG_installRow",
|
|
4496
|
-
"
|
|
4497
|
-
"root": "zISxCG_root",
|
|
4498
|
-
"installExample": "zISxCG_installExample",
|
|
4499
|
-
"installCards": "zISxCG_installCards",
|
|
4571
|
+
"installInput": "zISxCG_installInput",
|
|
4500
4572
|
"installCardDisabled": "zISxCG_installCardDisabled",
|
|
4573
|
+
"installError": "zISxCG_installError",
|
|
4501
4574
|
"installCardHead": "zISxCG_installCardHead",
|
|
4575
|
+
"helpLine": "zISxCG_helpLine",
|
|
4576
|
+
"helpNote": "zISxCG_helpNote",
|
|
4502
4577
|
"desc": "zISxCG_desc",
|
|
4503
|
-
"installHelpBtn": "zISxCG_installHelpBtn",
|
|
4504
|
-
"installInput": "zISxCG_installInput",
|
|
4505
|
-
"installInputError": "zISxCG_installInputError",
|
|
4506
4578
|
"channelOffText": "zISxCG_channelOffText",
|
|
4507
|
-
"
|
|
4579
|
+
"installInsertBtn": "zISxCG_installInsertBtn",
|
|
4580
|
+
"installExample": "zISxCG_installExample",
|
|
4581
|
+
"helpBody": "zISxCG_helpBody",
|
|
4508
4582
|
"channelOffBtn": "zISxCG_channelOffBtn",
|
|
4509
|
-
"
|
|
4583
|
+
"installInputError": "zISxCG_installInputError",
|
|
4584
|
+
"helpCmd": "zISxCG_helpCmd",
|
|
4585
|
+
"installBtn": "zISxCG_installBtn",
|
|
4586
|
+
"installCards": "zISxCG_installCards",
|
|
4587
|
+
"root": "zISxCG_root",
|
|
4588
|
+
"installCard": "zISxCG_installCard",
|
|
4589
|
+
"channelOff": "zISxCG_channelOff"
|
|
4510
4590
|
};
|
|
4511
4591
|
//#endregion
|
|
4512
4592
|
//#region src/client/components/views/CustomInstallView.tsx
|
|
@@ -4778,7 +4858,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4778
4858
|
}
|
|
4779
4859
|
//#endregion
|
|
4780
4860
|
//#region \0dsh-css:src/client/styles/SettingsView.module.css.mjs
|
|
4781
|
-
const css$5 = "._506LLG_root{flex:1;align-items:stretch;min-width:0;min-height:0;display:flex}._506LLG_sidebar{border-right:1px solid var(--hub-border-1);flex-direction:column;flex:none;gap:2px;padding:8px 6px;display:flex;overflow-y:auto}._506LLG_navItem,._506LLG_navItemActive{box-sizing:border-box;text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:7px;align-items:center;gap:8px;width:100%;padding:7px 10px;font-size:12.5px;line-height:18px;transition:color .12s,background-color .12s;display:flex}._506LLG_navItem{color:var(--hub-text-secondary);background:0 0}._506LLG_navItem:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._506LLG_navItemActive{color:var(--hub-brand);background:var(--hub-brand-tint);font-weight:600}._506LLG_navIcon{flex:none;display:inline-flex}._506LLG_content{flex-direction:column;flex:1;min-width:0;min-height:0;padding:14px 16px 18px;display:flex;overflow-y:auto}._506LLG_pageHeader{margin-bottom:12px}._506LLG_pageTitle{color:var(--hub-text-primary);font-size:14px;font-weight:600;line-height:20px}._506LLG_pageDesc{color:var(--hub-text-tertiary);margin-top:3px;font-size:11.5px;line-height:16px}._506LLG_card{border:1px solid var(--hub-border-1);background:var(--hub-bg-1);border-radius:8px;flex-direction:column;min-width:0;display:flex}._506LLG_settingRow{border-bottom:1px solid var(--hub-border-1);justify-content:space-between;align-items:center;gap:16px;min-width:0;padding:10px 12px;display:flex}._506LLG_settingRow:last-child{border-bottom:none}._506LLG_settingLabel{flex:1;min-width:0}._506LLG_settingTitle{color:var(--hub-text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:12.5px;font-weight:500;line-height:18px;overflow:hidden}._506LLG_settingDesc{color:var(--hub-text-tertiary);margin-top:2px;font-size:11px;line-height:15px}._506LLG_settingControl{flex:none;align-items:center;display:flex}._506LLG_settingRowStack{border-bottom:1px solid var(--hub-border-1);flex-direction:column;align-items:stretch;gap:8px;min-width:0;padding:10px 12px;display:flex}._506LLG_settingRowStack:last-child{border-bottom:none}._506LLG_settingControlStack{align-items:center;display:flex}._506LLG_settingControlStack ._506LLG_textInput{width:100%}._506LLG_controlDropdown{min-width:180px}._506LLG_textInput{width:240px;height:28px;color:var(--hub-text-primary);background:var(--hub-bg-1);border:1px solid var(--hub-border-input);border-radius:6px;outline:none;padding:0 9px;font-family:inherit;font-size:12px;transition:border-color .15s}._506LLG_textInput:focus{border-color:var(--hub-brand-border)}._506LLG_textInput::placeholder{color:var(--hub-text-disabled)}._506LLG_resetBtn{cursor:pointer;height:28px;color:var(--hub-danger-text);border:1px solid var(--hub-danger-border);background:0 0;border-radius:6px;flex:none;padding:0 14px;font-size:12px;font-weight:500;transition:background-color .15s,border-color .15s,color .15s}._506LLG_resetBtn:hover{background:var(--hub-danger-tint);border-color:var(--hub-danger-text)}";
|
|
4861
|
+
const css$5 = "._506LLG_root{flex:1;align-items:stretch;min-width:0;min-height:0;display:flex}._506LLG_sidebar{border-right:1px solid var(--hub-border-1);flex-direction:column;flex:none;gap:2px;padding:8px 6px;display:flex;overflow-y:auto}._506LLG_navItem,._506LLG_navItemActive{box-sizing:border-box;text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:7px;align-items:center;gap:8px;width:100%;padding:7px 10px;font-size:12.5px;line-height:18px;transition:color .12s,background-color .12s;display:flex}._506LLG_navItem{color:var(--hub-text-secondary);background:0 0}._506LLG_navItem:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._506LLG_navItemActive{color:var(--hub-brand);background:var(--hub-brand-tint);font-weight:600}._506LLG_navIcon{flex:none;display:inline-flex}._506LLG_content{flex-direction:column;flex:1;min-width:0;min-height:0;padding:14px 16px 18px;display:flex;overflow-y:auto}._506LLG_pageHeader{margin-bottom:12px}._506LLG_pageTitle{color:var(--hub-text-primary);font-size:14px;font-weight:600;line-height:20px}._506LLG_pageDesc{color:var(--hub-text-tertiary);margin-top:3px;font-size:11.5px;line-height:16px}._506LLG_card{border:1px solid var(--hub-border-1);background:var(--hub-bg-1);border-radius:8px;flex-direction:column;min-width:0;display:flex}._506LLG_settingRow{border-bottom:1px solid var(--hub-border-1);justify-content:space-between;align-items:center;gap:16px;min-width:0;padding:10px 12px;display:flex}._506LLG_settingRow:last-child{border-bottom:none}._506LLG_settingLabel{flex:1;min-width:0}._506LLG_settingTitle{color:var(--hub-text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:12.5px;font-weight:500;line-height:18px;overflow:hidden}._506LLG_settingDesc{color:var(--hub-text-tertiary);margin-top:2px;font-size:11px;line-height:15px}._506LLG_settingControl{flex:none;align-items:center;display:flex}._506LLG_settingRowStack{border-bottom:1px solid var(--hub-border-1);flex-direction:column;align-items:stretch;gap:8px;min-width:0;padding:10px 12px;display:flex}._506LLG_settingRowStack:last-child{border-bottom:none}._506LLG_settingControlStack{align-items:center;display:flex}._506LLG_settingControlStack ._506LLG_textInput{width:100%}._506LLG_proxyControl{flex-direction:column;align-items:stretch;gap:5px;width:100%;display:flex}._506LLG_proxyHint{color:var(--hub-text-disabled);font-size:11px;line-height:1.4}._506LLG_proxyHintOk{color:var(--hub-success)}._506LLG_proxyHintFail{color:var(--hub-warning)}._506LLG_controlDropdown{min-width:180px}._506LLG_textInput{width:240px;height:28px;color:var(--hub-text-primary);background:var(--hub-bg-1);border:1px solid var(--hub-border-input);border-radius:6px;outline:none;padding:0 9px;font-family:inherit;font-size:12px;transition:border-color .15s}._506LLG_textInput:focus{border-color:var(--hub-brand-border)}._506LLG_textInput::placeholder{color:var(--hub-text-disabled)}._506LLG_resetBtn{cursor:pointer;height:28px;color:var(--hub-danger-text);border:1px solid var(--hub-danger-border);background:0 0;border-radius:6px;flex:none;padding:0 14px;font-size:12px;font-weight:500;transition:background-color .15s,border-color .15s,color .15s}._506LLG_resetBtn:hover{background:var(--hub-danger-tint);border-color:var(--hub-danger-text)}";
|
|
4782
4862
|
const tagId$5 = "dsh-plugin/SettingsView.module.css";
|
|
4783
4863
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$5) + "]") === null) {
|
|
4784
4864
|
const tag = document.createElement("style");
|
|
@@ -4793,30 +4873,34 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4793
4873
|
css: css$5
|
|
4794
4874
|
});
|
|
4795
4875
|
var SettingsView_module_css_default = {
|
|
4876
|
+
"settingRowStack": "_506LLG_settingRowStack",
|
|
4877
|
+
"proxyHint": "_506LLG_proxyHint",
|
|
4878
|
+
"pageHeader": "_506LLG_pageHeader",
|
|
4796
4879
|
"controlDropdown": "_506LLG_controlDropdown",
|
|
4797
|
-
"settingTitle": "_506LLG_settingTitle",
|
|
4798
|
-
"settingControl": "_506LLG_settingControl",
|
|
4799
4880
|
"settingControlStack": "_506LLG_settingControlStack",
|
|
4800
|
-
"
|
|
4881
|
+
"proxyHintOk": "_506LLG_proxyHintOk",
|
|
4801
4882
|
"navItemActive": "_506LLG_navItemActive",
|
|
4802
|
-
"
|
|
4803
|
-
"card": "_506LLG_card",
|
|
4804
|
-
"pageTitle": "_506LLG_pageTitle",
|
|
4805
|
-
"navIcon": "_506LLG_navIcon",
|
|
4806
|
-
"pageHeader": "_506LLG_pageHeader",
|
|
4807
|
-
"pageDesc": "_506LLG_pageDesc",
|
|
4883
|
+
"settingDesc": "_506LLG_settingDesc",
|
|
4808
4884
|
"textInput": "_506LLG_textInput",
|
|
4809
|
-
"
|
|
4885
|
+
"settingTitle": "_506LLG_settingTitle",
|
|
4886
|
+
"proxyControl": "_506LLG_proxyControl",
|
|
4810
4887
|
"navItem": "_506LLG_navItem",
|
|
4811
|
-
"settingDesc": "_506LLG_settingDesc",
|
|
4812
|
-
"resetBtn": "_506LLG_resetBtn",
|
|
4813
4888
|
"content": "_506LLG_content",
|
|
4889
|
+
"sidebar": "_506LLG_sidebar",
|
|
4890
|
+
"settingControl": "_506LLG_settingControl",
|
|
4891
|
+
"root": "_506LLG_root",
|
|
4892
|
+
"proxyHintFail": "_506LLG_proxyHintFail",
|
|
4893
|
+
"resetBtn": "_506LLG_resetBtn",
|
|
4814
4894
|
"settingRow": "_506LLG_settingRow",
|
|
4815
|
-
"
|
|
4895
|
+
"card": "_506LLG_card",
|
|
4896
|
+
"pageDesc": "_506LLG_pageDesc",
|
|
4897
|
+
"settingLabel": "_506LLG_settingLabel",
|
|
4898
|
+
"pageTitle": "_506LLG_pageTitle",
|
|
4899
|
+
"navIcon": "_506LLG_navIcon"
|
|
4816
4900
|
};
|
|
4817
4901
|
//#endregion
|
|
4818
4902
|
//#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)}";
|
|
4903
|
+
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
4904
|
const tagId$4 = "dsh-plugin/Dropdown.module.css";
|
|
4821
4905
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$4) + "]") === null) {
|
|
4822
4906
|
const tag = document.createElement("style");
|
|
@@ -4832,18 +4916,62 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4832
4916
|
});
|
|
4833
4917
|
var Dropdown_module_css_default = {
|
|
4834
4918
|
"dropdownArrow": "B_Gxsq_dropdownArrow",
|
|
4919
|
+
"dropdownBtn": "B_Gxsq_dropdownBtn",
|
|
4835
4920
|
"dropdownItemActive": "B_Gxsq_dropdownItemActive",
|
|
4836
|
-
"
|
|
4921
|
+
"dropdownCountActive": "B_Gxsq_dropdownCountActive",
|
|
4837
4922
|
"dropdownCount": "B_Gxsq_dropdownCount",
|
|
4838
|
-
"
|
|
4923
|
+
"dropdownLabel": "B_Gxsq_dropdownLabel",
|
|
4839
4924
|
"dropdown": "B_Gxsq_dropdown",
|
|
4840
|
-
"
|
|
4841
|
-
"dropdownCountActive": "B_Gxsq_dropdownCountActive",
|
|
4925
|
+
"dropdownFill": "B_Gxsq_dropdownFill",
|
|
4842
4926
|
"dropdownItem": "B_Gxsq_dropdownItem",
|
|
4843
4927
|
"dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen",
|
|
4928
|
+
"dropdownPanel": "B_Gxsq_dropdownPanel",
|
|
4844
4929
|
"dropdownItemLabel": "B_Gxsq_dropdownItemLabel"
|
|
4845
4930
|
};
|
|
4846
4931
|
//#endregion
|
|
4932
|
+
//#region \0dsh-css:src/client/styles/Toggle.module.css.mjs
|
|
4933
|
+
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)}";
|
|
4934
|
+
const tagId$3 = "dsh-plugin/Toggle.module.css";
|
|
4935
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
|
|
4936
|
+
const tag = document.createElement("style");
|
|
4937
|
+
tag.dataset.plugin = "dsh-plugin";
|
|
4938
|
+
tag.dataset.pluginCss = tagId$3;
|
|
4939
|
+
tag.textContent = css$3;
|
|
4940
|
+
document.head.appendChild(tag);
|
|
4941
|
+
}
|
|
4942
|
+
const cssRegistry$3 = globalThis.__DSH_PLUGIN_CSS__ ??= [];
|
|
4943
|
+
if (!cssRegistry$3.some((e) => e.tagId === tagId$3)) cssRegistry$3.push({
|
|
4944
|
+
tagId: tagId$3,
|
|
4945
|
+
css: css$3
|
|
4946
|
+
});
|
|
4947
|
+
var Toggle_module_css_default = {
|
|
4948
|
+
"toggle": "k-cD4G_toggle",
|
|
4949
|
+
"toggleOn": "k-cD4G_toggleOn",
|
|
4950
|
+
"knob": "k-cD4G_knob"
|
|
4951
|
+
};
|
|
4952
|
+
//#endregion
|
|
4953
|
+
//#region src/client/components/ui/Toggle.tsx
|
|
4954
|
+
/**
|
|
4955
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
4956
|
+
* Website: https://dsh-plugin.org
|
|
4957
|
+
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
4958
|
+
*
|
|
4959
|
+
* Compact switch used by the settings rows. Native-button based so it is
|
|
4960
|
+
* keyboard focusable and announces state via aria-checked; styling driven
|
|
4961
|
+
* by the --hub-* tokens (on = brand fill, off = neutral track).
|
|
4962
|
+
*/
|
|
4963
|
+
function Toggle({ checked, onChange, title, disabled }) {
|
|
4964
|
+
return (0, react.createElement)("button", {
|
|
4965
|
+
type: "button",
|
|
4966
|
+
role: "switch",
|
|
4967
|
+
"aria-checked": checked,
|
|
4968
|
+
disabled,
|
|
4969
|
+
title,
|
|
4970
|
+
className: checked ? Toggle_module_css_default.toggleOn : Toggle_module_css_default.toggle,
|
|
4971
|
+
onClick: () => onChange(!checked)
|
|
4972
|
+
}, (0, react.createElement)("span", { className: Toggle_module_css_default.knob }));
|
|
4973
|
+
}
|
|
4974
|
+
//#endregion
|
|
4847
4975
|
//#region src/client/components/ui/Dropdown.tsx
|
|
4848
4976
|
/**
|
|
4849
4977
|
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
@@ -4903,49 +5031,6 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4903
5031
|
}, (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
5032
|
}
|
|
4905
5033
|
//#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
5034
|
//#region \0dsh-css:src/client/styles/DiagnosticsView.module.css.mjs
|
|
4950
5035
|
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
5036
|
const tagId$2 = "dsh-plugin/DiagnosticsView.module.css";
|
|
@@ -4962,29 +5047,29 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4962
5047
|
css: css$2
|
|
4963
5048
|
});
|
|
4964
5049
|
var DiagnosticsView_module_css_default = {
|
|
5050
|
+
"head": "k9eRya_head",
|
|
4965
5051
|
"panel": "k9eRya_panel",
|
|
4966
|
-
"
|
|
4967
|
-
"
|
|
4968
|
-
"
|
|
4969
|
-
"runBtn": "k9eRya_runBtn",
|
|
4970
|
-
"display": "k9eRya_display",
|
|
5052
|
+
"summary": "k9eRya_summary",
|
|
5053
|
+
"name": "k9eRya_name",
|
|
5054
|
+
"badgeOk": "k9eRya_badgeOk",
|
|
4971
5055
|
"badge": "k9eRya_badge",
|
|
4972
|
-
"envCopyBtn": "k9eRya_envCopyBtn",
|
|
4973
|
-
"envDesc": "k9eRya_envDesc",
|
|
4974
|
-
"diagPulse": "k9eRya_diagPulse",
|
|
4975
|
-
"envLabel": "k9eRya_envLabel",
|
|
4976
|
-
"summaryOk": "k9eRya_summaryOk",
|
|
4977
|
-
"head": "k9eRya_head",
|
|
4978
5056
|
"summaryFail": "k9eRya_summaryFail",
|
|
5057
|
+
"runBtn": "k9eRya_runBtn",
|
|
5058
|
+
"meta": "k9eRya_meta",
|
|
5059
|
+
"summaryOk": "k9eRya_summaryOk",
|
|
5060
|
+
"envLabel": "k9eRya_envLabel",
|
|
5061
|
+
"envRow": "k9eRya_envRow",
|
|
4979
5062
|
"row": "k9eRya_row",
|
|
4980
|
-
"badgeOk": "k9eRya_badgeOk",
|
|
4981
|
-
"summary": "k9eRya_summary",
|
|
4982
|
-
"envTitle": "k9eRya_envTitle",
|
|
4983
|
-
"badgeIdle": "k9eRya_badgeIdle",
|
|
4984
|
-
"badgeFail": "k9eRya_badgeFail",
|
|
4985
5063
|
"badgeRunning": "k9eRya_badgeRunning",
|
|
4986
|
-
"
|
|
4987
|
-
"
|
|
5064
|
+
"summaryRunning": "k9eRya_summaryRunning",
|
|
5065
|
+
"diagPulse": "k9eRya_diagPulse",
|
|
5066
|
+
"envCopyBtn": "k9eRya_envCopyBtn",
|
|
5067
|
+
"badgeFail": "k9eRya_badgeFail",
|
|
5068
|
+
"badgeIdle": "k9eRya_badgeIdle",
|
|
5069
|
+
"display": "k9eRya_display",
|
|
5070
|
+
"headHint": "k9eRya_headHint",
|
|
5071
|
+
"envTitle": "k9eRya_envTitle",
|
|
5072
|
+
"envDesc": "k9eRya_envDesc"
|
|
4988
5073
|
};
|
|
4989
5074
|
//#endregion
|
|
4990
5075
|
//#region src/client/components/views/DiagnosticsView.tsx
|
|
@@ -5014,7 +5099,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5014
5099
|
const INITIAL_ROWS = [
|
|
5015
5100
|
{
|
|
5016
5101
|
key: "npm",
|
|
5017
|
-
display: "
|
|
5102
|
+
display: "",
|
|
5018
5103
|
nameKey: "diagNpm",
|
|
5019
5104
|
status: "idle",
|
|
5020
5105
|
ms: null,
|
|
@@ -5022,7 +5107,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5022
5107
|
},
|
|
5023
5108
|
{
|
|
5024
5109
|
key: "github",
|
|
5025
|
-
display: "github.com",
|
|
5110
|
+
display: "github.com/dshplugin/hello-dsh",
|
|
5026
5111
|
nameKey: "diagGithub",
|
|
5027
5112
|
status: "idle",
|
|
5028
5113
|
ms: null,
|
|
@@ -5037,8 +5122,19 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5037
5122
|
statusCode: null
|
|
5038
5123
|
}
|
|
5039
5124
|
];
|
|
5040
|
-
function DiagnosticsView({ t, env, onCopy }) {
|
|
5041
|
-
const [rows, setRows] = (0, react.useState)(
|
|
5125
|
+
function DiagnosticsView({ t, env, proxy, onCopy }) {
|
|
5126
|
+
const [rows, setRows] = (0, react.useState)(() => {
|
|
5127
|
+
const base = INITIAL_ROWS.map((r) => ({ ...r }));
|
|
5128
|
+
if (proxy.trim() !== "") base.push({
|
|
5129
|
+
key: "proxy",
|
|
5130
|
+
display: proxy.trim(),
|
|
5131
|
+
nameKey: "diagProxy",
|
|
5132
|
+
status: "idle",
|
|
5133
|
+
ms: null,
|
|
5134
|
+
statusCode: null
|
|
5135
|
+
});
|
|
5136
|
+
return base;
|
|
5137
|
+
});
|
|
5042
5138
|
/** 当前探测请求:重测/卸载时 abort 旧请求,避免乱序结果覆盖 */
|
|
5043
5139
|
const runningRef = (0, react.useRef)(null);
|
|
5044
5140
|
const patchRows = (key, patch) => {
|
|
@@ -5083,7 +5179,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5083
5179
|
if (ev.type === "ok" || ev.type === "fail") patchRows(ev.key, {
|
|
5084
5180
|
status: ev.type === "ok" ? "ok" : "fail",
|
|
5085
5181
|
ms: typeof ev.ms === "number" ? ev.ms : null,
|
|
5086
|
-
statusCode: typeof ev.status === "number" ? ev.status : null
|
|
5182
|
+
statusCode: typeof ev.status === "number" ? ev.status : null,
|
|
5183
|
+
display: typeof ev.display === "string" ? ev.display : ""
|
|
5087
5184
|
});
|
|
5088
5185
|
}
|
|
5089
5186
|
nl = buf.indexOf("\n");
|
|
@@ -5127,7 +5224,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5127
5224
|
disabled: r.status === "running",
|
|
5128
5225
|
onClick: () => run(r.key),
|
|
5129
5226
|
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);
|
|
5227
|
+
}, (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
5228
|
}), (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
5229
|
}
|
|
5133
5230
|
//#endregion
|
|
@@ -5147,57 +5244,57 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5147
5244
|
css: css$1
|
|
5148
5245
|
});
|
|
5149
5246
|
var LogsView_module_css_default = {
|
|
5150
|
-
"badgeError": "_3j77BW_badgeError",
|
|
5151
|
-
"pathDialogHint": "_3j77BW_pathDialogHint",
|
|
5152
|
-
"search": "_3j77BW_search",
|
|
5153
5247
|
"catUpdate": "_3j77BW_catUpdate",
|
|
5248
|
+
"catDiagnostics": "_3j77BW_catDiagnostics",
|
|
5249
|
+
"badgeError": "_3j77BW_badgeError",
|
|
5250
|
+
"pathDialog": "_3j77BW_pathDialog",
|
|
5251
|
+
"empty": "_3j77BW_empty",
|
|
5252
|
+
"message": "_3j77BW_message",
|
|
5253
|
+
"list": "_3j77BW_list",
|
|
5254
|
+
"head": "_3j77BW_head",
|
|
5255
|
+
"pathDialogDesc": "_3j77BW_pathDialogDesc",
|
|
5256
|
+
"previewRow": "_3j77BW_previewRow",
|
|
5154
5257
|
"more": "_3j77BW_more",
|
|
5155
|
-
"
|
|
5156
|
-
"entry": "_3j77BW_entry",
|
|
5157
|
-
"filterChip": "_3j77BW_filterChip",
|
|
5158
|
-
"event": "_3j77BW_event",
|
|
5159
|
-
"pathDialogRow": "_3j77BW_pathDialogRow",
|
|
5160
|
-
"foot": "_3j77BW_foot",
|
|
5161
|
-
"pathDialogReset": "_3j77BW_pathDialogReset",
|
|
5162
|
-
"actions": "_3j77BW_actions",
|
|
5163
|
-
"badgeWarn": "_3j77BW_badgeWarn",
|
|
5164
|
-
"catUninstall": "_3j77BW_catUninstall",
|
|
5165
|
-
"catSettings": "_3j77BW_catSettings",
|
|
5166
|
-
"clearBtn": "_3j77BW_clearBtn",
|
|
5167
|
-
"pathLabel": "_3j77BW_pathLabel",
|
|
5258
|
+
"footPath": "_3j77BW_footPath",
|
|
5168
5259
|
"logList": "_3j77BW_logList",
|
|
5169
|
-
"
|
|
5170
|
-
"catInstall": "_3j77BW_catInstall",
|
|
5171
|
-
"previewRow": "_3j77BW_previewRow",
|
|
5260
|
+
"filterChip": "_3j77BW_filterChip",
|
|
5172
5261
|
"badgeInfo": "_3j77BW_badgeInfo",
|
|
5173
|
-
"
|
|
5262
|
+
"pathRow": "_3j77BW_pathRow",
|
|
5263
|
+
"footActions": "_3j77BW_footActions",
|
|
5174
5264
|
"catSystem": "_3j77BW_catSystem",
|
|
5175
|
-
"footFail": "_3j77BW_footFail",
|
|
5176
5265
|
"btn": "_3j77BW_btn",
|
|
5177
|
-
"
|
|
5178
|
-
"
|
|
5179
|
-
"
|
|
5180
|
-
"
|
|
5181
|
-
"badge": "_3j77BW_badge",
|
|
5182
|
-
"list": "_3j77BW_list",
|
|
5183
|
-
"searchInput": "_3j77BW_searchInput",
|
|
5184
|
-
"catDiagnostics": "_3j77BW_catDiagnostics",
|
|
5185
|
-
"empty": "_3j77BW_empty",
|
|
5186
|
-
"footActions": "_3j77BW_footActions",
|
|
5187
|
-
"badgeSuccess": "_3j77BW_badgeSuccess",
|
|
5188
|
-
"badgeDebug": "_3j77BW_badgeDebug",
|
|
5266
|
+
"event": "_3j77BW_event",
|
|
5267
|
+
"badgeWarn": "_3j77BW_badgeWarn",
|
|
5268
|
+
"pathDialogRow": "_3j77BW_pathDialogRow",
|
|
5269
|
+
"footFail": "_3j77BW_footFail",
|
|
5189
5270
|
"pathDialogFoot": "_3j77BW_pathDialogFoot",
|
|
5190
|
-
"
|
|
5191
|
-
"pathText": "_3j77BW_pathText",
|
|
5271
|
+
"moreEnd": "_3j77BW_moreEnd",
|
|
5192
5272
|
"filterBar": "_3j77BW_filterBar",
|
|
5193
|
-
"
|
|
5194
|
-
"
|
|
5273
|
+
"pathDraft": "_3j77BW_pathDraft",
|
|
5274
|
+
"catBadge": "_3j77BW_catBadge",
|
|
5275
|
+
"pathDialogReset": "_3j77BW_pathDialogReset",
|
|
5195
5276
|
"filterChipActive": "_3j77BW_filterChipActive",
|
|
5196
|
-
"
|
|
5277
|
+
"pathDialogHint": "_3j77BW_pathDialogHint",
|
|
5278
|
+
"badgeDebug": "_3j77BW_badgeDebug",
|
|
5279
|
+
"catSettings": "_3j77BW_catSettings",
|
|
5280
|
+
"catInstall": "_3j77BW_catInstall",
|
|
5281
|
+
"actions": "_3j77BW_actions",
|
|
5282
|
+
"clearBtn": "_3j77BW_clearBtn",
|
|
5283
|
+
"pathText": "_3j77BW_pathText",
|
|
5284
|
+
"search": "_3j77BW_search",
|
|
5285
|
+
"foot": "_3j77BW_foot",
|
|
5286
|
+
"panel": "_3j77BW_panel",
|
|
5197
5287
|
"headActions": "_3j77BW_headActions",
|
|
5198
|
-
"
|
|
5288
|
+
"time": "_3j77BW_time",
|
|
5289
|
+
"linkBtn": "_3j77BW_linkBtn",
|
|
5290
|
+
"searchInput": "_3j77BW_searchInput",
|
|
5291
|
+
"footCount": "_3j77BW_footCount",
|
|
5292
|
+
"pathLabel": "_3j77BW_pathLabel",
|
|
5293
|
+
"badge": "_3j77BW_badge",
|
|
5294
|
+
"entry": "_3j77BW_entry",
|
|
5199
5295
|
"headHint": "_3j77BW_headHint",
|
|
5200
|
-
"
|
|
5296
|
+
"catUninstall": "_3j77BW_catUninstall",
|
|
5297
|
+
"badgeSuccess": "_3j77BW_badgeSuccess"
|
|
5201
5298
|
};
|
|
5202
5299
|
//#endregion
|
|
5203
5300
|
//#region src/client/components/modals/LogsModal.tsx
|
|
@@ -5768,6 +5865,30 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5768
5865
|
* Diagnostics — live connectivity probe + environment snapshot
|
|
5769
5866
|
* Logs — system log viewer + storage location
|
|
5770
5867
|
*/
|
|
5868
|
+
/** npm 镜像源预设:空串 = 未配置(跟随用户本机 npm 配置,本插件不注入任何 registry)。
|
|
5869
|
+
* 只提供常见国内顶级镜像下拉,不做自定义输入 —— 想用其它镜像直接在 ~/.npmrc 配置即可。 */
|
|
5870
|
+
const MIRROR_PRESETS = [
|
|
5871
|
+
{
|
|
5872
|
+
value: "",
|
|
5873
|
+
labelKey: "mirrorNone"
|
|
5874
|
+
},
|
|
5875
|
+
{
|
|
5876
|
+
value: "https://registry.npmjs.org",
|
|
5877
|
+
labelKey: "mirrorOfficial"
|
|
5878
|
+
},
|
|
5879
|
+
{
|
|
5880
|
+
value: "https://registry.npmmirror.com",
|
|
5881
|
+
labelKey: "mirrorNpmmirror"
|
|
5882
|
+
},
|
|
5883
|
+
{
|
|
5884
|
+
value: "https://mirrors.cloud.tencent.com/npm/",
|
|
5885
|
+
labelKey: "mirrorTencent"
|
|
5886
|
+
},
|
|
5887
|
+
{
|
|
5888
|
+
value: "https://mirrors.tuna.tsinghua.edu.cn/npm/",
|
|
5889
|
+
labelKey: "mirrorTsinghua"
|
|
5890
|
+
}
|
|
5891
|
+
];
|
|
5771
5892
|
/** 左侧导航:顺序即展示顺序;labelKey 是分组标题,icon 是行内小图标。 */
|
|
5772
5893
|
const NAV = [
|
|
5773
5894
|
{
|
|
@@ -5796,37 +5917,57 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5796
5917
|
icon: ResetIcon
|
|
5797
5918
|
}
|
|
5798
5919
|
];
|
|
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
5920
|
/** 设置行:默认标签左控件右;stack=true 时控件独占一行(文本框整行显示),hairline 分隔。 */
|
|
5815
5921
|
function SettingRow({ title, desc, children, stack = false }) {
|
|
5816
5922
|
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));
|
|
5817
5923
|
}
|
|
5818
|
-
function SettingsView({ t, settings, update, reset, env, onCopy }) {
|
|
5924
|
+
function SettingsView({ t, settings, update, reset, env, onCopy, openSection, onConsumedOpenSection }) {
|
|
5819
5925
|
/** 当前激活的分组:左侧导航点击切换,右侧只渲染这一组 */
|
|
5820
5926
|
const [section, setSection] = (0, react.useState)("updates");
|
|
5821
5927
|
/** 恢复默认确认弹窗:点按钮先弹窗询问,确认后才真正 reset(不做两段式按钮) */
|
|
5822
5928
|
const [resetConfirm, setResetConfirm] = (0, react.useState)(false);
|
|
5823
|
-
|
|
5824
|
-
|
|
5825
|
-
|
|
5826
|
-
|
|
5929
|
+
(0, react.useEffect)(() => {
|
|
5930
|
+
if (!openSection) return;
|
|
5931
|
+
setSection(openSection);
|
|
5932
|
+
onConsumedOpenSection?.();
|
|
5933
|
+
}, [openSection, onConsumedOpenSection]);
|
|
5934
|
+
const [proxyProbe, setProxyProbe] = (0, react.useState)("idle");
|
|
5935
|
+
const proxyProbeTimer = (0, react.useRef)(null);
|
|
5936
|
+
const proxyProbeSeq = (0, react.useRef)(0);
|
|
5937
|
+
(0, react.useEffect)(() => () => {
|
|
5938
|
+
if (proxyProbeTimer.current !== null) window.clearTimeout(proxyProbeTimer.current);
|
|
5939
|
+
proxyProbeSeq.current += 1;
|
|
5940
|
+
}, []);
|
|
5941
|
+
(0, react.useEffect)(() => {
|
|
5942
|
+
if (settings.proxy === "") setProxyProbe("idle");
|
|
5943
|
+
}, [settings.proxy]);
|
|
5944
|
+
const probeProxyNow = (value) => {
|
|
5945
|
+
const v = value.trim();
|
|
5946
|
+
if (v === "") {
|
|
5947
|
+
setProxyProbe("idle");
|
|
5948
|
+
return;
|
|
5949
|
+
}
|
|
5950
|
+
const seq = ++proxyProbeSeq.current;
|
|
5951
|
+
setProxyProbe("checking");
|
|
5952
|
+
fetch("/dsh-plugin-hub/proxy-check", {
|
|
5953
|
+
method: "POST",
|
|
5954
|
+
headers: { "content-type": "application/json" },
|
|
5955
|
+
body: JSON.stringify({ proxy: v }),
|
|
5956
|
+
cache: "no-store"
|
|
5957
|
+
}).then((res) => res.json()).then((data) => {
|
|
5958
|
+
if (seq !== proxyProbeSeq.current) return;
|
|
5959
|
+
setProxyProbe(data.ok ? "ok" : "fail");
|
|
5960
|
+
}).catch(() => {
|
|
5961
|
+
if (seq === proxyProbeSeq.current) setProxyProbe("fail");
|
|
5962
|
+
});
|
|
5827
5963
|
};
|
|
5828
|
-
const
|
|
5829
|
-
|
|
5964
|
+
const onProxyChange = (e) => {
|
|
5965
|
+
const value = e.target.value;
|
|
5966
|
+
update({ proxy: value });
|
|
5967
|
+
if (proxyProbeTimer.current !== null) window.clearTimeout(proxyProbeTimer.current);
|
|
5968
|
+
proxyProbeTimer.current = window.setTimeout(() => probeProxyNow(value), 700);
|
|
5969
|
+
};
|
|
5970
|
+
const onMirrorChange = (value) => update({ npmRegistry: value });
|
|
5830
5971
|
/** 每个分组的页面副标题(导航标题之上再补一句说明,保持桌面设置质感) */
|
|
5831
5972
|
const pageDesc = {
|
|
5832
5973
|
updates: t("settingsUpdateDesc"),
|
|
@@ -5847,42 +5988,29 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5847
5988
|
}), (0, react.createElement)(SettingRow, {
|
|
5848
5989
|
title: t("settingsMirror"),
|
|
5849
5990
|
desc: t("settingsMirrorDesc"),
|
|
5991
|
+
stack: true,
|
|
5850
5992
|
children: (0, react.createElement)(Dropdown, {
|
|
5851
|
-
value:
|
|
5852
|
-
options:
|
|
5853
|
-
value:
|
|
5854
|
-
label: t(
|
|
5855
|
-
})),
|
|
5856
|
-
value: "custom",
|
|
5857
|
-
label: t("mirrorCustom")
|
|
5858
|
-
}],
|
|
5993
|
+
value: settings.npmRegistry,
|
|
5994
|
+
options: MIRROR_PRESETS.map((m) => ({
|
|
5995
|
+
value: m.value,
|
|
5996
|
+
label: t(m.labelKey)
|
|
5997
|
+
})),
|
|
5859
5998
|
onChange: onMirrorChange,
|
|
5860
5999
|
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
|
|
6000
|
+
className: `${SettingsView_module_css_default.controlDropdown} ${Dropdown_module_css_default.dropdownFill}`
|
|
5873
6001
|
})
|
|
5874
6002
|
}), (0, react.createElement)(SettingRow, {
|
|
5875
6003
|
title: t("settingsProxy"),
|
|
5876
6004
|
desc: t("settingsProxyDesc"),
|
|
5877
6005
|
stack: true,
|
|
5878
|
-
children: (0, react.createElement)("input", {
|
|
6006
|
+
children: (0, react.createElement)("div", { className: SettingsView_module_css_default.proxyControl }, (0, react.createElement)("input", {
|
|
5879
6007
|
className: SettingsView_module_css_default.textInput,
|
|
5880
6008
|
type: "text",
|
|
5881
6009
|
value: settings.proxy,
|
|
5882
6010
|
placeholder: "http://127.0.0.1:7890",
|
|
5883
6011
|
spellCheck: false,
|
|
5884
6012
|
onChange: onProxyChange
|
|
5885
|
-
})
|
|
6013
|
+
}), proxyProbe === "checking" ? (0, react.createElement)("div", { className: SettingsView_module_css_default.proxyHint }, t("proxyCheckChecking")) : proxyProbe === "ok" ? (0, react.createElement)("div", { className: `${SettingsView_module_css_default.proxyHint} ${SettingsView_module_css_default.proxyHintOk}` }, t("proxyCheckOk")) : proxyProbe === "fail" ? (0, react.createElement)("div", { className: `${SettingsView_module_css_default.proxyHint} ${SettingsView_module_css_default.proxyHintFail}` }, t("proxyCheckFail")) : null)
|
|
5886
6014
|
}));
|
|
5887
6015
|
const securityCard = (0, react.createElement)("div", { className: SettingsView_module_css_default.card }, (0, react.createElement)(SettingRow, {
|
|
5888
6016
|
title: t("settingsEnableNpm"),
|
|
@@ -5912,6 +6040,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5912
6040
|
const diagnosticsCard = (0, react.createElement)("div", { className: SettingsView_module_css_default.card }, (0, react.createElement)(DiagnosticsView, {
|
|
5913
6041
|
t,
|
|
5914
6042
|
env,
|
|
6043
|
+
proxy: settings.proxy,
|
|
5915
6044
|
onCopy
|
|
5916
6045
|
}));
|
|
5917
6046
|
const logsCard = (0, react.createElement)("div", { className: SettingsView_module_css_default.card }, (0, react.createElement)(LogsView, {
|
|
@@ -5984,6 +6113,27 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5984
6113
|
const { settings: hubSettings, ready: settingsReady, update: updateSettings, reset: resetSettings } = useSettings();
|
|
5985
6114
|
/** 一级导航:插件中心 / 已安装 / 自定义安装 / 设置 */
|
|
5986
6115
|
const [view, setView] = (0, react.useState)("market");
|
|
6116
|
+
/** 外部跳转设置分组的一次性信号(错误弹窗「去系统诊断」→ 设置 → 系统诊断):
|
|
6117
|
+
* 传给 SettingsView 消费后即清空,避免下次进设置被强制带跳 */
|
|
6118
|
+
const [settingsSection, setSettingsSection] = (0, react.useState)(null);
|
|
6119
|
+
/** 网络不通提示的「去系统诊断」直达:关掉所有弹窗(错误/通知/安装确认进度等,
|
|
6120
|
+
* 否则 InstallModal 失败后仍停驻原地盖住设置页)→ 切到设置页 → 切到系统诊断分组(自动跑连通性检测) */
|
|
6121
|
+
const openDiagnostics = () => {
|
|
6122
|
+
setErrorMsg(null);
|
|
6123
|
+
setShowNotifications(false);
|
|
6124
|
+
setConfirmPlugin(null);
|
|
6125
|
+
setConfirmCustomTarget(null);
|
|
6126
|
+
setConfirmGlobalNpm(null);
|
|
6127
|
+
setUninstallPlugin(null);
|
|
6128
|
+
setUninstallItem(null);
|
|
6129
|
+
setDetailItem(null);
|
|
6130
|
+
setShowHubUpdate(false);
|
|
6131
|
+
setShowAbout(false);
|
|
6132
|
+
setIgnoreTarget(null);
|
|
6133
|
+
setShowRestartConfirm(false);
|
|
6134
|
+
setView("settings");
|
|
6135
|
+
setSettingsSection("diagnostics");
|
|
6136
|
+
};
|
|
5987
6137
|
/** 全局反馈 Toast:{id} 用于重复触发时重新走入场动画,kind 决定文案与配色 */
|
|
5988
6138
|
const [toast, setToast] = (0, react.useState)(null);
|
|
5989
6139
|
/** 复制反馈:记录刚复制安装命令的仓库,按钮短暂切换为「已复制」样式 */
|
|
@@ -6044,8 +6194,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
6044
6194
|
}, [view]);
|
|
6045
6195
|
const queue = useTaskQueue({
|
|
6046
6196
|
t,
|
|
6197
|
+
langKey,
|
|
6047
6198
|
refreshInstalled: catalog.refreshInstalled,
|
|
6048
|
-
onInstallDone: (viaModal, repo, needsRestart) => {
|
|
6199
|
+
onInstallDone: (viaModal, repo, needsRestart, update) => {
|
|
6049
6200
|
setInstallNeedsRestart(needsRestart);
|
|
6050
6201
|
if (viaModal) setInstallDone(true);
|
|
6051
6202
|
else setToast({
|
|
@@ -6054,6 +6205,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
6054
6205
|
});
|
|
6055
6206
|
setNotifications(addSuccess({
|
|
6056
6207
|
kind: "install",
|
|
6208
|
+
action: update ? "update" : "install",
|
|
6057
6209
|
repo: repo ?? ""
|
|
6058
6210
|
}));
|
|
6059
6211
|
},
|
|
@@ -6069,7 +6221,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
6069
6221
|
repo: repo ?? ""
|
|
6070
6222
|
}));
|
|
6071
6223
|
},
|
|
6072
|
-
onError: (message, repo, kind, command, attempts) => {
|
|
6224
|
+
onError: (message, repo, kind, command, attempts, update) => {
|
|
6073
6225
|
const issueRepo = issueRepoOf(repo ?? "", catalog.installedItems, catalog.plugins);
|
|
6074
6226
|
setErrorMsg({
|
|
6075
6227
|
message,
|
|
@@ -6080,7 +6232,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
6080
6232
|
});
|
|
6081
6233
|
setNotifications(addFailure({
|
|
6082
6234
|
kind,
|
|
6083
|
-
|
|
6235
|
+
action: update ? "update" : "install",
|
|
6236
|
+
repo: repo ?? "",
|
|
6084
6237
|
message,
|
|
6085
6238
|
command,
|
|
6086
6239
|
attempts
|
|
@@ -6374,9 +6527,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
6374
6527
|
id: Date.now(),
|
|
6375
6528
|
kind: "copied"
|
|
6376
6529
|
});
|
|
6377
|
-
}
|
|
6530
|
+
},
|
|
6531
|
+
openSection: settingsSection,
|
|
6532
|
+
onConsumedOpenSection: () => setSettingsSection(null)
|
|
6378
6533
|
}), showHubUpdate && (0, react.createElement)(HubUpdateModal, {
|
|
6379
|
-
info: catalog.hubUpdateInfo ?? { version: "1.3.
|
|
6534
|
+
info: catalog.hubUpdateInfo ?? { version: "1.3.7" },
|
|
6380
6535
|
lang,
|
|
6381
6536
|
t,
|
|
6382
6537
|
hasUpdate: catalog.hubHasUpdate,
|
|
@@ -6427,6 +6582,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
6427
6582
|
cancelTask: queue.cancelTask,
|
|
6428
6583
|
restarting,
|
|
6429
6584
|
onRestart: () => setShowRestartConfirm(true),
|
|
6585
|
+
onRunDiagnostics: openDiagnostics,
|
|
6430
6586
|
resolveRepo: (repo) => issueRepoOf(repo, catalog.installedItems, catalog.plugins)
|
|
6431
6587
|
}), ignoreTarget && (0, react.createElement)("div", {
|
|
6432
6588
|
className: Modal_module_css_default.overlay,
|
|
@@ -6591,6 +6747,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
6591
6747
|
kind: "errCopied"
|
|
6592
6748
|
});
|
|
6593
6749
|
},
|
|
6750
|
+
onRunDiagnostics: openDiagnostics,
|
|
6594
6751
|
onClose: () => setErrorMsg(null)
|
|
6595
6752
|
}), showRestartConfirm && (0, react.createElement)(RestartConfirmModal, {
|
|
6596
6753
|
t,
|