dsh-plugin 1.3.11 → 1.4.1
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 +12 -12
- package/README.md +22 -22
- package/client/client.js +376 -343
- package/client/client.js.map +1 -1
- package/lib/http/routes.js +47 -6
- package/lib/services/install/preflight.js +6 -6
- package/lib/types/services/install/preflight.d.ts +5 -1
- package/package.json +1 -1
- package/src/client/components/PluginHubSection.tsx +3 -4
- package/src/client/components/catalog/CatalogList.tsx +2 -2
- package/src/client/components/layout/CatalogHeader.tsx +5 -4
- package/src/client/components/modals/NotificationsModal.tsx +10 -0
- package/src/client/components/modals/modals.tsx +9 -2
- package/src/client/components/ui/icons.tsx +1 -1
- package/src/client/components/views/DiagnosticsView.tsx +6 -4
- package/src/client/components/views/InstalledView.tsx +1 -1
- package/src/client/hooks/useCatalog.ts +15 -1
- package/src/client/hooks/useIncrementalList.ts +1 -1
- package/src/client/hooks/useLanguage.ts +14 -10
- package/src/client/locales.ts +20 -16
- package/src/client/logic/constants.ts +2 -2
- package/src/client/logic/failures.ts +29 -5
- package/src/client/logic/urls.ts +11 -5
- package/src/client/styles/InstalledView.module.css +2 -2
- package/src/client/styles/Modal.module.css +8 -8
- package/src/client/types.ts +4 -3
- package/src/server/http/routes.ts +48 -6
- package/src/server/services/install/preflight.ts +11 -7
package/client/client.js
CHANGED
|
@@ -14,11 +14,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
14
14
|
* zh/en dictionaries for the DSH Plugin Hub settings section.
|
|
15
15
|
*/
|
|
16
16
|
const zh = {
|
|
17
|
-
nav: "
|
|
17
|
+
nav: "插件市场",
|
|
18
18
|
title: "DSH Plugin Hub",
|
|
19
|
-
tagline: "DSH Plugin
|
|
19
|
+
tagline: "DSH Plugin 插件市场:面向 DeepSeek Harness 插件收录平台,人工审验、来源可溯,免费安装",
|
|
20
20
|
adBadge: "推荐",
|
|
21
|
-
ad: "DSH Plugin
|
|
21
|
+
ad: "DSH Plugin 插件市场:收录 {total} 款插件,{verified} 款人工精选验证,每日更新",
|
|
22
22
|
search: "搜索插件名称、描述、标签…",
|
|
23
23
|
all: "全部",
|
|
24
24
|
sortStars: "Star",
|
|
@@ -31,15 +31,15 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
31
31
|
fork: "Fork",
|
|
32
32
|
loading: "正在加载插件数据…",
|
|
33
33
|
failed: "插件数据加载失败",
|
|
34
|
-
failedDescNoProxy: "
|
|
35
|
-
failedDescProxy: "你的网络似乎不通,或设置里的 HTTP
|
|
34
|
+
failedDescNoProxy: "你的网络似乎不通,无法获取插件目录数据。请检查网络连接后重试;或点击右上角按钮在浏览器中打开插件市场。",
|
|
35
|
+
failedDescProxy: "你的网络似乎不通,或设置里的 HTTP 代理地址不可达,无法获取插件目录数据。请检查代理设置与网络连接后重试;或点击右上角按钮在浏览器中打开插件市场。",
|
|
36
36
|
retry: "重试",
|
|
37
37
|
install: "安装",
|
|
38
38
|
cliOnlyHint: "此插件可能需命令行辅助,失败时复制上方命令到 dsh 终端",
|
|
39
39
|
failedCopyHint: "安装失败。请复制上方安装命令到 dsh 终端手动执行(原生依赖构建脚本可能需要人工放行,如 pnpm approve-builds)",
|
|
40
40
|
toastCopied: "安装命令已复制,去 dsh 终端粘贴即可安装",
|
|
41
41
|
installed: "已安装",
|
|
42
|
-
viewMarket: "
|
|
42
|
+
viewMarket: "插件市场",
|
|
43
43
|
viewInstalled: "已安装",
|
|
44
44
|
viewCustom: "自定义安装",
|
|
45
45
|
viewSettings: "设置",
|
|
@@ -76,8 +76,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
76
76
|
customLabel: "自定义安装",
|
|
77
77
|
installedSearch: "搜索已安装的插件…",
|
|
78
78
|
installedFilterCatalog: "目录插件",
|
|
79
|
-
hubInstall: "
|
|
80
|
-
hubInstallHint: "
|
|
79
|
+
hubInstall: "插件市场",
|
|
80
|
+
hubInstallHint: "来自插件市场收录的目录插件",
|
|
81
81
|
manualInstall: "手动安装",
|
|
82
82
|
manualInstallHint: "非目录收录,通过命令行手动安装",
|
|
83
83
|
filterByLabel: "来源",
|
|
@@ -108,7 +108,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
108
108
|
settingsUpdate: "更新设置",
|
|
109
109
|
settingsUpdateDesc: "更新检查方式与安装走到的网络通道",
|
|
110
110
|
settingsCheckOnStart: "启动时检查更新",
|
|
111
|
-
settingsCheckOnStartDesc: "
|
|
111
|
+
settingsCheckOnStartDesc: "打开插件市场时检查已安装插件是否有新版,发现更新会提示",
|
|
112
112
|
settingsProxy: "HTTP 代理",
|
|
113
113
|
settingsProxyDesc: "npm / git / 目录数据请求统一走该代理;留空直连",
|
|
114
114
|
proxyCheckChecking: "正在测试该代理地址…",
|
|
@@ -187,6 +187,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
187
187
|
diagNpmUnset: "未配置(跟随本机 npm 配置)",
|
|
188
188
|
diagGithub: "GitHub",
|
|
189
189
|
diagCatalog: "目录站点",
|
|
190
|
+
diagCatalogTarget: "插件市场",
|
|
190
191
|
diagProxy: "HTTP 代理",
|
|
191
192
|
diagOk: "OK",
|
|
192
193
|
diagChecking: "检测中…",
|
|
@@ -206,7 +207,6 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
206
207
|
settingsResetRun: "恢复默认",
|
|
207
208
|
settingsResetConfirm: "确认恢复",
|
|
208
209
|
settingsResetConfirmDetail: "确定要恢复默认设置吗?更新策略、镜像源、代理与安全限制将全部回到出厂默认值。",
|
|
209
|
-
updatesFound: "发现 {n} 个插件可更新,已加入通知中心",
|
|
210
210
|
updateNoticeTitle: "发现新版本",
|
|
211
211
|
updateNoticeGo: "去更新",
|
|
212
212
|
ignoreUpdateRun: "忽略本次更新",
|
|
@@ -291,9 +291,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
291
291
|
failNetworkTarget: "无法访问 {url} —— 你的网络连接不通",
|
|
292
292
|
failNetworkRunDiag: "去系统诊断检测网络",
|
|
293
293
|
failDshMissingHint: "系统找不到 dsh 命令(dsh 未加入系统 PATH),无法调用安装器执行安装。请确认 DeepSeek Harness 已正确安装、dsh 已加入 PATH(或重新安装),然后重试。这不是插件本身的问题。",
|
|
294
|
+
failGitMissingHint: "系统找不到 git 命令(Git 未安装或未加入系统 PATH),无法从 GitHub 源安装插件。请先安装 Git(如 git-scm.com/downloads)或把 git 加入 PATH,重启 DSH 后重试。这不是插件本身的问题。",
|
|
294
295
|
failPnpmMissingHint: "安装器找到了 dsh,但系统里没有 pnpm 命令(dsh 用它来管理 profile 插件)。请先安装 pnpm(如 npm install -g pnpm),确认 pnpm 已加入 PATH 后重试。这不是插件本身的问题。",
|
|
296
|
+
failNpmMissingHint: "系统找不到 npm 命令(npm 未安装或未加入系统 PATH),无法执行全局安装。请先安装 Node.js(自带 npm),确认 npm 已加入 PATH 后重试。这不是插件本身的问题。",
|
|
295
297
|
failPnpmStoreHint: "安装器调用 pnpm 时报「store 位置不匹配」(ERR_PNPM_UNEXPECTED_STORE):你的 profile 目录里旧插件依赖是用另一个大版本的 pnpm 生成的,当前 pnpm 出于安全不认旧目录,导致任何插件装进该 profile 都会失败。请删除该 profile 目录下的 node_modules 与 pnpm-lock.yaml(可先到「系统日志」或 ~/.dsh/profiles/<profile>/hub.log 查看完整报错),再重新安装。这不是插件本身的问题。",
|
|
296
|
-
failPnpmPolicyHint: "安装器调用 pnpm
|
|
298
|
+
failPnpmPolicyHint: "安装器调用 pnpm 时被其供应链安全策略拦截——装任何插件都会撞墙,不是插件本身的问题。分两种情况处理:① 提示「Minimum release age」(ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION):包发布还不满 24 小时,pnpm 11 出于安全会拒收这种刚发布的新包。可在 pnpm 配置(pnpm-workspace.yaml)里加 minimumReleaseAge: 0 豁免,或等满 24 小时后重试。② 提示「untrusted origin」(ERR_PNPM_UNTRUSTED_ORIGIN):依赖来源不被本机 pnpm 信任,通常是该 profile 里之前用 github: 或非官方 npm 源装过插件,锁文件记录了不受信任的来源。请删除该 profile 目录下的 node_modules 与 pnpm-lock.yaml 后重新安装(可先到「系统日志」或 ~/.dsh/profiles/<profile>/hub.log 查看完整报错)。",
|
|
297
299
|
installChannelNpm: "NPM 包",
|
|
298
300
|
installChannelGit: "GitHub 源码",
|
|
299
301
|
installChannelDsh: "DSH 命令",
|
|
@@ -510,6 +512,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
510
512
|
diagNpmUnset: "Unset (follow local npm config)",
|
|
511
513
|
diagGithub: "GitHub",
|
|
512
514
|
diagCatalog: "Catalog site",
|
|
515
|
+
diagCatalogTarget: "Plugin marketplace",
|
|
513
516
|
diagProxy: "HTTP proxy",
|
|
514
517
|
diagOk: "OK",
|
|
515
518
|
diagChecking: "Checking…",
|
|
@@ -529,7 +532,6 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
529
532
|
settingsResetRun: "Restore Defaults",
|
|
530
533
|
settingsResetConfirm: "Restore Defaults",
|
|
531
534
|
settingsResetConfirmDetail: "Reset all settings to factory defaults? Update policy, npm mirror, proxy and security restrictions will be cleared.",
|
|
532
|
-
updatesFound: "{n} plugin(s) have updates — check the notification center",
|
|
533
535
|
updateNoticeTitle: "Update available",
|
|
534
536
|
updateNoticeGo: "Update",
|
|
535
537
|
ignoreUpdateRun: "Ignore this update",
|
|
@@ -615,9 +617,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
615
617
|
failNetworkTarget: "Cannot reach {url} — your network connection is down",
|
|
616
618
|
failNetworkRunDiag: "Run a network diagnostic",
|
|
617
619
|
failDshMissingHint: "The dsh command could not be found (it is not on the system PATH), so the installer could not run. Please make sure DeepSeek Harness is installed correctly and dsh is on your PATH (or reinstall it), then retry. This is not a problem with the plugin itself.",
|
|
620
|
+
failGitMissingHint: "The git command could not be found (Git is not installed or not on the system PATH), so GitHub-source plugins cannot be installed. Please install Git (e.g. from git-scm.com/downloads) or add git to your PATH, restart DSH, then retry. This is not a problem with the plugin itself.",
|
|
618
621
|
failPnpmMissingHint: "The installer found dsh, but pnpm is missing on this machine (dsh uses it to manage profile plugins). Please install pnpm first (e.g. npm install -g pnpm), make sure it is on your PATH, then retry. This is not a problem with the plugin itself.",
|
|
622
|
+
failNpmMissingHint: "The npm command could not be found (npm is not installed or not on the system PATH), so a global install cannot run. Please install Node.js (which bundles npm), make sure npm is on your PATH, then retry. This is not a problem with the plugin itself.",
|
|
619
623
|
failPnpmStoreHint: "pnpm reported an unexpected store location (ERR_PNPM_UNEXPECTED_STORE): the profile directory was previously set up with a different major version of pnpm, and the current pnpm refuses to reuse it — no plugin can be installed into that profile. Delete node_modules and pnpm-lock.yaml under the profile directory (see System Logs or ~/.dsh/profiles/<profile>/hub.log for the full output), then reinstall. This is not a problem with the plugin itself.",
|
|
620
|
-
failPnpmPolicyHint: "The installer was blocked by pnpm supply-chain security policy
|
|
624
|
+
failPnpmPolicyHint: "The installer was blocked by pnpm supply-chain security policy — every plugin install would hit the same wall, so this is not a problem with the plugin itself. Two cases: ① \"Minimum release age\" (ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION): the package was published less than 24 hours ago, and pnpm 11 refuses freshly-published packages for safety. Add minimumReleaseAge: 0 to your pnpm config (pnpm-workspace.yaml) to opt out, or wait until the 24 hours have passed and retry. ② \"untrusted origin\" (ERR_PNPM_UNTRUSTED_ORIGIN): a dependency source is not trusted by this machine, usually because plugins were previously installed via github: or a non-official npm registry, so the lockfile records an untrusted source. Delete node_modules and pnpm-lock.yaml under the profile directory (see System Logs or ~/.dsh/profiles/<profile>/hub.log for the full output), then reinstall.",
|
|
621
625
|
installChannelNpm: "NPM package",
|
|
622
626
|
installChannelGit: "GitHub source",
|
|
623
627
|
installChannelDsh: "DSH command",
|
|
@@ -674,46 +678,46 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
674
678
|
css: css$11
|
|
675
679
|
});
|
|
676
680
|
var Header_module_css_default = {
|
|
681
|
+
"resultCount": "qikqja_resultCount",
|
|
682
|
+
"controls": "qikqja_controls",
|
|
677
683
|
"header": "qikqja_header",
|
|
678
|
-
"
|
|
679
|
-
"
|
|
680
|
-
"
|
|
681
|
-
"
|
|
682
|
-
"
|
|
684
|
+
"aboutBtn": "qikqja_aboutBtn",
|
|
685
|
+
"tab": "qikqja_tab",
|
|
686
|
+
"githubLink": "qikqja_githubLink",
|
|
687
|
+
"version": "qikqja_version",
|
|
688
|
+
"adBanner": "qikqja_adBanner",
|
|
689
|
+
"tabsRow": "qikqja_tabsRow",
|
|
690
|
+
"headerRight": "qikqja_headerRight",
|
|
691
|
+
"copyIcon": "qikqja_copyIcon",
|
|
683
692
|
"tabs": "qikqja_tabs",
|
|
684
|
-
"tagline": "qikqja_tagline",
|
|
685
|
-
"langBtn": "qikqja_langBtn",
|
|
686
|
-
"searchRow": "qikqja_searchRow",
|
|
687
693
|
"segGroup": "qikqja_segGroup",
|
|
688
|
-
"
|
|
689
|
-
"tabCount": "qikqja_tabCount",
|
|
690
|
-
"sortGroup": "qikqja_sortGroup",
|
|
691
|
-
"brandTitle": "qikqja_brandTitle",
|
|
692
|
-
"githubIcon": "qikqja_githubIcon",
|
|
694
|
+
"logoIcon": "qikqja_logoIcon",
|
|
693
695
|
"taglineLink": "qikqja_taglineLink",
|
|
694
|
-
"segBtnActive": "qikqja_segBtnActive",
|
|
695
|
-
"copyIcon": "qikqja_copyIcon",
|
|
696
|
-
"tabsRow": "qikqja_tabsRow",
|
|
697
|
-
"segBtn": "qikqja_segBtn",
|
|
698
|
-
"resultCount": "qikqja_resultCount",
|
|
699
|
-
"adBadge": "qikqja_adBadge",
|
|
700
|
-
"aboutBtn": "qikqja_aboutBtn",
|
|
701
696
|
"hubUpdateBadge": "qikqja_hubUpdateBadge",
|
|
697
|
+
"resultSeg": "qikqja_resultSeg",
|
|
698
|
+
"adBadge": "qikqja_adBadge",
|
|
699
|
+
"brandTitle": "qikqja_brandTitle",
|
|
700
|
+
"segBtnActive": "qikqja_segBtnActive",
|
|
701
|
+
"searchRow": "qikqja_searchRow",
|
|
702
702
|
"adArrow": "qikqja_adArrow",
|
|
703
|
-
"
|
|
704
|
-
"tabActive": "qikqja_tabActive",
|
|
705
|
-
"logoIcon": "qikqja_logoIcon",
|
|
706
|
-
"adBanner": "qikqja_adBanner",
|
|
707
|
-
"segLabel": "qikqja_segLabel",
|
|
708
|
-
"githubLink": "qikqja_githubLink",
|
|
703
|
+
"adText": "qikqja_adText",
|
|
709
704
|
"title": "qikqja_title",
|
|
705
|
+
"root": "qikqja_root",
|
|
710
706
|
"versionBtn": "qikqja_versionBtn",
|
|
711
|
-
"
|
|
712
|
-
"
|
|
707
|
+
"segBtn": "qikqja_segBtn",
|
|
708
|
+
"segLabel": "qikqja_segLabel",
|
|
709
|
+
"sortGroup": "qikqja_sortGroup",
|
|
710
|
+
"tabCount": "qikqja_tabCount",
|
|
711
|
+
"tagline": "qikqja_tagline",
|
|
712
|
+
"githubIcon": "qikqja_githubIcon",
|
|
713
|
+
"search": "qikqja_search",
|
|
714
|
+
"tabActive": "qikqja_tabActive",
|
|
715
|
+
"langBtn": "qikqja_langBtn",
|
|
716
|
+
"headerTitleRow": "qikqja_headerTitleRow"
|
|
713
717
|
};
|
|
714
718
|
//#endregion
|
|
715
719
|
//#region \0dsh-css:src/client/styles/Modal.module.css.mjs
|
|
716
|
-
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}";
|
|
720
|
+
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:540px;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:720px;max-width:calc(100vw - 48px)}.BiQ1zG_modalWide{width:640px;max-width:calc(100vw - 48px)}.BiQ1zG_helpModal{width:760px;max-width:calc(100vw - 48px)}.BiQ1zG_logModal{width:820px;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:560px;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:620px;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:580px;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}";
|
|
717
721
|
const tagId$10 = "dsh-plugin/Modal.module.css";
|
|
718
722
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$10) + "]") === null) {
|
|
719
723
|
const tag = document.createElement("style");
|
|
@@ -728,136 +732,136 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
728
732
|
css: css$10
|
|
729
733
|
});
|
|
730
734
|
var Modal_module_css_default = {
|
|
731
|
-
"
|
|
732
|
-
"
|
|
733
|
-
"
|
|
734
|
-
"
|
|
735
|
-
"
|
|
736
|
-
"resultRestarting": "BiQ1zG_resultRestarting",
|
|
735
|
+
"helpModal": "BiQ1zG_helpModal",
|
|
736
|
+
"noticeRowOk": "BiQ1zG_noticeRowOk",
|
|
737
|
+
"noticeVersion": "BiQ1zG_noticeVersion",
|
|
738
|
+
"failList": "BiQ1zG_failList",
|
|
739
|
+
"restartNow": "BiQ1zG_restartNow",
|
|
737
740
|
"restartNowWarning": "BiQ1zG_restartNowWarning",
|
|
738
|
-
"failCopy": "BiQ1zG_failCopy",
|
|
739
|
-
"pendingRowStatus": "BiQ1zG_pendingRowStatus",
|
|
740
|
-
"failEmpty": "BiQ1zG_failEmpty",
|
|
741
|
-
"queueRowTarget": "BiQ1zG_queueRowTarget",
|
|
742
741
|
"noticeMain": "BiQ1zG_noticeMain",
|
|
743
|
-
"
|
|
744
|
-
"
|
|
745
|
-
"
|
|
746
|
-
"noticeTextOk": "BiQ1zG_noticeTextOk",
|
|
747
|
-
"linkIcon": "BiQ1zG_linkIcon",
|
|
748
|
-
"queuedHint": "BiQ1zG_queuedHint",
|
|
749
|
-
"result": "BiQ1zG_result",
|
|
750
|
-
"detailStars": "BiQ1zG_detailStars",
|
|
751
|
-
"modalLink": "BiQ1zG_modalLink",
|
|
752
|
-
"queueRowBody": "BiQ1zG_queueRowBody",
|
|
753
|
-
"resultDesc": "BiQ1zG_resultDesc",
|
|
754
|
-
"detailModal": "BiQ1zG_detailModal",
|
|
755
|
-
"detailLabel": "BiQ1zG_detailLabel",
|
|
756
|
-
"detailPathText": "BiQ1zG_detailPathText",
|
|
757
|
-
"hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
|
|
758
|
-
"logModal": "BiQ1zG_logModal",
|
|
759
|
-
"failRow": "BiQ1zG_failRow",
|
|
760
|
-
"toastIn": "BiQ1zG_toastIn",
|
|
761
|
-
"noticeVersion": "BiQ1zG_noticeVersion",
|
|
762
|
-
"modalCmdCopy": "BiQ1zG_modalCmdCopy",
|
|
742
|
+
"noticeRemove": "BiQ1zG_noticeRemove",
|
|
743
|
+
"modalRow": "BiQ1zG_modalRow",
|
|
744
|
+
"noticeFoot": "BiQ1zG_noticeFoot",
|
|
763
745
|
"errorHint": "BiQ1zG_errorHint",
|
|
764
|
-
"detailValue": "BiQ1zG_detailValue",
|
|
765
|
-
"modalWide": "BiQ1zG_modalWide",
|
|
766
|
-
"confirmIcon": "BiQ1zG_confirmIcon",
|
|
767
|
-
"failKindInstall": "BiQ1zG_failKindInstall",
|
|
768
|
-
"overlay": "BiQ1zG_overlay",
|
|
769
|
-
"modalCloseIcon": "BiQ1zG_modalCloseIcon",
|
|
770
746
|
"progress": "BiQ1zG_progress",
|
|
771
|
-
"
|
|
772
|
-
"overlayIn": "BiQ1zG_overlayIn",
|
|
773
|
-
"noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
|
|
747
|
+
"detailDim": "BiQ1zG_detailDim",
|
|
774
748
|
"failBigIssue": "BiQ1zG_failBigIssue",
|
|
775
|
-
"
|
|
776
|
-
"
|
|
777
|
-
"modal": "BiQ1zG_modal",
|
|
778
|
-
"detailStatusText": "BiQ1zG_detailStatusText",
|
|
779
|
-
"confirmIconDanger": "BiQ1zG_confirmIconDanger",
|
|
780
|
-
"errorTitle": "BiQ1zG_errorTitle",
|
|
781
|
-
"noticeRow": "BiQ1zG_noticeRow",
|
|
782
|
-
"modalLabel": "BiQ1zG_modalLabel",
|
|
783
|
-
"restartNow": "BiQ1zG_restartNow",
|
|
784
|
-
"failRepo": "BiQ1zG_failRepo",
|
|
785
|
-
"queueRowHead": "BiQ1zG_queueRowHead",
|
|
786
|
-
"failPrepareHint": "BiQ1zG_failPrepareHint",
|
|
787
|
-
"detailUpdateHint": "BiQ1zG_detailUpdateHint",
|
|
749
|
+
"queueRowStatus": "BiQ1zG_queueRowStatus",
|
|
750
|
+
"failRow": "BiQ1zG_failRow",
|
|
788
751
|
"restartLater": "BiQ1zG_restartLater",
|
|
789
|
-
"
|
|
790
|
-
"
|
|
791
|
-
"errorBox": "BiQ1zG_errorBox",
|
|
792
|
-
"cliOnlyHint": "BiQ1zG_cliOnlyHint",
|
|
793
|
-
"hubUpdateModal": "BiQ1zG_hubUpdateModal",
|
|
752
|
+
"pendingRowActions": "BiQ1zG_pendingRowActions",
|
|
753
|
+
"aboutContent": "BiQ1zG_aboutContent",
|
|
794
754
|
"modalTitleBusy": "BiQ1zG_modalTitleBusy",
|
|
795
|
-
"
|
|
796
|
-
"
|
|
797
|
-
"
|
|
798
|
-
"
|
|
799
|
-
"
|
|
755
|
+
"trustHint": "BiQ1zG_trustHint",
|
|
756
|
+
"hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
|
|
757
|
+
"queueRowDesc": "BiQ1zG_queueRowDesc",
|
|
758
|
+
"queueSectionTitle": "BiQ1zG_queueSectionTitle",
|
|
759
|
+
"errorModal": "BiQ1zG_errorModal",
|
|
760
|
+
"noticeList": "BiQ1zG_noticeList",
|
|
761
|
+
"stripCancel": "BiQ1zG_stripCancel",
|
|
762
|
+
"overlay": "BiQ1zG_overlay",
|
|
763
|
+
"noticeHead": "BiQ1zG_noticeHead",
|
|
764
|
+
"progressFillFail": "BiQ1zG_progressFillFail",
|
|
765
|
+
"hubUpdateModal": "BiQ1zG_hubUpdateModal",
|
|
766
|
+
"detailLabel": "BiQ1zG_detailLabel",
|
|
767
|
+
"noticeRow": "BiQ1zG_noticeRow",
|
|
768
|
+
"resultDesc": "BiQ1zG_resultDesc",
|
|
800
769
|
"noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
|
|
801
|
-
"
|
|
802
|
-
"
|
|
770
|
+
"detailRow": "BiQ1zG_detailRow",
|
|
771
|
+
"queueRow": "BiQ1zG_queueRow",
|
|
772
|
+
"modalActions": "BiQ1zG_modalActions",
|
|
803
773
|
"queueRowTrack": "BiQ1zG_queueRowTrack",
|
|
804
|
-
"
|
|
805
|
-
"
|
|
806
|
-
"
|
|
774
|
+
"modalCloseIcon": "BiQ1zG_modalCloseIcon",
|
|
775
|
+
"detailPathBtn": "BiQ1zG_detailPathBtn",
|
|
776
|
+
"modalLink": "BiQ1zG_modalLink",
|
|
777
|
+
"modalDesc": "BiQ1zG_modalDesc",
|
|
778
|
+
"detailStatusRunning": "BiQ1zG_detailStatusRunning",
|
|
779
|
+
"failedCopyHint": "BiQ1zG_failedCopyHint",
|
|
780
|
+
"modalCopy": "BiQ1zG_modalCopy",
|
|
781
|
+
"modalValue": "BiQ1zG_modalValue",
|
|
782
|
+
"linkIcon": "BiQ1zG_linkIcon",
|
|
807
783
|
"aboutMeta": "BiQ1zG_aboutMeta",
|
|
808
|
-
"
|
|
809
|
-
"
|
|
784
|
+
"resultRestarting": "BiQ1zG_resultRestarting",
|
|
785
|
+
"detailModal": "BiQ1zG_detailModal",
|
|
786
|
+
"failKindInstall": "BiQ1zG_failKindInstall",
|
|
787
|
+
"modalLabel": "BiQ1zG_modalLabel",
|
|
788
|
+
"aboutModal": "BiQ1zG_aboutModal",
|
|
789
|
+
"resultCheck": "BiQ1zG_resultCheck",
|
|
790
|
+
"detailGrid": "BiQ1zG_detailGrid",
|
|
791
|
+
"noticeIgnore": "BiQ1zG_noticeIgnore",
|
|
792
|
+
"pendingRowStatus": "BiQ1zG_pendingRowStatus",
|
|
793
|
+
"logModal": "BiQ1zG_logModal",
|
|
794
|
+
"result": "BiQ1zG_result",
|
|
795
|
+
"hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
|
|
810
796
|
"failKind": "BiQ1zG_failKind",
|
|
797
|
+
"queueRowBody": "BiQ1zG_queueRowBody",
|
|
811
798
|
"noticeTextFail": "BiQ1zG_noticeTextFail",
|
|
812
|
-
"
|
|
799
|
+
"queueRowPct": "BiQ1zG_queueRowPct",
|
|
800
|
+
"overlayIn": "BiQ1zG_overlayIn",
|
|
801
|
+
"noticeTime": "BiQ1zG_noticeTime",
|
|
802
|
+
"modalHead": "BiQ1zG_modalHead",
|
|
813
803
|
"noticeRowMain": "BiQ1zG_noticeRowMain",
|
|
814
|
-
"
|
|
815
|
-
"
|
|
816
|
-
"
|
|
817
|
-
"
|
|
804
|
+
"confirmIcon": "BiQ1zG_confirmIcon",
|
|
805
|
+
"noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
|
|
806
|
+
"modalCmd": "BiQ1zG_modalCmd",
|
|
807
|
+
"modalWide": "BiQ1zG_modalWide",
|
|
808
|
+
"modalTitle": "BiQ1zG_modalTitle",
|
|
809
|
+
"failNetworkTarget": "BiQ1zG_failNetworkTarget",
|
|
810
|
+
"progressTrack": "BiQ1zG_progressTrack",
|
|
811
|
+
"modal": "BiQ1zG_modal",
|
|
812
|
+
"detailMono": "BiQ1zG_detailMono",
|
|
813
|
+
"toast": "BiQ1zG_toast",
|
|
814
|
+
"noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
|
|
815
|
+
"modalClose": "BiQ1zG_modalClose",
|
|
816
|
+
"failHead": "BiQ1zG_failHead",
|
|
818
817
|
"progressFill": "BiQ1zG_progressFill",
|
|
819
|
-
"
|
|
820
|
-
"
|
|
818
|
+
"failKindUninstall": "BiQ1zG_failKindUninstall",
|
|
819
|
+
"modalIn": "BiQ1zG_modalIn",
|
|
820
|
+
"queuedHint": "BiQ1zG_queuedHint",
|
|
821
|
+
"detailUpdateHint": "BiQ1zG_detailUpdateHint",
|
|
821
822
|
"detailPathActions": "BiQ1zG_detailPathActions",
|
|
822
|
-
"
|
|
823
|
-
"
|
|
823
|
+
"failDiagBtn": "BiQ1zG_failDiagBtn",
|
|
824
|
+
"cliOnlyHint": "BiQ1zG_cliOnlyHint",
|
|
824
825
|
"progressHead": "BiQ1zG_progressHead",
|
|
826
|
+
"modalBody": "BiQ1zG_modalBody",
|
|
827
|
+
"resultTitle": "BiQ1zG_resultTitle",
|
|
828
|
+
"noticeTextOk": "BiQ1zG_noticeTextOk",
|
|
829
|
+
"uninstallConfirm": "BiQ1zG_uninstallConfirm",
|
|
825
830
|
"detailPath": "BiQ1zG_detailPath",
|
|
826
|
-
"
|
|
827
|
-
"
|
|
828
|
-
"
|
|
829
|
-
"
|
|
830
|
-
"
|
|
831
|
-
"
|
|
832
|
-
"
|
|
831
|
+
"modalInstall": "BiQ1zG_modalInstall",
|
|
832
|
+
"detailStatusText": "BiQ1zG_detailStatusText",
|
|
833
|
+
"confirmIconWrap": "BiQ1zG_confirmIconWrap",
|
|
834
|
+
"dangerConfirm": "BiQ1zG_dangerConfirm",
|
|
835
|
+
"failRepo": "BiQ1zG_failRepo",
|
|
836
|
+
"queueRowHead": "BiQ1zG_queueRowHead",
|
|
837
|
+
"errorTitle": "BiQ1zG_errorTitle",
|
|
838
|
+
"noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
|
|
839
|
+
"modalCmdText": "BiQ1zG_modalCmdText",
|
|
833
840
|
"confirmPrimary": "BiQ1zG_confirmPrimary",
|
|
834
|
-
"
|
|
835
|
-
"detailStatusRunning": "BiQ1zG_detailStatusRunning",
|
|
836
|
-
"modalRow": "BiQ1zG_modalRow",
|
|
837
|
-
"modalTitleQueued": "BiQ1zG_modalTitleQueued",
|
|
838
|
-
"aboutContent": "BiQ1zG_aboutContent",
|
|
839
|
-
"helpModal": "BiQ1zG_helpModal",
|
|
840
|
-
"modalHead": "BiQ1zG_modalHead",
|
|
841
|
+
"detailLink": "BiQ1zG_detailLink",
|
|
841
842
|
"hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
|
|
842
|
-
"
|
|
843
|
+
"modalTitleQueued": "BiQ1zG_modalTitleQueued",
|
|
843
844
|
"queueSection": "BiQ1zG_queueSection",
|
|
844
|
-
"
|
|
845
|
-
"trustHint": "BiQ1zG_trustHint",
|
|
846
|
-
"modalCmdText": "BiQ1zG_modalCmdText",
|
|
847
|
-
"errorModal": "BiQ1zG_errorModal",
|
|
848
|
-
"confirmIconWrap": "BiQ1zG_confirmIconWrap",
|
|
849
|
-
"queueRow": "BiQ1zG_queueRow",
|
|
850
|
-
"modalIn": "BiQ1zG_modalIn",
|
|
851
|
-
"noticeTime": "BiQ1zG_noticeTime",
|
|
852
|
-
"noticeIgnore": "BiQ1zG_noticeIgnore",
|
|
853
|
-
"uninstallConfirm": "BiQ1zG_uninstallConfirm",
|
|
854
|
-
"modalDesc": "BiQ1zG_modalDesc",
|
|
855
|
-
"modalCmd": "BiQ1zG_modalCmd",
|
|
856
|
-
"failDiagBtn": "BiQ1zG_failDiagBtn",
|
|
845
|
+
"errorBox": "BiQ1zG_errorBox",
|
|
857
846
|
"progressText": "BiQ1zG_progressText",
|
|
858
|
-
"
|
|
859
|
-
"
|
|
860
|
-
"
|
|
847
|
+
"failEmpty": "BiQ1zG_failEmpty",
|
|
848
|
+
"detailStars": "BiQ1zG_detailStars",
|
|
849
|
+
"detailPathText": "BiQ1zG_detailPathText",
|
|
850
|
+
"failPrepareHint": "BiQ1zG_failPrepareHint",
|
|
851
|
+
"toastIn": "BiQ1zG_toastIn",
|
|
852
|
+
"resultCheckIcon": "BiQ1zG_resultCheckIcon",
|
|
853
|
+
"noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
|
|
854
|
+
"detailArrow": "BiQ1zG_detailArrow",
|
|
855
|
+
"queueRowTarget": "BiQ1zG_queueRowTarget",
|
|
856
|
+
"modalCancel": "BiQ1zG_modalCancel",
|
|
857
|
+
"confirmIconDanger": "BiQ1zG_confirmIconDanger",
|
|
858
|
+
"errorCopySoft": "BiQ1zG_errorCopySoft",
|
|
859
|
+
"detailValue": "BiQ1zG_detailValue",
|
|
860
|
+
"modalCmdCopy": "BiQ1zG_modalCmdCopy",
|
|
861
|
+
"detailStatusPending": "BiQ1zG_detailStatusPending",
|
|
862
|
+
"failClear": "BiQ1zG_failClear",
|
|
863
|
+
"toastFail": "BiQ1zG_toastFail",
|
|
864
|
+
"failCopy": "BiQ1zG_failCopy"
|
|
861
865
|
};
|
|
862
866
|
//#endregion
|
|
863
867
|
//#region src/client/logic/install-command.ts
|
|
@@ -909,9 +913,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
909
913
|
}
|
|
910
914
|
//#endregion
|
|
911
915
|
//#region src/client/logic/constants.ts
|
|
912
|
-
/**
|
|
916
|
+
/** 插件市场官网地址。 */
|
|
913
917
|
const SITE_URL = "https://dsh-plugin.org/";
|
|
914
|
-
/**
|
|
918
|
+
/** 插件市场源码仓库:头部右上角 GitHub 图标的跳转地址 */
|
|
915
919
|
const GITHUB_URL = "https://github.com/dshplugin/dsh-plugin-hub";
|
|
916
920
|
/**
|
|
917
921
|
* Hub 自我更新版本控制(接口中心 Pages:api.dsh-plugin.org,静态 JSON 发布)。
|
|
@@ -927,7 +931,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
927
931
|
* tsdown 构建时用 define 把 __PLUGIN_VERSION__ 替换成 package.json 的版本号;
|
|
928
932
|
* node --test 直接 import 本模块时该标识符不存在,typeof 守卫兜底为空串。
|
|
929
933
|
*/
|
|
930
|
-
const PLUGIN_VERSION = "1.
|
|
934
|
+
const PLUGIN_VERSION = "1.4.1";
|
|
931
935
|
const CATEGORY_ORDER = [
|
|
932
936
|
"interface",
|
|
933
937
|
"session",
|
|
@@ -1557,10 +1561,22 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1557
1561
|
* 以 Worker 版本控制中心返回的「最新版本」为准,与当前运行的版本号比对——
|
|
1558
1562
|
* 构建时注入的 PLUGIN_VERSION 是运行 bundle 的真实版本;测试/异常场景缺失时
|
|
1559
1563
|
* 回退到安装时记录的版本。版本号不等即新版(版本号只在发版时变更,绝无降级场景)。
|
|
1564
|
+
*
|
|
1565
|
+
* 另加 pnpm 供应链安全门槛:新版本发布还不满 24 小时(+30 分钟缓冲)时,pnpm 会静默
|
|
1566
|
+
* 回退到旧版本,此时若提示「可更新」用户点了也更新不到。publishedAt 由接口中心按 npm
|
|
1567
|
+
* registry 真实发布时间下发(同源),据此判断最准。
|
|
1560
1568
|
*/
|
|
1561
1569
|
const hubHasUpdate = (() => {
|
|
1562
1570
|
if (!hubUpdateInfo) return false;
|
|
1563
|
-
|
|
1571
|
+
if (hubUpdateInfo.version === "1.4.1") return false;
|
|
1572
|
+
const publishedAt = hubUpdateInfo.publishedAt;
|
|
1573
|
+
if (publishedAt) {
|
|
1574
|
+
const publishedMs = Date.parse(publishedAt);
|
|
1575
|
+
if (!Number.isNaN(publishedMs)) {
|
|
1576
|
+
if (Date.now() - publishedMs < 882e5) return false;
|
|
1577
|
+
}
|
|
1578
|
+
}
|
|
1579
|
+
return true;
|
|
1564
1580
|
})();
|
|
1565
1581
|
(0, react.useMemo)(() => {
|
|
1566
1582
|
if (!plugins) return [];
|
|
@@ -1748,19 +1764,31 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1748
1764
|
* - dshMissing:安装器 spawn 的 `dsh` 命令找不到(Windows cmd「不是内部或外部命令」/ POSIX
|
|
1749
1765
|
* 「command not found」/ spawn ENOENT)—— 是本机 DSH 未正确安装或不在 PATH,不是插件问题
|
|
1750
1766
|
* → 提示检查 PATH/重装 DSH,不引导提 Issue
|
|
1767
|
+
* - gitMissing:安装器调用 `git` 时找不到可执行文件(Windows cmd「'git' is not recognized」/
|
|
1768
|
+
* POSIX「git: command not found」/ spawn ENOENT)—— 是本机 Git 未安装或不在 PATH,不是插件
|
|
1769
|
+
* 问题。pnpm 会把缺失 git 报成 `ERR_PNPM_GIT_RESOLVE_FAILED`(git ls-remote failed),若只看
|
|
1770
|
+
* 错误码会误归插件侧失败;且 dshMissing 的通用「not recognized」模式会先把它吞成 dsh 缺失,
|
|
1771
|
+
* 所以必须在 dshMissing 之前判断(dsh-plugin-hub#21:Win 下装 git 源插件,
|
|
1772
|
+
* `'git' is not recognized` 被误归仓库问题引导去提 Issue)→ 提示安装 Git / 加入 PATH,不引导提 Issue
|
|
1751
1773
|
* - pnpmMissing:dsh 存在但调用的 `pnpm` 找不到(dsh 报 `pnpm not found on PATH`/POSIX
|
|
1752
1774
|
* 「pnpm: command not found」/ spawn ENOENT)—— 本机缺 pnpm(dsh 用 pnpm 管理 profile 插件),
|
|
1753
1775
|
* 不是插件问题(dsh-plugin-hub#13:Linux 下 `dsh: pnpm not found on PATH` 被误归插件侧失败)
|
|
1754
1776
|
* → 提示安装/开启 pnpm,不引导提 Issue
|
|
1777
|
+
* - npmMissing:全局 npm 安装通道(`npm install -g ...`)spawn 的 `npm` 命令找不到
|
|
1778
|
+
* (Windows cmd「'npm' is not recognized」/ POSIX「npm: command not found」/ spawn ENOENT)——
|
|
1779
|
+
* 本机 npm 未安装或不在 PATH,不是插件问题。dshMissing 的通用「not recognized」模式会把
|
|
1780
|
+
* `'npm' is not recognized` 吞成 dsh 缺失,所以必须在 dshMissing 之前判断
|
|
1781
|
+
* → 提示安装 npm(Node.js 自带)/加入 PATH,不引导提 Issue
|
|
1755
1782
|
* - pnpmStore:pnpm 存在但报 store 位置不匹配(`ERR_PNPM_UNEXPECTED_STORE` / `Unexpected store
|
|
1756
1783
|
* location`)—— profile 目录的 node_modules 是用不同大版本的 pnpm 生成的,当前 pnpm 不认,
|
|
1757
1784
|
* 任何插件装进该 profile 都会失败;不是插件问题(dsh-plugin-hub#14:macOS 下
|
|
1758
1785
|
* `ERR_PNPM_UNEXPECTED_STORE` 被误归插件侧失败)→ 提示清理 profile 依赖目录重建,不引导提 Issue
|
|
1759
1786
|
* - pnpmPolicy:pnpm 11 的供应链安全策略拒绝安装(`ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION` /
|
|
1760
|
-
* `Minimum release age` ——
|
|
1761
|
-
* 本机 pnpm
|
|
1787
|
+
* `Minimum release age` —— 锁文件里包的发布时间还不满 24 小时被拒;`untrusted origin` —— 依赖来源未被
|
|
1788
|
+
* 本机 pnpm 信任)。拦的是「刚发布的新包」与「未被信任的来源」,装任何新插件都会撞墙,不是
|
|
1762
1789
|
* 插件问题(dsh-plugin-hub#15/#16:用户装官方 dsh-plugin 也被这两类策略拦下并误归插件侧失败)
|
|
1763
|
-
* →
|
|
1790
|
+
* → 提示按子场景给解法(发布未满 24 小时 → `minimumReleaseAge: 0` 豁免或等满 24 小时;untrusted
|
|
1791
|
+
* origin → 删除 profile 的 node_modules + pnpm-lock.yaml 清掉不受信任来源后重装),不引导提 Issue
|
|
1764
1792
|
* - network:安装前连通性预检拦截(服务端 `[network]` 标记)或底层连接失败
|
|
1765
1793
|
* (ERR_PNPM_GIT_FETCH_FAILED / ETIMEDOUT / DNS 解析 / TLS 握手 / 代理拒绝)——
|
|
1766
1794
|
* 是本机网络不通/被墙/代理有问题,不是插件问题 → 提示检查网络,不引导提 Issue
|
|
@@ -1775,6 +1803,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1775
1803
|
function classifyFailure(message) {
|
|
1776
1804
|
if (/\[npm-too-low\]|edgesOut/i.test(message)) return "npmTooOld";
|
|
1777
1805
|
if (/\[pnpm-missing\]|pnpm not found|pnpm: command not found|spawn pnpm ENOENT|'pnpm' 不是内部或外部命令|"pnpm" 不是内部或外部命令|pnpm['"]?\s*is not recognized/i.test(message)) return "pnpmMissing";
|
|
1806
|
+
if (/\[git-missing\]|spawn git ENOENT|'git' 不是内部或外部命令|"git" 不是内部或外部命令|git['"]?\s*is not recognized|git: command not found/i.test(message)) return "gitMissing";
|
|
1807
|
+
if (/\[npm-missing\]|spawn npm ENOENT|'npm' 不是内部或外部命令|"npm" 不是内部或外部命令|npm['"]?\s*is not recognized|npm: command not found/i.test(message)) return "npmMissing";
|
|
1778
1808
|
if (/\[dsh-missing\]|不是内部或外部命令|is not recognized as an internal or external command|command not found|spawn dsh ENOENT/i.test(message)) return "dshMissing";
|
|
1779
1809
|
if (/ERR_PNPM_UNEXPECTED_STORE|Unexpected store location/i.test(message)) return "pnpmStore";
|
|
1780
1810
|
if (/ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION|Minimum release age|untrusted origin/i.test(message)) return "pnpmPolicy";
|
|
@@ -1849,20 +1879,25 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1849
1879
|
function langPathOf(lang) {
|
|
1850
1880
|
return lang === "zh" ? "zh/" : "";
|
|
1851
1881
|
}
|
|
1882
|
+
/** 官网链接统一携带 `?ref=hub` 来源参数:统计有多少访问是从插件商城跳转而来。
|
|
1883
|
+
* 所有「从商城跳官网」的链接(详情页/首页)都应经由此函数拼接,避免来源参数散落各处。 */
|
|
1884
|
+
function siteUrl(path) {
|
|
1885
|
+
return `${SITE_URL}${path}?ref=hub`;
|
|
1886
|
+
}
|
|
1852
1887
|
/**
|
|
1853
1888
|
* 官网详情页两级路径:/plugins/{ownerSlug}/{slug};
|
|
1854
1889
|
* 缺 ownerSlug 时从 repo 推导(卡片详情按钮与弹窗来源行共用)。
|
|
1855
1890
|
*/
|
|
1856
1891
|
function pluginDetailUrl(plugin, langPath) {
|
|
1857
1892
|
const repo = plugin.source?.repo ?? "";
|
|
1858
|
-
return `${
|
|
1893
|
+
return siteUrl(`${langPath}plugins/${plugin.ownerSlug ?? repo.split("/")[0]?.toLowerCase() ?? ""}/${plugin.slug}`);
|
|
1859
1894
|
}
|
|
1860
1895
|
/**
|
|
1861
1896
|
* 失败弹窗里仓库地址的跳转目标:官网详情页(含插件收录信息),
|
|
1862
1897
|
* 与 issue 正文的 Catalog 链接同一形式(单级 /plugins/{repo})。
|
|
1863
1898
|
*/
|
|
1864
1899
|
function pluginSiteUrl(repo) {
|
|
1865
|
-
return
|
|
1900
|
+
return siteUrl(`plugins/${repo}`);
|
|
1866
1901
|
}
|
|
1867
1902
|
/** 按失败类型给出简洁的错误原因标题(对外用英文):
|
|
1868
1903
|
* 标题直接点明问题出在哪一侧(构建白名单/分发物/本机 npm/网络/插件侧),
|
|
@@ -1900,8 +1935,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1900
1935
|
`- Cause: ${reason}`,
|
|
1901
1936
|
...code ? [`- Key error: \`${code}\``] : [],
|
|
1902
1937
|
"",
|
|
1903
|
-
`## [DSH Plugin
|
|
1904
|
-
`本错误信息由 [dsh-plugin-hub](${GITHUB_URL})
|
|
1938
|
+
`## [DSH Plugin 插件市场](${SITE_URL}) · 安装 Plugin 失败错误信息`,
|
|
1939
|
+
`本错误信息由 [dsh-plugin-hub](${GITHUB_URL}) 插件市场的安装程序自动生成,随本次安装失败一并提交。`,
|
|
1905
1940
|
`- 实际执行的安装命令:\`${command ?? `dsh plugin${env?.profile ? ` --profile ${env.profile}` : ""} add git+https://github.com/${repo}.git`}\``,
|
|
1906
1941
|
`- 执行结果:安装失败,未能安装该插件。`,
|
|
1907
1942
|
...attempts && attempts.length > 0 ? [
|
|
@@ -1963,15 +1998,16 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1963
1998
|
* Website: https://dsh-plugin.org
|
|
1964
1999
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
1965
2000
|
*
|
|
1966
|
-
* Language state for the section:
|
|
1967
|
-
*
|
|
1968
|
-
*
|
|
1969
|
-
*
|
|
2001
|
+
* Language state for the section: the Hub shares the host (system) locale —
|
|
2002
|
+
* the header language toggle writes the host locale preference via setLocale,
|
|
2003
|
+
* so the host chrome (left sidebar, settings dialog) and the Hub panel switch
|
|
2004
|
+
* together instead of drifting apart. Exposes the localized dictionary lookup
|
|
2005
|
+
* `t()` plus the zh/en language flag and the /zh/ URL path prefix.
|
|
1970
2006
|
*/
|
|
1971
2007
|
function useLanguage(locale) {
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
const lang =
|
|
2008
|
+
const [, setRev] = (0, react.useState)(0);
|
|
2009
|
+
(0, react.useEffect)(() => locale.subscribe(() => setRev((r) => r + 1)), [locale]);
|
|
2010
|
+
const lang = locale.getSnapshot().active;
|
|
1975
2011
|
const langKey = lang === "en" ? "en" : "zh";
|
|
1976
2012
|
const langPath = langPathOf(lang);
|
|
1977
2013
|
const dict = langKey === "en" ? en : zh;
|
|
@@ -1984,7 +2020,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1984
2020
|
langKey,
|
|
1985
2021
|
langPath,
|
|
1986
2022
|
t,
|
|
1987
|
-
toggleLang: () =>
|
|
2023
|
+
toggleLang: () => locale.setLocale(lang === "en" ? "zh" : "en")
|
|
1988
2024
|
};
|
|
1989
2025
|
}
|
|
1990
2026
|
//#endregion
|
|
@@ -2796,7 +2832,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2796
2832
|
strokeLinejoin: "round"
|
|
2797
2833
|
}));
|
|
2798
2834
|
}
|
|
2799
|
-
/**
|
|
2835
|
+
/** 插件市场图标:店面货架(stroke 继承 currentColor),一级导航「插件市场」tab 用。 */
|
|
2800
2836
|
function MarketIcon() {
|
|
2801
2837
|
return (0, react.createElement)("svg", {
|
|
2802
2838
|
viewBox: "0 0 24 24",
|
|
@@ -3274,7 +3310,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3274
3310
|
}, repo) : null, (0, react.createElement)("button", {
|
|
3275
3311
|
className: Modal_module_css_default.errorCopySoft,
|
|
3276
3312
|
onClick: () => onCopy(copyText)
|
|
3277
|
-
}, 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 === "dshMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failDshMissingHint")) : failureKind === "pnpmMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmMissingHint")) : failureKind === "pnpmStore" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmStoreHint")) : failureKind === "pnpmPolicy" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmPolicyHint")) : failureKind === "network" ? (0, react.createElement)("div", null, [
|
|
3313
|
+
}, 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 === "dshMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failDshMissingHint")) : failureKind === "gitMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failGitMissingHint")) : failureKind === "pnpmMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmMissingHint")) : failureKind === "npmMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failNpmMissingHint")) : failureKind === "pnpmStore" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmStoreHint")) : failureKind === "pnpmPolicy" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmPolicyHint")) : failureKind === "network" ? (0, react.createElement)("div", null, [
|
|
3278
3314
|
(() => {
|
|
3279
3315
|
const target = unreachableTargetOf(message);
|
|
3280
3316
|
return target ? (0, react.createElement)("div", { className: Modal_module_css_default.failNetworkTarget }, t("failNetworkTarget", { url: target })) : null;
|
|
@@ -3303,7 +3339,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3303
3339
|
}
|
|
3304
3340
|
/** 全局反馈 Toast:复制成功(反色)/ 安装完成(反色)/ 安装失败(红色)/ 卸载结果 */
|
|
3305
3341
|
function Toast({ toast, t }) {
|
|
3306
|
-
const text = toast.kind === "copied" ? t("toastCopied") : toast.kind === "errCopied" ? t("errCopied") : toast.kind === "done" ? t("installDone") : toast.kind === "fail" ? t("installFail") : toast.kind === "removed" ? t("uninstallDone") : toast.kind === "revealFail" ? t("openFolderFail") :
|
|
3342
|
+
const text = toast.kind === "copied" ? t("toastCopied") : toast.kind === "errCopied" ? t("errCopied") : toast.kind === "done" ? t("installDone") : toast.kind === "fail" ? t("installFail") : toast.kind === "removed" ? t("uninstallDone") : toast.kind === "revealFail" ? t("openFolderFail") : t("uninstallFail");
|
|
3307
3343
|
const fail = toast.kind === "fail" || toast.kind === "removeFail" || toast.kind === "revealFail";
|
|
3308
3344
|
return (0, react.createElement)("div", {
|
|
3309
3345
|
key: toast.id,
|
|
@@ -3826,7 +3862,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3826
3862
|
return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t(v ? "failNpmTooLowV" : "failNpmTooLow", v ? { v } : void 0));
|
|
3827
3863
|
}
|
|
3828
3864
|
if (kind === "dshMissing") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failDshMissingHint"));
|
|
3865
|
+
if (kind === "gitMissing") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failGitMissingHint"));
|
|
3829
3866
|
if (kind === "pnpmMissing") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmMissingHint"));
|
|
3867
|
+
if (kind === "npmMissing") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failNpmMissingHint"));
|
|
3830
3868
|
if (kind === "pnpmStore") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmStoreHint"));
|
|
3831
3869
|
if (kind === "pnpmPolicy") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmPolicyHint"));
|
|
3832
3870
|
if (kind === "network") return (0, react.createElement)("div", null, [
|
|
@@ -3901,7 +3939,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3901
3939
|
function CatalogHeader({ t, langPath, statsTotal, statsVerified, onToggleLang, hubUpdate, onVersionClick, onAboutClick }) {
|
|
3902
3940
|
return (0, react.createElement)(react.Fragment, null, (0, react.createElement)("div", { className: Header_module_css_default.header }, (0, react.createElement)("div", { className: Header_module_css_default.headerTitleRow }, (0, react.createElement)("a", {
|
|
3903
3941
|
className: Header_module_css_default.brandTitle,
|
|
3904
|
-
href:
|
|
3942
|
+
href: siteUrl(langPath),
|
|
3905
3943
|
target: "_blank",
|
|
3906
3944
|
rel: "noopener noreferrer",
|
|
3907
3945
|
title: t("openHint"),
|
|
@@ -3933,7 +3971,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3933
3971
|
"aria-label": t("githubHint")
|
|
3934
3972
|
}, (0, react.createElement)(GitHubIcon)))), (0, react.createElement)("a", {
|
|
3935
3973
|
className: Header_module_css_default.taglineLink,
|
|
3936
|
-
href:
|
|
3974
|
+
href: siteUrl(langPath),
|
|
3937
3975
|
target: "_blank",
|
|
3938
3976
|
rel: "noopener noreferrer",
|
|
3939
3977
|
title: t("openHint")
|
|
@@ -3942,7 +3980,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3942
3980
|
verified: statsVerified
|
|
3943
3981
|
})))), (0, react.createElement)("a", {
|
|
3944
3982
|
className: Header_module_css_default.adBanner,
|
|
3945
|
-
href:
|
|
3983
|
+
href: siteUrl(langPath),
|
|
3946
3984
|
target: "_blank",
|
|
3947
3985
|
rel: "noopener noreferrer"
|
|
3948
3986
|
}, (0, react.createElement)("span", { className: Header_module_css_default.adBadge }, t("adBadge")), (0, react.createElement)("span", { className: Header_module_css_default.adText }, t("ad", {
|
|
@@ -4034,40 +4072,40 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4034
4072
|
css: css$9
|
|
4035
4073
|
});
|
|
4036
4074
|
var List_module_css_default = {
|
|
4037
|
-
"verified": "_3XaZHa_verified",
|
|
4038
|
-
"retryBtn": "_3XaZHa_retryBtn",
|
|
4039
|
-
"stateActions": "_3XaZHa_stateActions",
|
|
4040
|
-
"versionBadge": "_3XaZHa_versionBadge",
|
|
4041
|
-
"diagBtn": "_3XaZHa_diagBtn",
|
|
4042
|
-
"topic": "_3XaZHa_topic",
|
|
4043
|
-
"stats": "_3XaZHa_stats",
|
|
4044
4075
|
"card": "_3XaZHa_card",
|
|
4045
|
-
"
|
|
4046
|
-
"detailBtn": "_3XaZHa_detailBtn",
|
|
4047
|
-
"list": "_3XaZHa_list",
|
|
4076
|
+
"verified": "_3XaZHa_verified",
|
|
4048
4077
|
"footer": "_3XaZHa_footer",
|
|
4049
|
-
"
|
|
4050
|
-
"
|
|
4051
|
-
"
|
|
4078
|
+
"topics": "_3XaZHa_topics",
|
|
4079
|
+
"fork": "_3XaZHa_fork",
|
|
4080
|
+
"cardMain": "_3XaZHa_cardMain",
|
|
4081
|
+
"moreSentinel": "_3XaZHa_moreSentinel",
|
|
4052
4082
|
"footLink": "_3XaZHa_footLink",
|
|
4083
|
+
"stateTitle": "_3XaZHa_stateTitle",
|
|
4084
|
+
"stateActions": "_3XaZHa_stateActions",
|
|
4085
|
+
"installBtnUpdate": "_3XaZHa_installBtnUpdate",
|
|
4053
4086
|
"cardSide": "_3XaZHa_cardSide",
|
|
4054
|
-
"state": "_3XaZHa_state",
|
|
4055
|
-
"installBtn": "_3XaZHa_installBtn",
|
|
4056
|
-
"topics": "_3XaZHa_topics",
|
|
4057
4087
|
"date": "_3XaZHa_date",
|
|
4058
|
-
"
|
|
4059
|
-
"
|
|
4088
|
+
"body": "_3XaZHa_body",
|
|
4089
|
+
"retryBtn": "_3XaZHa_retryBtn",
|
|
4090
|
+
"topic": "_3XaZHa_topic",
|
|
4091
|
+
"cardHead": "_3XaZHa_cardHead",
|
|
4092
|
+
"cardTitle": "_3XaZHa_cardTitle",
|
|
4093
|
+
"stats": "_3XaZHa_stats",
|
|
4094
|
+
"versionBadge": "_3XaZHa_versionBadge",
|
|
4060
4095
|
"categoryBadge": "_3XaZHa_categoryBadge",
|
|
4096
|
+
"star": "_3XaZHa_star",
|
|
4061
4097
|
"installBtnCopied": "_3XaZHa_installBtnCopied",
|
|
4062
|
-
"
|
|
4063
|
-
"
|
|
4064
|
-
"
|
|
4065
|
-
"
|
|
4098
|
+
"installBtnInstalled": "_3XaZHa_installBtnInstalled",
|
|
4099
|
+
"diagBtn": "_3XaZHa_diagBtn",
|
|
4100
|
+
"installBtn": "_3XaZHa_installBtn",
|
|
4101
|
+
"list": "_3XaZHa_list",
|
|
4102
|
+
"updateBadge": "_3XaZHa_updateBadge",
|
|
4066
4103
|
"actions": "_3XaZHa_actions",
|
|
4067
|
-
"
|
|
4068
|
-
"
|
|
4069
|
-
"
|
|
4070
|
-
"
|
|
4104
|
+
"uninstallBtn": "_3XaZHa_uninstallBtn",
|
|
4105
|
+
"state": "_3XaZHa_state",
|
|
4106
|
+
"stateDesc": "_3XaZHa_stateDesc",
|
|
4107
|
+
"detailBtn": "_3XaZHa_detailBtn",
|
|
4108
|
+
"desc": "_3XaZHa_desc"
|
|
4071
4109
|
};
|
|
4072
4110
|
//#endregion
|
|
4073
4111
|
//#region src/client/hooks/useIncrementalList.ts
|
|
@@ -4078,7 +4116,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4078
4116
|
*
|
|
4079
4117
|
* Incremental list: renders only the first batch of a (potentially huge)
|
|
4080
4118
|
* result set and appends the next batch whenever the end sentinel scrolls
|
|
4081
|
-
* into view, so the plugin
|
|
4119
|
+
* into view, so the plugin market never mounts thousands of cards at once.
|
|
4082
4120
|
* The items reference is the list identity — category / search / sort
|
|
4083
4121
|
* changes produce a new array, which resets the window to the first batch.
|
|
4084
4122
|
*/
|
|
@@ -4205,7 +4243,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4205
4243
|
"aria-hidden": "true"
|
|
4206
4244
|
})), plugins !== null && !failed && (0, react.createElement)("div", { className: List_module_css_default.footer }, (0, react.createElement)("a", {
|
|
4207
4245
|
className: List_module_css_default.footLink,
|
|
4208
|
-
href:
|
|
4246
|
+
href: siteUrl(langPath),
|
|
4209
4247
|
target: "_blank",
|
|
4210
4248
|
rel: "noopener noreferrer"
|
|
4211
4249
|
}, t("browseAll", { n: total }))));
|
|
@@ -4274,15 +4312,15 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4274
4312
|
css: css$8
|
|
4275
4313
|
});
|
|
4276
4314
|
var SectionTabs_module_css_default = {
|
|
4277
|
-
"tab": "_7tvizq_tab",
|
|
4278
|
-
"noticeIcon": "_7tvizq_noticeIcon",
|
|
4279
|
-
"noticeCount": "_7tvizq_noticeCount",
|
|
4280
4315
|
"tabCountActive": "_7tvizq_tabCountActive",
|
|
4281
4316
|
"noticeBtn": "_7tvizq_noticeBtn",
|
|
4317
|
+
"noticeCount": "_7tvizq_noticeCount",
|
|
4282
4318
|
"tabCount": "_7tvizq_tabCount",
|
|
4319
|
+
"root": "_7tvizq_root",
|
|
4283
4320
|
"tabActive": "_7tvizq_tabActive",
|
|
4284
4321
|
"tabIcon": "_7tvizq_tabIcon",
|
|
4285
|
-
"
|
|
4322
|
+
"noticeIcon": "_7tvizq_noticeIcon",
|
|
4323
|
+
"tab": "_7tvizq_tab"
|
|
4286
4324
|
};
|
|
4287
4325
|
//#endregion
|
|
4288
4326
|
//#region src/client/components/layout/SectionTabs.tsx
|
|
@@ -4359,42 +4397,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4359
4397
|
css: css$7
|
|
4360
4398
|
});
|
|
4361
4399
|
var InstalledView_module_css_default = {
|
|
4362
|
-
"toolbar": "_1nXeGW_toolbar",
|
|
4363
|
-
"versionBadge": "_1nXeGW_versionBadge",
|
|
4364
|
-
"exampleBadge": "_1nXeGW_exampleBadge",
|
|
4365
|
-
"rowCategory": "_1nXeGW_rowCategory",
|
|
4366
|
-
"rowActions": "_1nXeGW_rowActions",
|
|
4367
|
-
"searchInput": "_1nXeGW_searchInput",
|
|
4368
|
-
"statusPending": "_1nXeGW_statusPending",
|
|
4369
|
-
"rowTitleLine": "_1nXeGW_rowTitleLine",
|
|
4370
|
-
"list": "_1nXeGW_list",
|
|
4371
|
-
"empty": "_1nXeGW_empty",
|
|
4372
|
-
"rowDesc": "_1nXeGW_rowDesc",
|
|
4373
4400
|
"segGroup": "_1nXeGW_segGroup",
|
|
4374
|
-
"
|
|
4375
|
-
"
|
|
4376
|
-
"
|
|
4401
|
+
"emptyDesc": "_1nXeGW_emptyDesc",
|
|
4402
|
+
"row": "_1nXeGW_row",
|
|
4403
|
+
"rowDesc": "_1nXeGW_rowDesc",
|
|
4404
|
+
"searchInput": "_1nXeGW_searchInput",
|
|
4405
|
+
"rowSourceTag": "_1nXeGW_rowSourceTag",
|
|
4377
4406
|
"rowRepo": "_1nXeGW_rowRepo",
|
|
4407
|
+
"exampleBadge": "_1nXeGW_exampleBadge",
|
|
4378
4408
|
"segBtn": "_1nXeGW_segBtn",
|
|
4379
|
-
"
|
|
4380
|
-
"
|
|
4381
|
-
"
|
|
4382
|
-
"
|
|
4409
|
+
"statusPending": "_1nXeGW_statusPending",
|
|
4410
|
+
"root": "_1nXeGW_root",
|
|
4411
|
+
"versionBadge": "_1nXeGW_versionBadge",
|
|
4412
|
+
"toolbar": "_1nXeGW_toolbar",
|
|
4413
|
+
"rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
|
|
4414
|
+
"segRow": "_1nXeGW_segRow",
|
|
4415
|
+
"empty": "_1nXeGW_empty",
|
|
4383
4416
|
"rowMain": "_1nXeGW_rowMain",
|
|
4384
|
-
"rowRestart": "_1nXeGW_rowRestart",
|
|
4385
4417
|
"emptyTitle": "_1nXeGW_emptyTitle",
|
|
4386
|
-
"
|
|
4418
|
+
"rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
|
|
4387
4419
|
"segLabel": "_1nXeGW_segLabel",
|
|
4388
|
-
"
|
|
4389
|
-
"
|
|
4390
|
-
"
|
|
4420
|
+
"statusDot": "_1nXeGW_statusDot",
|
|
4421
|
+
"rowMeta": "_1nXeGW_rowMeta",
|
|
4422
|
+
"updateBadge": "_1nXeGW_updateBadge",
|
|
4423
|
+
"rowRestart": "_1nXeGW_rowRestart",
|
|
4424
|
+
"rowActions": "_1nXeGW_rowActions",
|
|
4425
|
+
"searchWrap": "_1nXeGW_searchWrap",
|
|
4391
4426
|
"exampleRow": "_1nXeGW_exampleRow",
|
|
4427
|
+
"rowDetail": "_1nXeGW_rowDetail",
|
|
4392
4428
|
"statusInactive": "_1nXeGW_statusInactive",
|
|
4393
|
-
"
|
|
4394
|
-
"
|
|
4395
|
-
"
|
|
4396
|
-
"
|
|
4397
|
-
"
|
|
4429
|
+
"rowTitle": "_1nXeGW_rowTitle",
|
|
4430
|
+
"segBtnActive": "_1nXeGW_segBtnActive",
|
|
4431
|
+
"list": "_1nXeGW_list",
|
|
4432
|
+
"rowTitleLine": "_1nXeGW_rowTitleLine",
|
|
4433
|
+
"rowUninstall": "_1nXeGW_rowUninstall",
|
|
4434
|
+
"rowUpdate": "_1nXeGW_rowUpdate",
|
|
4435
|
+
"rowCategory": "_1nXeGW_rowCategory"
|
|
4398
4436
|
};
|
|
4399
4437
|
//#endregion
|
|
4400
4438
|
//#region src/client/components/views/InstalledView.tsx
|
|
@@ -4640,28 +4678,28 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4640
4678
|
css: css$6
|
|
4641
4679
|
});
|
|
4642
4680
|
var CustomInstallView_module_css_default = {
|
|
4643
|
-
"channelOffText": "zISxCG_channelOffText",
|
|
4644
|
-
"installHelpBtn": "zISxCG_installHelpBtn",
|
|
4645
|
-
"installBtn": "zISxCG_installBtn",
|
|
4646
|
-
"installInput": "zISxCG_installInput",
|
|
4647
4681
|
"installCardHead": "zISxCG_installCardHead",
|
|
4648
|
-
"installError": "zISxCG_installError",
|
|
4649
4682
|
"installCards": "zISxCG_installCards",
|
|
4650
|
-
"
|
|
4651
|
-
"installCard": "zISxCG_installCard",
|
|
4652
|
-
"channelOff": "zISxCG_channelOff",
|
|
4653
|
-
"helpLine": "zISxCG_helpLine",
|
|
4683
|
+
"helpBody": "zISxCG_helpBody",
|
|
4654
4684
|
"installExample": "zISxCG_installExample",
|
|
4685
|
+
"helpLine": "zISxCG_helpLine",
|
|
4686
|
+
"installRow": "zISxCG_installRow",
|
|
4687
|
+
"channelOff": "zISxCG_channelOff",
|
|
4688
|
+
"installHelpBtn": "zISxCG_installHelpBtn",
|
|
4689
|
+
"installError": "zISxCG_installError",
|
|
4690
|
+
"installCardDisabled": "zISxCG_installCardDisabled",
|
|
4691
|
+
"installInput": "zISxCG_installInput",
|
|
4692
|
+
"desc": "zISxCG_desc",
|
|
4693
|
+
"helpCmd": "zISxCG_helpCmd",
|
|
4655
4694
|
"helpNote": "zISxCG_helpNote",
|
|
4695
|
+
"channelOffBtn": "zISxCG_channelOffBtn",
|
|
4656
4696
|
"installInputError": "zISxCG_installInputError",
|
|
4657
4697
|
"root": "zISxCG_root",
|
|
4658
|
-
"
|
|
4698
|
+
"installBtn": "zISxCG_installBtn",
|
|
4699
|
+
"installCard": "zISxCG_installCard",
|
|
4659
4700
|
"installLabel": "zISxCG_installLabel",
|
|
4660
|
-
"helpBody": "zISxCG_helpBody",
|
|
4661
4701
|
"installInsertBtn": "zISxCG_installInsertBtn",
|
|
4662
|
-
"
|
|
4663
|
-
"helpCmd": "zISxCG_helpCmd",
|
|
4664
|
-
"channelOffBtn": "zISxCG_channelOffBtn"
|
|
4702
|
+
"channelOffText": "zISxCG_channelOffText"
|
|
4665
4703
|
};
|
|
4666
4704
|
//#endregion
|
|
4667
4705
|
//#region src/client/components/views/CustomInstallView.tsx
|
|
@@ -4951,30 +4989,30 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4951
4989
|
css: css$5
|
|
4952
4990
|
});
|
|
4953
4991
|
var SettingsView_module_css_default = {
|
|
4954
|
-
"navItemActive": "_506LLG_navItemActive",
|
|
4955
|
-
"settingControlStack": "_506LLG_settingControlStack",
|
|
4956
|
-
"pageHeader": "_506LLG_pageHeader",
|
|
4957
4992
|
"proxyControl": "_506LLG_proxyControl",
|
|
4958
|
-
"
|
|
4993
|
+
"resetBtn": "_506LLG_resetBtn",
|
|
4994
|
+
"root": "_506LLG_root",
|
|
4959
4995
|
"settingRowStack": "_506LLG_settingRowStack",
|
|
4996
|
+
"settingTitle": "_506LLG_settingTitle",
|
|
4997
|
+
"textInput": "_506LLG_textInput",
|
|
4998
|
+
"sidebar": "_506LLG_sidebar",
|
|
4999
|
+
"proxyHintFail": "_506LLG_proxyHintFail",
|
|
4960
5000
|
"controlDropdown": "_506LLG_controlDropdown",
|
|
4961
|
-
"
|
|
4962
|
-
"resetBtn": "_506LLG_resetBtn",
|
|
4963
|
-
"proxyHint": "_506LLG_proxyHint",
|
|
5001
|
+
"navItem": "_506LLG_navItem",
|
|
4964
5002
|
"proxyHintOk": "_506LLG_proxyHintOk",
|
|
4965
|
-
"
|
|
5003
|
+
"pageDesc": "_506LLG_pageDesc",
|
|
5004
|
+
"proxyHint": "_506LLG_proxyHint",
|
|
5005
|
+
"pageHeader": "_506LLG_pageHeader",
|
|
5006
|
+
"navItemActive": "_506LLG_navItemActive",
|
|
4966
5007
|
"card": "_506LLG_card",
|
|
4967
|
-
"
|
|
4968
|
-
"settingDesc": "_506LLG_settingDesc",
|
|
4969
|
-
"root": "_506LLG_root",
|
|
5008
|
+
"settingRow": "_506LLG_settingRow",
|
|
4970
5009
|
"navIcon": "_506LLG_navIcon",
|
|
4971
5010
|
"settingLabel": "_506LLG_settingLabel",
|
|
4972
|
-
"sidebar": "_506LLG_sidebar",
|
|
4973
5011
|
"content": "_506LLG_content",
|
|
4974
5012
|
"pageTitle": "_506LLG_pageTitle",
|
|
4975
|
-
"
|
|
4976
|
-
"
|
|
4977
|
-
"
|
|
5013
|
+
"settingDesc": "_506LLG_settingDesc",
|
|
5014
|
+
"settingControl": "_506LLG_settingControl",
|
|
5015
|
+
"settingControlStack": "_506LLG_settingControlStack"
|
|
4978
5016
|
};
|
|
4979
5017
|
//#endregion
|
|
4980
5018
|
//#region \0dsh-css:src/client/styles/Dropdown.module.css.mjs
|
|
@@ -4993,18 +5031,18 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4993
5031
|
css: css$4
|
|
4994
5032
|
});
|
|
4995
5033
|
var Dropdown_module_css_default = {
|
|
4996
|
-
"dropdownCountActive": "B_Gxsq_dropdownCountActive",
|
|
4997
|
-
"dropdownCount": "B_Gxsq_dropdownCount",
|
|
4998
|
-
"dropdownPanel": "B_Gxsq_dropdownPanel",
|
|
4999
|
-
"dropdownBtn": "B_Gxsq_dropdownBtn",
|
|
5000
|
-
"dropdownItem": "B_Gxsq_dropdownItem",
|
|
5001
|
-
"dropdownArrow": "B_Gxsq_dropdownArrow",
|
|
5002
|
-
"dropdownLabel": "B_Gxsq_dropdownLabel",
|
|
5003
|
-
"dropdownItemActive": "B_Gxsq_dropdownItemActive",
|
|
5004
5034
|
"dropdown": "B_Gxsq_dropdown",
|
|
5035
|
+
"dropdownItemActive": "B_Gxsq_dropdownItemActive",
|
|
5005
5036
|
"dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen",
|
|
5037
|
+
"dropdownBtn": "B_Gxsq_dropdownBtn",
|
|
5038
|
+
"dropdownFill": "B_Gxsq_dropdownFill",
|
|
5039
|
+
"dropdownArrow": "B_Gxsq_dropdownArrow",
|
|
5040
|
+
"dropdownCount": "B_Gxsq_dropdownCount",
|
|
5041
|
+
"dropdownPanel": "B_Gxsq_dropdownPanel",
|
|
5006
5042
|
"dropdownItemLabel": "B_Gxsq_dropdownItemLabel",
|
|
5007
|
-
"
|
|
5043
|
+
"dropdownCountActive": "B_Gxsq_dropdownCountActive",
|
|
5044
|
+
"dropdownLabel": "B_Gxsq_dropdownLabel",
|
|
5045
|
+
"dropdownItem": "B_Gxsq_dropdownItem"
|
|
5008
5046
|
};
|
|
5009
5047
|
//#endregion
|
|
5010
5048
|
//#region \0dsh-css:src/client/styles/Toggle.module.css.mjs
|
|
@@ -5024,8 +5062,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5024
5062
|
});
|
|
5025
5063
|
var Toggle_module_css_default = {
|
|
5026
5064
|
"knob": "k-cD4G_knob",
|
|
5027
|
-
"
|
|
5028
|
-
"
|
|
5065
|
+
"toggleOn": "k-cD4G_toggleOn",
|
|
5066
|
+
"toggle": "k-cD4G_toggle"
|
|
5029
5067
|
};
|
|
5030
5068
|
//#endregion
|
|
5031
5069
|
//#region src/client/components/ui/Toggle.tsx
|
|
@@ -5125,29 +5163,29 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5125
5163
|
css: css$2
|
|
5126
5164
|
});
|
|
5127
5165
|
var DiagnosticsView_module_css_default = {
|
|
5128
|
-
"display": "k9eRya_display",
|
|
5129
|
-
"envCopyBtn": "k9eRya_envCopyBtn",
|
|
5130
5166
|
"summaryRunning": "k9eRya_summaryRunning",
|
|
5131
|
-
"
|
|
5167
|
+
"badgeRunning": "k9eRya_badgeRunning",
|
|
5132
5168
|
"envLabel": "k9eRya_envLabel",
|
|
5169
|
+
"envCopyBtn": "k9eRya_envCopyBtn",
|
|
5170
|
+
"badgeFail": "k9eRya_badgeFail",
|
|
5171
|
+
"badgeOk": "k9eRya_badgeOk",
|
|
5172
|
+
"runBtn": "k9eRya_runBtn",
|
|
5173
|
+
"display": "k9eRya_display",
|
|
5133
5174
|
"name": "k9eRya_name",
|
|
5175
|
+
"envRow": "k9eRya_envRow",
|
|
5176
|
+
"head": "k9eRya_head",
|
|
5177
|
+
"meta": "k9eRya_meta",
|
|
5134
5178
|
"badge": "k9eRya_badge",
|
|
5135
|
-
"badgeIdle": "k9eRya_badgeIdle",
|
|
5136
5179
|
"panel": "k9eRya_panel",
|
|
5137
|
-
"
|
|
5138
|
-
"
|
|
5139
|
-
"
|
|
5180
|
+
"diagPulse": "k9eRya_diagPulse",
|
|
5181
|
+
"envDesc": "k9eRya_envDesc",
|
|
5182
|
+
"badgeIdle": "k9eRya_badgeIdle",
|
|
5183
|
+
"headHint": "k9eRya_headHint",
|
|
5140
5184
|
"summaryOk": "k9eRya_summaryOk",
|
|
5185
|
+
"row": "k9eRya_row",
|
|
5141
5186
|
"envTitle": "k9eRya_envTitle",
|
|
5142
|
-
"summaryFail": "k9eRya_summaryFail",
|
|
5143
|
-
"diagPulse": "k9eRya_diagPulse",
|
|
5144
5187
|
"summary": "k9eRya_summary",
|
|
5145
|
-
"
|
|
5146
|
-
"badgeOk": "k9eRya_badgeOk",
|
|
5147
|
-
"headHint": "k9eRya_headHint",
|
|
5148
|
-
"envDesc": "k9eRya_envDesc",
|
|
5149
|
-
"badgeFail": "k9eRya_badgeFail",
|
|
5150
|
-
"envRow": "k9eRya_envRow"
|
|
5188
|
+
"summaryFail": "k9eRya_summaryFail"
|
|
5151
5189
|
};
|
|
5152
5190
|
//#endregion
|
|
5153
5191
|
//#region src/client/components/views/DiagnosticsView.tsx
|
|
@@ -5185,7 +5223,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5185
5223
|
},
|
|
5186
5224
|
{
|
|
5187
5225
|
key: "github",
|
|
5188
|
-
display: "github.com
|
|
5226
|
+
display: "github.com",
|
|
5189
5227
|
nameKey: "diagGithub",
|
|
5190
5228
|
status: "idle",
|
|
5191
5229
|
ms: null,
|
|
@@ -5193,7 +5231,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5193
5231
|
},
|
|
5194
5232
|
{
|
|
5195
5233
|
key: "catalog",
|
|
5196
|
-
display: "
|
|
5234
|
+
display: "",
|
|
5197
5235
|
nameKey: "diagCatalog",
|
|
5198
5236
|
status: "idle",
|
|
5199
5237
|
ms: null,
|
|
@@ -5302,7 +5340,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5302
5340
|
disabled: r.status === "running",
|
|
5303
5341
|
onClick: () => run(r.key),
|
|
5304
5342
|
title: t("diagRecheck")
|
|
5305
|
-
}, (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);
|
|
5343
|
+
}, (0, react.createElement)("span", { className: DiagnosticsView_module_css_default.name }, t(r.nameKey)), (0, react.createElement)("span", { className: DiagnosticsView_module_css_default.display }, r.key === "catalog" ? t("diagCatalogTarget") : 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);
|
|
5306
5344
|
}), (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")));
|
|
5307
5345
|
}
|
|
5308
5346
|
//#endregion
|
|
@@ -5322,57 +5360,57 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5322
5360
|
css: css$1
|
|
5323
5361
|
});
|
|
5324
5362
|
var LogsView_module_css_default = {
|
|
5325
|
-
"
|
|
5326
|
-
"
|
|
5327
|
-
"pathDialogRow": "_3j77BW_pathDialogRow",
|
|
5328
|
-
"badgeInfo": "_3j77BW_badgeInfo",
|
|
5329
|
-
"catUninstall": "_3j77BW_catUninstall",
|
|
5330
|
-
"actions": "_3j77BW_actions",
|
|
5331
|
-
"message": "_3j77BW_message",
|
|
5332
|
-
"pathDialogFoot": "_3j77BW_pathDialogFoot",
|
|
5333
|
-
"search": "_3j77BW_search",
|
|
5363
|
+
"pathDraft": "_3j77BW_pathDraft",
|
|
5364
|
+
"clearBtn": "_3j77BW_clearBtn",
|
|
5334
5365
|
"list": "_3j77BW_list",
|
|
5335
|
-
"
|
|
5336
|
-
"
|
|
5337
|
-
"
|
|
5338
|
-
"
|
|
5366
|
+
"linkBtn": "_3j77BW_linkBtn",
|
|
5367
|
+
"head": "_3j77BW_head",
|
|
5368
|
+
"logList": "_3j77BW_logList",
|
|
5369
|
+
"filterBar": "_3j77BW_filterBar",
|
|
5370
|
+
"more": "_3j77BW_more",
|
|
5371
|
+
"filterChip": "_3j77BW_filterChip",
|
|
5372
|
+
"badgeSuccess": "_3j77BW_badgeSuccess",
|
|
5373
|
+
"catSystem": "_3j77BW_catSystem",
|
|
5374
|
+
"catInstall": "_3j77BW_catInstall",
|
|
5375
|
+
"searchInput": "_3j77BW_searchInput",
|
|
5376
|
+
"badgeDebug": "_3j77BW_badgeDebug",
|
|
5377
|
+
"search": "_3j77BW_search",
|
|
5378
|
+
"footFail": "_3j77BW_footFail",
|
|
5339
5379
|
"foot": "_3j77BW_foot",
|
|
5340
|
-
"
|
|
5380
|
+
"pathDialogRow": "_3j77BW_pathDialogRow",
|
|
5381
|
+
"pathDialogDesc": "_3j77BW_pathDialogDesc",
|
|
5382
|
+
"badgeInfo": "_3j77BW_badgeInfo",
|
|
5341
5383
|
"pathText": "_3j77BW_pathText",
|
|
5342
5384
|
"catUpdate": "_3j77BW_catUpdate",
|
|
5385
|
+
"panel": "_3j77BW_panel",
|
|
5386
|
+
"time": "_3j77BW_time",
|
|
5387
|
+
"pathDialog": "_3j77BW_pathDialog",
|
|
5388
|
+
"pathRow": "_3j77BW_pathRow",
|
|
5389
|
+
"filterChipActive": "_3j77BW_filterChipActive",
|
|
5390
|
+
"entry": "_3j77BW_entry",
|
|
5391
|
+
"catUninstall": "_3j77BW_catUninstall",
|
|
5343
5392
|
"catSettings": "_3j77BW_catSettings",
|
|
5344
|
-
"empty": "_3j77BW_empty",
|
|
5345
|
-
"filterBar": "_3j77BW_filterBar",
|
|
5346
|
-
"catSystem": "_3j77BW_catSystem",
|
|
5347
|
-
"pathDialogHint": "_3j77BW_pathDialogHint",
|
|
5348
5393
|
"pathLabel": "_3j77BW_pathLabel",
|
|
5349
|
-
"
|
|
5394
|
+
"actions": "_3j77BW_actions",
|
|
5395
|
+
"pathDialogReset": "_3j77BW_pathDialogReset",
|
|
5396
|
+
"badgeError": "_3j77BW_badgeError",
|
|
5397
|
+
"empty": "_3j77BW_empty",
|
|
5398
|
+
"catBadge": "_3j77BW_catBadge",
|
|
5350
5399
|
"footActions": "_3j77BW_footActions",
|
|
5351
|
-
"
|
|
5400
|
+
"btn": "_3j77BW_btn",
|
|
5401
|
+
"headHint": "_3j77BW_headHint",
|
|
5402
|
+
"footPath": "_3j77BW_footPath",
|
|
5403
|
+
"moreEnd": "_3j77BW_moreEnd",
|
|
5404
|
+
"headActions": "_3j77BW_headActions",
|
|
5405
|
+
"pathDialogFoot": "_3j77BW_pathDialogFoot",
|
|
5406
|
+
"footCount": "_3j77BW_footCount",
|
|
5407
|
+
"badge": "_3j77BW_badge",
|
|
5352
5408
|
"event": "_3j77BW_event",
|
|
5353
|
-
"
|
|
5354
|
-
"
|
|
5355
|
-
"clearBtn": "_3j77BW_clearBtn",
|
|
5356
|
-
"badgeWarn": "_3j77BW_badgeWarn",
|
|
5357
|
-
"filterChipActive": "_3j77BW_filterChipActive",
|
|
5409
|
+
"pathDialogHint": "_3j77BW_pathDialogHint",
|
|
5410
|
+
"message": "_3j77BW_message",
|
|
5358
5411
|
"catDiagnostics": "_3j77BW_catDiagnostics",
|
|
5359
|
-
"footFail": "_3j77BW_footFail",
|
|
5360
5412
|
"previewRow": "_3j77BW_previewRow",
|
|
5361
|
-
"
|
|
5362
|
-
"logList": "_3j77BW_logList",
|
|
5363
|
-
"catInstall": "_3j77BW_catInstall",
|
|
5364
|
-
"filterChip": "_3j77BW_filterChip",
|
|
5365
|
-
"head": "_3j77BW_head",
|
|
5366
|
-
"pathRow": "_3j77BW_pathRow",
|
|
5367
|
-
"pathDialogReset": "_3j77BW_pathDialogReset",
|
|
5368
|
-
"panel": "_3j77BW_panel",
|
|
5369
|
-
"more": "_3j77BW_more",
|
|
5370
|
-
"footCount": "_3j77BW_footCount",
|
|
5371
|
-
"time": "_3j77BW_time",
|
|
5372
|
-
"badgeError": "_3j77BW_badgeError",
|
|
5373
|
-
"linkBtn": "_3j77BW_linkBtn",
|
|
5374
|
-
"headHint": "_3j77BW_headHint",
|
|
5375
|
-
"searchInput": "_3j77BW_searchInput"
|
|
5413
|
+
"badgeWarn": "_3j77BW_badgeWarn"
|
|
5376
5414
|
};
|
|
5377
5415
|
//#endregion
|
|
5378
5416
|
//#region src/client/components/modals/LogsModal.tsx
|
|
@@ -6189,7 +6227,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
6189
6227
|
const catalog = useCatalog(lang);
|
|
6190
6228
|
/** 设置状态:服务端 hub-settings.json 持久化,本地乐观更新即时生效 */
|
|
6191
6229
|
const { settings: hubSettings, ready: settingsReady, update: updateSettings, reset: resetSettings } = useSettings();
|
|
6192
|
-
/**
|
|
6230
|
+
/** 一级导航:插件市场 / 已安装 / 自定义安装 / 设置 */
|
|
6193
6231
|
const [view, setView] = (0, react.useState)("market");
|
|
6194
6232
|
/** 外部跳转设置分组的一次性信号(错误弹窗「去系统诊断」→ 设置 → 系统诊断):
|
|
6195
6233
|
* 传给 SettingsView 消费后即清空,避免下次进设置被强制带跳 */
|
|
@@ -6358,12 +6396,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
6358
6396
|
if (!settingsReady || catalog.plugins === null || catalog.failed) return;
|
|
6359
6397
|
startupCheckedRef.current = true;
|
|
6360
6398
|
if (!hubSettings.checkUpdatesOnStart) return;
|
|
6361
|
-
|
|
6362
|
-
if (added > 0) setToast({
|
|
6363
|
-
id: Date.now(),
|
|
6364
|
-
kind: "updates",
|
|
6365
|
-
n: added
|
|
6366
|
-
});
|
|
6399
|
+
syncUpdateNotices();
|
|
6367
6400
|
}, [
|
|
6368
6401
|
settingsReady,
|
|
6369
6402
|
hubSettings,
|
|
@@ -6617,7 +6650,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
6617
6650
|
openSection: settingsSection,
|
|
6618
6651
|
onConsumedOpenSection: () => setSettingsSection(null)
|
|
6619
6652
|
}), showHubUpdate && (0, react.createElement)(HubUpdateModal, {
|
|
6620
|
-
info: catalog.hubUpdateInfo ?? { version: "1.
|
|
6653
|
+
info: catalog.hubUpdateInfo ?? { version: "1.4.1" },
|
|
6621
6654
|
lang,
|
|
6622
6655
|
t,
|
|
6623
6656
|
hasUpdate: catalog.hubHasUpdate,
|