dsh-plugin 2.0.4 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/client/client.js CHANGED
@@ -31,9 +31,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
31
31
  fork: "Fork",
32
32
  loading: "正在加载插件数据…",
33
33
  failed: "插件数据加载失败",
34
- failedDescNoProxy: "你的网络似乎不通,无法获取插件目录数据。请检查网络连接后重试;或点击右上角按钮在浏览器中打开插件市场。",
35
- failedDescProxy: "你的网络似乎不通,或设置里的 HTTP 代理地址不可达,无法获取插件目录数据。请检查代理设置与网络连接后重试;或点击右上角按钮在浏览器中打开插件市场。",
34
+ failedDescNoProxy: "无法获取插件目录数据(有数 MB)。网络较慢时首次加载可能超时,可重试或点「强制刷新」跳过本地缓存重新下载;加载成功后会缓存 1 小时。若持续失败,请点「网络诊断」确认目录站点可达。",
35
+ failedDescProxy: "无法获取插件目录数据(有数 MB)。网络较慢,或设置里的 HTTP 代理不可达/链路抖动时,首次加载可能超时;可重试或点「强制刷新」跳过缓存重新下载。加载成功后会缓存 1 小时。",
36
36
  retry: "重试",
37
+ forceReload: "强制刷新",
38
+ forceReloadHint: "跳过本地缓存的插件目录,重新从服务器下载(缓存异常或弱网重试时用)",
37
39
  install: "安装",
38
40
  cliOnlyHint: "此插件的安装需要在 dsh 终端里完成(网页端无法代跑它所需的构建或装配步骤),请复制上方命令到终端执行",
39
41
  manualInstallOnlyHint: "此插件需要你在 dsh 终端手动安装:网页端的一键安装替代不了终端里的构建与装配步骤。请复制上方命令到终端执行(Windows 用 Git Bash 或 PowerShell,macOS/Linux 用终端),完整步骤见作者仓库的安装说明。",
@@ -302,6 +304,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
302
304
  failPnpmMissingHint: "安装器找到了 dsh,但系统里没有 pnpm 命令(dsh 用它来管理 profile 插件)。请先安装 pnpm(如 npm install -g pnpm),确认 pnpm 已加入 PATH 后重试。这不是插件本身的问题。",
303
305
  failNpmMissingHint: "系统找不到 npm 命令(npm 未安装或未加入系统 PATH),无法执行全局安装。请先安装 Node.js(自带 npm),确认 npm 已加入 PATH 后重试。这不是插件本身的问题。",
304
306
  failBuildToolchainHint: "这个插件依赖需要在本机编译的原生模块,但机器上缺少可用的编译工具链。请按系统安装后重试:Windows 安装 Visual Studio Build Tools(含「使用 C++ 的桌面开发」);macOS 执行 xcode-select --install;Linux 安装 build-essential、python3 与 make。若装好工具链后仍然失败,再向插件作者反馈,请其提供预构建产物。",
307
+ bundleDeselectedHint: "注意:插件市场在当前 profile 的 bundle 列表中被取消勾选,重启宿主后它不会出现。请到「设置 → 插件」重新勾选 dsh-plugin。",
305
308
  failPnpmStoreHint: "安装器调用 pnpm 时报「store 位置不匹配」(ERR_PNPM_UNEXPECTED_STORE):你的 profile 目录里旧插件依赖是用另一个大版本的 pnpm 生成的,当前 pnpm 出于安全不认旧目录,导致任何插件装进该 profile 都会失败。请删除该 profile 目录下的 node_modules 与 pnpm-lock.yaml(可先到「系统日志」或 ~/.dsh/profiles/<profile>/hub.log 查看完整报错),再重新安装。这不是插件本身的问题。",
306
309
  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 补丁条目后重试。",
307
310
  failPnpmMissingDepTarget: "{pkg} 在 npm registry 上不存在(404)",
@@ -373,6 +376,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
373
376
  failFsUnavailableHint: "安装过程中 pnpm 无法把文件写进本机磁盘(这类报错与装哪个插件无关,任何插件装在同一目录都会失败,不是插件本身的问题)。请按报错对号入座:① 磁盘空间不足(ENOSPC / no space left on device,Windows 为 os error 112)——请清理 profile 所在磁盘的剩余空间后重试;② 磁盘或挂载点只读、带写保护(EROFS / read-only file system,Windows 为 os error 19)——请确认 profile 目录所在磁盘可写(外接盘/U 盘、带写保护的移动盘或只读挂载的分区都会触发),必要时把插件目录换到系统盘的可写位置;③ 进程可用的文件句柄被耗尽(EMFILE / ENFILE / too many open files)——请关闭占用大量文件的程序并重启 DeepSeek Harness 后重试。",
374
377
  failPnpmWorkspaceHint: "安装器调用 pnpm 时报「不能把依赖装到 workspace 根目录」(ERR_PNPM_ADDING_TO_ROOT):你的 profile 目录被 pnpm 视为 workspace 根目录,而本次安装命令没有声明在根目录操作,pnpm 直接拒绝执行,因此任何插件装进来都会失败。这不是插件本身的问题——可在 profile 目录(~/.dsh/profiles/<profile>)的 .npmrc 里加一行 ignore-workspace-root-check=true 后重试,或把 DeepSeek Harness 升级到最新版再试。",
375
378
  failPnpmTarballIntegrityHint: "pnpm 报 ERR_PNPM_MISSING_TARBALL_INTEGRITY:锁文件中的 tarball 条目没有校验值,无法验证下载的包。先查看完整日志,完全退出 DeepSeek Harness,并检查、备份当前 profile 的 package.json、pnpm-lock.yaml 和 pnpm-workspace.yaml。确认依赖来源后,将 pnpm-lock.yaml 改名保留,再通过同一 DSH 安装器安装适配当前宿主版本的插件,重新生成锁文件。重建会重新解析 profile 依赖,请核对新旧版本;保持完整性校验开启。",
379
+ failPnpmTarballMismatchHint: "pnpm 报 ERR_PNPM_TARBALL_INTEGRITY:profile 里某个从 GitHub 分支安装的依赖(例如 github:owner/repo#main)在远端更新了,tarball 内容变了,但 pnpm-lock.yaml 里存的还是旧校验和,于是整个 profile 的依赖安装都会卡在它上面。处理:打开 ~/.dsh/profiles/<profile>/pnpm-lock.yaml,删掉该 GitHub 依赖对应的条目(不确定是哪个就把整份锁文件改名备份),再重新安装;长期做法是把依赖固定到具体 commit(github:owner/repo#<commit>),分支再更新也不会改变校验和。",
376
380
  failPnpmPolicyHint: "安装器调用 pnpm 时被其供应链安全策略拦截——装任何插件都会撞墙,不是插件本身的问题。分两种情况处理:① 提示「Minimum release age」(ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION):包发布还不满 24 小时,pnpm 11 出于安全会拒收这种刚发布的新包。可在 pnpm 配置(pnpm-workspace.yaml)里加 minimumReleaseAge: 0 豁免,或等满 24 小时后重试。② 提示「untrusted origin」(ERR_PNPM_UNTRUSTED_ORIGIN):依赖来源不被本机 pnpm 信任,通常是该 profile 里之前用 github: 或非官方 npm 源装过插件,锁文件记录了不受信任的来源。请删除该 profile 目录下的 node_modules 与 pnpm-lock.yaml 后重新安装(可先到「系统日志」或 ~/.dsh/profiles/<profile>/hub.log 查看完整报错)。",
377
381
  failPnpmReleaseAgeHint: "安装器调用 pnpm 时被其供应链安全策略拦住了,任何插件装进这个 profile 都会先撞上它——与插件本身无关。原因是这个包发布还不满 24 小时,pnpm 11 出于安全会拒收刚发布的新包,这段时间内该 profile 的安装与卸载都会被拦下。可重试时间:{time}(即该包发布满 24 小时后)。如确需立刻安装,可在 profile 目录(~/.dsh/profiles/<profile>)的 pnpm-workspace.yaml 里加 minimumReleaseAge: 0 豁免,但这会放宽整个 profile 的供应链保护。",
378
382
  installChannelNpm: "NPM 包",
@@ -432,9 +436,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
432
436
  fork: "Fork",
433
437
  loading: "Loading plugin data…",
434
438
  failed: "Failed to load plugin data",
435
- failedDescNoProxy: "Your network seems unreachable, so the plugin catalog could not be loaded. Please check your connection and retry; or open the hub in your browser with the button above.",
436
- failedDescProxy: "Your network seems unreachable, or the HTTP proxy in Settings is unreachable, so the plugin catalog could not be loaded. Please check the proxy address and your connection, then retry; or open the hub in your browser with the button above.",
439
+ failedDescNoProxy: "The plugin catalog could not be loaded (a few MB). The first load can time out on a slow connection — retry, or use \"Force refresh\" to skip the local cache and download it again. Once it succeeds the catalog is cached for an hour. If it keeps failing, run the network diagnostic.",
440
+ failedDescProxy: "The plugin catalog could not be loaded (a few MB). A slow connection, or an unreachable/unstable HTTP proxy in Settings, can make the first load time out — retry, or use \"Force refresh\" to skip the cache. Once it succeeds the catalog is cached for an hour.",
437
441
  retry: "Retry",
442
+ forceReload: "Force refresh",
443
+ forceReloadHint: "Skip the cached catalog and download it again from the server (use when the cache looks wrong or on a slow network)",
438
444
  install: "Install",
439
445
  cliOnlyHint: "This plugin has to be installed in your dsh terminal (the web UI cannot run the build or assembly steps it needs) — copy the command above and run it there",
440
446
  manualInstallOnlyHint: "This plugin has to be installed by hand in your dsh terminal — one-click install from the web UI cannot run the build and assembly steps it needs. Copy the command above and run it there (Git Bash or PowerShell on Windows, Terminal on macOS/Linux); the author's repo has the full steps.",
@@ -706,6 +712,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
706
712
  failPnpmMissingHint: "The installer found dsh, but pnpm is missing on this machine (dsh uses it to manage profile plugins). Please install pnpm first (e.g. npm install -g pnpm), make sure it is on your PATH, then retry. This is not a problem with the plugin itself.",
707
713
  failNpmMissingHint: "The npm command could not be found (npm is not installed or not on the system PATH), so a global install cannot run. Please install Node.js (which bundles npm), make sure npm is on your PATH, then retry. This is not a problem with the plugin itself.",
708
714
  failBuildToolchainHint: "This plugin depends on a native module that must be compiled on your machine, but no usable build toolchain is available. Install one and retry: on Windows install Visual Studio Build Tools with the \"Desktop development with C++\" workload; on macOS run xcode-select --install; on Linux install build-essential, python3 and make. If it still fails after the toolchain is installed, report it to the plugin author and ask for a prebuilt package.",
715
+ bundleDeselectedHint: "Note: the marketplace is unchecked in this profile's bundle list, so it will not appear after the host restarts. Re-check dsh-plugin under Settings → Plugins.",
709
716
  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.",
710
717
  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.",
