dsh-plugin 2.2.6 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/client/client.js CHANGED
@@ -312,6 +312,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
312
312
  failPnpmStoreHint: "安装器调用 pnpm 时报「store 位置不匹配」(ERR_PNPM_UNEXPECTED_STORE):你的 profile 目录里旧插件依赖是用另一个大版本的 pnpm 生成的,当前 pnpm 出于安全不认旧目录,导致任何插件装进该 profile 都会失败。请删除该 profile 目录下的 node_modules 与 pnpm-lock.yaml(可先到「系统日志」或 ~/.dsh/profiles/<profile>/hub.log 查看完整报错),再重新安装。这不是插件本身的问题。",
313
313
  failPnpmUnusedPatchHint: "安装器调用 pnpm 时报「有些补丁没有被使用」(ERR_PNPM_UNUSED_PATCH):你的 profile 里留着一条指向旧版本 dsh-plugin 的补丁声明(例如 dsh-plugin@1.4.2),而本次安装解析到的版本已经不是它,pnpm 出于安全直接中止整次安装,因此任何插件都装不进来。这不是插件本身的问题——请在 profile 目录(~/.dsh/profiles/<profile>)的 pnpm-workspace.yaml(pnpm 11 及以上)或 package.json 的 pnpm.patchedDependencies(pnpm 10)里删除该 dsh-plugin 补丁条目后重试。",
314
314
  failProfileStateHint: "安装器调用 pnpm 时报 profile 的元数据与当前环境对不上(如 ERR_PNPM_OUTDATED_LOCKFILE / ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND / ERR_PNPM_BAD_PM_VERSION / ERR_PNPM_PATCH_NOT_APPLIED):profile 里的 pnpm-lock.yaml、package.json 或补丁声明与当前 pnpm 版本不一致,pnpm 在真正装插件之前就中止了,所以这个 profile 里装任何插件都会失败。这不是插件本身的问题——请在 profile 目录(~/.dsh/profiles/<profile>)里删除 pnpm-lock.yaml 后重试(pnpm 会按当前依赖重新生成);若报的是 packageManager 版本不符,把 package.json 里的 packageManager 字段改成当前 pnpm 的大版本或直接删掉该字段;仍不行请重建该 profile 的依赖。",
315
+ failProfileYamlHint: "安装器调用 pnpm 时报「YAML 配置损坏」(duplicated mapping key):profile 目录里的 pnpm-workspace.yaml 或 pnpm-lock.yaml 出现了重复的键(多见于手工编辑、合并冲突残留,或第三方工具重复写入同一条目)。pnpm 在解析阶段就直接退出,依赖根本没开始装,所以这个 profile 里装任何插件都会失败。这不是插件本身的问题——请打开 ~/.dsh/profiles/<profile>/ 检查这两个文件,删掉重复的那一行或那一段;不确定该改哪一处时,可以先删掉 pnpm-lock.yaml(必要时连 node_modules 一起)让 pnpm 重新生成,然后重试。",
316
+ failProfileLocalBuildHint: "安装器调用 pnpm 时,pnpm 拒绝了 profile 里某个本地包的构建脚本:这台机器的 profile 已经装了一个用 file: / link: 指向本地目录的插件,它的 postinstall 等脚本跑不通。pnpm 每次 add 都会重校验整个 profile 的依赖树,所以这一个坏包会让这个 profile 里装任何插件都失败——与本次要装的插件无关,也不该去找它的作者。请打开 profile 目录(~/.dsh/profiles/<profile>)的 package.json,看 dependencies 里值是 file: / link: 的那几项,把它们临时移除(或修好对应目录里缺失的脚本文件)后重试;pnpm 报错里「Ignored build scripts」后面列出的包名就是出错的那个。",
315
317
  failNodeEngineHint: "这个插件(或它的某个依赖)声明了更高的 Node / pnpm 版本要求(ERR_PNPM_UNSUPPORTED_ENGINE / EBADENGINE),当前版本不满足,pnpm 在安装阶段直接拒绝。这不是插件本身的问题——请把 Node 升级到要求的版本(nvm / fnm 切换,或安装新版 Node.js),确认 node -v 与 pnpm -v 都满足要求后重试。",
316
318
  failPnpmMissingDepTarget: "{pkg} 在 npm registry 上不存在(404)",
317
319
  failPnpmMissingDepHint: "安装器调用 pnpm 时报「包不存在」(ERR_PNPM_FETCH_404):你的 profile 里留着一条指向 registry 上未发布包的依赖,pnpm 每次解析依赖都会先卡在它上面,因此任何插件都装不进来。这不是插件本身的问题——请在 profile 目录(~/.dsh/profiles/<profile>)的 package.json 里删除该依赖条目(同时删掉对应的 pnpm-lock.yaml 条目或整个锁文件)后重试。",
@@ -346,6 +348,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
346
348
  failReason_pnpmPolicy: "版本未满最小发布年龄,或缺完整性校验 / 来源不可信。",
347
349
  failKind_pnpmUnusedPatch: "profile 残留旧补丁声明",
348
350
  failReason_pnpmUnusedPatch: "profile 里留着指向旧版本 dsh-plugin 的补丁,pnpm 出于安全中止了安装。",
351
+ failKind_profileYamlCorrupted: "profile 的 YAML 配置损坏",
352
+ failReason_profileYamlCorrupted: "profile 目录里的 pnpm-workspace.yaml 或 pnpm-lock.yaml 有重复的键,pnpm 在解析阶段就退出了。",
353
+ failKind_profileLocalBuild: "profile 里已有的本地插件构建失败",
354
+ failReason_profileLocalBuild: "pnpm 每次安装都会重校验整个 profile,这次失败来自 profile 里已有的 file:/link: 本地插件的构建脚本,和本次要装的插件无关。",
349
355
  failKind_profileState: "profile 的 pnpm 元数据与本机不一致",
350
356
  failReason_profileState: "profile 的 lockfile / package.json / packageManager 版本与当前 pnpm 对不上,安装没开始就被中止。",
351
357
  failKind_nodeEngine: "本机 Node / pnpm 版本不满足要求",
@@ -368,8 +374,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
368
374
  failReason_accessDenied: "系统拒绝 pnpm 写入 profile 里的文件。",
369
375
  failKind_fsUnavailable: "磁盘不可写",
370
376
  failReason_fsUnavailable: "磁盘已满、处于只读,或文件句柄耗尽。",
371
- failKind_pnpmIgnoredBuild: "原生模块构建被拦截",
372
- failReason_pnpmIgnoredBuild: "插件依赖需要在你的机器上现场编译,pnpm 默认拦住构建脚本。",
377
+ failKind_pnpmIgnoredBuild: "依赖的构建脚本被 pnpm 拦截",
378
+ failReason_pnpmIgnoredBuild: "这次要装的插件(或其依赖)声明了构建脚本,pnpm 默认拦下未放行的构建(不一定是原生模块)。",
373
379
  failKind_pluginPrepare: "插件分发不完整",
374
380
  failReason_pluginPrepare: "作者发布的包里缺文件,或构建脚本执行失败。",
375
381
  failKind_hostIncompatible: "插件不支持当前的 DSH 版本({version})",
@@ -437,15 +443,17 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
437
443
  updatePendingHint: "新版本发布未满 24 小时,pnpm 供应链门禁会拦下;到时间后再更新即可",
438
444
  hubUpdateHint: "检测到 DSH Plugin Hub 新版本,点击查看更新内容并更新",
439
445
  hubUpdateTitle: "DSH Plugin Hub 有新版本",
440
- hubUpdateDesc: "v{version} 已发布,点击下方按钮即可更新,完成后需重启宿主生效。",
446
+ hubUpdateDesc: "点击下方按钮即可更新,完成后需重启宿主生效。",
441
447
  hubUpdatePublished: "发布于",
442
448
  hubUpdateNotes: "更新记录",
443
449
  hubUpdateLater: "稍后再说",
444
450
  versionHint: "查看版本信息与更新记录",
445
451
  hubCurrentTitle: "当前版本",
446
- hubCurrentDesc: "你正在使用 v{version},已是最新版本。",
447
- hubPendingDesc: "最新版 v{version} 已发布,但发布尚未满 24 小时:此时更新会被 pnpm 静默回退到旧版本,因此暂不提示。稍后这里会自动出现更新入口。",
448
- hubUpToDate: "已是最新版本",
452
+ hubVersionStateLatest: "已是最新",
453
+ hubVersionStateAvailable: "可更新",
454
+ hubVersionStatePending: "暂缓提示",
455
+ close: "关闭",
456
+ hubPendingDesc: "最新版已发布,但发布尚未满 24 小时:此时更新会被 pnpm 静默回退到旧版本,因此暂不提示。稍后这里会自动出现更新入口。",
449
457
  followUs: "关注我们",
450
458
  aboutTitle: "关注我们",
451
459
  aboutDesc: "了解 DSH Plugin Hub 是做什么的,加入用户反馈群随时交流。",
@@ -753,6 +761,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
753
761
  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.",
754
762
  failPnpmUnusedPatchHint: "pnpm reported that some patches were not used (ERR_PNPM_UNUSED_PATCH): your profile still holds a patch entry for an older dsh-plugin version (for example dsh-plugin@1.4.2), while this install resolved a different version, so pnpm aborts the whole install for safety — no plugin can be installed into that profile. This is not a problem with the plugin itself. Remove that dsh-plugin patch entry from pnpm-workspace.yaml (pnpm 11+) or from pnpm.patchedDependencies in package.json (pnpm 10) inside the profile directory (~/.dsh/profiles/<profile>), then retry.",
755
763
  failProfileStateHint: "pnpm reported that the profile metadata does not match the current environment (e.g. ERR_PNPM_OUTDATED_LOCKFILE / ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND / ERR_PNPM_BAD_PM_VERSION / ERR_PNPM_PATCH_NOT_APPLIED): pnpm-lock.yaml, package.json or the patch declarations inside the profile disagree with the pnpm version in use, so pnpm aborts before installing anything — every plugin install into this profile will fail. This is not a problem with the plugin itself. Delete pnpm-lock.yaml inside the profile directory (~/.dsh/profiles/<profile>) and retry (pnpm regenerates it from the declared dependencies); if the error is about packageManager, set that field in package.json to the current pnpm major or remove it; if it still fails, rebuild the profile dependencies.",
764
+ failProfileYamlHint: "pnpm reported a broken YAML config (duplicated mapping key): a YAML file inside the profile directory — pnpm-workspace.yaml or pnpm-lock.yaml — contains a duplicate key, usually after a manual edit, a leftover merge conflict, or a tool writing the same entry twice. pnpm stops at parse time and nothing is installed, so every plugin install into this profile fails the same way. This is not a problem with the plugin itself. Open ~/.dsh/profiles/<profile>/ and remove the duplicated line or block; if you are not sure which file to fix, delete pnpm-lock.yaml (and node_modules if needed) so pnpm regenerates them, then retry.",
765
+ failProfileLocalBuildHint: "pnpm rejected a build script of a local package already in the profile: this machine's profile contains a plugin wired to a local directory with file: / link:, and its postinstall (or another build script) cannot run. pnpm re-validates the whole profile dependency tree on every add, so that one broken package makes every install into this profile fail — it is unrelated to the plugin you were installing, and reporting it to that plugin's author will not help. Open package.json in the profile directory (~/.dsh/profiles/<profile>), find the dependencies whose version starts with file: or link:, remove them temporarily (or fix the missing script in that directory), then retry. The package names after \"Ignored build scripts\" in the pnpm error tell you which one is failing.",
756
766
  failNodeEngineHint: "This plugin (or one of its dependencies) declares a higher Node / pnpm version (ERR_PNPM_UNSUPPORTED_ENGINE / EBADENGINE), which the current one does not satisfy, so pnpm refuses at install time. This is not a problem with the plugin itself. Upgrade Node to the required version (switch with nvm / fnm, or install a newer Node.js), confirm node -v and pnpm -v both satisfy it, then retry.",