711
718
  failPnpmMissingDepTarget: "{pkg} was not found on the npm registry (404)",
@@ -777,6 +784,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
777
784
  failFsUnavailableHint: "During install, pnpm could not write files to the local disk — this has nothing to do with which plugin you are installing: any plugin installed into the same directory would fail the same way, so it is not a problem with the plugin itself. Match the error you see: ① Out of space (ENOSPC / no space left on device, os error 112 on Windows) — free up space on the drive that holds the profile and retry. ② Read-only or write-protected volume (EROFS / read-only file system, os error 19 on Windows) — make sure the drive holding the profile directory is writable (external or USB drives, write-protected media, and read-only mounts all trigger this); move the plugin directory to a writable location on the system drive if needed. ③ File handles exhausted (EMFILE / ENFILE / too many open files) — close programs that hold many files open, restart DeepSeek Harness, then retry.",
778
785
  failPnpmWorkspaceHint: "pnpm refused to add the dependency to the workspace root (ERR_PNPM_ADDING_TO_ROOT): the profile directory is treated as a pnpm workspace root, and this install command did not declare that it operates at the root, so pnpm rejected it outright — no plugin can be installed into that profile. This is not a problem with the plugin itself. Add `ignore-workspace-root-check=true` to the `.npmrc` inside the profile directory (~/.dsh/profiles/<profile>) and retry, or upgrade DeepSeek Harness and try again.",
779
786
  failPnpmTarballIntegrityHint: "pnpm reported ERR_PNPM_MISSING_TARBALL_INTEGRITY: a tarball entry in the lockfile has no checksum to verify the downloaded package. Read the full log, fully quit DeepSeek Harness, and inspect and back up package.json, pnpm-lock.yaml and pnpm-workspace.yaml in the affected profile. Once the dependency sources are verified, rename pnpm-lock.yaml to preserve it, then use the same DSH installer to install a plugin version compatible with the host and regenerate the lockfile. This resolves profile dependencies again: compare the old and new versions, and keep integrity checks enabled.",
787
+ failPnpmTarballMismatchHint: "pnpm reported ERR_PNPM_TARBALL_INTEGRITY: a dependency installed from a GitHub branch (for example github:owner/repo#main) changed upstream, so the tarball content no longer matches the checksum stored in pnpm-lock.yaml — and every install into that profile now stops on it. To fix: open ~/.dsh/profiles/<profile>/pnpm-lock.yaml, remove the entry for that GitHub dependency (or rename the whole lockfile as a backup if unsure which one it is), then reinstall. Long term, pin the dependency to a commit (github:owner/repo#<commit>) so branch updates no longer change its checksum.",
780
788
  failPnpmPolicyHint: "The installer was blocked by pnpm supply-chain security policy — every plugin install would hit the same wall, so this is not a problem with the plugin itself. Two cases: ① \"Minimum release age\" (ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION): the package was published less than 24 hours ago, and pnpm 11 refuses freshly-published packages for safety. Add minimumReleaseAge: 0 to your pnpm config (pnpm-workspace.yaml) to opt out, or wait until the 24 hours have passed and retry. ② \"untrusted origin\" (ERR_PNPM_UNTRUSTED_ORIGIN): a dependency source is not trusted by this machine, usually because plugins were previously installed via github: or a non-official npm registry, so the lockfile records an untrusted source. Delete node_modules and pnpm-lock.yaml under the profile directory (see System Logs or ~/.dsh/profiles/<profile>/hub.log for the full output), then reinstall.",
781
789
  failPnpmReleaseAgeHint: "The installer was blocked by pnpm supply-chain security policy, and every plugin installed into this profile would hit the same wall — this is not a problem with the plugin itself. The package was published less than 24 hours ago, and pnpm 11 refuses freshly-published packages for safety, so both installs and removals are blocked for this profile in the meantime. Retry after: {time} (i.e. 24 hours after the package was published). If you must install right now, add minimumReleaseAge: 0 to pnpm-workspace.yaml inside the profile directory (~/.dsh/profiles/<profile>) to opt out, but that loosens supply-chain protection for the whole profile.",
782
790
  installChannelNpm: "NPM package",
@@ -834,46 +842,46 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
834
842
  css: css$11
835
843
  });
836
844
  var Header_module_css_default = {
845
+ "brandTitle": "qikqja_brandTitle",
846
+ "root": "qikqja_root",
847
+ "controls": "qikqja_controls",
848
+ "headerTitleRow": "qikqja_headerTitleRow",
849
+ "resultCount": "qikqja_resultCount",
837
850
  "version": "qikqja_version",
851
+ "adBadge": "qikqja_adBadge",
852
+ "searchRow": "qikqja_searchRow",
853
+ "adArrow": "qikqja_adArrow",
854
+ "taglineLink": "qikqja_taglineLink",
855
+ "search": "qikqja_search",
856
+ "tab": "qikqja_tab",
857
+ "githubIcon": "qikqja_githubIcon",
858
+ "sortGroup": "qikqja_sortGroup",
859
+ "hubUpdateBadge": "qikqja_hubUpdateBadge",
838
860
  "adText": "qikqja_adText",
861
+ "tabActive": "qikqja_tabActive",
862
+ "resultSeg": "qikqja_resultSeg",
839
863
  "githubLink": "qikqja_githubLink",
840
864
  "versionBtn": "qikqja_versionBtn",
841
- "adBanner": "qikqja_adBanner",
842
- "header": "qikqja_header",
843
- "headerRight": "qikqja_headerRight",
844
- "tabs": "qikqja_tabs",
845
- "segLabel": "qikqja_segLabel",
846
- "segBtnActive": "qikqja_segBtnActive",
847
- "resultSeg": "qikqja_resultSeg",
848
- "sortGroup": "qikqja_sortGroup",
849
- "headerTitleRow": "qikqja_headerTitleRow",
850
- "segGroup": "qikqja_segGroup",
851
- "adBadge": "qikqja_adBadge",
852
- "langBtn": "qikqja_langBtn",
853
- "aboutBtn": "qikqja_aboutBtn",
854
- "tabCount": "qikqja_tabCount",
855
- "tabActive": "qikqja_tabActive",
856
- "taglineLink": "qikqja_taglineLink",
857
- "copyIcon": "qikqja_copyIcon",
858
865
  "tabsRow": "qikqja_tabsRow",
859
- "segBtn": "qikqja_segBtn",
860
- "root": "qikqja_root",
861
- "githubIcon": "qikqja_githubIcon",
866
+ "aboutBtn": "qikqja_aboutBtn",
862
867
  "logoIcon": "qikqja_logoIcon",
863
- "search": "qikqja_search",
864
- "adArrow": "qikqja_adArrow",
865
- "controls": "qikqja_controls",
866
- "brandTitle": "qikqja_brandTitle",
867
- "title": "qikqja_title",
868
+ "langBtn": "qikqja_langBtn",
868
869
  "tagline": "qikqja_tagline",
869
- "hubUpdateBadge": "qikqja_hubUpdateBadge",
870
- "searchRow": "qikqja_searchRow",
871
- "tab": "qikqja_tab",
872
- "resultCount": "qikqja_resultCount"
870
+ "segBtn": "qikqja_segBtn",
871
+ "segGroup": "qikqja_segGroup",
872
+ "tabs": "qikqja_tabs",
873
+ "copyIcon": "qikqja_copyIcon",
874
+ "tabCount": "qikqja_tabCount",
875
+ "segLabel": "qikqja_segLabel",
876
+ "headerRight": "qikqja_headerRight",
877
+ "header": "qikqja_header",
878
+ "adBanner": "qikqja_adBanner",
879
+ "segBtnActive": "qikqja_segBtnActive",
880
+ "title": "qikqja_title"
873
881
  };
874
882
  //#endregion
875
883
  //#region \0dsh-css:src/client/styles/Modal.module.css.mjs
876
- 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_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}";
884
+ 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}";
877
885
  const tagId$10 = "dsh-plugin/Modal.module.css";
878
886
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$10) + "]") === null) {
879
887
  const tag = document.createElement("style");
@@ -888,141 +896,142 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
888
896
  css: css$10
889
897
  });