757
767
  failPnpmMissingDepTarget: "{pkg} was not found on the npm registry (404)",
758
768
  failPnpmMissingDepHint: "pnpm reported that a package does not exist on the npm registry (ERR_PNPM_FETCH_404): your profile keeps a dependency on a package that was never published, and pnpm hits it every time it resolves dependencies — no plugin can be installed into that profile. This is not a problem with the plugin itself. Remove that dependency from package.json inside the profile directory (~/.dsh/profiles/<profile>) — along with its entry in pnpm-lock.yaml, or the lockfile itself — then retry.",
@@ -787,6 +797,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
787
797
  failReason_pnpmPolicy: "The version is younger than the minimum release age, or an integrity / trust check failed.",
788
798
  failKind_pnpmUnusedPatch: "stale patch entry in the profile",
789
799
  failReason_pnpmUnusedPatch: "The profile keeps a patch for an older dsh-plugin version, so pnpm aborted for safety.",
800
+ failKind_profileYamlCorrupted: "profile YAML config is corrupted",
801
+ failReason_profileYamlCorrupted: "A YAML file in the profile directory has a duplicate key, so pnpm aborts at parse time.",
802
+ failKind_profileLocalBuild: "a local plugin already in the profile fails its build",
803
+ failReason_profileLocalBuild: "pnpm re-validates the whole profile on every install; this failure comes from the build script of a local (file:/link:) package already in the profile, not from the plugin being installed.",
790
804
  failKind_profileState: "profile pnpm metadata does not match this machine",
791
805
  failReason_profileState: "The profile lockfile / package.json / packageManager version disagrees with the current pnpm, so the install aborts before starting.",
792
806
  failKind_nodeEngine: "Node / pnpm on this machine is below the required version",
@@ -809,8 +823,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
809
823
  failReason_accessDenied: "The system denied pnpm write access to files inside the profile.",
810
824
  failKind_fsUnavailable: "the disk is not writable",
811
825
  failReason_fsUnavailable: "The disk is full or read-only, or file handles are exhausted.",
812
- failKind_pnpmIgnoredBuild: "native build scripts blocked",
813
- failReason_pnpmIgnoredBuild: "A plugin dependency has to be compiled on your machine, and pnpm blocks build scripts by default.",
826
+ failKind_pnpmIgnoredBuild: "build scripts blocked by pnpm",
827
+ failReason_pnpmIgnoredBuild: "The plugin being installed (or one of its dependencies) declares a build script that pnpm blocks by default; the blocked script is not necessarily a native module.",
814
828
  failKind_pluginPrepare: "plugin distribution is incomplete",
815
829
  failReason_pluginPrepare: "The published package is missing files, or its build script failed.",
816
830
  failKind_hostIncompatible: "plugin does not support the DSH version in use ({version})",
@@ -878,15 +892,17 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
878
892
  updatePendingHint: "The new release is less than 24 hours old, so the pnpm supply-chain hold rejects it until then",
879
893
  hubUpdateHint: "A new DSH Plugin Hub version is available — click to view the changelog and update",
880
894
  hubUpdateTitle: "A new DSH Plugin Hub version is available",
881
- hubUpdateDesc: "v{version} has been released — click below to update, then restart the host to apply it.",
895
+ hubUpdateDesc: "Click below to update, then restart the host to apply it.",
882
896
  hubUpdatePublished: "Published",
883
897
  hubUpdateNotes: "What's new",
884
898
  hubUpdateLater: "Later",
885
899
  versionHint: "View version info and changelog",
886
900
  hubCurrentTitle: "Current version",
887
- hubCurrentDesc: "You are on v{version} — this is the latest version.",
888
- hubPendingDesc: "v{version} has been released, but it is still within the 24-hour window where pnpm silently falls back to the older version, so the update is not offered yet. The update entry will appear here shortly.",
889
- hubUpToDate: "Up to date",
901
+ hubVersionStateLatest: "Up to date",
902
+ hubVersionStateAvailable: "Update available",
903
+ hubVersionStatePending: "Held for 24h",
904
+ close: "Close",
905
+ hubPendingDesc: "The latest version has been released, but it is still within the 24-hour window where pnpm silently falls back to the older version, so the update is not offered yet. The update entry will appear here shortly.",
890
906
  followUs: "Follow us",
891
907
  aboutTitle: "Follow us",
892
908
  aboutDesc: "Learn what DSH Plugin Hub does and join our user feedback group.",
@@ -912,46 +928,46 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
912
928
  css: css$11
913
929
  });
914
930
  var Header_module_css_default = {
915
- "tabCount": "qikqja_tabCount",
916
- "segBtnActive": "qikqja_segBtnActive",
917
- "adText": "qikqja_adText",
918
- "searchRow": "qikqja_searchRow",
931
+ "copyIcon": "qikqja_copyIcon",
932
+ "adBanner": "qikqja_adBanner",
933
+ "adBadge": "qikqja_adBadge",
934
+ "taglineLink": "qikqja_taglineLink",
919
935
  "tab": "qikqja_tab",
920
- "headerRight": "qikqja_headerRight",
936
+ "tabActive": "qikqja_tabActive",
937
+ "tabsRow": "qikqja_tabsRow",
938
+ "tagline": "qikqja_tagline",
939
+ "githubIcon": "qikqja_githubIcon",
921
940
  "header": "qikqja_header",
922
- "brandTitle": "qikqja_brandTitle",
923
- "logoIcon": "qikqja_logoIcon",
924
- "search": "qikqja_search",
925
- "version": "qikqja_version",
926
- "taglineLink": "qikqja_taglineLink",
941
+ "searchRow": "qikqja_searchRow",
942
+ "headerRight": "qikqja_headerRight",
943
+ "segBtnActive": "qikqja_segBtnActive",
927
944
  "tabs": "qikqja_tabs",
928
- "tabsRow": "qikqja_tabsRow",
929
- "hubUpdateBadge": "qikqja_hubUpdateBadge",
930
- "adBanner": "qikqja_adBanner",
931
945
  "headerTitleRow": "qikqja_headerTitleRow",
946
+ "segBtn": "qikqja_segBtn",
947
+ "logoIcon": "qikqja_logoIcon",
948
+ "githubLink": "qikqja_githubLink",
949
+ "version": "qikqja_version",
950
+ "title": "qikqja_title",
951
+ "segLabel": "qikqja_segLabel",
932
952
  "adArrow": "qikqja_adArrow",
933
- "tagline": "qikqja_tagline",
934
953
  "versionBtn": "qikqja_versionBtn",
935
- "githubIcon": "qikqja_githubIcon",
936
- "segLabel": "qikqja_segLabel",
954
+ "segGroup": "qikqja_segGroup",
937
955
  "root": "qikqja_root",
956
+ "sortGroup": "qikqja_sortGroup",
957
+ "search": "qikqja_search",
958
+ "adText": "qikqja_adText",
959
+ "hubUpdateBadge": "qikqja_hubUpdateBadge",
938
960
  "langBtn": "qikqja_langBtn",
961
+ "brandTitle": "qikqja_brandTitle",
939
962
  "aboutBtn": "qikqja_aboutBtn",
940
- "title": "qikqja_title",
941
963
  "resultCount": "qikqja_resultCount",
942
- "segBtn": "qikqja_segBtn",
943
- "tabActive": "qikqja_tabActive",
944
- "sortGroup": "qikqja_sortGroup",
945
- "githubLink": "qikqja_githubLink",
964
+ "tabCount": "qikqja_tabCount",
946
965
  "controls": "qikqja_controls",
947
- "segGroup": "qikqja_segGroup",
948
- "adBadge": "qikqja_adBadge",
949
- "resultSeg": "qikqja_resultSeg",
950
- "copyIcon": "qikqja_copyIcon"
966
+ "resultSeg": "qikqja_resultSeg"
951
967
  };
952
968
  //#endregion
953
969
  //#region \0dsh-css:src/client/styles/Modal.module.css.mjs
954
- 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:72px;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_bundleDeselectedHint{text-align:left;color:var(--hub-warning);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:none}a.BiQ1zG_failRepo{color:#2f6feb}.BiQ1zG_failRepoLabel{color:var(--hub-text-secondary)}a.BiQ1zG_failRepo:hover .BiQ1zG_failRepoUrl{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_failKindTitle{text-align:left;color:var(--hub-danger-text);margin-top:10px;font-size:15px;font-weight:700;line-height:22px}.BiQ1zG_failReason{white-space:pre-line;text-align:left;color:var(--hub-text-secondary);margin-top:2px;font-size:12.5px;font-weight:400;line-height:19px}.BiQ1zG_failPrepareHint{white-space:pre-line;text-align:left;color:var(--hub-warning);background:var(--hub-warning-tint);border:1px solid var(--hub-warning-border);border-radius:6px;margin-top:6px;margin-bottom:12px;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_failMisjudgeLink{color:var(--hub-text-tertiary);cursor:pointer;margin-top:6px;font-size:12px;line-height:18px;text-decoration:underline;display:inline-block}.BiQ1zG_failMisjudgeLink:hover{color:var(--hub-text-secondary)}.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}";
970
+ 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:72px;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_bundleDeselectedHint{text-align:left;color:var(--hub-warning);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:none}a.BiQ1zG_failRepo{color:#2f6feb}.BiQ1zG_failRepoLabel{color:var(--hub-text-secondary)}a.BiQ1zG_failRepo:hover .BiQ1zG_failRepoUrl{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_failKindTitle{text-align:left;color:var(--hub-danger-text);margin-top:10px;font-size:15px;font-weight:700;line-height:22px}.BiQ1zG_failReason{white-space:pre-line;text-align:left;color:var(--hub-text-secondary);margin-top:2px;font-size:12.5px;font-weight:400;line-height:19px}.BiQ1zG_failPrepareHint{white-space:pre-line;text-align:left;color:var(--hub-warning);background:var(--hub-warning-tint);border:1px solid var(--hub-warning-border);border-radius:6px;margin-top:6px;margin-bottom:12px;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_failMisjudgeLink{color:var(--hub-text-tertiary);cursor:pointer;margin-top:6px;font-size:12px;line-height:18px;text-decoration:underline;display:inline-block}.BiQ1zG_failMisjudgeLink:hover{color:var(--hub-text-secondary)}.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_hubVersionBar{flex-wrap:wrap;align-items:center;gap:4px 10px;display:flex}.BiQ1zG_hubVersionNumber{color:var(--hub-text-primary);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:18px;font-weight:600;line-height:26px}.BiQ1zG_hubStateChip{white-space:nowrap;border:1px solid #0000;border-radius:999px;padding:0 8px;font-size:11px;line-height:18px}.BiQ1zG_hubStateLatest{color:var(--hub-success);border-color:var(--hub-success-border);background:var(--hub-success-tint)}.BiQ1zG_hubStateAvailable{color:var(--hub-warn);border-color:var(--hub-warn-border);background:var(--hub-warn-tint)}.BiQ1zG_hubStatePending{color:var(--hub-text-tertiary);border-color:var(--hub-border-2)}.BiQ1zG_hubVersionDate{color:var(--hub-text-tertiary);margin-left:auto;font-size:12px;line-height:18px}.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}";
955
971
  const tagId$10 = "dsh-plugin/Modal.module.css";
956
972
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$10) + "]") === null) {
957
973
  const tag = document.createElement("style");
@@ -966,142 +982,147 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
966
982
  css: css$10
967
983
  });