890
898
  var Modal_module_css_default = {
891
- "failedCopyHint": "BiQ1zG_failedCopyHint",
892
- "dangerConfirm": "BiQ1zG_dangerConfirm",
893
- "resultRestarting": "BiQ1zG_resultRestarting",
894
- "hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
895
- "modalLink": "BiQ1zG_modalLink",
896
- "uninstallConfirm": "BiQ1zG_uninstallConfirm",
897
- "noticeFoot": "BiQ1zG_noticeFoot",
899
+ "progressHead": "BiQ1zG_progressHead",
900
+ "restartNowWarning": "BiQ1zG_restartNowWarning",
901
+ "noticeTextOk": "BiQ1zG_noticeTextOk",
902
+ "queueRowBody": "BiQ1zG_queueRowBody",
903
+ "modal": "BiQ1zG_modal",
904
+ "restartLater": "BiQ1zG_restartLater",
905
+ "modalHead": "BiQ1zG_modalHead",
906
+ "stripCancel": "BiQ1zG_stripCancel",
898
907
  "failRow": "BiQ1zG_failRow",
908
+ "detailStars": "BiQ1zG_detailStars",
909
+ "queueSectionTitle": "BiQ1zG_queueSectionTitle",
910
+ "progressText": "BiQ1zG_progressText",
911
+ "queueRowPct": "BiQ1zG_queueRowPct",
912
+ "modalLink": "BiQ1zG_modalLink",
913
+ "aboutContent": "BiQ1zG_aboutContent",
914
+ "modalLabel": "BiQ1zG_modalLabel",
915
+ "queueSection": "BiQ1zG_queueSection",
916
+ "queueRowDesc": "BiQ1zG_queueRowDesc",
917
+ "modalInstall": "BiQ1zG_modalInstall",
918
+ "failHead": "BiQ1zG_failHead",
919
+ "noticeList": "BiQ1zG_noticeList",
920
+ "noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
921
+ "aboutModal": "BiQ1zG_aboutModal",
922
+ "detailStatusPending": "BiQ1zG_detailStatusPending",
923
+ "failReason": "BiQ1zG_failReason",
924
+ "modalActions": "BiQ1zG_modalActions",
925
+ "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
926
+ "queueRowStatus": "BiQ1zG_queueRowStatus",
927
+ "failPrepareHint": "BiQ1zG_failPrepareHint",
928
+ "trustHint": "BiQ1zG_trustHint",
929
+ "progressFill": "BiQ1zG_progressFill",
930
+ "queueRowHead": "BiQ1zG_queueRowHead",
899
931
  "errorBox": "BiQ1zG_errorBox",
932
+ "queueRowTrack": "BiQ1zG_queueRowTrack",
900
933
  "queueRowTarget": "BiQ1zG_queueRowTarget",
934
+ "confirmIconDanger": "BiQ1zG_confirmIconDanger",
935
+ "noticeTime": "BiQ1zG_noticeTime",
936
+ "detailMono": "BiQ1zG_detailMono",
937
+ "errorHint": "BiQ1zG_errorHint",
938
+ "detailUpdateHint": "BiQ1zG_detailUpdateHint",
939
+ "failNetworkTarget": "BiQ1zG_failNetworkTarget",
940
+ "modalRow": "BiQ1zG_modalRow",
941
+ "hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
942
+ "noticeRowOk": "BiQ1zG_noticeRowOk",
943
+ "resultCheck": "BiQ1zG_resultCheck",
944
+ "noticeTextFail": "BiQ1zG_noticeTextFail",
945
+ "detailDim": "BiQ1zG_detailDim",
946
+ "hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
947
+ "aboutMeta": "BiQ1zG_aboutMeta",
901
948
  "noticeMain": "BiQ1zG_noticeMain",
902
- "detailStatusText": "BiQ1zG_detailStatusText",
903
- "restartNow": "BiQ1zG_restartNow",
904
- "toastIn": "BiQ1zG_toastIn",
905
- "errorTitle": "BiQ1zG_errorTitle",
906
- "noticeVersion": "BiQ1zG_noticeVersion",
907
- "noticeRowMain": "BiQ1zG_noticeRowMain",
949
+ "detailPathActions": "BiQ1zG_detailPathActions",
950
+ "toast": "BiQ1zG_toast",
951
+ "resultTitle": "BiQ1zG_resultTitle",
908
952
  "detailRow": "BiQ1zG_detailRow",
909
- "trustHint": "BiQ1zG_trustHint",
910
- "resultDesc": "BiQ1zG_resultDesc",
911
- "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
953
+ "progressFillFail": "BiQ1zG_progressFillFail",
912
954
  "failCopy": "BiQ1zG_failCopy",
955
+ "result": "BiQ1zG_result",
956
+ "modalCmd": "BiQ1zG_modalCmd",
957
+ "restartNow": "BiQ1zG_restartNow",
958
+ "bundleDeselectedHint": "BiQ1zG_bundleDeselectedHint",
913
959
  "detailLabel": "BiQ1zG_detailLabel",
914
- "failList": "BiQ1zG_failList",
960
+ "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
961
+ "detailStatusText": "BiQ1zG_detailStatusText",
915
962
  "noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
916
- "failPrepareHint": "BiQ1zG_failPrepareHint",
917
- "modalTitleQueued": "BiQ1zG_modalTitleQueued",
918
- "modalWide": "BiQ1zG_modalWide",
963
+ "modalCopy": "BiQ1zG_modalCopy",
964
+ "detailValue": "BiQ1zG_detailValue",
919
965
  "modalTitle": "BiQ1zG_modalTitle",
920
- "modalBody": "BiQ1zG_modalBody",
921
- "noticeIgnore": "BiQ1zG_noticeIgnore",
922
- "detailDim": "BiQ1zG_detailDim",
923
- "errorCopySoft": "BiQ1zG_errorCopySoft",
924
966
  "progressTrack": "BiQ1zG_progressTrack",
925
- "modalCmdText": "BiQ1zG_modalCmdText",
926
- "queueRowStatus": "BiQ1zG_queueRowStatus",
927
- "modalCmd": "BiQ1zG_modalCmd",
928
- "confirmIcon": "BiQ1zG_confirmIcon",
929
- "confirmPrimary": "BiQ1zG_confirmPrimary",
930
- "result": "BiQ1zG_result",
931
- "modalCloseIcon": "BiQ1zG_modalCloseIcon",
932
- "resultTitle": "BiQ1zG_resultTitle",
933
- "progressFillFail": "BiQ1zG_progressFillFail",
934
- "detailStatusPending": "BiQ1zG_detailStatusPending",
935
- "aboutMeta": "BiQ1zG_aboutMeta",
936
- "queueRow": "BiQ1zG_queueRow",
937
- "queuedHint": "BiQ1zG_queuedHint",
938
- "noticeRow": "BiQ1zG_noticeRow",
939
- "noticeTextFail": "BiQ1zG_noticeTextFail",
940
- "errorHint": "BiQ1zG_errorHint",
941
- "failNetworkTarget": "BiQ1zG_failNetworkTarget",
942
- "failKindUninstall": "BiQ1zG_failKindUninstall",
943
- "queueRowPct": "BiQ1zG_queueRowPct",
967
+ "modalTitleQueued": "BiQ1zG_modalTitleQueued",
968
+ "detailPath": "BiQ1zG_detailPath",
969
+ "noticeHead": "BiQ1zG_noticeHead",
970
+ "errorModal": "BiQ1zG_errorModal",
971
+ "resultCheckIcon": "BiQ1zG_resultCheckIcon",
972
+ "detailLink": "BiQ1zG_detailLink",
944
973
  "detailStatusRunning": "BiQ1zG_detailStatusRunning",
945
- "noticeList": "BiQ1zG_noticeList",
946
- "restartNowWarning": "BiQ1zG_restartNowWarning",
947
- "queueSectionTitle": "BiQ1zG_queueSectionTitle",
948
- "modalDesc": "BiQ1zG_modalDesc",
949
- "pendingRowStatus": "BiQ1zG_pendingRowStatus",
950
- "noticeTime": "BiQ1zG_noticeTime",
951
- "queueRowDesc": "BiQ1zG_queueRowDesc",
974
+ "queueRow": "BiQ1zG_queueRow",
975
+ "toastIn": "BiQ1zG_toastIn",
976
+ "failKind": "BiQ1zG_failKind",
977
+ "dangerConfirm": "BiQ1zG_dangerConfirm",
978
+ "failMisjudgeLink": "BiQ1zG_failMisjudgeLink",
979
+ "failRepoUrl": "BiQ1zG_failRepoUrl",
980
+ "detailModal": "BiQ1zG_detailModal",
981
+ "linkIcon": "BiQ1zG_linkIcon",
982
+ "detailArrow": "BiQ1zG_detailArrow",
983
+ "modalCancel": "BiQ1zG_modalCancel",
984
+ "noticeRemove": "BiQ1zG_noticeRemove",
952
985
  "failKindTitle": "BiQ1zG_failKindTitle",
953
- "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
954
- "detailPathActions": "BiQ1zG_detailPathActions",
955
- "resultCheck": "BiQ1zG_resultCheck",
956
- "progress": "BiQ1zG_progress",
957
- "failHead": "BiQ1zG_failHead",
986
+ "failRepo": "BiQ1zG_failRepo",
987
+ "noticeVersion": "BiQ1zG_noticeVersion",
988
+ "failClear": "BiQ1zG_failClear",
958
989
  "failRepoLabel": "BiQ1zG_failRepoLabel",
959
- "restartLater": "BiQ1zG_restartLater",
960
- "detailValue": "BiQ1zG_detailValue",
961
- "modalCmdCopy": "BiQ1zG_modalCmdCopy",
990
+ "errorTitle": "BiQ1zG_errorTitle",
991
+ "failKindInstall": "BiQ1zG_failKindInstall",
992
+ "detailPathText": "BiQ1zG_detailPathText",
993
+ "detailPathBtn": "BiQ1zG_detailPathBtn",
994
+ "modalDesc": "BiQ1zG_modalDesc",
995
+ "pendingRowActions": "BiQ1zG_pendingRowActions",
996
+ "modalValue": "BiQ1zG_modalValue",
962
997
  "failEmpty": "BiQ1zG_failEmpty",
963
- "noticeRowOk": "BiQ1zG_noticeRowOk",
964
- "toastFail": "BiQ1zG_toastFail",
998
+ "confirmIconWrap": "BiQ1zG_confirmIconWrap",
999
+ "uninstallConfirm": "BiQ1zG_uninstallConfirm",
1000
+ "modalCmdText": "BiQ1zG_modalCmdText",
1001
+ "resultRestarting": "BiQ1zG_resultRestarting",
965
1002
  "hubUpdateModal": "BiQ1zG_hubUpdateModal",
966
- "queueRowHead": "BiQ1zG_queueRowHead",
967
- "hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
968
- "queueSection": "BiQ1zG_queueSection",
969
- "stripCancel": "BiQ1zG_stripCancel",
970
- "progressHead": "BiQ1zG_progressHead",
971
- "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
972
- "failKindInstall": "BiQ1zG_failKindInstall",
973
- "detailArrow": "BiQ1zG_detailArrow",
974
- "detailLink": "BiQ1zG_detailLink",
975
- "aboutContent": "BiQ1zG_aboutContent",
1003
+ "progress": "BiQ1zG_progress",
1004
+ "confirmPrimary": "BiQ1zG_confirmPrimary",
1005
+ "overlayIn": "BiQ1zG_overlayIn",
1006
+ "failList": "BiQ1zG_failList",
1007
+ "modalBody": "BiQ1zG_modalBody",
1008
+ "queuedHint": "BiQ1zG_queuedHint",
1009
+ "errorCopySoft": "BiQ1zG_errorCopySoft",
1010
+ "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
1011
+ "failBigIssue": "BiQ1zG_failBigIssue",
1012
+ "overlay": "BiQ1zG_overlay",
1013
+ "helpModal": "BiQ1zG_helpModal",
1014
+ "noticeRowMain": "BiQ1zG_noticeRowMain",
1015
+ "noticeFoot": "BiQ1zG_noticeFoot",
976
1016
  "cliOnlyHint": "BiQ1zG_cliOnlyHint",
977
- "detailPath": "BiQ1zG_detailPath",
978
- "noticeRemove": "BiQ1zG_noticeRemove",
979
1017
  "modalTitleBusy": "BiQ1zG_modalTitleBusy",
980
- "modalActions": "BiQ1zG_modalActions",
981
- "detailModal": "BiQ1zG_detailModal",
982
- "logModal": "BiQ1zG_logModal",
983
- "failRepoUrl": "BiQ1zG_failRepoUrl",
1018
+ "noticeRow": "BiQ1zG_noticeRow",
1019
+ "noticeIgnore": "BiQ1zG_noticeIgnore",
984
1020
  "detailGrid": "BiQ1zG_detailGrid",
985
- "resultCheckIcon": "BiQ1zG_resultCheckIcon",
986
- "modal": "BiQ1zG_modal",
987
- "progressFill": "BiQ1zG_progressFill",
988
- "helpModal": "BiQ1zG_helpModal",
1021
+ "modalCloseIcon": "BiQ1zG_modalCloseIcon",
1022
+ "modalWide": "BiQ1zG_modalWide",
989
1023
  "modalClose": "BiQ1zG_modalClose",
990
- "pendingRowActions": "BiQ1zG_pendingRowActions",
1024
+ "confirmIcon": "BiQ1zG_confirmIcon",
1025
+ "toastFail": "BiQ1zG_toastFail",
1026
+ "modalCmdCopy": "BiQ1zG_modalCmdCopy",
991
1027
  "failDiagBtn": "BiQ1zG_failDiagBtn",
992
- "confirmIconDanger": "BiQ1zG_confirmIconDanger",
993
- "modalCancel": "BiQ1zG_modalCancel",
994
- "detailPathText": "BiQ1zG_detailPathText",
995
- "noticeTextOk": "BiQ1zG_noticeTextOk",
996
- "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
997
- "failReason": "BiQ1zG_failReason",
998
- "confirmIconWrap": "BiQ1zG_confirmIconWrap",
999
- "queueRowTrack": "BiQ1zG_queueRowTrack",
1000
- "modalCopy": "BiQ1zG_modalCopy",
1001
- "errorModal": "BiQ1zG_errorModal",
1002
- "failBigIssue": "BiQ1zG_failBigIssue",
1003
- "noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
1004
- "failRepo": "BiQ1zG_failRepo",
1005
- "linkIcon": "BiQ1zG_linkIcon",
1006
1028
  "modalIn": "BiQ1zG_modalIn",
1007
- "overlay": "BiQ1zG_overlay",
1008
- "aboutModal": "BiQ1zG_aboutModal",
1009
- "detailPathBtn": "BiQ1zG_detailPathBtn",
1010
- "failClear": "BiQ1zG_failClear",
1011
- "detailStars": "BiQ1zG_detailStars",
1012
- "modalLabel": "BiQ1zG_modalLabel",
1013
- "queueRowBody": "BiQ1zG_queueRowBody",
1014
- "progressText": "BiQ1zG_progressText",
1015
- "detailMono": "BiQ1zG_detailMono",
1016
- "overlayIn": "BiQ1zG_overlayIn",
1017
- "noticeHead": "BiQ1zG_noticeHead",
1018
- "toast": "BiQ1zG_toast",
1019
- "modalInstall": "BiQ1zG_modalInstall",
1020
- "modalValue": "BiQ1zG_modalValue",
1021
- "failKind": "BiQ1zG_failKind",
1022
- "modalHead": "BiQ1zG_modalHead",
1023
- "failMisjudgeLink": "BiQ1zG_failMisjudgeLink",
1024
- "detailUpdateHint": "BiQ1zG_detailUpdateHint",
1025
- "modalRow": "BiQ1zG_modalRow"
1029
+ "failKindUninstall": "BiQ1zG_failKindUninstall",
1030
+ "logModal": "BiQ1zG_logModal",
1031
+ "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
1032
+ "pendingRowStatus": "BiQ1zG_pendingRowStatus",
1033
+ "failedCopyHint": "BiQ1zG_failedCopyHint",
1034
+ "resultDesc": "BiQ1zG_resultDesc"
1026
1035
  };