968
984
  var Modal_module_css_default = {
969
- "errorModal": "BiQ1zG_errorModal",
970
- "failHead": "BiQ1zG_failHead",
971
- "failRepoLabel": "BiQ1zG_failRepoLabel",
972
- "detailLabel": "BiQ1zG_detailLabel",
973
- "pendingRowActions": "BiQ1zG_pendingRowActions",
974
- "confirmPrimary": "BiQ1zG_confirmPrimary",
975
- "hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
976
- "hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
977
- "queueRowStatus": "BiQ1zG_queueRowStatus",
978
- "failedCopyHint": "BiQ1zG_failedCopyHint",
979
- "overlay": "BiQ1zG_overlay",
980
- "resultTitle": "BiQ1zG_resultTitle",
981
- "progressFillFail": "BiQ1zG_progressFillFail",
982
- "result": "BiQ1zG_result",
983
- "detailArrow": "BiQ1zG_detailArrow",
984
- "queueRowDesc": "BiQ1zG_queueRowDesc",
985
- "modalBody": "BiQ1zG_modalBody",
986
- "resultRestarting": "BiQ1zG_resultRestarting",
987
- "progressFill": "BiQ1zG_progressFill",
988
- "resultCheckIcon": "BiQ1zG_resultCheckIcon",
989
- "noticeRowMain": "BiQ1zG_noticeRowMain",
985
+ "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
990
986
  "modalLink": "BiQ1zG_modalLink",
991
- "restartNowWarning": "BiQ1zG_restartNowWarning",
992
- "noticeHead": "BiQ1zG_noticeHead",
993
- "uninstallConfirm": "BiQ1zG_uninstallConfirm",
987
+ "progressHead": "BiQ1zG_progressHead",
988
+ "failNetworkTarget": "BiQ1zG_failNetworkTarget",
989
+ "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
990
+ "detailModal": "BiQ1zG_detailModal",
994
991
  "toastFail": "BiQ1zG_toastFail",
992
+ "queuedHint": "BiQ1zG_queuedHint",
993
+ "failBigIssue": "BiQ1zG_failBigIssue",
994
+ "noticeRowOk": "BiQ1zG_noticeRowOk",
995
+ "queueRowTarget": "BiQ1zG_queueRowTarget",
996
+ "progressTrack": "BiQ1zG_progressTrack",
997
+ "restartNowWarning": "BiQ1zG_restartNowWarning",
998
+ "failRepo": "BiQ1zG_failRepo",
999
+ "stripCancel": "BiQ1zG_stripCancel",
1000
+ "resultRestarting": "BiQ1zG_resultRestarting",
1001
+ "queueRowDesc": "BiQ1zG_queueRowDesc",
1002
+ "failedCopyHint": "BiQ1zG_failedCopyHint",
1003
+ "noticeMain": "BiQ1zG_noticeMain",
1004
+ "modalLabel": "BiQ1zG_modalLabel",
1005
+ "detailGrid": "BiQ1zG_detailGrid",
1006
+ "resultCheck": "BiQ1zG_resultCheck",
1007
+ "detailStatusPending": "BiQ1zG_detailStatusPending",
1008
+ "noticeTextOk": "BiQ1zG_noticeTextOk",
1009
+ "modalCmdText": "BiQ1zG_modalCmdText",
1010
+ "noticeRowMain": "BiQ1zG_noticeRowMain",
1011
+ "queueRowStatus": "BiQ1zG_queueRowStatus",
1012
+ "errorModal": "BiQ1zG_errorModal",
1013
+ "confirmIconDanger": "BiQ1zG_confirmIconDanger",
1014
+ "noticeVersion": "BiQ1zG_noticeVersion",
1015
+ "modalRow": "BiQ1zG_modalRow",
1016
+ "failClear": "BiQ1zG_failClear",
1017
+ "errorTitle": "BiQ1zG_errorTitle",
1018
+ "cliOnlyHint": "BiQ1zG_cliOnlyHint",
1019
+ "toast": "BiQ1zG_toast",
1020
+ "resultCheckIcon": "BiQ1zG_resultCheckIcon",
1021
+ "resultDesc": "BiQ1zG_resultDesc",
1022
+ "failEmpty": "BiQ1zG_failEmpty",
1023
+ "hubVersionBar": "BiQ1zG_hubVersionBar",
995
1024
  "detailRow": "BiQ1zG_detailRow",
996
- "trustHint": "BiQ1zG_trustHint",
997
- "failList": "BiQ1zG_failList",
998
- "failKindTitle": "BiQ1zG_failKindTitle",
999
- "failPrepareHint": "BiQ1zG_failPrepareHint",
1000
- "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
1001
- "aboutMeta": "BiQ1zG_aboutMeta",
1025
+ "queueRowBody": "BiQ1zG_queueRowBody",
1026
+ "detailPathActions": "BiQ1zG_detailPathActions",
1027
+ "noticeTime": "BiQ1zG_noticeTime",
1028
+ "failCopy": "BiQ1zG_failCopy",
1029
+ "hubVersionDate": "BiQ1zG_hubVersionDate",
1002
1030
  "dangerConfirm": "BiQ1zG_dangerConfirm",
1003
- "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
1031
+ "toastIn": "BiQ1zG_toastIn",
1032
+ "failRepoLabel": "BiQ1zG_failRepoLabel",
1004
1033
  "helpModal": "BiQ1zG_helpModal",
1005
- "failBigIssue": "BiQ1zG_failBigIssue",
1006
- "linkIcon": "BiQ1zG_linkIcon",
1007
- "progressHead": "BiQ1zG_progressHead",
1008
- "failRepoUrl": "BiQ1zG_failRepoUrl",
1009
- "noticeIgnore": "BiQ1zG_noticeIgnore",
1010
- "failCopy": "BiQ1zG_failCopy",
1011
- "queueRowTrack": "BiQ1zG_queueRowTrack",
1012
- "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
1013
- "modalActions": "BiQ1zG_modalActions",
1014
- "detailPath": "BiQ1zG_detailPath",
1015
- "modalCmd": "BiQ1zG_modalCmd",
1016
- "noticeTime": "BiQ1zG_noticeTime",
1017
- "noticeTextFail": "BiQ1zG_noticeTextFail",
1034
+ "failReason": "BiQ1zG_failReason",
1035
+ "hubStateLatest": "BiQ1zG_hubStateLatest",
1036
+ "progress": "BiQ1zG_progress",
1018
1037
  "restartNow": "BiQ1zG_restartNow",
1019
- "detailStars": "BiQ1zG_detailStars",
1020
- "logModal": "BiQ1zG_logModal",
1021
- "resultDesc": "BiQ1zG_resultDesc",
1022
- "failEmpty": "BiQ1zG_failEmpty",
1038
+ "detailLabel": "BiQ1zG_detailLabel",
1023
1039
  "modalTitleBusy": "BiQ1zG_modalTitleBusy",
1040
+ "noticeHead": "BiQ1zG_noticeHead",
1041
+ "hubStatePending": "BiQ1zG_hubStatePending",
1024
1042
  "detailValue": "BiQ1zG_detailValue",
1025
- "failReason": "BiQ1zG_failReason",
1026
- "noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
1027
- "queueRowPct": "BiQ1zG_queueRowPct",
1028
- "modalTitle": "BiQ1zG_modalTitle",
1029
- "failKindInstall": "BiQ1zG_failKindInstall",
1030
- "detailDim": "BiQ1zG_detailDim",
1031
- "noticeRemove": "BiQ1zG_noticeRemove",
1032
- "noticeMain": "BiQ1zG_noticeMain",
1033
- "progress": "BiQ1zG_progress",
1034
- "detailStatusText": "BiQ1zG_detailStatusText",
1035
- "restartLater": "BiQ1zG_restartLater",
1036
- "queueSectionTitle": "BiQ1zG_queueSectionTitle",
1037
- "noticeFoot": "BiQ1zG_noticeFoot",
1038
- "resultCheck": "BiQ1zG_resultCheck",
1039
- "modalValue": "BiQ1zG_modalValue",
1040
- "errorCopySoft": "BiQ1zG_errorCopySoft",
1043
+ "modalCmd": "BiQ1zG_modalCmd",
1044
+ "detailStatusRunning": "BiQ1zG_detailStatusRunning",
1045
+ "overlayIn": "BiQ1zG_overlayIn",
1046
+ "errorBox": "BiQ1zG_errorBox",
1047
+ "errorHint": "BiQ1zG_errorHint",
1048
+ "modalTitleQueued": "BiQ1zG_modalTitleQueued",
1049
+ "failMisjudgeLink": "BiQ1zG_failMisjudgeLink",
1050
+ "hubStateChip": "BiQ1zG_hubStateChip",
1051
+ "failRepoUrl": "BiQ1zG_failRepoUrl",
1052
+ "noticeRow": "BiQ1zG_noticeRow",
1041
1053
  "modalInstall": "BiQ1zG_modalInstall",
1042
- "noticeRowOk": "BiQ1zG_noticeRowOk",
1043
- "confirmIcon": "BiQ1zG_confirmIcon",
1044
- "modalDesc": "BiQ1zG_modalDesc",
1054
+ "modalValue": "BiQ1zG_modalValue",
1055
+ "linkIcon": "BiQ1zG_linkIcon",
1056
+ "detailMono": "BiQ1zG_detailMono",
1057
+ "detailStars": "BiQ1zG_detailStars",
1058
+ "queueRowHead": "BiQ1zG_queueRowHead",
1059
+ "hubUpdateModal": "BiQ1zG_hubUpdateModal",
1060
+ "confirmIconWrap": "BiQ1zG_confirmIconWrap",
1061
+ "noticeList": "BiQ1zG_noticeList",
1045
1062
  "modalCopy": "BiQ1zG_modalCopy",
1063
+ "trustHint": "BiQ1zG_trustHint",
1064
+ "noticeIgnore": "BiQ1zG_noticeIgnore",
1065
+ "confirmIcon": "BiQ1zG_confirmIcon",
1066
+ "noticeTextFail": "BiQ1zG_noticeTextFail",
1067
+ "restartLater": "BiQ1zG_restartLater",
1068
+ "noticeRemove": "BiQ1zG_noticeRemove",
1069
+ "modalTitle": "BiQ1zG_modalTitle",
1070
+ "detailArrow": "BiQ1zG_detailArrow",
1071
+ "aboutModal": "BiQ1zG_aboutModal",
1046
1072
  "noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
1047
- "modalTitleQueued": "BiQ1zG_modalTitleQueued",
1048
- "detailUpdateHint": "BiQ1zG_detailUpdateHint",
1049
- "detailPathText": "BiQ1zG_detailPathText",
1050
- "modalCloseIcon": "BiQ1zG_modalCloseIcon",
1073
+ "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
1051
1074
  "pendingRowStatus": "BiQ1zG_pendingRowStatus",
1052
- "errorBox": "BiQ1zG_errorBox",
1053
- "failMisjudgeLink": "BiQ1zG_failMisjudgeLink",
1054
- "errorHint": "BiQ1zG_errorHint",
1055
- "detailStatusRunning": "BiQ1zG_detailStatusRunning",
1056
- "detailStatusPending": "BiQ1zG_detailStatusPending",
1057
- "queueRowHead": "BiQ1zG_queueRowHead",
1058
- "modalHead": "BiQ1zG_modalHead",
1075
+ "progressText": "BiQ1zG_progressText",
1059
1076
  "modalIn": "BiQ1zG_modalIn",
1060
- "modalCancel": "BiQ1zG_modalCancel",
1061
- "queueSection": "BiQ1zG_queueSection",
1062
- "noticeRow": "BiQ1zG_noticeRow",
1063
- "queueRowTarget": "BiQ1zG_queueRowTarget",
1064
- "modalRow": "BiQ1zG_modalRow",
1065
- "toastIn": "BiQ1zG_toastIn",
1066
- "noticeList": "BiQ1zG_noticeList",
1067
- "modalClose": "BiQ1zG_modalClose",
1068
- "detailPathBtn": "BiQ1zG_detailPathBtn",
1069
- "progressTrack": "BiQ1zG_progressTrack",
1070
- "cliOnlyHint": "BiQ1zG_cliOnlyHint",
1071
- "hubUpdateModal": "BiQ1zG_hubUpdateModal",
1072
- "failClear": "BiQ1zG_failClear",
1073
- "modalCmdText": "BiQ1zG_modalCmdText",
1077
+ "failKindInstall": "BiQ1zG_failKindInstall",
1078
+ "modalCloseIcon": "BiQ1zG_modalCloseIcon",
1079
+ "pendingRowActions": "BiQ1zG_pendingRowActions",
1080
+ "hubVersionNumber": "BiQ1zG_hubVersionNumber",
1081
+ "resultTitle": "BiQ1zG_resultTitle",
1082
+ "failKindUninstall": "BiQ1zG_failKindUninstall",
1083
+ "detailPathText": "BiQ1zG_detailPathText",
1084
+ "queueRow": "BiQ1zG_queueRow",
1085
+ "failPrepareHint": "BiQ1zG_failPrepareHint",
1086
+ "queueSectionTitle": "BiQ1zG_queueSectionTitle",
1074
1087
  "failKind": "BiQ1zG_failKind",
1075
- "noticeVersion": "BiQ1zG_noticeVersion",
1076
- "queueRowBody": "BiQ1zG_queueRowBody",
1088
+ "detailPath": "BiQ1zG_detailPath",
1089
+ "failList": "BiQ1zG_failList",
1077
1090
  "failDiagBtn": "BiQ1zG_failDiagBtn",
1078
- "failKindUninstall": "BiQ1zG_failKindUninstall",
1079
- "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
1080
- "aboutModal": "BiQ1zG_aboutModal",
1081
- "detailGrid": "BiQ1zG_detailGrid",
1082
- "confirmIconWrap": "BiQ1zG_confirmIconWrap",
1083
- "failNetworkTarget": "BiQ1zG_failNetworkTarget",
1084
- "bundleDeselectedHint": "BiQ1zG_bundleDeselectedHint",
1085
- "modalWide": "BiQ1zG_modalWide",
1086
- "failRow": "BiQ1zG_failRow",
1087
- "failRepo": "BiQ1zG_failRepo",
1088
- "modalLabel": "BiQ1zG_modalLabel",
1089
- "queuedHint": "BiQ1zG_queuedHint",
1090
- "detailMono": "BiQ1zG_detailMono",
1091
+ "modalHead": "BiQ1zG_modalHead",
1092
+ "modalCancel": "BiQ1zG_modalCancel",
1093
+ "logModal": "BiQ1zG_logModal",
1094
+ "modalDesc": "BiQ1zG_modalDesc",
1095
+ "uninstallConfirm": "BiQ1zG_uninstallConfirm",
1096
+ "failKindTitle": "BiQ1zG_failKindTitle",
1097
+ "detailStatusText": "BiQ1zG_detailStatusText",
1098
+ "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
1091
1099
  "modalCmdCopy": "BiQ1zG_modalCmdCopy",
1092
- "queueRow": "BiQ1zG_queueRow",
1100
+ "noticeFoot": "BiQ1zG_noticeFoot",
1101
+ "detailPathBtn": "BiQ1zG_detailPathBtn",
1102
+ "modalBody": "BiQ1zG_modalBody",
1093
1103
  "modal": "BiQ1zG_modal",
1094
- "errorTitle": "BiQ1zG_errorTitle",
1095
- "confirmIconDanger": "BiQ1zG_confirmIconDanger",
1104
+ "errorCopySoft": "BiQ1zG_errorCopySoft",
1105
+ "aboutMeta": "BiQ1zG_aboutMeta",
1106
+ "failHead": "BiQ1zG_failHead",
1107
+ "noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
1108
+ "modalClose": "BiQ1zG_modalClose",
1109
+ "progressFillFail": "BiQ1zG_progressFillFail",
1110
+ "hubStateAvailable": "BiQ1zG_hubStateAvailable",
1111
+ "aboutContent": "BiQ1zG_aboutContent",
1112
+ "overlay": "BiQ1zG_overlay",
1113
+ "modalWide": "BiQ1zG_modalWide",
1114
+ "confirmPrimary": "BiQ1zG_confirmPrimary",
1115
+ "failRow": "BiQ1zG_failRow",
1116
+ "bundleDeselectedHint": "BiQ1zG_bundleDeselectedHint",
1117
+ "progressFill": "BiQ1zG_progressFill",
1118
+ "detailDim": "BiQ1zG_detailDim",
1119
+ "queueSection": "BiQ1zG_queueSection",
1120
+ "queueRowPct": "BiQ1zG_queueRowPct",
1121
+ "detailUpdateHint": "BiQ1zG_detailUpdateHint",
1096
1122
  "detailLink": "BiQ1zG_detailLink",
1097
- "stripCancel": "BiQ1zG_stripCancel",
1098
- "overlayIn": "BiQ1zG_overlayIn",
1099
- "noticeTextOk": "BiQ1zG_noticeTextOk",
1100
- "progressText": "BiQ1zG_progressText",
1101
- "toast": "BiQ1zG_toast",
1102
- "detailModal": "BiQ1zG_detailModal",
1103
- "detailPathActions": "BiQ1zG_detailPathActions",
1104
- "aboutContent": "BiQ1zG_aboutContent"
1123
+ "queueRowTrack": "BiQ1zG_queueRowTrack",
1124
+ "result": "BiQ1zG_result",
1125
+ "modalActions": "BiQ1zG_modalActions"
1105
1126
  };