1027
1036
  //#endregion
1028
1037
  //#region src/server/services/install/release-target.ts
@@ -1112,7 +1121,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1112
1121
  * tsdown 构建时用 define 把 __PLUGIN_VERSION__ 替换成 package.json 的版本号;
1113
1122
  * node --test 直接 import 本模块时该标识符不存在,typeof 守卫兜底为空串。
1114
1123
  */
1115
- const PLUGIN_VERSION = "2.0.4";
1124
+ const PLUGIN_VERSION = "2.0.5";
1116
1125
  const CATEGORY_ORDER = [
1117
1126
  "interface",
1118
1127
  "session",
@@ -1370,8 +1379,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1370
1379
  //#endregion
1371
1380
  //#region src/client/data/catalog.ts
1372
1381
  const PROXY_BASE = "/dsh-plugin-hub/catalog";
1373
- const PLUGINS_URL = (lang) => `${PROXY_BASE}?lang=${lang}`;
1374
- const STATS_URL = `${PROXY_BASE}?stats=1`;
1382
+ const PLUGINS_URL = (lang, refresh) => `${PROXY_BASE}?lang=${lang}${refresh ? "&refresh=1" : ""}`;
1383
+ const STATS_URL = (refresh) => `${PROXY_BASE}?stats=1${refresh ? "&refresh=1" : ""}`;
1375
1384
  async function fetchJson(url, signal) {
1376
1385
  const res = await fetch(url, {
1377
1386
  cache: "no-store",
@@ -1381,14 +1390,15 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1381
1390
  return res.json();
1382
1391
  }
1383
1392
  /** 目录插件列表(在线 API 已只返回 verified;过滤与排序由上层负责)。
1384
- * signal 可选:宿主重启/代理抖动导致请求挂起时,上层可中止旧请求释放连接。 */
1385
- async function fetchCatalog(lang, signal) {
1386
- const data = await fetchJson(PLUGINS_URL(lang), signal);
1393
+ * signal 可选:宿主重启/代理抖动导致请求挂起时,上层可中止旧请求释放连接。
1394
+ * refresh=true 跳过服务端缓存,强制回源。 */
1395
+ async function fetchCatalog(lang, signal, refresh = false) {
1396
+ const data = await fetchJson(PLUGINS_URL(lang, refresh), signal);
1387
1397
  return (Array.isArray(data) ? data : []).map((item) => normalize(item));
1388
1398
  }
1389
1399
  /** 收录/精选统计(/api/stats.json);字段不完整返回 null。 */
1390
- async function fetchStats(signal) {
1391
- const s = await fetchJson(STATS_URL, signal);
1400
+ async function fetchStats(signal, refresh = false) {
1401
+ const s = await fetchJson(STATS_URL(refresh), signal);
1392
1402
  if (s && typeof s.total === "number" && typeof s.verified === "number") return {
1393
1403
  total: s.total,
1394
1404
  verified: s.verified
@@ -1652,10 +1662,12 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1652
1662
  * 界面停在「正在加载插件数据…」假死 —— 超时自动重拉,最多自动重试 2 次后转失败态;
1653
1663
  * 用户手动刷新(reload)时清零重新计数。 */
1654
1664
  const loadRetriesRef = (0, react.useRef)(0);
1655
- /** 目录加载超时阈值:超过即判定挂起,强制刷新一次(服务端代理 curl 上限 20s,客户端 12s 先兜底) */
1656
- const LOAD_TIMEOUT_MS = 12e3;
1657
- /** 挂起后最多自动重试次数:避免代理持续不通时无限循环刷新(每次重试仍 12s,2 次后转失败界面可手动重试) */
1665
+ /** 目录加载超时阈值:超过即判定挂起,强制刷新一次(服务端代理 curl 上限 60s,客户端 30s 先兜底) */
1666
+ const LOAD_TIMEOUT_MS = 3e4;
1667
+ /** 挂起后最多自动重试次数:避免代理持续不通时无限循环刷新(每次重试仍 30s,2 次后转失败界面可手动重试) */
1658
1668
  const MAX_LOAD_RETRIES = 2;
1669
+ /** 本次 reload 是否强制回源(跳过服务端 1 小时缓存):由「强制刷新」置位,读取后立即复位 */
1670
+ const forceRefreshRef = (0, react.useRef)(false);
1659
1671
  /** 点击排序按钮:同一按钮切换正/倒序,新按钮用默认方向 */
1660
1672
  function toggleSort(key) {
1661
1673
  if (key === sort) setSortDir((d) => d === "asc" ? "desc" : "asc");
@@ -1694,11 +1706,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1694
1706
  let cancelled = false;
1695
1707
  let settled = false;
1696
1708
  const controller = new AbortController();
1709
+ const refresh = forceRefreshRef.current;
1710
+ forceRefreshRef.current = false;
1697
1711
  setPlugins(null);
1698
1712
  setHubPlugin(null);
1699
1713
  setStats(null);
1700
1714
  setFailed(false);
1701
- const load = () => Promise.all([fetchCatalog(lang, controller.signal), fetchStats(controller.signal)]);
1715
+ const load = () => Promise.all([fetchCatalog(lang, controller.signal, refresh), fetchStats(controller.signal, refresh)]);
1702
1716
  load().then(([list, stats]) => {
1703
1717
  if (cancelled) return;
1704
1718
  settled = true;
@@ -1861,7 +1875,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1861
1875
  * registry 真实发布时间下发(同源),据此判断最准。门槛命中要单列成 `pending` 而不是
1862
1876
  * 落回「无更新」——回落会让弹窗在本机版本落后时谎称「已是最新」。
1863
1877
  */
1864
- const hubCurrentVersion = "2.0.4";
1878
+ const hubCurrentVersion = "2.0.5";
1865
1879
  const hubUpdateState = (() => {
1866
1880
  if (!hubUpdateInfo) return "none";
1867
1881
  if (hubUpdateInfo.version === hubCurrentVersion) return "latest";
@@ -1912,6 +1926,12 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1912
1926
  loadRetriesRef.current = 0;
1913
1927
  setReloadKey((k) => k + 1);
1914
1928
  },
1929
+ /** 强制刷新:跳过服务端 1 小时缓存直接回源,成功后覆盖缓存(失败仍回退旧缓存) */
1930
+ forceReload: () => {
1931
+ loadRetriesRef.current = 0;
1932
+ forceRefreshRef.current = true;
1933
+ setReloadKey((k) => k + 1);
1934
+ },
1915
1935
  installed,
1916
1936
  installedItems,
1917
1937
  installedName,
@@ -2065,6 +2085,12 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2065
2085
  function missingTarballIntegrity(message) {
2066
2086
  return /\bERR_PNPM_MISSING_TARBALL_INTEGRITY\b/.test(message);
2067
2087
  }
2088
+ /** GitHub 分支 tarball 内容变了、锁文件里还是旧校验和(ERR_PNPM_TARBALL_INTEGRITY)。
2089
+ * \b 保证不会命中 ERR_PNPM_MISSING_TARBALL_INTEGRITY:前者是有校验值但对不上,
2090
+ * 后者是锁文件里压根没有校验值。 */
2091
+ function mismatchedTarballIntegrity(message) {
2092
+ return /\bERR_PNPM_TARBALL_INTEGRITY\b/.test(message);
2093
+ }
2068
2094
  /** pnpm 拒收「刚发布」包时,报错里带着发布时间;这里从报错文本算出「发布满 24h」的可重试时刻(UTC,分钟精度)。 */
2069
2095
  function releaseAgeRetryAfter(message) {
2070
2096
  const match = /published at (\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z)/.exec(message);
@@ -2079,6 +2105,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2079
2105
  * 避免出现「预计可重试时间:」后接空值的残缺句子。
2080
2106
  */
2081
2107
  function pnpmPolicyHintOf(message) {
2108
+ if (mismatchedTarballIntegrity(message)) return "failPnpmTarballMismatchHint";
2082
2109
  if (missingTarballIntegrity(message)) return "failPnpmTarballIntegrityHint";
2083
2110
  if (/ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION|ERR_PNPM_NO_MATURE_MATCHING_VERSION|Minimum release age|minimumReleaseAge/i.test(message) && releaseAgeRetryAfter(message) !== null) return "failPnpmReleaseAgeHint";
2084
2111
  return "failPnpmPolicyHint";
@@ -2102,7 +2129,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2102
2129
  if (/ERR_PNPM_UNEXPECTED_(VIRTUAL_)?STORE|Unexpected (virtual )?store location/i.test(message)) return "pnpmStore";
2103
2130
  if (/ERR_PNPM_ADDING_TO_ROOT|add the dependency to the workspace root/i.test(message)) return "pnpmWorkspace";
2104
2131
  if (/(^|\n)untrusted origin\s*$/.test(message)) return "originRejected";
2105
- if (missingTarballIntegrity(message) || /ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION|ERR_PNPM_NO_MATURE_MATCHING_VERSION|Minimum release age|minimumReleaseAge|untrusted origin/i.test(message)) return "pnpmPolicy";
2132
+ 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";
2106
2133
  if (/ERR_PNPM_UNUSED_PATCH|patches were not used/i.test(message)) return "pnpmUnusedPatch";
2107
2134
  if (/os error 32|EBUSY|resource busy or locked|being used by another process/i.test(message)) return "fileLocked";
2108
2135
  if (/os error 5\b|ERROR_ACCESS_DENIED|\bEPERM\b|\bEACCES\b|access is denied/i.test(message)) return "accessDenied";
@@ -2676,7 +2703,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2676
2703
  desc: q.desc,
2677
2704
  version: q.version
2678
2705
  });
2679
- onInstallDone(modalTaskRef.current === q.id, q.repo, q.needsRestart, q.action === "update", q.needsReload ?? false);
2706
+ onInstallDone(modalTaskRef.current === q.id, q.repo, q.needsRestart, q.action === "update", q.needsReload ?? false, q.bundleDeselected === true);
2680
2707
  }
2681
2708
  } else {
2682
2709
  const rawDetail = lines.length > 0 ? [...lines].reverse().join("\n") : q.kind === "uninstall" ? t("uninstallFail") : t("installFail");
@@ -2717,6 +2744,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2717
2744
  let status = "failed";
2718
2745
  let lines = [];
2719
2746
  let attempts;
2747
+ let bundleDeselected;
2720
2748
  try {
2721
2749
  const res = await fetch(`/dsh-plugin-hub/status?task=${q.id}`, { cache: "no-store" });
2722
2750
  if (res.ok) {
@@ -2725,13 +2753,15 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2725
2753
  status = task.status ?? "failed";
2726
2754
  lines = task.lines ?? [];
2727
2755
  attempts = Array.isArray(task.attempts) ? task.attempts : void 0;
2756
+ bundleDeselected = task.bundleDeselected === true ? true : void 0;
2728
2757
  const needsRestart = typeof task.needsRestart === "boolean" ? task.needsRestart : q.needsRestart;
2729
2758
  const needsReload = typeof task.needsReload === "boolean" ? task.needsReload : q.needsReload ?? false;
2730
2759
  if (status === "done") {
2731
2760
  const settled = {
2732
2761
  ...q,
2733
2762
  needsRestart,
2734
- needsReload
2763
+ needsReload,
2764
+ bundleDeselected: bundleDeselected === true ? true : q.bundleDeselected
2735
2765
  };
2736
2766
  if (q.kind === "uninstall") settleDone(settled, lines);
2737
2767
  else finishQueueTask(true, settled, lines);
@@ -2782,6 +2812,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2782
2812
  lines: Array.isArray(a.lines) ? a.lines : prevTask?.lines ?? [],
2783
2813
  attempts: Array.isArray(a.attempts) ? a.attempts : prevTask?.attempts ?? [],
2784
2814
  needsRestart: typeof a.needsRestart === "boolean" ? a.needsRestart : prevTask?.needsRestart ?? true,
2815
+ bundleDeselected: a.bundleDeselected === true || prevTask?.bundleDeselected === true,
2785
2816
  channel: a.installChannel === "npm" ? "npm" : prevTask?.channel
2786
2817
  });
2787
2818
  }
@@ -3590,7 +3621,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3590
3621
  * 按钮(重启会中断进行中的任务,故仍需用户确认),关闭即放弃;
3591
3622
  * - 其余(含 needsReload=true 的「已热挂载、仅剩客户端 UI」)→ 仅「完成」按钮:关闭结果弹窗时
3592
3623
  * 上层自动刷新页面让插件生效,不再给「稍后/立即刷新」手动选择。 */
3593
- function ResultView({ title, desc, t, restarting, needsRestart, needsReload, onRestart, onClose }) {
3624
+ function ResultView({ title, desc, t, restarting, needsRestart, needsReload, bundleDeselected, onRestart, onClose }) {
3594
3625
  return (0, react.createElement)("div", { className: Modal_module_css_default.result }, (0, react.createElement)("div", { className: Modal_module_css_default.resultCheck }, (0, react.createElement)("svg", {
3595
3626
  className: Modal_module_css_default.resultCheckIcon,
3596
3627
  viewBox: "0 0 16 16",
@@ -3604,7 +3635,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3604
3635
  strokeWidth: 2,
3605
3636
  strokeLinecap: "round",
3606
3637
  strokeLinejoin: "round"
3607
- }))), (0, react.createElement)("div", { className: Modal_module_css_default.resultTitle }, title), desc ? (0, react.createElement)("div", { className: Modal_module_css_default.resultDesc }, desc) : null, needsRestart ? (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.resultRestarting }, restarting ? t("restarting") : t("restartHint")), (0, react.createElement)("div", { className: Modal_module_css_default.modalActions }, (0, react.createElement)("button", {
3638
+ }))), (0, react.createElement)("div", { className: Modal_module_css_default.resultTitle }, title), desc ? (0, react.createElement)("div", { className: Modal_module_css_default.resultDesc }, desc) : null, bundleDeselected ? (0, react.createElement)("div", { className: Modal_module_css_default.bundleDeselectedHint }, t("bundleDeselectedHint")) : null, needsRestart ? (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.resultRestarting }, restarting ? t("restarting") : t("restartHint")), (0, react.createElement)("div", { className: Modal_module_css_default.modalActions }, (0, react.createElement)("button", {
3608
3639
  className: Modal_module_css_default.restartNowWarning,
3609
3640
  onClick: onRestart,
3610
3641
  disabled: restarting
@@ -3619,7 +3650,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3619
3650
  * 目录插件与命令行安装(customTarget 模式)共用同一套确认/进度/结果流程。
3620
3651
  */
3621
3652
  function InstallModal(props) {
3622
- const { plugin, customTarget, globalNpm, done, task, t, langPath, restarting, submitting, update, cliOnly, needsRestart, needsReload, onClose, onCopy, onInstall, onRestart } = props;
3653
+ const { plugin, customTarget, globalNpm, done, task, t, langPath, restarting, submitting, update, cliOnly, needsRestart, needsReload, bundleDeselected, onClose, onCopy, onInstall, onRestart } = props;
3623
3654
  const busy = submitting || task !== null && (task.status === "pending" || task.status === "running");
3624
3655
  const name = customTarget ?? (globalNpm !== void 0 && globalNpm.length > 0 ? globalNpm.join(" ") : void 0) ?? plugin?.displayName ?? plugin?.slug ?? "";
3625
3656
  const busyTitle = (label) => langPath === "zh/" ? `${name} 插件${label}` : `${label} ${name}`;
@@ -3644,6 +3675,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3644
3675
  restarting,
3645
3676
  needsRestart,
3646
3677
  needsReload,
3678
+ bundleDeselected,
3647
3679
  onRestart,
3648
3680
  onClose
3649
3681
  }) : (0, react.createElement)("div", { className: Modal_module_css_default.modalBody }, !busy ? (0, react.createElement)("div", { className: Modal_module_css_default.confirmIconWrap }, (0, react.createElement)(ConfirmIcon, { type: "question" })) : null, (0, react.createElement)("div", { className: Modal_module_css_default.trustHint }, t("confirmDesc")), (0, react.createElement)("div", { className: Modal_module_css_default.modalRow }, (0, react.createElement)("span", { className: Modal_module_css_default.modalLabel }, t("confirmPlugin")), (0, react.createElement)("span", {
@@ -4654,40 +4686,40 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4654
4686
  css: css$9
4655
4687
  });
4656
4688
  var List_module_css_default = {
4689
+ "topics": "_3XaZHa_topics",
4690
+ "topic": "_3XaZHa_topic",
4657
4691
  "cardHead": "_3XaZHa_cardHead",
4658
- "date": "_3XaZHa_date",
4692
+ "card": "_3XaZHa_card",
4659
4693
  "versionBadge": "_3XaZHa_versionBadge",
4660
- "desc": "_3XaZHa_desc",
4661
- "diagBtn": "_3XaZHa_diagBtn",
4662
- "fork": "_3XaZHa_fork",
4663
- "cardTitle": "_3XaZHa_cardTitle",
4664
- "moreSentinel": "_3XaZHa_moreSentinel",
4665
- "topic": "_3XaZHa_topic",
4666
- "stateDesc": "_3XaZHa_stateDesc",
4667
- "verified": "_3XaZHa_verified",
4668
- "footer": "_3XaZHa_footer",
4669
- "detailBtn": "_3XaZHa_detailBtn",
4670
- "body": "_3XaZHa_body",
4671
- "updateBadge": "_3XaZHa_updateBadge",
4672
- "star": "_3XaZHa_star",
4673
- "installBtn": "_3XaZHa_installBtn",
4694
+ "footLink": "_3XaZHa_footLink",
4674
4695
  "actions": "_3XaZHa_actions",
4675
- "stateTitle": "_3XaZHa_stateTitle",
4676
- "installBtnCopied": "_3XaZHa_installBtnCopied",
4677
- "installBtnUpdate": "_3XaZHa_installBtnUpdate",
4678
- "installBtnInstalled": "_3XaZHa_installBtnInstalled",
4679
- "card": "_3XaZHa_card",
4680
- "categoryBadge": "_3XaZHa_categoryBadge",
4681
- "stateActions": "_3XaZHa_stateActions",
4696
+ "body": "_3XaZHa_body",
4682
4697
  "cardSide": "_3XaZHa_cardSide",
4683
- "footLink": "_3XaZHa_footLink",
4684
- "cardMain": "_3XaZHa_cardMain",
4685
- "topics": "_3XaZHa_topics",
4698
+ "detailBtn": "_3XaZHa_detailBtn",
4699
+ "installBtnInstalled": "_3XaZHa_installBtnInstalled",
4700
+ "installBtn": "_3XaZHa_installBtn",
4701
+ "installBtnUpdate": "_3XaZHa_installBtnUpdate",
4702
+ "verified": "_3XaZHa_verified",
4703
+ "star": "_3XaZHa_star",
4704
+ "fork": "_3XaZHa_fork",
4686
4705
  "retryBtn": "_3XaZHa_retryBtn",
4687
- "stats": "_3XaZHa_stats",
4706
+ "stateActions": "_3XaZHa_stateActions",
4707
+ "cardTitle": "_3XaZHa_cardTitle",
4708
+ "stateDesc": "_3XaZHa_stateDesc",
4709
+ "footer": "_3XaZHa_footer",
4710
+ "desc": "_3XaZHa_desc",
4711
+ "categoryBadge": "_3XaZHa_categoryBadge",
4688
4712
  "list": "_3XaZHa_list",
4713
+ "moreSentinel": "_3XaZHa_moreSentinel",
4714
+ "installBtnCopied": "_3XaZHa_installBtnCopied",
4715
+ "uninstallBtn": "_3XaZHa_uninstallBtn",
4716
+ "stateTitle": "_3XaZHa_stateTitle",
4689
4717
  "state": "_3XaZHa_state",
4690
- "uninstallBtn": "_3XaZHa_uninstallBtn"
4718
+ "diagBtn": "_3XaZHa_diagBtn",
4719
+ "updateBadge": "_3XaZHa_updateBadge",
4720
+ "date": "_3XaZHa_date",
4721
+ "cardMain": "_3XaZHa_cardMain",
4722
+ "stats": "_3XaZHa_stats"
4691
4723
  };
4692
4724
  //#endregion
4693
4725
  //#region src/client/hooks/useIncrementalList.ts
@@ -4785,7 +4817,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4785
4817
  * 目录列表:承载加载/失败/空三态、插件卡片与计数页脚的滚动容器。分类或安装状态
4786
4818
  * 筛选变化时重置滚动位置,避免替换后的内容被误当成「没变化」。
4787
4819
  */
4788
- function CatalogList({ plugins, failed, visible, total, t, langPath, reload, category, copied, installedName, installedVersion, hasUpdate, langKey, onInstall, onUninstall, hasProxy, onOpenDiagnostics }) {
4820
+ function CatalogList({ plugins, failed, visible, total, t, langPath, reload, forceReload, category, copied, installedName, installedVersion, hasUpdate, langKey, onInstall, onUninstall, hasProxy, onOpenDiagnostics }) {
4789
4821
  /** 列表滚动容器:分类/搜索切换后列表内容替换但 scrollTop 保留,会让用户误以为列表没更新,需重置回顶部 */
4790
4822
  const listRef = (0, react.useRef)(null);
4791
4823
  /** 增量渲染:全量目录太大(4400+),只渲染首批,滚动接近底部时自动追加下一批 */
@@ -4800,6 +4832,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4800
4832
  className: List_module_css_default.retryBtn,
4801
4833
  onClick: () => reload()
4802
4834
  }, t("retry")), (0, react.createElement)("button", {
4835
+ className: List_module_css_default.retryBtn,
4836
+ onClick: () => forceReload(),
4837
+ title: t("forceReloadHint")
4838
+ }, t("forceReload")), (0, react.createElement)("button", {
4803
4839
  className: List_module_css_default.diagBtn,
4804
4840
  onClick: onOpenDiagnostics
4805
4841
  }, t("failNetworkRunDiag")))), plugins !== null && !failed && visible.length === 0 && (0, react.createElement)("div", { className: List_module_css_default.state }, (0, react.createElement)("div", { className: List_module_css_default.stateTitle }, t("noResult")), (0, react.createElement)("div", { className: List_module_css_default.stateDesc }, t("noResultDesc"))), plugins !== null && !failed && shown.map((p) => (0, react.createElement)(PluginCard, {
@@ -4858,6 +4894,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4858
4894
  t,
4859
4895
  langPath,
4860
4896
  reload: catalog.reload,
4897
+ forceReload: catalog.forceReload,
4861
4898
  category: catalog.category,
4862
4899
  copied,
4863
4900
  installedName: catalog.installedName,
@@ -4872,7 +4909,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4872
4909
  }
4873
4910
  //#endregion
4874
4911
  //#region \0dsh-css:src/client/styles/SectionTabs.module.css.mjs
4875
- const css$8 = "._7tvizq_root{border-bottom:1px solid var(--hub-border-1);flex-shrink:0;align-items:stretch;gap:28px;padding:0 2px;display:flex}._7tvizq_tab,._7tvizq_tabActive{cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;align-items:center;gap:7px;height:38px;padding:0 4px;font-size:14px;line-height:38px;transition:color .12s;display:inline-flex;position:relative}._7tvizq_tab{color:var(--hub-text-secondary)}._7tvizq_tab:hover{color:var(--hub-text-primary)}._7tvizq_tabActive{color:var(--hub-text-primary);font-weight:600}._7tvizq_tabIcon{flex-shrink:0;align-items:center;line-height:1;display:inline-flex}._7tvizq_tabActive:after{content:\"\";background:var(--hub-brand);border-radius:1px;height:2px;position:absolute;bottom:-1px;left:0;right:0}._7tvizq_tabCount,._7tvizq_tabCountActive{text-align:center;border-radius:999px;min-width:18px;padding:0 6px;font-size:11px;line-height:16px}._7tvizq_tabCount{color:var(--hub-text-tertiary);background:var(--hub-bg-btn)}._7tvizq_tabActive ._7tvizq_tabCountActive{color:var(--hub-text-on-fill);background:var(--hub-btn-fill)}._7tvizq_noticeBtn{box-sizing:border-box;height:26px;color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:1px solid #0000;border-radius:6px;flex-shrink:0;align-self:center;align-items:center;gap:5px;margin-left:auto;padding:0 8px;font-size:12px;line-height:24px;transition:color .12s,background .12s;display:inline-flex;position:relative}._7tvizq_noticeBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover);border-color:var(--hub-border-2)}._7tvizq_noticeIcon{align-items:center;line-height:1;display:inline-flex}._7tvizq_noticeCount{text-align:center;color:#fff;background:var(--hub-danger);border-radius:999px;min-width:17px;height:17px;padding:0 5px;font-size:11px;font-weight:600;line-height:17px;box-shadow:0 1px 3px #d1242f59}";
4912
+ const css$8 = "._7tvizq_root{border-bottom:1px solid var(--hub-border-1);flex-shrink:0;align-items:stretch;gap:28px;padding:0 2px;display:flex;container-type:inline-size}._7tvizq_tab,._7tvizq_tabActive{white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;flex-shrink:0;align-items:center;gap:7px;height:38px;padding:0 4px;font-size:14px;line-height:38px;transition:color .12s;display:inline-flex;position:relative}._7tvizq_tab{color:var(--hub-text-secondary)}._7tvizq_tab:hover{color:var(--hub-text-primary)}._7tvizq_tabActive{color:var(--hub-text-primary);font-weight:600}@container (width<=440px){._7tvizq_tabLabel{display:none}._7tvizq_tab,._7tvizq_tabActive{padding:0 2px}}._7tvizq_tabIcon{flex-shrink:0;align-items:center;line-height:1;display:inline-flex}._7tvizq_tabActive:after{content:\"\";background:var(--hub-brand);border-radius:1px;height:2px;position:absolute;bottom:-1px;left:0;right:0}._7tvizq_tabCount,._7tvizq_tabCountActive{text-align:center;border-radius:999px;min-width:18px;padding:0 6px;font-size:11px;line-height:16px}._7tvizq_tabCount{color:var(--hub-text-tertiary);background:var(--hub-bg-btn)}._7tvizq_tabActive ._7tvizq_tabCountActive{color:var(--hub-text-on-fill);background:var(--hub-btn-fill)}._7tvizq_noticeBtn{box-sizing:border-box;height:26px;color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:1px solid #0000;border-radius:6px;flex-shrink:0;align-self:center;align-items:center;gap:5px;margin-left:auto;padding:0 8px;font-size:12px;line-height:24px;transition:color .12s,background .12s;display:inline-flex;position:relative}._7tvizq_noticeBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover);border-color:var(--hub-border-2)}._7tvizq_noticeIcon{align-items:center;line-height:1;display:inline-flex}._7tvizq_noticeCount{text-align:center;color:#fff;background:var(--hub-danger);border-radius:999px;min-width:17px;height:17px;padding:0 5px;font-size:11px;font-weight:600;line-height:17px;box-shadow:0 1px 3px #d1242f59}";
4876
4913
  const tagId$8 = "dsh-plugin/SectionTabs.module.css";
4877
4914
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$8) + "]") === null) {
4878
4915
  const tag = document.createElement("style");
@@ -4887,15 +4924,16 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4887
4924
  css: css$8
4888
4925
  });
4889
4926
  var SectionTabs_module_css_default = {
4890
- "noticeBtn": "_7tvizq_noticeBtn",
4891
- "tabCountActive": "_7tvizq_tabCountActive",
4892
4927
  "tabIcon": "_7tvizq_tabIcon",
4928
+ "tabCountActive": "_7tvizq_tabCountActive",
4893
4929
  "tabActive": "_7tvizq_tabActive",
4930
+ "noticeBtn": "_7tvizq_noticeBtn",
4894
4931
  "noticeIcon": "_7tvizq_noticeIcon",
4895
- "tab": "_7tvizq_tab",
4932
+ "tabLabel": "_7tvizq_tabLabel",
4933
+ "noticeCount": "_7tvizq_noticeCount",
4896
4934
  "tabCount": "_7tvizq_tabCount",
4897
- "root": "_7tvizq_root",
4898
- "noticeCount": "_7tvizq_noticeCount"
4935
+ "tab": "_7tvizq_tab",
4936
+ "root": "_7tvizq_root"
4899
4937
  };
4900
4938
  //#endregion
4901
4939
  //#region src/client/components/layout/SectionTabs.tsx
@@ -4943,9 +4981,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4943
4981
  role: "tab",
4944
4982
  "aria-selected": view === id,
4945
4983
  title: t(hintKey),
4984
+ "aria-label": t(labelKey),
4946
4985
  className: view === id ? SectionTabs_module_css_default.tabActive : SectionTabs_module_css_default.tab,
4947
4986
  onClick: () => setView(id)
4948
- }, (0, react.createElement)("span", { className: SectionTabs_module_css_default.tabIcon }, (0, react.createElement)(Icon)), t(labelKey), id === "installed" && installedCount > 0 ? (0, react.createElement)("span", { className: view === id ? SectionTabs_module_css_default.tabCountActive : SectionTabs_module_css_default.tabCount }, installedCount) : null)), (0, react.createElement)("button", {
4987
+ }, (0, react.createElement)("span", { className: SectionTabs_module_css_default.tabIcon }, (0, react.createElement)(Icon)), (0, react.createElement)("span", { className: SectionTabs_module_css_default.tabLabel }, t(labelKey)), id === "installed" && installedCount > 0 ? (0, react.createElement)("span", { className: view === id ? SectionTabs_module_css_default.tabCountActive : SectionTabs_module_css_default.tabCount }, installedCount) : null)), (0, react.createElement)("button", {
4949
4988
  type: "button",
4950
4989
  className: SectionTabs_module_css_default.noticeBtn,
4951
4990
  onClick: onOpenNotifications,
@@ -4970,42 +5009,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4970
5009
  css: css$7
4971
5010
  });
4972
5011
  var InstalledView_module_css_default = {
5012
+ "rowRestart": "_1nXeGW_rowRestart",
5013
+ "emptyDesc": "_1nXeGW_emptyDesc",
5014
+ "rowMain": "_1nXeGW_rowMain",
5015
+ "rowDesc": "_1nXeGW_rowDesc",
5016
+ "statusDot": "_1nXeGW_statusDot",
5017
+ "toolbar": "_1nXeGW_toolbar",
5018
+ "rowSourceTag": "_1nXeGW_rowSourceTag",
4973
5019
  "segBtnActive": "_1nXeGW_segBtnActive",
4974
- "rowUpdate": "_1nXeGW_rowUpdate",
4975
- "rowDetail": "_1nXeGW_rowDetail",
5020
+ "segGroup": "_1nXeGW_segGroup",
5021
+ "searchWrap": "_1nXeGW_searchWrap",
4976
5022
  "searchInput": "_1nXeGW_searchInput",
4977
- "statusInactive": "_1nXeGW_statusInactive",
4978
- "rowSourceTag": "_1nXeGW_rowSourceTag",
4979
- "exampleRow": "_1nXeGW_exampleRow",
4980
- "rowUninstall": "_1nXeGW_rowUninstall",
4981
- "rowRepo": "_1nXeGW_rowRepo",
5023
+ "empty": "_1nXeGW_empty",
4982
5024
  "exampleBadge": "_1nXeGW_exampleBadge",
4983
- "rowRestart": "_1nXeGW_rowRestart",
4984
- "segGroup": "_1nXeGW_segGroup",
4985
- "statusPending": "_1nXeGW_statusPending",
4986
- "toolbar": "_1nXeGW_toolbar",
4987
- "rowCategory": "_1nXeGW_rowCategory",
4988
- "segRow": "_1nXeGW_segRow",
4989
5025
  "list": "_1nXeGW_list",
5026
+ "segLabel": "_1nXeGW_segLabel",
5027
+ "rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
5028
+ "statusInactive": "_1nXeGW_statusInactive",
5029
+ "root": "_1nXeGW_root",
5030
+ "rowTitleLine": "_1nXeGW_rowTitleLine",
5031
+ "rowTitle": "_1nXeGW_rowTitle",
5032
+ "emptyTitle": "_1nXeGW_emptyTitle",
4990
5033
  "segBtn": "_1nXeGW_segBtn",
4991
5034
  "row": "_1nXeGW_row",
4992
- "rowTitle": "_1nXeGW_rowTitle",
4993
- "rowActions": "_1nXeGW_rowActions",
4994
- "rowTitleLine": "_1nXeGW_rowTitleLine",
4995
5035
  "versionBadge": "_1nXeGW_versionBadge",
4996
- "empty": "_1nXeGW_empty",
4997
- "rowDesc": "_1nXeGW_rowDesc",
4998
- "emptyDesc": "_1nXeGW_emptyDesc",
4999
- "segLabel": "_1nXeGW_segLabel",
5000
- "root": "_1nXeGW_root",
5036
+ "segRow": "_1nXeGW_segRow",
5037
+ "rowCategory": "_1nXeGW_rowCategory",
5038
+ "rowActions": "_1nXeGW_rowActions",
5039
+ "rowUpdate": "_1nXeGW_rowUpdate",
5040
+ "rowUninstall": "_1nXeGW_rowUninstall",
5001
5041
  "updateBadge": "_1nXeGW_updateBadge",
5002
- "statusDot": "_1nXeGW_statusDot",
5003
- "rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
5004
- "rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
5005
- "emptyTitle": "_1nXeGW_emptyTitle",
5042
+ "statusPending": "_1nXeGW_statusPending",
5043
+ "rowDetail": "_1nXeGW_rowDetail",
5044
+ "rowRepo": "_1nXeGW_rowRepo",
5006
5045
  "rowMeta": "_1nXeGW_rowMeta",
5007
- "searchWrap": "_1nXeGW_searchWrap",
5008
- "rowMain": "_1nXeGW_rowMain"
5046
+ "exampleRow": "_1nXeGW_exampleRow",
5047
+ "rowSourceTagManual": "_1nXeGW_rowSourceTagManual"
5009
5048
  };
5010
5049
  //#endregion
5011
5050
  //#region src/client/components/views/InstalledView.tsx
@@ -5249,26 +5288,26 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5249
5288
  css: css$6
5250
5289
  });
5251
5290
  var CustomInstallView_module_css_default = {
5291
+ "installCards": "zISxCG_installCards",
5292
+ "helpNote": "zISxCG_helpNote",
5293
+ "root": "zISxCG_root",
5294
+ "installExample": "zISxCG_installExample",
5295
+ "channelOffBtn": "zISxCG_channelOffBtn",
5296
+ "installCardDisabled": "zISxCG_installCardDisabled",
5297
+ "desc": "zISxCG_desc",
5252
5298
  "installBtn": "zISxCG_installBtn",
5253
- "installError": "zISxCG_installError",
5254
- "helpLine": "zISxCG_helpLine",
5255
5299
  "installCardHead": "zISxCG_installCardHead",
5256
- "installInput": "zISxCG_installInput",
5257
- "helpBody": "zISxCG_helpBody",
5258
- "installExample": "zISxCG_installExample",
5259
- "installInputError": "zISxCG_installInputError",
5260
5300
  "helpCmd": "zISxCG_helpCmd",
5261
- "channelOff": "zISxCG_channelOff",
5262
- "root": "zISxCG_root",
5263
- "desc": "zISxCG_desc",
5264
5301
  "installLabel": "zISxCG_installLabel",
5265
- "installCards": "zISxCG_installCards",
5266
5302
  "installRow": "zISxCG_installRow",
5267
- "installCardDisabled": "zISxCG_installCardDisabled",
5268
- "channelOffText": "zISxCG_channelOffText",
5269
- "channelOffBtn": "zISxCG_channelOffBtn",
5270
5303
  "installCard": "zISxCG_installCard",
5271
- "helpNote": "zISxCG_helpNote",
5304
+ "helpLine": "zISxCG_helpLine",
5305
+ "channelOff": "zISxCG_channelOff",
5306
+ "helpBody": "zISxCG_helpBody",
5307
+ "installError": "zISxCG_installError",
5308
+ "installInput": "zISxCG_installInput",
5309
+ "installInputError": "zISxCG_installInputError",
5310
+ "channelOffText": "zISxCG_channelOffText",
5272
5311
  "installHelpBtn": "zISxCG_installHelpBtn"
5273
5312
  };
5274
5313
  //#endregion
@@ -5425,30 +5464,30 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5425
5464
  css: css$5
5426
5465
  });
5427
5466
  var SettingsView_module_css_default = {
5428
- "controlDropdown": "_506LLG_controlDropdown",
5429
- "settingLabel": "_506LLG_settingLabel",
5430
- "settingRow": "_506LLG_settingRow",
5431
- "proxyHintFail": "_506LLG_proxyHintFail",
5467
+ "proxyHint": "_506LLG_proxyHint",
5468
+ "resetBtn": "_506LLG_resetBtn",
5432
5469
  "settingControlStack": "_506LLG_settingControlStack",
5433
- "navItem": "_506LLG_navItem",
5434
- "settingControl": "_506LLG_settingControl",
5435
- "proxyHintOk": "_506LLG_proxyHintOk",
5436
- "root": "_506LLG_root",
5437
- "content": "_506LLG_content",
5438
- "pageHeader": "_506LLG_pageHeader",
5470
+ "proxyHintFail": "_506LLG_proxyHintFail",
5439
5471
  "navIcon": "_506LLG_navIcon",
5440
- "settingTitle": "_506LLG_settingTitle",
5441
5472
  "proxyControl": "_506LLG_proxyControl",
5442
- "navItemActive": "_506LLG_navItemActive",
5473
+ "settingTitle": "_506LLG_settingTitle",
5474
+ "navItem": "_506LLG_navItem",
5475
+ "settingRow": "_506LLG_settingRow",
5443
5476
  "sidebar": "_506LLG_sidebar",
5444
- "resetBtn": "_506LLG_resetBtn",
5445
- "proxyHint": "_506LLG_proxyHint",
5477
+ "settingRowStack": "_506LLG_settingRowStack",
5478
+ "root": "_506LLG_root",
5479
+ "controlDropdown": "_506LLG_controlDropdown",
5480
+ "pageHeader": "_506LLG_pageHeader",
5446
5481
  "pageTitle": "_506LLG_pageTitle",
5447
- "card": "_506LLG_card",
5448
- "settingDesc": "_506LLG_settingDesc",
5482
+ "settingLabel": "_506LLG_settingLabel",
5449
5483
  "textInput": "_506LLG_textInput",
5484
+ "settingDesc": "_506LLG_settingDesc",
5485
+ "settingControl": "_506LLG_settingControl",
5450
5486
  "pageDesc": "_506LLG_pageDesc",
5451
- "settingRowStack": "_506LLG_settingRowStack"
5487
+ "card": "_506LLG_card",
5488
+ "proxyHintOk": "_506LLG_proxyHintOk",
5489
+ "content": "_506LLG_content",
5490
+ "navItemActive": "_506LLG_navItemActive"
5452
5491
  };
5453
5492
  //#endregion
5454
5493
  //#region \0dsh-css:src/client/styles/Dropdown.module.css.mjs
@@ -5467,18 +5506,18 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5467
5506
  css: css$4
5468
5507
  });
5469
5508
  var Dropdown_module_css_default = {
5470
- "dropdownCount": "B_Gxsq_dropdownCount",
5509
+ "dropdownFill": "B_Gxsq_dropdownFill",
5471
5510
  "dropdownItemLabel": "B_Gxsq_dropdownItemLabel",
5511
+ "dropdownLabel": "B_Gxsq_dropdownLabel",
5512
+ "dropdownItemActive": "B_Gxsq_dropdownItemActive",
5513
+ "dropdownCount": "B_Gxsq_dropdownCount",
5472
5514
  "dropdownCountActive": "B_Gxsq_dropdownCountActive",
5473
5515
  "dropdownArrow": "B_Gxsq_dropdownArrow",
5474
- "dropdown": "B_Gxsq_dropdown",
5475
- "dropdownPanel": "B_Gxsq_dropdownPanel",
5476
- "dropdownFill": "B_Gxsq_dropdownFill",
5477
- "dropdownBtn": "B_Gxsq_dropdownBtn",
5478
5516
  "dropdownItem": "B_Gxsq_dropdownItem",
5479
- "dropdownLabel": "B_Gxsq_dropdownLabel",
5480
- "dropdownItemActive": "B_Gxsq_dropdownItemActive",
5481
- "dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen"
5517
+ "dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen",
5518
+ "dropdownBtn": "B_Gxsq_dropdownBtn",
5519
+ "dropdown": "B_Gxsq_dropdown",
5520
+ "dropdownPanel": "B_Gxsq_dropdownPanel"
5482
5521
  };