1106
1127
  //#endregion
1107
1128
  //#region src/server/services/install/release-target.ts
@@ -1191,7 +1212,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1191
1212
  * tsdown 构建时用 define 把 __PLUGIN_VERSION__ 替换成 package.json 的版本号;
1192
1213
  * node --test 直接 import 本模块时该标识符不存在,typeof 守卫兜底为空串。
1193
1214
  */
1194
- const PLUGIN_VERSION = "2.2.6";
1215
+ const PLUGIN_VERSION = "2.3.0";
1195
1216
  const CATEGORY_ORDER = [
1196
1217
  "interface",
1197
1218
  "session",
@@ -2112,7 +2133,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2112
2133
  * registry 真实发布时间下发(同源),据此判断最准。门槛命中要单列成 `pending` 而不是
2113
2134
  * 落回「无更新」——回落会让弹窗在本机版本落后时谎称「已是最新」。
2114
2135
  */
2115
- const hubCurrentVersion = "2.2.6";
2136
+ const hubCurrentVersion = "2.3.0";
2116
2137
  const hubUpdateResult = hubUpdateInfo === null ? {
2117
2138
  state: "none",
2118
2139
  target: null
@@ -2321,6 +2342,17 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2321
2342
  if (rec.action !== void 0) return rec.action;
2322
2343
  return rec.kind === "uninstall" ? "uninstall" : rec.kind === "update" ? "update" : "install";
2323
2344
  }
2345
+ /**
2346
+ * `Ignored build scripts:` 名单是否**全部**是 profile 本地的 file:/link: 依赖。
2347
+ * 已发布插件无法依赖用户机器上的本地路径,这类条目只可能来自 profile 里已有的别的插件;
2348
+ * 而 pnpm 每次 add 都会重校验整棵 profile 依赖树,本地包构建失败会让本次安装同样失败,
2349
+ * 与本次要装的插件无关。
2350
+ */
2351
+ function localBuildScriptsOnly(message) {
2352
+ const specs = (/Ignored build scripts:\s*([^\n]*)/i.exec(message)?.[1] ?? "").split(",").map((spec) => spec.trim()).filter((spec) => spec !== "");
2353
+ if (specs.length === 0) return false;
2354
+ return specs.every((spec) => /(?:^|@)(?:file|link):/i.test(spec));
2355
+ }
2324
2356
  /** 只匹配 pnpm 的错误码,不匹配泛泛出现的 checksum / integrity 字样。 */
2325
2357
  function missingTarballIntegrity(message) {
2326
2358
  return /\bERR_PNPM_MISSING_TARBALL_INTEGRITY\b/.test(message);
@@ -2374,10 +2406,12 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2374
2406
  if (/(^|\n)untrusted origin\s*$/.test(message)) return "originRejected";
2375
2407
  if (missingTarballIntegrity(message) || mismatchedTarballIntegrity(message) || /ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION|ERR_PNPM_NO_MATURE_MATCHING_VERSION|Minimum release age|minimumReleaseAge|untrusted origin/i.test(message)) return "pnpmPolicy";
2376
2408
  if (/ERR_PNPM_UNUSED_PATCH|patches were not used/i.test(message)) return "pnpmUnusedPatch";
2409
+ if (/\[profile-yaml\]|duplicated mapping key|bad indentation of a (?:mapping|sequence) entry/i.test(message)) return "profileYamlCorrupted";
2377
2410
  if (/ERR_PNPM_OUTDATED_LOCKFILE|ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND|ERR_PNPM_NO_PKG_MANIFEST|ERR_PNPM_BAD_PM_VERSION|ERR_PNPM_LOCKFILE_MISSING_DEPENDENCY|ERR_PNPM_PATCH_NOT_APPLIED|ERR_PNPM_WORKSPACE_PKG_NOT_FOUND|ERR_PNPM_JSON_PARSE|ERR_PNPM_PKG_MANIFEST_IS_NOT_OBJECT|ERR_PNPM_MISSING_HOIST_PATTERN|Cannot install with "frozen-lockfile"/i.test(message)) return "profileState";
2378
2411
  if (/os error 32|EBUSY|resource busy or locked|being used by another process/i.test(message)) return "fileLocked";
2379
2412
  if (/os error 5\b|ERROR_ACCESS_DENIED|\bEPERM\b|\bEACCES\b|access is denied/i.test(message)) return "accessDenied";
2380
2413
  if (/os error 112\b|os error 19\b|ERROR_DISK_FULL|ERROR_WRITE_PROTECT|\bENOSPC\b|\bEROFS\b|\bEMFILE\b|\bENFILE\b|no space left on device|read-only file system|too many open files/i.test(message)) return "fsUnavailable";
2414
+ if (localBuildScriptsOnly(message)) return "profileLocalBuild";
2381
2415
  if (/ERR_PNPM_IGNORED_BUILDS|Ignored build scripts:|ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED/i.test(message)) return "pnpmIgnoredBuild";
2382
2416
  if (/ERR_PNPM_FETCH_40[13]\b|\bE40[13]\b|(?:Unauthorized|Forbidden)\s*-\s*40[13]\b/i.test(message)) return "registryAuth";
2383
2417
  if (/ERR_PNPM_LINKED_PKG_DIR_NOT_FOUND|Could not install from .+ as it does not exist|pnpm:\s*ENOENT: no such file or directory,\s*(?:lstat|scandir|readlink)/i.test(message)) return "pnpmLinkedDirMissing";
@@ -2422,7 +2456,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2422
2456
  /** 安装器自己打的诊断标记行:它们本身就是「为什么没有日志 / 卡在哪一步」的证据,
2423
2457
  * 不含 CORE_LINE_RE 的关键词,必须无条件保留 —— 否则上报正文会退回成只剩宿主那句摘要,
2424
2458
  * 我们又拿不到任何可排查的信息(#382/#393 就是这样)。 */
2425
- const MARKER_LINE_RE = /^\[(?:pnpm log|no-output|desktop-cli-fallback|dsh-too-old|host-spawn|npm-too-low|git-missing|npm-missing|pnpm-missing|dsh-missing|network|packaging|registry-missing|registry-mirror-lag|registry-fallback|allow build|stale pipe|install-channel|internal|exit\b|timed out)/i;
2459
+ const MARKER_LINE_RE = /^\[(?:pnpm log|no-output|desktop-cli-fallback|dsh-too-old|host-spawn|npm-too-low|git-missing|npm-missing|pnpm-missing|dsh-missing|network|packaging|profile-yaml|registry-missing|registry-mirror-lag|registry-fallback|allow build|stale pipe|install-channel|internal|exit\b|timed out)/i;
2426
2460
  /** 提交 issue 时正文里错误摘要的上限字符数。GitHub 请求行上限 8192 字节,
2427
2461
  * 固定模板与 URL 编码开销约 1~2K,核心错误(以 ASCII 日志为主)可安全带到 ~5K;
2428
2462
  * 仍超长时 pluginIssueUrl 会逐档缩小核心预算,最终 URL 不会超限。 */
@@ -2625,6 +2659,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2625
2659
  case "npmTooOld": return `npm too old for this ${word}`;
2626
2660
  case "nodeEngine": return `Node / pnpm on the user machine is below the version this ${word} requires`;
2627
2661
  case "profileState": return `the user profile's pnpm metadata does not match the local pnpm for this ${word}`;
2662
+ case "profileYamlCorrupted": return "the user profile has a corrupted YAML config (duplicated mapping key)";
2663
+ case "profileLocalBuild": return "a local (file:/link:) plugin already in the user profile has a failing build script";
2628
2664
  case "dshMissing": return "dsh command not found on the user machine";
2629
2665
  case "pnpmMissing": return "pnpm command not found on the user machine";
2630
2666
  case "pnpmStore": return "pnpm store version mismatch on the user machine";
@@ -2672,7 +2708,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2672
2708
  const executed = executedCommandOf(command, attempts);
2673
2709
  const zhWord = actionWordZh(action);
2674
2710
  const title = `[dsh-plugin.org | dsh-plugin-hub] ${reasonTitleOf(kind, action)}: ${repo}`;
2675
- const reason = kind === "hostIncompatible" ? "the plugin declares a dsh compatibility range that does not include the runtime in use, so the host rejects it before installing anything; please extend the supported dsh versions or publish a compatible release" : /\[packaging\]/i.test(message) ? "plugin distribution is incomplete — a file the package needs (its entry from main / exports, an entry a bundled patch mounts, or the patch declared by dsh.bundle.patch) is missing from the published npm package; please publish a complete package" : /\[registry-missing\]/i.test(message) ? "a dependency declared by the plugin is not published on the public npm registry (missing, removed, or never released); please publish or correct that dependency, or ship it with the plugin" : kind === "network" ? "network connectivity issue on the user side (DNS, proxy, firewall, or a blocked connection)" : kind === "tlsTrust" ? "the local certificate chain is not trusted by Node/pnpm (corporate SSL inspection, antivirus web shield, or a local MITM proxy) — local environment issue" : kind === "localEnv" ? "no evidence of a plugin-side cause; the log shows local-environment signals (system error codes, certificates/proxy, or a broken local config), so this is reported for triage of the classifier only" : kind === "dshTooOld" ? "the plugin declares a minimum DSH version this host does not meet — upgrade DSH first (local environment issue)" : kind === "pnpmModulesMismatch" ? "the profile node_modules was created with a different pnpm config (hoisting / virtual store settings), so pnpm refuses to reuse it (local environment issue)" : kind === "profileBundleMissing" ? "the profile declares a bundle that is not installed in it (interrupted install or incomplete app update), so the host aborts before installing anything (local environment issue)" : kind === "registryAuth" ? "the npm registry rejected the request with 401/403 — the configured registry needs credentials or blocks this network (local environment issue)" : kind === "profileExclusive" ? "the desktop profile can only be managed by the Electron app, and the install was attempted from an external CLI (local environment issue)" : kind === "pluginPrepare" ? "plugin prepare/build script failed during install (packaging/distribution issue)" : kind === "pnpmIgnoredBuild" ? "plugin depends on a native module whose build script pnpm blocks by default (use a prebuilt variant)" : kind === "originRejected" ? "the request never reached the install flow — the local service rejected its origin (local environment issue)" : kind === "pnpmPolicy" ? pnpmPolicyHintOf(message) === "failPnpmTarballIntegrityHint" ? "pnpm rejected a lockfile entry without tarball integrity; inspect and back up the profile lockfile before resolving it again, keeping integrity checks enabled" : "the pnpm supply-chain policy on the user machine blocked the install (minimum release age for freshly published packages / untrusted origin)" : kind === "pnpmUnusedPatch" ? "the profile keeps a pnpm patch entry for an older dsh-plugin version, so pnpm aborted the install (local config issue)" : kind === "fileLocked" ? "a file in the profile is locked by another process on the user machine (local environment issue)" : kind === "accessDenied" ? "the system denied write access to a file in the profile on the user machine (local environment issue)" : kind === "fsUnavailable" ? "the local file system could not accept the write — no space left, read-only volume, or too many open file handles on the user machine (local environment issue)" : "plugin-side install failure";
2711
+ const reason = kind === "hostIncompatible" ? "the plugin declares a dsh compatibility range that does not include the runtime in use, so the host rejects it before installing anything; please extend the supported dsh versions or publish a compatible release" : /\[packaging\]/i.test(message) ? "plugin distribution is incomplete — a file the package needs (its entry from main / exports, an entry a bundled patch mounts, or the patch declared by dsh.bundle.patch) is missing from the published npm package; please publish a complete package" : /\[registry-missing\]/i.test(message) ? "a dependency declared by the plugin is not published on the public npm registry (missing, removed, or never released); please publish or correct that dependency, or ship it with the plugin" : kind === "network" ? "network connectivity issue on the user side (DNS, proxy, firewall, or a blocked connection)" : kind === "tlsTrust" ? "the local certificate chain is not trusted by Node/pnpm (corporate SSL inspection, antivirus web shield, or a local MITM proxy) — local environment issue" : kind === "profileLocalBuild" ? "no plugin-side cause found — pnpm rejects a build script of a local (file:/link:) package that already exists in the user profile, so every install into that profile fails the same way (local environment issue)" : kind === "localEnv" ? "no evidence of a plugin-side cause; the log shows local-environment signals (system error codes, certificates/proxy, or a broken local config), so this is reported for triage of the classifier only" : kind === "dshTooOld" ? "the plugin declares a minimum DSH version this host does not meet — upgrade DSH first (local environment issue)" : kind === "pnpmModulesMismatch" ? "the profile node_modules was created with a different pnpm config (hoisting / virtual store settings), so pnpm refuses to reuse it (local environment issue)" : kind === "profileBundleMissing" ? "the profile declares a bundle that is not installed in it (interrupted install or incomplete app update), so the host aborts before installing anything (local environment issue)" : kind === "registryAuth" ? "the npm registry rejected the request with 401/403 — the configured registry needs credentials or blocks this network (local environment issue)" : kind === "profileExclusive" ? "the desktop profile can only be managed by the Electron app, and the install was attempted from an external CLI (local environment issue)" : kind === "pluginPrepare" ? "plugin prepare/build script failed during install (packaging/distribution issue)" : kind === "pnpmIgnoredBuild" ? "a package in this plugin's install tree (the plugin itself or one of its dependencies) declares a build script that pnpm blocks by default; pnpm fails the whole install until it is approved, and the blocked script is not necessarily a native module" : kind === "originRejected" ? "the request never reached the install flow — the local service rejected its origin (local environment issue)" : kind === "pnpmPolicy" ? pnpmPolicyHintOf(message) === "failPnpmTarballIntegrityHint" ? "pnpm rejected a lockfile entry without tarball integrity; inspect and back up the profile lockfile before resolving it again, keeping integrity checks enabled" : "the pnpm supply-chain policy on the user machine blocked the install (minimum release age for freshly published packages / untrusted origin)" : kind === "pnpmUnusedPatch" ? "the profile keeps a pnpm patch entry for an older dsh-plugin version, so pnpm aborted the install (local config issue)" : kind === "fileLocked" ? "a file in the profile is locked by another process on the user machine (local environment issue)" : kind === "accessDenied" ? "the system denied write access to a file in the profile on the user machine (local environment issue)" : kind === "fsUnavailable" ? "the local file system could not accept the write — no space left, read-only volume, or too many open file handles on the user machine (local environment issue)" : "plugin-side install failure";
2676
2712
  const code = coreErrorCode(message);
2677
2713
  const build = (coreChars) => {
2678
2714
  const body = [
@@ -4143,7 +4179,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4143
4179
  })() : null, (0, react.createElement)("button", {
4144
4180
  className: Modal_module_css_default.errorCopySoft,
4145
4181
  onClick: () => onCopy(copyText)
4146
- }, t("errorCopy"))), (0, react.createElement)("pre", { className: Modal_module_css_default.errorBox }, displayMessage), (0, react.createElement)("div", { className: Modal_module_css_default.failKindTitle }, t(`failKind_${failureKind}`, failureKind === "hostIncompatible" ? { version: /incompatible with dsh\s+([^\s:;,]+)/i.exec(message)?.[1] ?? "" } : void 0)), failureKind === "hostIncompatible" ? null : (0, react.createElement)("div", { className: Modal_module_css_default.failReason }, t(`failReason_${failureKind}`)), 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 === "buildToolchainMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failBuildToolchainHint")) : failureKind === "pnpmWorkspace" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmWorkspaceHint")) : failureKind === "pnpmModulesMismatch" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmModulesMismatchHint")) : 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(pnpmPolicyHintOf(message), pnpmPolicyHintParams(message))) : failureKind === "pnpmUnusedPatch" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmUnusedPatchHint")) : failureKind === "profileState" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failProfileStateHint")) : failureKind === "nodeEngine" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failNodeEngineHint")) : failureKind === "pnpmMissingDep" ? (0, react.createElement)("div", null, [(() => {
4182
+ }, t("errorCopy"))), (0, react.createElement)("pre", { className: Modal_module_css_default.errorBox }, displayMessage), (0, react.createElement)("div", { className: Modal_module_css_default.failKindTitle }, t(`failKind_${failureKind}`, failureKind === "hostIncompatible" ? { version: /incompatible with dsh\s+([^\s:;,]+)/i.exec(message)?.[1] ?? "" } : void 0)), failureKind === "hostIncompatible" ? null : (0, react.createElement)("div", { className: Modal_module_css_default.failReason }, t(`failReason_${failureKind}`)), 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 === "buildToolchainMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failBuildToolchainHint")) : failureKind === "pnpmWorkspace" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmWorkspaceHint")) : failureKind === "pnpmModulesMismatch" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmModulesMismatchHint")) : 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(pnpmPolicyHintOf(message), pnpmPolicyHintParams(message))) : failureKind === "pnpmUnusedPatch" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmUnusedPatchHint")) : failureKind === "profileYamlCorrupted" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failProfileYamlHint")) : failureKind === "profileLocalBuild" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failProfileLocalBuildHint")) : failureKind === "profileState" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failProfileStateHint")) : failureKind === "nodeEngine" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failNodeEngineHint")) : failureKind === "pnpmMissingDep" ? (0, react.createElement)("div", null, [(() => {
4147
4183
  const pkg = missingRegistryPackageOf(message);