5483
5522
  //#endregion
5484
5523
  //#region \0dsh-css:src/client/styles/Toggle.module.css.mjs
@@ -5497,8 +5536,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5497
5536
  css: css$3
5498
5537
  });
5499
5538
  var Toggle_module_css_default = {
5500
- "knob": "k-cD4G_knob",
5501
5539
  "toggle": "k-cD4G_toggle",
5540
+ "knob": "k-cD4G_knob",
5502
5541
  "toggleOn": "k-cD4G_toggleOn"
5503
5542
  };
5504
5543
  //#endregion
@@ -5596,29 +5635,29 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5596
5635
  css: css$2
5597
5636
  });
5598
5637
  var DiagnosticsView_module_css_default = {
5638
+ "envLabel": "k9eRya_envLabel",
5639
+ "head": "k9eRya_head",
5640
+ "envTitle": "k9eRya_envTitle",
5641
+ "summary": "k9eRya_summary",
5642
+ "badge": "k9eRya_badge",
5643
+ "panel": "k9eRya_panel",
5644
+ "headHint": "k9eRya_headHint",
5645
+ "diagPulse": "k9eRya_diagPulse",
5646
+ "envCopyBtn": "k9eRya_envCopyBtn",
5599
5647
  "badgeIdle": "k9eRya_badgeIdle",
5648
+ "summaryFail": "k9eRya_summaryFail",
5600
5649
  "envRow": "k9eRya_envRow",
5601
5650
  "name": "k9eRya_name",
5602
- "envCopyBtn": "k9eRya_envCopyBtn",
5603
- "display": "k9eRya_display",
5604
- "panel": "k9eRya_panel",
5605
- "diagPulse": "k9eRya_diagPulse",
5606
- "badge": "k9eRya_badge",
5651
+ "meta": "k9eRya_meta",
5652
+ "badgeFail": "k9eRya_badgeFail",
5607
5653
  "row": "k9eRya_row",
5608
- "summary": "k9eRya_summary",
5609
- "head": "k9eRya_head",
5610
- "envLabel": "k9eRya_envLabel",
5611
5654
  "envDesc": "k9eRya_envDesc",
5612
- "headHint": "k9eRya_headHint",
5613
- "summaryOk": "k9eRya_summaryOk",
5614
- "envTitle": "k9eRya_envTitle",
5615
- "badgeOk": "k9eRya_badgeOk",
5616
- "badgeFail": "k9eRya_badgeFail",
5617
- "meta": "k9eRya_meta",
5655
+ "display": "k9eRya_display",
5656
+ "runBtn": "k9eRya_runBtn",
5618
5657
  "badgeRunning": "k9eRya_badgeRunning",
5619
- "summaryFail": "k9eRya_summaryFail",
5620
- "summaryRunning": "k9eRya_summaryRunning",
5621
- "runBtn": "k9eRya_runBtn"
5658
+ "badgeOk": "k9eRya_badgeOk",
5659
+ "summaryOk": "k9eRya_summaryOk",
5660
+ "summaryRunning": "k9eRya_summaryRunning"
5622
5661
  };