4148
4184
  return pkg ? (0, react.createElement)("div", { className: Modal_module_css_default.failNetworkTarget }, t("failPnpmMissingDepTarget", { pkg })) : null;
4149
4185
  })(), (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t(registryMissingHintOf(message)))]) : failureKind === "pluginMissingDep" ? (0, react.createElement)("div", null, [
@@ -4476,8 +4512,21 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4476
4512
  const hasUpdate = state === "available";
4477
4513
  const pending = state === "pending";
4478
4514
  const shownVersion = hasUpdate || pending ? info.version : currentVersion || info.version;
4515
+ const chip = hasUpdate ? {
4516
+ className: Modal_module_css_default.hubStateAvailable,
4517
+ label: t("hubVersionStateAvailable")
4518
+ } : pending ? {
4519
+ className: Modal_module_css_default.hubStatePending,
4520
+ label: t("hubVersionStatePending")
4521
+ } : {
4522
+ className: Modal_module_css_default.hubStateLatest,
4523
+ label: t("hubVersionStateLatest")
4524
+ };
4479
4525
  const notesRaw = typeof info.notes === "string" ? info.notes : info.notes && typeof info.notes === "object" ? lang === "en" ? info.notes.en ?? info.notes.zh ?? "" : info.notes.zh ?? info.notes.en ?? "" : "";
4480
- const notesHtml = notesRaw.trim() ? renderMarkdown(notesRaw) : null;
4526
+ const notesStripped = notesRaw.replace(/^\s*#\s*DSH Plugin Hub[^\n]*\n+/, "");
4527
+ const notesBody = notesStripped.trim() === "" ? notesRaw : notesStripped;
4528
+ const notesHtml = notesBody.trim() ? renderMarkdown(notesBody) : null;
4529
+ const desc = hasUpdate ? t("hubUpdateDesc") : pending ? t("hubPendingDesc") : null;
4481
4530
  let published = null;
4482
4531
  if (info.publishedAt) {
4483
4532
  const d = new Date(info.publishedAt);
@@ -4494,9 +4543,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4494
4543
  "aria-modal": "true"
4495
4544
  }, (0, react.createElement)("div", { className: Modal_module_css_default.modalHead }, (0, react.createElement)("div", { className: Modal_module_css_default.modalTitle }, t(hasUpdate || pending ? "hubUpdateTitle" : "hubCurrentTitle")), (0, react.createElement)("button", {
4496
4545
  className: Modal_module_css_default.modalClose,
4497
- "aria-label": t("confirmCancel"),
4546
+ "aria-label": t("close"),
4498
4547
  onClick: () => onClose()
4499
- }, (0, react.createElement)(CloseIcon))), (0, react.createElement)("div", { className: Modal_module_css_default.modalDesc }, t(hasUpdate ? "hubUpdateDesc" : pending ? "hubPendingDesc" : "hubCurrentDesc", { version: shownVersion })), (0, react.createElement)("div", { className: Modal_module_css_default.hubUpdateMeta }, (0, react.createElement)("span", { className: Modal_module_css_default.hubUpdateMetaItem }, `${t("version")} ${shownVersion}`), published ? (0, react.createElement)("span", { className: Modal_module_css_default.hubUpdateMetaItem }, `${t("hubUpdatePublished")} ${published}`) : null), notesHtml ? (0, react.createElement)("div", {
4548
+ }, (0, react.createElement)(CloseIcon))), (0, react.createElement)("div", { className: Modal_module_css_default.hubVersionBar }, (0, react.createElement)("span", { className: Modal_module_css_default.hubVersionNumber }, `v${shownVersion}`), (0, react.createElement)("span", { className: `${Modal_module_css_default.hubStateChip} ${chip.className}` }, chip.label), published ? (0, react.createElement)("span", { className: Modal_module_css_default.hubVersionDate }, `${t("hubUpdatePublished")} ${published}`) : null), desc ? (0, react.createElement)("div", { className: Modal_module_css_default.modalDesc }, desc) : null, notesHtml ? (0, react.createElement)("div", {
4500
4549
  className: Modal_module_css_default.hubUpdateNotes,
4501
4550
  dangerouslySetInnerHTML: { __html: notesHtml }
4502
4551
  }) : null, (0, react.createElement)("div", { className: Modal_module_css_default.modalActions }, hasUpdate ? [(0, react.createElement)("button", {
@@ -4508,7 +4557,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4508
4557
  }, t("updateNow"))] : (0, react.createElement)("button", {
4509
4558
  className: Modal_module_css_default.modalInstall,
4510
4559
  onClick: onClose
4511
- }, t(pending ? "hubUpdateLater" : "hubUpToDate")))));
4560
+ }, t("close")))));
4512
4561
  }
4513
4562
  //#endregion
4514
4563
  //#region src/client/logic/format.ts
@@ -4822,6 +4871,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4822
4871
  if (kind === "pnpmStore") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmStoreHint"));
4823
4872
  if (kind === "pnpmPolicy") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t(pnpmPolicyHintOf(r.message), pnpmPolicyHintParams(r.message)));
4824
4873
  if (kind === "pnpmUnusedPatch") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmUnusedPatchHint"));
4874
+ if (kind === "profileYamlCorrupted") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failProfileYamlHint"));
4875
+ if (kind === "profileLocalBuild") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failProfileLocalBuildHint"));
4825
4876
  if (kind === "profileState") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failProfileStateHint"));
4826
4877
  if (kind === "nodeEngine") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failNodeEngineHint"));
4827
4878
  if (kind === "pnpmMissingDep") {
@@ -5154,40 +5205,40 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5154
5205
  css: css$9
5155
5206
  });
5156
5207
  var List_module_css_default = {
5208
+ "moreSentinel": "_3XaZHa_moreSentinel",
5209
+ "installBtnUpdate": "_3XaZHa_installBtnUpdate",
5210
+ "verified": "_3XaZHa_verified",
5211
+ "topic": "_3XaZHa_topic",
5212
+ "cardSide": "_3XaZHa_cardSide",
5213
+ "cardHead": "_3XaZHa_cardHead",
5214
+ "fork": "_3XaZHa_fork",
5215
+ "footer": "_3XaZHa_footer",
5216
+ "date": "_3XaZHa_date",
5217
+ "uninstallBtn": "_3XaZHa_uninstallBtn",
5218
+ "card": "_3XaZHa_card",
5219
+ "footLink": "_3XaZHa_footLink",
5220
+ "diagBtn": "_3XaZHa_diagBtn",
5157
5221
  "topics": "_3XaZHa_topics",
5222
+ "installBtnInstalled": "_3XaZHa_installBtnInstalled",
5223
+ "stateTitle": "_3XaZHa_stateTitle",
5224
+ "versionBadge": "_3XaZHa_versionBadge",
5225
+ "cardTitle": "_3XaZHa_cardTitle",
5226
+ "stateDesc": "_3XaZHa_stateDesc",
5227
+ "body": "_3XaZHa_body",
5228
+ "categoryBadge": "_3XaZHa_categoryBadge",
5158
5229
  "stats": "_3XaZHa_stats",
5230
+ "updateBadge": "_3XaZHa_updateBadge",
5231
+ "installBtn": "_3XaZHa_installBtn",
5232
+ "detailBtn": "_3XaZHa_detailBtn",
5159
5233
  "star": "_3XaZHa_star",
5160
- "cardTitle": "_3XaZHa_cardTitle",
5161
- "card": "_3XaZHa_card",
5162
5234
  "state": "_3XaZHa_state",
5163
- "stateTitle": "_3XaZHa_stateTitle",
5164
5235
  "retryBtn": "_3XaZHa_retryBtn",
5165
- "installBtnInstalled": "_3XaZHa_installBtnInstalled",
5236
+ "installBtnCopied": "_3XaZHa_installBtnCopied",
5166
5237
  "cardMain": "_3XaZHa_cardMain",
5167
- "footer": "_3XaZHa_footer",
5168
- "body": "_3XaZHa_body",
5169
- "updateBadge": "_3XaZHa_updateBadge",
5170
- "detailBtn": "_3XaZHa_detailBtn",
5171
- "stateActions": "_3XaZHa_stateActions",
5172
- "cardHead": "_3XaZHa_cardHead",
5173
- "stateDesc": "_3XaZHa_stateDesc",
5174
- "moreSentinel": "_3XaZHa_moreSentinel",
5175
- "fork": "_3XaZHa_fork",
5176
- "verified": "_3XaZHa_verified",
5177
- "diagBtn": "_3XaZHa_diagBtn",
5178
- "date": "_3XaZHa_date",
5238
+ "desc": "_3XaZHa_desc",
5179
5239
  "list": "_3XaZHa_list",
5180
- "footLink": "_3XaZHa_footLink",
5181
5240
  "actions": "_3XaZHa_actions",
5182
- "topic": "_3XaZHa_topic",
5183
- "installBtnCopied": "_3XaZHa_installBtnCopied",
5184
- "cardSide": "_3XaZHa_cardSide",
5185
- "uninstallBtn": "_3XaZHa_uninstallBtn",
5186
- "installBtn": "_3XaZHa_installBtn",
5187
- "desc": "_3XaZHa_desc",
5188
- "versionBadge": "_3XaZHa_versionBadge",
5189
- "categoryBadge": "_3XaZHa_categoryBadge",
5190
- "installBtnUpdate": "_3XaZHa_installBtnUpdate"
5241
+ "stateActions": "_3XaZHa_stateActions"
5191
5242
  };