5623
5662
  //#endregion
5624
5663
  //#region src/client/components/views/DiagnosticsView.tsx
@@ -5793,57 +5832,57 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5793
5832
  css: css$1
5794
5833
  });
5795
5834
  var LogsView_module_css_default = {
5796
- "catSettings": "_3j77BW_catSettings",
5797
- "clearBtn": "_3j77BW_clearBtn",
5798
- "pathDialog": "_3j77BW_pathDialog",
5799
- "panel": "_3j77BW_panel",
5800
- "pathDialogReset": "_3j77BW_pathDialogReset",
5801
- "previewRow": "_3j77BW_previewRow",
5802
- "footCount": "_3j77BW_footCount",
5803
- "headActions": "_3j77BW_headActions",
5804
- "badge": "_3j77BW_badge",
5805
- "badgeInfo": "_3j77BW_badgeInfo",
5806
- "catDiagnostics": "_3j77BW_catDiagnostics",
5807
5835
  "pathRow": "_3j77BW_pathRow",
5808
- "headHint": "_3j77BW_headHint",
5809
- "logList": "_3j77BW_logList",
5810
- "actions": "_3j77BW_actions",
5811
- "catBadge": "_3j77BW_catBadge",
5812
- "filterBar": "_3j77BW_filterBar",
5813
- "badgeWarn": "_3j77BW_badgeWarn",
5814
- "linkBtn": "_3j77BW_linkBtn",
5815
- "list": "_3j77BW_list",
5836
+ "foot": "_3j77BW_foot",
5816
5837
  "message": "_3j77BW_message",
5817
- "pathLabel": "_3j77BW_pathLabel",
5818
- "searchInput": "_3j77BW_searchInput",
5819
- "moreEnd": "_3j77BW_moreEnd",
5820
- "footPath": "_3j77BW_footPath",
5821
- "catUpdate": "_3j77BW_catUpdate",
5822
- "filterChipActive": "_3j77BW_filterChipActive",
5823
- "event": "_3j77BW_event",
5824
- "search": "_3j77BW_search",
5825
- "catSystem": "_3j77BW_catSystem",
5826
- "badgeDebug": "_3j77BW_badgeDebug",
5827
- "entry": "_3j77BW_entry",
5828
- "catUninstall": "_3j77BW_catUninstall",
5829
- "pathDialogHint": "_3j77BW_pathDialogHint",
5830
5838
  "more": "_3j77BW_more",
5831
- "pathDraft": "_3j77BW_pathDraft",
5832
- "footActions": "_3j77BW_footActions",
5833
- "empty": "_3j77BW_empty",
5834
- "pathDialogFoot": "_3j77BW_pathDialogFoot",
5839
+ "badgeWarn": "_3j77BW_badgeWarn",
5840
+ "badgeInfo": "_3j77BW_badgeInfo",
5835
5841
  "time": "_3j77BW_time",
5842
+ "pathDialogRow": "_3j77BW_pathDialogRow",
5843
+ "headHint": "_3j77BW_headHint",
5844
+ "clearBtn": "_3j77BW_clearBtn",
5836
5845
  "filterChip": "_3j77BW_filterChip",
5837
- "head": "_3j77BW_head",
5846
+ "searchInput": "_3j77BW_searchInput",
5838
5847
  "pathText": "_3j77BW_pathText",
5839
- "footFail": "_3j77BW_footFail",
5848
+ "footActions": "_3j77BW_footActions",
5849
+ "badgeError": "_3j77BW_badgeError",
5850
+ "list": "_3j77BW_list",
5851
+ "pathDialogHint": "_3j77BW_pathDialogHint",
5852
+ "previewRow": "_3j77BW_previewRow",
5853
+ "filterChipActive": "_3j77BW_filterChipActive",
5854
+ "entry": "_3j77BW_entry",
5855
+ "pathLabel": "_3j77BW_pathLabel",
5856
+ "catUninstall": "_3j77BW_catUninstall",
5840
5857
  "badgeSuccess": "_3j77BW_badgeSuccess",
5858
+ "empty": "_3j77BW_empty",
5859
+ "catUpdate": "_3j77BW_catUpdate",
5860
+ "logList": "_3j77BW_logList",
5841
5861
  "catInstall": "_3j77BW_catInstall",
5842
5862
  "pathDialogDesc": "_3j77BW_pathDialogDesc",
5843
- "pathDialogRow": "_3j77BW_pathDialogRow",
5844
- "foot": "_3j77BW_foot",
5845
- "badgeError": "_3j77BW_badgeError",
5846
- "btn": "_3j77BW_btn"
5863
+ "search": "_3j77BW_search",
5864
+ "pathDialog": "_3j77BW_pathDialog",
5865
+ "moreEnd": "_3j77BW_moreEnd",
5866
+ "footFail": "_3j77BW_footFail",
5867
+ "catSettings": "_3j77BW_catSettings",
5868
+ "pathDialogFoot": "_3j77BW_pathDialogFoot",
5869
+ "filterBar": "_3j77BW_filterBar",
5870
+ "catDiagnostics": "_3j77BW_catDiagnostics",
5871
+ "event": "_3j77BW_event",
5872
+ "pathDialogReset": "_3j77BW_pathDialogReset",
5873
+ "actions": "_3j77BW_actions",
5874
+ "linkBtn": "_3j77BW_linkBtn",
5875
+ "pathDraft": "_3j77BW_pathDraft",
5876
+ "headActions": "_3j77BW_headActions",
5877
+ "catBadge": "_3j77BW_catBadge",
5878
+ "footCount": "_3j77BW_footCount",
5879
+ "btn": "_3j77BW_btn",
5880
+ "catSystem": "_3j77BW_catSystem",
5881
+ "footPath": "_3j77BW_footPath",
5882
+ "head": "_3j77BW_head",
5883
+ "badge": "_3j77BW_badge",
5884
+ "panel": "_3j77BW_panel",
5885
+ "badgeDebug": "_3j77BW_badgeDebug"
5847
5886
  };