5192
5243
  //#endregion
5193
5244
  //#region src/client/hooks/useIncrementalList.ts
@@ -5398,16 +5449,16 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5398
5449
  css: css$8
5399
5450
  });
5400
5451
  var SectionTabs_module_css_default = {
5452
+ "noticeIcon": "_7tvizq_noticeIcon",
5401
5453
  "tabIcon": "_7tvizq_tabIcon",
5402
5454
  "tabCount": "_7tvizq_tabCount",
5403
- "tabCountActive": "_7tvizq_tabCountActive",
5404
5455
  "tab": "_7tvizq_tab",
5405
5456
  "noticeBtn": "_7tvizq_noticeBtn",
5406
- "tabActive": "_7tvizq_tabActive",
5407
- "tabLabel": "_7tvizq_tabLabel",
5408
- "noticeIcon": "_7tvizq_noticeIcon",
5457
+ "tabCountActive": "_7tvizq_tabCountActive",
5409
5458
  "noticeCount": "_7tvizq_noticeCount",
5410
- "root": "_7tvizq_root"
5459
+ "root": "_7tvizq_root",
5460
+ "tabActive": "_7tvizq_tabActive",
5461
+ "tabLabel": "_7tvizq_tabLabel"
5411
5462
  };
5412
5463
  //#endregion
5413
5464
  //#region src/client/components/layout/SectionTabs.tsx
@@ -5483,42 +5534,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5483
5534
  css: css$7
5484
5535
  });
5485
5536
  var InstalledView_module_css_default = {
5486
- "rowMeta": "_1nXeGW_rowMeta",
5487
- "rowUninstall": "_1nXeGW_rowUninstall",
5488
- "emptyDesc": "_1nXeGW_emptyDesc",
5489
- "empty": "_1nXeGW_empty",
5490
- "statusInactive": "_1nXeGW_statusInactive",
5491
- "rowRestart": "_1nXeGW_rowRestart",
5492
- "rowCategory": "_1nXeGW_rowCategory",
5493
- "searchWrap": "_1nXeGW_searchWrap",
5494
5537
  "searchInput": "_1nXeGW_searchInput",
5495
- "list": "_1nXeGW_list",
5496
- "rowRepo": "_1nXeGW_rowRepo",
5497
- "root": "_1nXeGW_root",
5498
- "rowTitleLine": "_1nXeGW_rowTitleLine",
5499
- "segRow": "_1nXeGW_segRow",
5500
- "rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
5501
- "rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
5538
+ "segLabel": "_1nXeGW_segLabel",
5539
+ "segGroup": "_1nXeGW_segGroup",
5540
+ "statusInactive": "_1nXeGW_statusInactive",
5502
5541
  "emptyTitle": "_1nXeGW_emptyTitle",
5503
- "statusDot": "_1nXeGW_statusDot",
5504
- "rowActions": "_1nXeGW_rowActions",
5542
+ "rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
5505
5543
  "segBtn": "_1nXeGW_segBtn",
5506
- "row": "_1nXeGW_row",
5507
- "updateBadge": "_1nXeGW_updateBadge",
5508
- "rowDetail": "_1nXeGW_rowDetail",
5509
5544
  "rowTitle": "_1nXeGW_rowTitle",
5510
5545
  "rowSourceTag": "_1nXeGW_rowSourceTag",
5546
+ "rowRestart": "_1nXeGW_rowRestart",
5511
5547
  "rowMain": "_1nXeGW_rowMain",
5512
- "rowDesc": "_1nXeGW_rowDesc",
5513
- "statusPending": "_1nXeGW_statusPending",
5548
+ "rowMeta": "_1nXeGW_rowMeta",
5549
+ "rowRepo": "_1nXeGW_rowRepo",
5550
+ "rowCategory": "_1nXeGW_rowCategory",
5551
+ "rowDetail": "_1nXeGW_rowDetail",
5514
5552
  "exampleBadge": "_1nXeGW_exampleBadge",
5515
- "segLabel": "_1nXeGW_segLabel",
5516
- "versionBadge": "_1nXeGW_versionBadge",
5553
+ "rowUninstall": "_1nXeGW_rowUninstall",
5554
+ "statusDot": "_1nXeGW_statusDot",
5555
+ "segRow": "_1nXeGW_segRow",
5556
+ "row": "_1nXeGW_row",
5557
+ "searchWrap": "_1nXeGW_searchWrap",
5558
+ "rowDesc": "_1nXeGW_rowDesc",
5517
5559
  "exampleRow": "_1nXeGW_exampleRow",
5518
- "segGroup": "_1nXeGW_segGroup",
5519
- "segBtnActive": "_1nXeGW_segBtnActive",
5560
+ "list": "_1nXeGW_list",
5561
+ "emptyDesc": "_1nXeGW_emptyDesc",
5562
+ "rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
5563
+ "toolbar": "_1nXeGW_toolbar",
5564
+ "versionBadge": "_1nXeGW_versionBadge",
5520
5565
  "rowUpdate": "_1nXeGW_rowUpdate",
5521
- "toolbar": "_1nXeGW_toolbar"
5566
+ "statusPending": "_1nXeGW_statusPending",
5567
+ "segBtnActive": "_1nXeGW_segBtnActive",
5568
+ "updateBadge": "_1nXeGW_updateBadge",
5569
+ "root": "_1nXeGW_root",
5570
+ "empty": "_1nXeGW_empty",
5571
+ "rowTitleLine": "_1nXeGW_rowTitleLine",
5572
+ "rowActions": "_1nXeGW_rowActions"
5522
5573
  };
5523
5574
  //#endregion
5524
5575
  //#region src/client/components/views/InstalledView.tsx
@@ -5765,27 +5816,27 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5765
5816
  css: css$6
5766
5817
  });
5767
5818
  var CustomInstallView_module_css_default = {
5819
+ "channelOffBtn": "zISxCG_channelOffBtn",
5820
+ "installCardHead": "zISxCG_installCardHead",
5821
+ "installError": "zISxCG_installError",
5768
5822
  "channelOff": "zISxCG_channelOff",
5769
- "desc": "zISxCG_desc",
5770
- "installExample": "zISxCG_installExample",
5771
5823
  "installRow": "zISxCG_installRow",
5772
- "installError": "zISxCG_installError",
5773
- "installCard": "zISxCG_installCard",
5824
+ "helpNote": "zISxCG_helpNote",
5825
+ "helpCmd": "zISxCG_helpCmd",
5826
+ "helpLine": "zISxCG_helpLine",
5827
+ "installLabel": "zISxCG_installLabel",
5774
5828
  "installCardDisabled": "zISxCG_installCardDisabled",
5829
+ "desc": "zISxCG_desc",
5830
+ "installCard": "zISxCG_installCard",
5831
+ "helpBody": "zISxCG_helpBody",
5832
+ "installCards": "zISxCG_installCards",
5775
5833
  "installHelpBtn": "zISxCG_installHelpBtn",
5776
- "installBtn": "zISxCG_installBtn",
5777
5834
  "channelOffText": "zISxCG_channelOffText",
5778
- "channelOffBtn": "zISxCG_channelOffBtn",
5779
- "installCardHead": "zISxCG_installCardHead",
5780
- "helpBody": "zISxCG_helpBody",
5781
- "helpCmd": "zISxCG_helpCmd",
5782
- "helpNote": "zISxCG_helpNote",
5835
+ "installInputError": "zISxCG_installInputError",
5783
5836
  "installInput": "zISxCG_installInput",
5837
+ "installBtn": "zISxCG_installBtn",
5784
5838
  "root": "zISxCG_root",
5785
- "installCards": "zISxCG_installCards",
5786
- "installLabel": "zISxCG_installLabel",
5787
- "installInputError": "zISxCG_installInputError",
5788
- "helpLine": "zISxCG_helpLine"
5839
+ "installExample": "zISxCG_installExample"
5789
5840
  };
5790
5841
  //#endregion
5791
5842
  //#region src/client/components/views/CustomInstallView.tsx
@@ -5941,30 +5992,30 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5941
5992
  css: css$5
5942
5993
  });
5943
5994
  var SettingsView_module_css_default = {
5944
- "textInput": "_506LLG_textInput",
5945
- "proxyControl": "_506LLG_proxyControl",
5995
+ "proxyHintOk": "_506LLG_proxyHintOk",
5946
5996
  "navItemActive": "_506LLG_navItemActive",
5997
+ "settingLabel": "_506LLG_settingLabel",
5947
5998
  "card": "_506LLG_card",
5948
- "content": "_506LLG_content",
5949
- "root": "_506LLG_root",
5950
- "pageTitle": "_506LLG_pageTitle",
5951
5999
  "proxyHint": "_506LLG_proxyHint",
5952
- "resetBtn": "_506LLG_resetBtn",
5953
- "navIcon": "_506LLG_navIcon",
5954
- "settingLabel": "_506LLG_settingLabel",
6000
+ "controlDropdown": "_506LLG_controlDropdown",
5955
6001
  "proxyHintFail": "_506LLG_proxyHintFail",
5956
- "navItem": "_506LLG_navItem",
5957
- "settingTitle": "_506LLG_settingTitle",
6002
+ "content": "_506LLG_content",
5958
6003
  "settingRowStack": "_506LLG_settingRowStack",
5959
- "proxyHintOk": "_506LLG_proxyHintOk",
5960
- "pageHeader": "_506LLG_pageHeader",
5961
- "settingControl": "_506LLG_settingControl",
5962
- "settingRow": "_506LLG_settingRow",
5963
- "controlDropdown": "_506LLG_controlDropdown",
6004
+ "settingDesc": "_506LLG_settingDesc",
6005
+ "settingTitle": "_506LLG_settingTitle",
6006
+ "navItem": "_506LLG_navItem",
6007
+ "navIcon": "_506LLG_navIcon",
5964
6008
  "sidebar": "_506LLG_sidebar",
6009
+ "textInput": "_506LLG_textInput",
6010
+ "pageTitle": "_506LLG_pageTitle",
6011
+ "settingRow": "_506LLG_settingRow",
5965
6012
  "settingControlStack": "_506LLG_settingControlStack",
5966
- "settingDesc": "_506LLG_settingDesc",
5967
- "pageDesc": "_506LLG_pageDesc"
6013
+ "root": "_506LLG_root",
6014
+ "resetBtn": "_506LLG_resetBtn",
6015
+ "pageDesc": "_506LLG_pageDesc",
6016
+ "settingControl": "_506LLG_settingControl",
6017
+ "pageHeader": "_506LLG_pageHeader",
6018
+ "proxyControl": "_506LLG_proxyControl"
5968
6019
  };
5969
6020
  //#endregion
5970
6021
  //#region \0dsh-css:src/client/styles/Dropdown.module.css.mjs
@@ -5983,18 +6034,18 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5983
6034
  css: css$4