5848
5887
  //#endregion
5849
5888
  //#region src/client/components/modals/LogsModal.tsx
@@ -6707,6 +6746,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6707
6746
  /** 结果视图是否显示「关闭后自动刷新」说明:插件已热挂进运行中 loader(安装)、或卸载后
6708
6747
  * 插件面板仍残留在当前页面(卸载)。关闭弹窗即整页刷新,不给手动刷新按钮。 */
6709
6748
  const [installNeedsReload, setInstallNeedsReload] = (0, react.useState)(false);
6749
+ /** 市场自更新成功、但 profile 的 bundle 列表里已不含 dsh-plugin:结果页提示重新勾选 */
6750
+ const [installBundleDeselected, setInstallBundleDeselected] = (0, react.useState)(false);
6710
6751
  const [uninstallNeedsReload, setUninstallNeedsReload] = (0, react.useState)(false);
6711
6752
  /** 结果视图「立即重启」:请求宿主重启后进入等待,服务回来后整页刷新 */
6712
6753
  const [restarting, setRestarting] = (0, react.useState)(false);
@@ -6741,10 +6782,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6741
6782
  t,
6742
6783
  langKey,
6743
6784
  refreshInstalled: catalog.refreshInstalled,
6744
- onInstallDone: (viaModal, repo, needsRestart, update, needsReload) => {
6785
+ onInstallDone: (viaModal, repo, needsRestart, update, needsReload, bundleDeselected) => {
6745
6786
  const reload = needsReload === true;
6746
6787
  setInstallNeedsRestart(needsRestart);
6747
6788
  setInstallNeedsReload(reload);
6789
+ setInstallBundleDeselected(bundleDeselected === true);
6748
6790
  if (viaModal) setInstallDone(true);
6749
6791
  else setToast({
6750
6792
  id: Date.now(),
@@ -7101,7 +7143,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
7101
7143
  openSection: settingsSection,
7102
7144
  onConsumedOpenSection: () => setSettingsSection(null)
7103
7145
  }), showHubUpdate && (0, react.createElement)(HubUpdateModal, {
7104
- info: catalog.hubUpdateInfo ?? { version: "2.0.4" },
7146
+ info: catalog.hubUpdateInfo ?? { version: "2.0.5" },
7105
7147
  state: catalog.hubUpdateState,
7106
7148
  currentVersion: catalog.hubCurrentVersion,
7107
7149
  lang,
@@ -7193,9 +7235,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
7193
7235
  submitting: queue.submitting,
7194
7236
  needsRestart: installNeedsRestart,
7195
7237
  needsReload: installNeedsReload,
7238
+ bundleDeselected: installBundleDeselected,
7196
7239
  onClose: () => {
7197
7240
  const reload = installDone && installNeedsReload;
7198
7241
  setConfirmPlugin(null);
7242
+ setInstallBundleDeselected(false);
7199
7243
  if (reload) window.location.reload();
7200
7244
  },
7201
7245
  onCopy: () => copyCommand(confirmPlugin),