5984
6035
  });
5985
6036
  var Dropdown_module_css_default = {
5986
- "dropdownFill": "B_Gxsq_dropdownFill",
5987
- "dropdownBtn": "B_Gxsq_dropdownBtn",
5988
- "dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen",
5989
- "dropdownItemLabel": "B_Gxsq_dropdownItemLabel",
5990
6037
  "dropdownArrow": "B_Gxsq_dropdownArrow",
5991
- "dropdownItem": "B_Gxsq_dropdownItem",
6038
+ "dropdownItemLabel": "B_Gxsq_dropdownItemLabel",
6039
+ "dropdownPanel": "B_Gxsq_dropdownPanel",
6040
+ "dropdownCount": "B_Gxsq_dropdownCount",
5992
6041
  "dropdown": "B_Gxsq_dropdown",
6042
+ "dropdownFill": "B_Gxsq_dropdownFill",
5993
6043
  "dropdownLabel": "B_Gxsq_dropdownLabel",
6044
+ "dropdownItem": "B_Gxsq_dropdownItem",
6045
+ "dropdownCountActive": "B_Gxsq_dropdownCountActive",
6046
+ "dropdownBtn": "B_Gxsq_dropdownBtn",
5994
6047
  "dropdownItemActive": "B_Gxsq_dropdownItemActive",
5995
- "dropdownCount": "B_Gxsq_dropdownCount",
5996
- "dropdownPanel": "B_Gxsq_dropdownPanel",
5997
- "dropdownCountActive": "B_Gxsq_dropdownCountActive"
6048
+ "dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen"
5998
6049
  };
5999
6050
  //#endregion
6000
6051
  //#region \0dsh-css:src/client/styles/Toggle.module.css.mjs
@@ -6013,8 +6064,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6013
6064
  css: css$3
6014
6065
  });
6015
6066
  var Toggle_module_css_default = {
6016
- "toggle": "k-cD4G_toggle",
6017
6067
  "knob": "k-cD4G_knob",
6068
+ "toggle": "k-cD4G_toggle",
6018
6069
  "toggleOn": "k-cD4G_toggleOn"
6019
6070
  };
6020
6071
  //#endregion
@@ -6112,29 +6163,29 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6112
6163
  css: css$2
6113
6164
  });
6114
6165
  var DiagnosticsView_module_css_default = {
6115
- "badge": "k9eRya_badge",
6116
- "summaryOk": "k9eRya_summaryOk",
6117
6166
  "envTitle": "k9eRya_envTitle",
6118
- "badgeFail": "k9eRya_badgeFail",
6119
- "diagPulse": "k9eRya_diagPulse",
6167
+ "envCopyBtn": "k9eRya_envCopyBtn",
6120
6168
  "display": "k9eRya_display",
6169
+ "badge": "k9eRya_badge",
6170
+ "panel": "k9eRya_panel",
6171
+ "badgeRunning": "k9eRya_badgeRunning",
6172
+ "summaryOk": "k9eRya_summaryOk",
6173
+ "summaryFail": "k9eRya_summaryFail",
6121
6174
  "envLabel": "k9eRya_envLabel",
6175
+ "badgeOk": "k9eRya_badgeOk",
6176
+ "headHint": "k9eRya_headHint",
6122
6177
  "name": "k9eRya_name",
6123
- "summary": "k9eRya_summary",
6124
- "panel": "k9eRya_panel",
6125
- "summaryRunning": "k9eRya_summaryRunning",
6126
- "envDesc": "k9eRya_envDesc",
6127
6178
  "badgeIdle": "k9eRya_badgeIdle",
6128
- "row": "k9eRya_row",
6129
- "head": "k9eRya_head",
6130
- "headHint": "k9eRya_headHint",
6131
- "envRow": "k9eRya_envRow",
6132
- "envCopyBtn": "k9eRya_envCopyBtn",
6133
6179
  "meta": "k9eRya_meta",
6134
- "badgeOk": "k9eRya_badgeOk",
6135
6180
  "runBtn": "k9eRya_runBtn",
6136
- "badgeRunning": "k9eRya_badgeRunning",
6137
- "summaryFail": "k9eRya_summaryFail"
6181
+ "row": "k9eRya_row",
6182
+ "envRow": "k9eRya_envRow",
6183
+ "badgeFail": "k9eRya_badgeFail",
6184
+ "diagPulse": "k9eRya_diagPulse",
6185
+ "summaryRunning": "k9eRya_summaryRunning",
6186
+ "summary": "k9eRya_summary",
6187
+ "head": "k9eRya_head",
6188
+ "envDesc": "k9eRya_envDesc"
6138
6189
  };
6139
6190
  //#endregion
6140
6191
  //#region src/client/components/views/DiagnosticsView.tsx
@@ -6309,57 +6360,57 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6309
6360
  css: css$1
6310
6361
  });
6311
6362
  var LogsView_module_css_default = {
6312
- "list": "_3j77BW_list",
6313
- "badgeError": "_3j77BW_badgeError",
6314
- "pathDialogDesc": "_3j77BW_pathDialogDesc",
6315
- "footCount": "_3j77BW_footCount",
6316
- "catInstall": "_3j77BW_catInstall",
6317
- "more": "_3j77BW_more",
6318
- "actions": "_3j77BW_actions",
6319
- "badge": "_3j77BW_badge",
6320
- "head": "_3j77BW_head",
6363
+ "pathDialogReset": "_3j77BW_pathDialogReset",
6364
+ "catUninstall": "_3j77BW_catUninstall",
6365
+ "pathDialogFoot": "_3j77BW_pathDialogFoot",
6321
6366
  "filterChip": "_3j77BW_filterChip",
6322
- "searchInput": "_3j77BW_searchInput",
6323
- "catSystem": "_3j77BW_catSystem",
6324
- "pathLabel": "_3j77BW_pathLabel",
6325
- "linkBtn": "_3j77BW_linkBtn",
6326
- "footActions": "_3j77BW_footActions",
6367
+ "catUpdate": "_3j77BW_catUpdate",
6368
+ "catSettings": "_3j77BW_catSettings",
6369
+ "badgeSuccess": "_3j77BW_badgeSuccess",
6370
+ "badgeInfo": "_3j77BW_badgeInfo",
6371
+ "btn": "_3j77BW_btn",
6372
+ "badge": "_3j77BW_badge",
6327
6373
  "entry": "_3j77BW_entry",
6328
6374
  "catDiagnostics": "_3j77BW_catDiagnostics",
6329
- "headHint": "_3j77BW_headHint",
6330
- "catUninstall": "_3j77BW_catUninstall",
6331
- "pathDraft": "_3j77BW_pathDraft",
6332
- "message": "_3j77BW_message",
6333
- "catUpdate": "_3j77BW_catUpdate",
6334
- "time": "_3j77BW_time",
6335
- "pathDialogRow": "_3j77BW_pathDialogRow",
6336
- "pathDialogFoot": "_3j77BW_pathDialogFoot",
6337
- "search": "_3j77BW_search",
6338
- "badgeDebug": "_3j77BW_badgeDebug",
6339
- "pathRow": "_3j77BW_pathRow",
6340
- "logList": "_3j77BW_logList",
6341
- "pathText": "_3j77BW_pathText",
6375
+ "panel": "_3j77BW_panel",
6342
6376
  "headActions": "_3j77BW_headActions",
6343
- "previewRow": "_3j77BW_previewRow",
6377
+ "moreEnd": "_3j77BW_moreEnd",
6378
+ "footActions": "_3j77BW_footActions",
6379
+ "pathDialog": "_3j77BW_pathDialog",
6344
6380
  "empty": "_3j77BW_empty",
6381
+ "head": "_3j77BW_head",
6382
+ "catInstall": "_3j77BW_catInstall",
6383
+ "message": "_3j77BW_message",
6384
+ "logList": "_3j77BW_logList",
6385
+ "footPath": "_3j77BW_footPath",
6386
+ "catBadge": "_3j77BW_catBadge",
6387
+ "list": "_3j77BW_list",
6345
6388
  "footFail": "_3j77BW_footFail",
6346
- "badgeWarn": "_3j77BW_badgeWarn",
6347
- "badgeInfo": "_3j77BW_badgeInfo",
6389
+ "catSystem": "_3j77BW_catSystem",
6390
+ "badgeDebug": "_3j77BW_badgeDebug",
6391
+ "pathDialogHint": "_3j77BW_pathDialogHint",
6392
+ "filterBar": "_3j77BW_filterBar",
6393
+ "event": "_3j77BW_event",
6394
+ "pathRow": "_3j77BW_pathRow",
6395
+ "pathLabel": "_3j77BW_pathLabel",
6396
+ "time": "_3j77BW_time",
6397
+ "pathDraft": "_3j77BW_pathDraft",
6348
6398
  "clearBtn": "_3j77BW_clearBtn",
6399
+ "pathDialogRow": "_3j77BW_pathDialogRow",
6400
+ "previewRow": "_3j77BW_previewRow",
6349
6401
  "filterChipActive": "_3j77BW_filterChipActive",
6350
- "pathDialogReset": "_3j77BW_pathDialogReset",
6351
- "event": "_3j77BW_event",
6352
- "filterBar": "_3j77BW_filterBar",
6353
- "moreEnd": "_3j77BW_moreEnd",
6354
- "catSettings": "_3j77BW_catSettings",
6355
- "catBadge": "_3j77BW_catBadge",
6356
- "panel": "_3j77BW_panel",
6357
- "pathDialog": "_3j77BW_pathDialog",
6358
- "pathDialogHint": "_3j77BW_pathDialogHint",
6402
+ "search": "_3j77BW_search",
6403
+ "searchInput": "_3j77BW_searchInput",
6404
+ "pathText": "_3j77BW_pathText",
6405
+ "more": "_3j77BW_more",
6406
+ "pathDialogDesc": "_3j77BW_pathDialogDesc",
6359
6407
  "foot": "_3j77BW_foot",
6360
- "footPath": "_3j77BW_footPath",
6361
- "btn": "_3j77BW_btn",
6362
- "badgeSuccess": "_3j77BW_badgeSuccess"
6408
+ "footCount": "_3j77BW_footCount",
6409
+ "badgeError": "_3j77BW_badgeError",
6410
+ "badgeWarn": "_3j77BW_badgeWarn",
6411
+ "actions": "_3j77BW_actions",
6412
+ "linkBtn": "_3j77BW_linkBtn",
6413
+ "headHint": "_3j77BW_headHint"
6363
6414
  };
6364
6415
  //#endregion
6365
6416
  //#region src/client/components/modals/LogsModal.tsx
@@ -7633,7 +7684,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
7633
7684
  openSection: settingsSection,
7634
7685
  onConsumedOpenSection: () => setSettingsSection(null)
7635
7686
  }), showHubUpdate && (0, react.createElement)(HubUpdateModal, {
7636
- info: catalog.hubUpdateTarget ?? catalog.hubUpdateInfo ?? { version: "2.2.6" },
7687
+ info: catalog.hubUpdateTarget ?? catalog.hubUpdateInfo ?? { version: "2.3.0" },
7637
7688
  state: catalog.hubUpdateState,
7638
7689
  currentVersion: catalog.hubCurrentVersion,
7639
7690
  lang,