dsh-plugin 2.0.4 → 2.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +2 -0
- package/README.md +2 -0
- package/client/client.js +382 -332
- package/client/client.js.map +1 -1
- package/lib/http/catalog.js +22 -3
- package/lib/http/diagnostics.js +36 -9
- package/lib/services/install/preflight.js +36 -0
- package/lib/services/install/task-queue.js +24 -19
- package/lib/services/probe.js +10 -5
- package/lib/services/profile/profile.js +14 -0
- package/lib/types/services/install/install-types.d.ts +3 -1
- package/lib/types/services/install/preflight.d.ts +11 -0
- package/lib/types/services/probe.d.ts +2 -1
- package/lib/types/services/profile/profile.d.ts +3 -0
- package/package.json +1 -1
- package/src/client/components/PluginHubSection.tsx +6 -1
- package/src/client/components/catalog/CatalogList.tsx +5 -1
- package/src/client/components/layout/SectionTabs.tsx +2 -1
- package/src/client/components/modals/modals.tsx +8 -2
- package/src/client/components/views/MarketView.tsx +1 -0
- package/src/client/data/catalog.ts +9 -7
- package/src/client/hooks/useCatalog.ts +10 -4
- package/src/client/hooks/useTaskQueue.ts +10 -5
- package/src/client/locales.ts +12 -4
- package/src/client/logic/failures.ts +12 -3
- package/src/client/logic/installed.ts +10 -6
- package/src/client/styles/Modal.module.css +9 -0
- package/src/client/styles/SectionTabs.module.css +18 -0
- package/src/server/http/catalog.ts +24 -3
- package/src/server/http/diagnostics.ts +36 -10
- package/src/server/services/install/install-types.ts +3 -1
- package/src/server/services/install/preflight.ts +37 -0
- package/src/server/services/install/task-queue.ts +23 -18
- package/src/server/services/probe.ts +10 -5
- package/src/server/services/profile/profile.ts +15 -0
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: "
|
|
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: "
|
|
436
|
-
failedDescProxy: "
|
|
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
|
+
"aboutBtn": "qikqja_aboutBtn",
|
|
837
846
|
"version": "qikqja_version",
|
|
838
|
-
"
|
|
839
|
-
"
|
|
840
|
-
"
|
|
847
|
+
"resultCount": "qikqja_resultCount",
|
|
848
|
+
"taglineLink": "qikqja_taglineLink",
|
|
849
|
+
"resultSeg": "qikqja_resultSeg",
|
|
850
|
+
"title": "qikqja_title",
|
|
841
851
|
"adBanner": "qikqja_adBanner",
|
|
842
|
-
"
|
|
843
|
-
"
|
|
844
|
-
"tabs": "qikqja_tabs",
|
|
852
|
+
"hubUpdateBadge": "qikqja_hubUpdateBadge",
|
|
853
|
+
"adBadge": "qikqja_adBadge",
|
|
845
854
|
"segLabel": "qikqja_segLabel",
|
|
846
|
-
"
|
|
847
|
-
"resultSeg": "qikqja_resultSeg",
|
|
848
|
-
"sortGroup": "qikqja_sortGroup",
|
|
849
|
-
"headerTitleRow": "qikqja_headerTitleRow",
|
|
855
|
+
"headerRight": "qikqja_headerRight",
|
|
850
856
|
"segGroup": "qikqja_segGroup",
|
|
851
|
-
"
|
|
852
|
-
"langBtn": "qikqja_langBtn",
|
|
853
|
-
"aboutBtn": "qikqja_aboutBtn",
|
|
857
|
+
"sortGroup": "qikqja_sortGroup",
|
|
854
858
|
"tabCount": "qikqja_tabCount",
|
|
855
|
-
"tabActive": "qikqja_tabActive",
|
|
856
|
-
"taglineLink": "qikqja_taglineLink",
|
|
857
|
-
"copyIcon": "qikqja_copyIcon",
|
|
858
|
-
"tabsRow": "qikqja_tabsRow",
|
|
859
|
-
"segBtn": "qikqja_segBtn",
|
|
860
859
|
"root": "qikqja_root",
|
|
861
860
|
"githubIcon": "qikqja_githubIcon",
|
|
862
|
-
"
|
|
863
|
-
"
|
|
861
|
+
"copyIcon": "qikqja_copyIcon",
|
|
862
|
+
"adText": "qikqja_adText",
|
|
863
|
+
"tabs": "qikqja_tabs",
|
|
864
|
+
"langBtn": "qikqja_langBtn",
|
|
865
|
+
"headerTitleRow": "qikqja_headerTitleRow",
|
|
864
866
|
"adArrow": "qikqja_adArrow",
|
|
865
|
-
"controls": "qikqja_controls",
|
|
866
867
|
"brandTitle": "qikqja_brandTitle",
|
|
867
|
-
"title": "qikqja_title",
|
|
868
|
-
"tagline": "qikqja_tagline",
|
|
869
|
-
"hubUpdateBadge": "qikqja_hubUpdateBadge",
|
|
870
868
|
"searchRow": "qikqja_searchRow",
|
|
869
|
+
"header": "qikqja_header",
|
|
870
|
+
"githubLink": "qikqja_githubLink",
|
|
871
|
+
"segBtn": "qikqja_segBtn",
|
|
872
|
+
"tagline": "qikqja_tagline",
|
|
873
|
+
"versionBtn": "qikqja_versionBtn",
|
|
874
|
+
"search": "qikqja_search",
|
|
871
875
|
"tab": "qikqja_tab",
|
|
872
|
-
"
|
|
876
|
+
"tabsRow": "qikqja_tabsRow",
|
|
877
|
+
"controls": "qikqja_controls",
|
|
878
|
+
"segBtnActive": "qikqja_segBtnActive",
|
|
879
|
+
"tabActive": "qikqja_tabActive",
|
|
880
|
+
"logoIcon": "qikqja_logoIcon"
|
|
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
|
-
"
|
|
892
|
-
"
|
|
893
|
-
"
|
|
894
|
-
"
|
|
895
|
-
"modalLink": "BiQ1zG_modalLink",
|
|
896
|
-
"uninstallConfirm": "BiQ1zG_uninstallConfirm",
|
|
897
|
-
"noticeFoot": "BiQ1zG_noticeFoot",
|
|
898
|
-
"failRow": "BiQ1zG_failRow",
|
|
899
|
-
"errorBox": "BiQ1zG_errorBox",
|
|
900
|
-
"queueRowTarget": "BiQ1zG_queueRowTarget",
|
|
901
|
-
"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",
|
|
908
|
-
"detailRow": "BiQ1zG_detailRow",
|
|
909
|
-
"trustHint": "BiQ1zG_trustHint",
|
|
910
|
-
"resultDesc": "BiQ1zG_resultDesc",
|
|
911
|
-
"noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
|
|
912
|
-
"failCopy": "BiQ1zG_failCopy",
|
|
913
|
-
"detailLabel": "BiQ1zG_detailLabel",
|
|
899
|
+
"queueSection": "BiQ1zG_queueSection",
|
|
900
|
+
"resultCheck": "BiQ1zG_resultCheck",
|
|
901
|
+
"noticeRemove": "BiQ1zG_noticeRemove",
|
|
902
|
+
"helpModal": "BiQ1zG_helpModal",
|
|
914
903
|
"failList": "BiQ1zG_failList",
|
|
915
|
-
"
|
|
916
|
-
"
|
|
917
|
-
"
|
|
918
|
-
"
|
|
919
|
-
"
|
|
920
|
-
"
|
|
921
|
-
"
|
|
904
|
+
"detailStars": "BiQ1zG_detailStars",
|
|
905
|
+
"detailPath": "BiQ1zG_detailPath",
|
|
906
|
+
"noticeFoot": "BiQ1zG_noticeFoot",
|
|
907
|
+
"queueRowBody": "BiQ1zG_queueRowBody",
|
|
908
|
+
"resultTitle": "BiQ1zG_resultTitle",
|
|
909
|
+
"failKindTitle": "BiQ1zG_failKindTitle",
|
|
910
|
+
"failKindInstall": "BiQ1zG_failKindInstall",
|
|
922
911
|
"detailDim": "BiQ1zG_detailDim",
|
|
923
|
-
"errorCopySoft": "BiQ1zG_errorCopySoft",
|
|
924
|
-
"progressTrack": "BiQ1zG_progressTrack",
|
|
925
|
-
"modalCmdText": "BiQ1zG_modalCmdText",
|
|
926
|
-
"queueRowStatus": "BiQ1zG_queueRowStatus",
|
|
927
|
-
"modalCmd": "BiQ1zG_modalCmd",
|
|
928
912
|
"confirmIcon": "BiQ1zG_confirmIcon",
|
|
929
|
-
"
|
|
930
|
-
"
|
|
931
|
-
"
|
|
932
|
-
"
|
|
933
|
-
"progressFillFail": "BiQ1zG_progressFillFail",
|
|
934
|
-
"detailStatusPending": "BiQ1zG_detailStatusPending",
|
|
935
|
-
"aboutMeta": "BiQ1zG_aboutMeta",
|
|
936
|
-
"queueRow": "BiQ1zG_queueRow",
|
|
937
|
-
"queuedHint": "BiQ1zG_queuedHint",
|
|
938
|
-
"noticeRow": "BiQ1zG_noticeRow",
|
|
913
|
+
"stripCancel": "BiQ1zG_stripCancel",
|
|
914
|
+
"noticeRowOk": "BiQ1zG_noticeRowOk",
|
|
915
|
+
"modalTitleBusy": "BiQ1zG_modalTitleBusy",
|
|
916
|
+
"hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
|
|
939
917
|
"noticeTextFail": "BiQ1zG_noticeTextFail",
|
|
940
|
-
"
|
|
941
|
-
"
|
|
942
|
-
"
|
|
943
|
-
"
|
|
944
|
-
"
|
|
945
|
-
"
|
|
946
|
-
"
|
|
947
|
-
"
|
|
918
|
+
"noticeRow": "BiQ1zG_noticeRow",
|
|
919
|
+
"restartLater": "BiQ1zG_restartLater",
|
|
920
|
+
"queueRowTarget": "BiQ1zG_queueRowTarget",
|
|
921
|
+
"modalCmd": "BiQ1zG_modalCmd",
|
|
922
|
+
"progressFillFail": "BiQ1zG_progressFillFail",
|
|
923
|
+
"detailRow": "BiQ1zG_detailRow",
|
|
924
|
+
"detailMono": "BiQ1zG_detailMono",
|
|
925
|
+
"overlayIn": "BiQ1zG_overlayIn",
|
|
926
|
+
"queueRowDesc": "BiQ1zG_queueRowDesc",
|
|
927
|
+
"modalValue": "BiQ1zG_modalValue",
|
|
928
|
+
"noticeRowMain": "BiQ1zG_noticeRowMain",
|
|
929
|
+
"restartNow": "BiQ1zG_restartNow",
|
|
930
|
+
"failRepo": "BiQ1zG_failRepo",
|
|
931
|
+
"detailModal": "BiQ1zG_detailModal",
|
|
932
|
+
"toast": "BiQ1zG_toast",
|
|
933
|
+
"modalLink": "BiQ1zG_modalLink",
|
|
934
|
+
"noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
|
|
948
935
|
"modalDesc": "BiQ1zG_modalDesc",
|
|
936
|
+
"modalTitle": "BiQ1zG_modalTitle",
|
|
937
|
+
"modalLabel": "BiQ1zG_modalLabel",
|
|
938
|
+
"pendingRowActions": "BiQ1zG_pendingRowActions",
|
|
939
|
+
"noticeMain": "BiQ1zG_noticeMain",
|
|
940
|
+
"noticeHead": "BiQ1zG_noticeHead",
|
|
941
|
+
"linkIcon": "BiQ1zG_linkIcon",
|
|
942
|
+
"queueRowHead": "BiQ1zG_queueRowHead",
|
|
943
|
+
"detailStatusPending": "BiQ1zG_detailStatusPending",
|
|
949
944
|
"pendingRowStatus": "BiQ1zG_pendingRowStatus",
|
|
950
|
-
"
|
|
951
|
-
"
|
|
952
|
-
"
|
|
945
|
+
"modalClose": "BiQ1zG_modalClose",
|
|
946
|
+
"failDiagBtn": "BiQ1zG_failDiagBtn",
|
|
947
|
+
"failKindUninstall": "BiQ1zG_failKindUninstall",
|
|
953
948
|
"hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
|
|
954
|
-
"detailPathActions": "BiQ1zG_detailPathActions",
|
|
955
|
-
"resultCheck": "BiQ1zG_resultCheck",
|
|
956
|
-
"progress": "BiQ1zG_progress",
|
|
957
|
-
"failHead": "BiQ1zG_failHead",
|
|
958
|
-
"failRepoLabel": "BiQ1zG_failRepoLabel",
|
|
959
|
-
"restartLater": "BiQ1zG_restartLater",
|
|
960
|
-
"detailValue": "BiQ1zG_detailValue",
|
|
961
|
-
"modalCmdCopy": "BiQ1zG_modalCmdCopy",
|
|
962
|
-
"failEmpty": "BiQ1zG_failEmpty",
|
|
963
|
-
"noticeRowOk": "BiQ1zG_noticeRowOk",
|
|
964
|
-
"toastFail": "BiQ1zG_toastFail",
|
|
965
|
-
"hubUpdateModal": "BiQ1zG_hubUpdateModal",
|
|
966
|
-
"queueRowHead": "BiQ1zG_queueRowHead",
|
|
967
|
-
"hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
|
|
968
|
-
"queueSection": "BiQ1zG_queueSection",
|
|
969
|
-
"stripCancel": "BiQ1zG_stripCancel",
|
|
970
|
-
"progressHead": "BiQ1zG_progressHead",
|
|
971
949
|
"noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
|
|
972
|
-
"
|
|
973
|
-
"
|
|
974
|
-
"
|
|
950
|
+
"queueRowPct": "BiQ1zG_queueRowPct",
|
|
951
|
+
"modalInstall": "BiQ1zG_modalInstall",
|
|
952
|
+
"noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
|
|
953
|
+
"noticeIgnore": "BiQ1zG_noticeIgnore",
|
|
975
954
|
"aboutContent": "BiQ1zG_aboutContent",
|
|
976
|
-
"
|
|
977
|
-
"
|
|
978
|
-
"
|
|
979
|
-
"
|
|
980
|
-
"modalActions": "BiQ1zG_modalActions",
|
|
981
|
-
"detailModal": "BiQ1zG_detailModal",
|
|
982
|
-
"logModal": "BiQ1zG_logModal",
|
|
983
|
-
"failRepoUrl": "BiQ1zG_failRepoUrl",
|
|
984
|
-
"detailGrid": "BiQ1zG_detailGrid",
|
|
985
|
-
"resultCheckIcon": "BiQ1zG_resultCheckIcon",
|
|
986
|
-
"modal": "BiQ1zG_modal",
|
|
987
|
-
"progressFill": "BiQ1zG_progressFill",
|
|
988
|
-
"helpModal": "BiQ1zG_helpModal",
|
|
989
|
-
"modalClose": "BiQ1zG_modalClose",
|
|
990
|
-
"pendingRowActions": "BiQ1zG_pendingRowActions",
|
|
991
|
-
"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",
|
|
955
|
+
"detailArrow": "BiQ1zG_detailArrow",
|
|
956
|
+
"noticeTime": "BiQ1zG_noticeTime",
|
|
957
|
+
"modalHead": "BiQ1zG_modalHead",
|
|
958
|
+
"hubUpdateModal": "BiQ1zG_hubUpdateModal",
|
|
1001
959
|
"errorModal": "BiQ1zG_errorModal",
|
|
960
|
+
"confirmPrimary": "BiQ1zG_confirmPrimary",
|
|
961
|
+
"errorBox": "BiQ1zG_errorBox",
|
|
962
|
+
"failHead": "BiQ1zG_failHead",
|
|
1002
963
|
"failBigIssue": "BiQ1zG_failBigIssue",
|
|
1003
964
|
"noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
|
|
1004
|
-
"
|
|
1005
|
-
"
|
|
1006
|
-
"
|
|
1007
|
-
"
|
|
1008
|
-
"
|
|
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",
|
|
965
|
+
"modalCmdText": "BiQ1zG_modalCmdText",
|
|
966
|
+
"progressTrack": "BiQ1zG_progressTrack",
|
|
967
|
+
"hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
|
|
968
|
+
"detailPathActions": "BiQ1zG_detailPathActions",
|
|
969
|
+
"noticeVersion": "BiQ1zG_noticeVersion",
|
|
1021
970
|
"failKind": "BiQ1zG_failKind",
|
|
1022
|
-
"
|
|
971
|
+
"resultDesc": "BiQ1zG_resultDesc",
|
|
972
|
+
"noticeList": "BiQ1zG_noticeList",
|
|
973
|
+
"failClear": "BiQ1zG_failClear",
|
|
974
|
+
"aboutModal": "BiQ1zG_aboutModal",
|
|
975
|
+
"detailStatusRunning": "BiQ1zG_detailStatusRunning",
|
|
976
|
+
"failedCopyHint": "BiQ1zG_failedCopyHint",
|
|
977
|
+
"queueRowTrack": "BiQ1zG_queueRowTrack",
|
|
978
|
+
"uninstallConfirm": "BiQ1zG_uninstallConfirm",
|
|
979
|
+
"resultCheckIcon": "BiQ1zG_resultCheckIcon",
|
|
980
|
+
"failPrepareHint": "BiQ1zG_failPrepareHint",
|
|
1023
981
|
"failMisjudgeLink": "BiQ1zG_failMisjudgeLink",
|
|
982
|
+
"cliOnlyHint": "BiQ1zG_cliOnlyHint",
|
|
983
|
+
"toastFail": "BiQ1zG_toastFail",
|
|
1024
984
|
"detailUpdateHint": "BiQ1zG_detailUpdateHint",
|
|
1025
|
-
"
|
|
985
|
+
"detailLink": "BiQ1zG_detailLink",
|
|
986
|
+
"detailLabel": "BiQ1zG_detailLabel",
|
|
987
|
+
"progressHead": "BiQ1zG_progressHead",
|
|
988
|
+
"dangerConfirm": "BiQ1zG_dangerConfirm",
|
|
989
|
+
"detailPathText": "BiQ1zG_detailPathText",
|
|
990
|
+
"modalTitleQueued": "BiQ1zG_modalTitleQueued",
|
|
991
|
+
"modalBody": "BiQ1zG_modalBody",
|
|
992
|
+
"overlay": "BiQ1zG_overlay",
|
|
993
|
+
"resultRestarting": "BiQ1zG_resultRestarting",
|
|
994
|
+
"failCopy": "BiQ1zG_failCopy",
|
|
995
|
+
"progressText": "BiQ1zG_progressText",
|
|
996
|
+
"queuedHint": "BiQ1zG_queuedHint",
|
|
997
|
+
"detailValue": "BiQ1zG_detailValue",
|
|
998
|
+
"modalRow": "BiQ1zG_modalRow",
|
|
999
|
+
"noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
|
|
1000
|
+
"queueSectionTitle": "BiQ1zG_queueSectionTitle",
|
|
1001
|
+
"detailStatusText": "BiQ1zG_detailStatusText",
|
|
1002
|
+
"progressFill": "BiQ1zG_progressFill",
|
|
1003
|
+
"bundleDeselectedHint": "BiQ1zG_bundleDeselectedHint",
|
|
1004
|
+
"toastIn": "BiQ1zG_toastIn",
|
|
1005
|
+
"modalIn": "BiQ1zG_modalIn",
|
|
1006
|
+
"modalCloseIcon": "BiQ1zG_modalCloseIcon",
|
|
1007
|
+
"errorCopySoft": "BiQ1zG_errorCopySoft",
|
|
1008
|
+
"errorHint": "BiQ1zG_errorHint",
|
|
1009
|
+
"failReason": "BiQ1zG_failReason",
|
|
1010
|
+
"errorTitle": "BiQ1zG_errorTitle",
|
|
1011
|
+
"modalWide": "BiQ1zG_modalWide",
|
|
1012
|
+
"modalCopy": "BiQ1zG_modalCopy",
|
|
1013
|
+
"modalCancel": "BiQ1zG_modalCancel",
|
|
1014
|
+
"detailGrid": "BiQ1zG_detailGrid",
|
|
1015
|
+
"queueRow": "BiQ1zG_queueRow",
|
|
1016
|
+
"logModal": "BiQ1zG_logModal",
|
|
1017
|
+
"result": "BiQ1zG_result",
|
|
1018
|
+
"detailPathBtn": "BiQ1zG_detailPathBtn",
|
|
1019
|
+
"aboutMeta": "BiQ1zG_aboutMeta",
|
|
1020
|
+
"confirmIconWrap": "BiQ1zG_confirmIconWrap",
|
|
1021
|
+
"progress": "BiQ1zG_progress",
|
|
1022
|
+
"confirmIconDanger": "BiQ1zG_confirmIconDanger",
|
|
1023
|
+
"noticeTextOk": "BiQ1zG_noticeTextOk",
|
|
1024
|
+
"queueRowStatus": "BiQ1zG_queueRowStatus",
|
|
1025
|
+
"failRow": "BiQ1zG_failRow",
|
|
1026
|
+
"modal": "BiQ1zG_modal",
|
|
1027
|
+
"failRepoLabel": "BiQ1zG_failRepoLabel",
|
|
1028
|
+
"restartNowWarning": "BiQ1zG_restartNowWarning",
|
|
1029
|
+
"failNetworkTarget": "BiQ1zG_failNetworkTarget",
|
|
1030
|
+
"modalActions": "BiQ1zG_modalActions",
|
|
1031
|
+
"failRepoUrl": "BiQ1zG_failRepoUrl",
|
|
1032
|
+
"trustHint": "BiQ1zG_trustHint",
|
|
1033
|
+
"failEmpty": "BiQ1zG_failEmpty",
|
|
1034
|
+
"modalCmdCopy": "BiQ1zG_modalCmdCopy"
|
|
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.
|
|
1124
|
+
const PLUGIN_VERSION = "2.0.6";
|
|
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
|
-
|
|
1386
|
-
|
|
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
|
|
@@ -1460,6 +1470,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1460
1470
|
}
|
|
1461
1471
|
//#endregion
|
|
1462
1472
|
//#region src/client/logic/installed.ts
|
|
1473
|
+
/** 本地路径安装(file:/link:/绝对或相对路径):身份在本机,不能按 npm 包名认领目录条目。 */
|
|
1474
|
+
function isLocalSpec(value) {
|
|
1475
|
+
const v = value.trim();
|
|
1476
|
+
return /^(file|link):/i.test(v) || v.startsWith(".") || v.startsWith("/") || /^[A-Za-z]:[\\/]/.test(v);
|
|
1477
|
+
}
|
|
1463
1478
|
/** 安装时记录的目录信号(按仓库小写 key 查表)。 */
|
|
1464
1479
|
function signalOf(repo, versions) {
|
|
1465
1480
|
if (!repo) return null;
|
|
@@ -1473,6 +1488,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1473
1488
|
for (const [name, spec] of Object.entries(installed)) if (repoFromInstallTarget(spec).toLowerCase() === needle) return name;
|
|
1474
1489
|
const pkg = ((plugin.source?.npmPackage || versions[repo.toLowerCase()]?.npmPackage) ?? "").toLowerCase();
|
|
1475
1490
|
if (pkg) for (const [name, spec] of Object.entries(installed)) {
|
|
1491
|
+
if (isLocalSpec(spec)) continue;
|
|
1476
1492
|
if (isRepoLike(repoFromInstallTarget(spec))) continue;
|
|
1477
1493
|
if (name.toLowerCase() === pkg) return name;
|
|
1478
1494
|
}
|
|
@@ -1652,10 +1668,12 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1652
1668
|
* 界面停在「正在加载插件数据…」假死 —— 超时自动重拉,最多自动重试 2 次后转失败态;
|
|
1653
1669
|
* 用户手动刷新(reload)时清零重新计数。 */
|
|
1654
1670
|
const loadRetriesRef = (0, react.useRef)(0);
|
|
1655
|
-
/** 目录加载超时阈值:超过即判定挂起,强制刷新一次(服务端代理 curl 上限
|
|
1656
|
-
const LOAD_TIMEOUT_MS =
|
|
1657
|
-
/** 挂起后最多自动重试次数:避免代理持续不通时无限循环刷新(每次重试仍
|
|
1671
|
+
/** 目录加载超时阈值:超过即判定挂起,强制刷新一次(服务端代理 curl 上限 60s,客户端 30s 先兜底) */
|
|
1672
|
+
const LOAD_TIMEOUT_MS = 3e4;
|
|
1673
|
+
/** 挂起后最多自动重试次数:避免代理持续不通时无限循环刷新(每次重试仍 30s,2 次后转失败界面可手动重试) */
|
|
1658
1674
|
const MAX_LOAD_RETRIES = 2;
|
|
1675
|
+
/** 本次 reload 是否强制回源(跳过服务端 1 小时缓存):由「强制刷新」置位,读取后立即复位 */
|
|
1676
|
+
const forceRefreshRef = (0, react.useRef)(false);
|
|
1659
1677
|
/** 点击排序按钮:同一按钮切换正/倒序,新按钮用默认方向 */
|
|
1660
1678
|
function toggleSort(key) {
|
|
1661
1679
|
if (key === sort) setSortDir((d) => d === "asc" ? "desc" : "asc");
|
|
@@ -1694,11 +1712,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1694
1712
|
let cancelled = false;
|
|
1695
1713
|
let settled = false;
|
|
1696
1714
|
const controller = new AbortController();
|
|
1715
|
+
const refresh = forceRefreshRef.current;
|
|
1716
|
+
forceRefreshRef.current = false;
|
|
1697
1717
|
setPlugins(null);
|
|
1698
1718
|
setHubPlugin(null);
|
|
1699
1719
|
setStats(null);
|
|
1700
1720
|
setFailed(false);
|
|
1701
|
-
const load = () => Promise.all([fetchCatalog(lang, controller.signal), fetchStats(controller.signal)]);
|
|
1721
|
+
const load = () => Promise.all([fetchCatalog(lang, controller.signal, refresh), fetchStats(controller.signal, refresh)]);
|
|
1702
1722
|
load().then(([list, stats]) => {
|
|
1703
1723
|
if (cancelled) return;
|
|
1704
1724
|
settled = true;
|
|
@@ -1861,7 +1881,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1861
1881
|
* registry 真实发布时间下发(同源),据此判断最准。门槛命中要单列成 `pending` 而不是
|
|
1862
1882
|
* 落回「无更新」——回落会让弹窗在本机版本落后时谎称「已是最新」。
|
|
1863
1883
|
*/
|
|
1864
|
-
const hubCurrentVersion = "2.0.
|
|
1884
|
+
const hubCurrentVersion = "2.0.6";
|
|
1865
1885
|
const hubUpdateState = (() => {
|
|
1866
1886
|
if (!hubUpdateInfo) return "none";
|
|
1867
1887
|
if (hubUpdateInfo.version === hubCurrentVersion) return "latest";
|
|
@@ -1912,6 +1932,12 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1912
1932
|
loadRetriesRef.current = 0;
|
|
1913
1933
|
setReloadKey((k) => k + 1);
|
|
1914
1934
|
},
|
|
1935
|
+
/** 强制刷新:跳过服务端 1 小时缓存直接回源,成功后覆盖缓存(失败仍回退旧缓存) */
|
|
1936
|
+
forceReload: () => {
|
|
1937
|
+
loadRetriesRef.current = 0;
|
|
1938
|
+
forceRefreshRef.current = true;
|
|
1939
|
+
setReloadKey((k) => k + 1);
|
|
1940
|
+
},
|
|
1915
1941
|
installed,
|
|
1916
1942
|
installedItems,
|
|
1917
1943
|
installedName,
|
|
@@ -2065,6 +2091,12 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2065
2091
|
function missingTarballIntegrity(message) {
|
|
2066
2092
|
return /\bERR_PNPM_MISSING_TARBALL_INTEGRITY\b/.test(message);
|
|
2067
2093
|
}
|
|
2094
|
+
/** GitHub 分支 tarball 内容变了、锁文件里还是旧校验和(ERR_PNPM_TARBALL_INTEGRITY)。
|
|
2095
|
+
* \b 保证不会命中 ERR_PNPM_MISSING_TARBALL_INTEGRITY:前者是有校验值但对不上,
|
|
2096
|
+
* 后者是锁文件里压根没有校验值。 */
|
|
2097
|
+
function mismatchedTarballIntegrity(message) {
|
|
2098
|
+
return /\bERR_PNPM_TARBALL_INTEGRITY\b/.test(message);
|
|
2099
|
+
}
|
|
2068
2100
|
/** pnpm 拒收「刚发布」包时,报错里带着发布时间;这里从报错文本算出「发布满 24h」的可重试时刻(UTC,分钟精度)。 */
|
|
2069
2101
|
function releaseAgeRetryAfter(message) {
|
|
2070
2102
|
const match = /published at (\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z)/.exec(message);
|
|
@@ -2079,6 +2111,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2079
2111
|
* 避免出现「预计可重试时间:」后接空值的残缺句子。
|
|
2080
2112
|
*/
|
|
2081
2113
|
function pnpmPolicyHintOf(message) {
|
|
2114
|
+
if (mismatchedTarballIntegrity(message)) return "failPnpmTarballMismatchHint";
|
|
2082
2115
|
if (missingTarballIntegrity(message)) return "failPnpmTarballIntegrityHint";
|
|
2083
2116
|
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
2117
|
return "failPnpmPolicyHint";
|
|
@@ -2102,7 +2135,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2102
2135
|
if (/ERR_PNPM_UNEXPECTED_(VIRTUAL_)?STORE|Unexpected (virtual )?store location/i.test(message)) return "pnpmStore";
|
|
2103
2136
|
if (/ERR_PNPM_ADDING_TO_ROOT|add the dependency to the workspace root/i.test(message)) return "pnpmWorkspace";
|
|
2104
2137
|
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";
|
|
2138
|
+
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
2139
|
if (/ERR_PNPM_UNUSED_PATCH|patches were not used/i.test(message)) return "pnpmUnusedPatch";
|
|
2107
2140
|
if (/os error 32|EBUSY|resource busy or locked|being used by another process/i.test(message)) return "fileLocked";
|
|
2108
2141
|
if (/os error 5\b|ERROR_ACCESS_DENIED|\bEPERM\b|\bEACCES\b|access is denied/i.test(message)) return "accessDenied";
|
|
@@ -2676,7 +2709,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2676
2709
|
desc: q.desc,
|
|
2677
2710
|
version: q.version
|
|
2678
2711
|
});
|
|
2679
|
-
onInstallDone(modalTaskRef.current === q.id, q.repo, q.needsRestart, q.action === "update", q.needsReload ?? false);
|
|
2712
|
+
onInstallDone(modalTaskRef.current === q.id, q.repo, q.needsRestart, q.action === "update", q.needsReload ?? false, q.bundleDeselected === true);
|
|
2680
2713
|
}
|
|
2681
2714
|
} else {
|
|
2682
2715
|
const rawDetail = lines.length > 0 ? [...lines].reverse().join("\n") : q.kind === "uninstall" ? t("uninstallFail") : t("installFail");
|
|
@@ -2717,6 +2750,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2717
2750
|
let status = "failed";
|
|
2718
2751
|
let lines = [];
|
|
2719
2752
|
let attempts;
|
|
2753
|
+
let bundleDeselected;
|
|
2720
2754
|
try {
|
|
2721
2755
|
const res = await fetch(`/dsh-plugin-hub/status?task=${q.id}`, { cache: "no-store" });
|
|
2722
2756
|
if (res.ok) {
|
|
@@ -2725,13 +2759,15 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2725
2759
|
status = task.status ?? "failed";
|
|
2726
2760
|
lines = task.lines ?? [];
|
|
2727
2761
|
attempts = Array.isArray(task.attempts) ? task.attempts : void 0;
|
|
2762
|
+
bundleDeselected = task.bundleDeselected === true ? true : void 0;
|
|
2728
2763
|
const needsRestart = typeof task.needsRestart === "boolean" ? task.needsRestart : q.needsRestart;
|
|
2729
2764
|
const needsReload = typeof task.needsReload === "boolean" ? task.needsReload : q.needsReload ?? false;
|
|
2730
2765
|
if (status === "done") {
|
|
2731
2766
|
const settled = {
|
|
2732
2767
|
...q,
|
|
2733
2768
|
needsRestart,
|
|
2734
|
-
needsReload
|
|
2769
|
+
needsReload,
|
|
2770
|
+
bundleDeselected: bundleDeselected === true ? true : q.bundleDeselected
|
|
2735
2771
|
};
|
|
2736
2772
|
if (q.kind === "uninstall") settleDone(settled, lines);
|
|
2737
2773
|
else finishQueueTask(true, settled, lines);
|
|
@@ -2782,6 +2818,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2782
2818
|
lines: Array.isArray(a.lines) ? a.lines : prevTask?.lines ?? [],
|
|
2783
2819
|
attempts: Array.isArray(a.attempts) ? a.attempts : prevTask?.attempts ?? [],
|
|
2784
2820
|
needsRestart: typeof a.needsRestart === "boolean" ? a.needsRestart : prevTask?.needsRestart ?? true,
|
|
2821
|
+
bundleDeselected: a.bundleDeselected === true || prevTask?.bundleDeselected === true,
|
|
2785
2822
|
channel: a.installChannel === "npm" ? "npm" : prevTask?.channel
|
|
2786
2823
|
});
|
|
2787
2824
|
}
|
|
@@ -3590,7 +3627,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3590
3627
|
* 按钮(重启会中断进行中的任务,故仍需用户确认),关闭即放弃;
|
|
3591
3628
|
* - 其余(含 needsReload=true 的「已热挂载、仅剩客户端 UI」)→ 仅「完成」按钮:关闭结果弹窗时
|
|
3592
3629
|
* 上层自动刷新页面让插件生效,不再给「稍后/立即刷新」手动选择。 */
|
|
3593
|
-
function ResultView({ title, desc, t, restarting, needsRestart, needsReload, onRestart, onClose }) {
|
|
3630
|
+
function ResultView({ title, desc, t, restarting, needsRestart, needsReload, bundleDeselected, onRestart, onClose }) {
|
|
3594
3631
|
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
3632
|
className: Modal_module_css_default.resultCheckIcon,
|
|
3596
3633
|
viewBox: "0 0 16 16",
|
|
@@ -3604,7 +3641,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3604
3641
|
strokeWidth: 2,
|
|
3605
3642
|
strokeLinecap: "round",
|
|
3606
3643
|
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", {
|
|
3644
|
+
}))), (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
3645
|
className: Modal_module_css_default.restartNowWarning,
|
|
3609
3646
|
onClick: onRestart,
|
|
3610
3647
|
disabled: restarting
|
|
@@ -3619,7 +3656,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3619
3656
|
* 目录插件与命令行安装(customTarget 模式)共用同一套确认/进度/结果流程。
|
|
3620
3657
|
*/
|
|
3621
3658
|
function InstallModal(props) {
|
|
3622
|
-
const { plugin, customTarget, globalNpm, done, task, t, langPath, restarting, submitting, update, cliOnly, needsRestart, needsReload, onClose, onCopy, onInstall, onRestart } = props;
|
|
3659
|
+
const { plugin, customTarget, globalNpm, done, task, t, langPath, restarting, submitting, update, cliOnly, needsRestart, needsReload, bundleDeselected, onClose, onCopy, onInstall, onRestart } = props;
|
|
3623
3660
|
const busy = submitting || task !== null && (task.status === "pending" || task.status === "running");
|
|
3624
3661
|
const name = customTarget ?? (globalNpm !== void 0 && globalNpm.length > 0 ? globalNpm.join(" ") : void 0) ?? plugin?.displayName ?? plugin?.slug ?? "";
|
|
3625
3662
|
const busyTitle = (label) => langPath === "zh/" ? `${name} 插件${label}` : `${label} ${name}`;
|
|
@@ -3644,6 +3681,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3644
3681
|
restarting,
|
|
3645
3682
|
needsRestart,
|
|
3646
3683
|
needsReload,
|
|
3684
|
+
bundleDeselected,
|
|
3647
3685
|
onRestart,
|
|
3648
3686
|
onClose
|
|
3649
3687
|
}) : (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 +4692,40 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4654
4692
|
css: css$9
|
|
4655
4693
|
});
|
|
4656
4694
|
var List_module_css_default = {
|
|
4657
|
-
"cardHead": "_3XaZHa_cardHead",
|
|
4658
|
-
"date": "_3XaZHa_date",
|
|
4659
|
-
"versionBadge": "_3XaZHa_versionBadge",
|
|
4660
|
-
"desc": "_3XaZHa_desc",
|
|
4661
4695
|
"diagBtn": "_3XaZHa_diagBtn",
|
|
4696
|
+
"installBtnInstalled": "_3XaZHa_installBtnInstalled",
|
|
4697
|
+
"stateTitle": "_3XaZHa_stateTitle",
|
|
4698
|
+
"card": "_3XaZHa_card",
|
|
4699
|
+
"date": "_3XaZHa_date",
|
|
4662
4700
|
"fork": "_3XaZHa_fork",
|
|
4663
|
-
"cardTitle": "_3XaZHa_cardTitle",
|
|
4664
|
-
"moreSentinel": "_3XaZHa_moreSentinel",
|
|
4665
|
-
"topic": "_3XaZHa_topic",
|
|
4666
|
-
"stateDesc": "_3XaZHa_stateDesc",
|
|
4667
|
-
"verified": "_3XaZHa_verified",
|
|
4668
4701
|
"footer": "_3XaZHa_footer",
|
|
4669
|
-
"
|
|
4702
|
+
"topics": "_3XaZHa_topics",
|
|
4670
4703
|
"body": "_3XaZHa_body",
|
|
4671
|
-
"updateBadge": "_3XaZHa_updateBadge",
|
|
4672
|
-
"star": "_3XaZHa_star",
|
|
4673
|
-
"installBtn": "_3XaZHa_installBtn",
|
|
4674
|
-
"actions": "_3XaZHa_actions",
|
|
4675
|
-
"stateTitle": "_3XaZHa_stateTitle",
|
|
4676
|
-
"installBtnCopied": "_3XaZHa_installBtnCopied",
|
|
4677
|
-
"installBtnUpdate": "_3XaZHa_installBtnUpdate",
|
|
4678
|
-
"installBtnInstalled": "_3XaZHa_installBtnInstalled",
|
|
4679
|
-
"card": "_3XaZHa_card",
|
|
4680
4704
|
"categoryBadge": "_3XaZHa_categoryBadge",
|
|
4681
|
-
"
|
|
4705
|
+
"verified": "_3XaZHa_verified",
|
|
4706
|
+
"star": "_3XaZHa_star",
|
|
4707
|
+
"cardHead": "_3XaZHa_cardHead",
|
|
4708
|
+
"desc": "_3XaZHa_desc",
|
|
4709
|
+
"topic": "_3XaZHa_topic",
|
|
4710
|
+
"list": "_3XaZHa_list",
|
|
4711
|
+
"actions": "_3XaZHa_actions",
|
|
4712
|
+
"updateBadge": "_3XaZHa_updateBadge",
|
|
4713
|
+
"moreSentinel": "_3XaZHa_moreSentinel",
|
|
4714
|
+
"cardTitle": "_3XaZHa_cardTitle",
|
|
4682
4715
|
"cardSide": "_3XaZHa_cardSide",
|
|
4683
4716
|
"footLink": "_3XaZHa_footLink",
|
|
4684
|
-
"
|
|
4685
|
-
"topics": "_3XaZHa_topics",
|
|
4686
|
-
"retryBtn": "_3XaZHa_retryBtn",
|
|
4717
|
+
"installBtn": "_3XaZHa_installBtn",
|
|
4687
4718
|
"stats": "_3XaZHa_stats",
|
|
4688
|
-
"list": "_3XaZHa_list",
|
|
4689
4719
|
"state": "_3XaZHa_state",
|
|
4690
|
-
"
|
|
4720
|
+
"stateActions": "_3XaZHa_stateActions",
|
|
4721
|
+
"installBtnCopied": "_3XaZHa_installBtnCopied",
|
|
4722
|
+
"installBtnUpdate": "_3XaZHa_installBtnUpdate",
|
|
4723
|
+
"retryBtn": "_3XaZHa_retryBtn",
|
|
4724
|
+
"versionBadge": "_3XaZHa_versionBadge",
|
|
4725
|
+
"cardMain": "_3XaZHa_cardMain",
|
|
4726
|
+
"uninstallBtn": "_3XaZHa_uninstallBtn",
|
|
4727
|
+
"detailBtn": "_3XaZHa_detailBtn",
|
|
4728
|
+
"stateDesc": "_3XaZHa_stateDesc"
|
|
4691
4729
|
};
|
|
4692
4730
|
//#endregion
|
|
4693
4731
|
//#region src/client/hooks/useIncrementalList.ts
|
|
@@ -4785,7 +4823,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4785
4823
|
* 目录列表:承载加载/失败/空三态、插件卡片与计数页脚的滚动容器。分类或安装状态
|
|
4786
4824
|
* 筛选变化时重置滚动位置,避免替换后的内容被误当成「没变化」。
|
|
4787
4825
|
*/
|
|
4788
|
-
function CatalogList({ plugins, failed, visible, total, t, langPath, reload, category, copied, installedName, installedVersion, hasUpdate, langKey, onInstall, onUninstall, hasProxy, onOpenDiagnostics }) {
|
|
4826
|
+
function CatalogList({ plugins, failed, visible, total, t, langPath, reload, forceReload, category, copied, installedName, installedVersion, hasUpdate, langKey, onInstall, onUninstall, hasProxy, onOpenDiagnostics }) {
|
|
4789
4827
|
/** 列表滚动容器:分类/搜索切换后列表内容替换但 scrollTop 保留,会让用户误以为列表没更新,需重置回顶部 */
|
|
4790
4828
|
const listRef = (0, react.useRef)(null);
|
|
4791
4829
|
/** 增量渲染:全量目录太大(4400+),只渲染首批,滚动接近底部时自动追加下一批 */
|
|
@@ -4800,6 +4838,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4800
4838
|
className: List_module_css_default.retryBtn,
|
|
4801
4839
|
onClick: () => reload()
|
|
4802
4840
|
}, t("retry")), (0, react.createElement)("button", {
|
|
4841
|
+
className: List_module_css_default.retryBtn,
|
|
4842
|
+
onClick: () => forceReload(),
|
|
4843
|
+
title: t("forceReloadHint")
|
|
4844
|
+
}, t("forceReload")), (0, react.createElement)("button", {
|
|
4803
4845
|
className: List_module_css_default.diagBtn,
|
|
4804
4846
|
onClick: onOpenDiagnostics
|
|
4805
4847
|
}, 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 +4900,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4858
4900
|
t,
|
|
4859
4901
|
langPath,
|
|
4860
4902
|
reload: catalog.reload,
|
|
4903
|
+
forceReload: catalog.forceReload,
|
|
4861
4904
|
category: catalog.category,
|
|
4862
4905
|
copied,
|
|
4863
4906
|
installedName: catalog.installedName,
|
|
@@ -4872,7 +4915,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4872
4915
|
}
|
|
4873
4916
|
//#endregion
|
|
4874
4917
|
//#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}";
|
|
4918
|
+
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
4919
|
const tagId$8 = "dsh-plugin/SectionTabs.module.css";
|
|
4877
4920
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$8) + "]") === null) {
|
|
4878
4921
|
const tag = document.createElement("style");
|
|
@@ -4887,15 +4930,16 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4887
4930
|
css: css$8
|
|
4888
4931
|
});
|
|
4889
4932
|
var SectionTabs_module_css_default = {
|
|
4890
|
-
"noticeBtn": "_7tvizq_noticeBtn",
|
|
4891
|
-
"tabCountActive": "_7tvizq_tabCountActive",
|
|
4892
|
-
"tabIcon": "_7tvizq_tabIcon",
|
|
4893
|
-
"tabActive": "_7tvizq_tabActive",
|
|
4894
|
-
"noticeIcon": "_7tvizq_noticeIcon",
|
|
4895
|
-
"tab": "_7tvizq_tab",
|
|
4896
4933
|
"tabCount": "_7tvizq_tabCount",
|
|
4934
|
+
"tab": "_7tvizq_tab",
|
|
4935
|
+
"noticeIcon": "_7tvizq_noticeIcon",
|
|
4936
|
+
"tabLabel": "_7tvizq_tabLabel",
|
|
4937
|
+
"tabCountActive": "_7tvizq_tabCountActive",
|
|
4938
|
+
"noticeBtn": "_7tvizq_noticeBtn",
|
|
4897
4939
|
"root": "_7tvizq_root",
|
|
4898
|
-
"
|
|
4940
|
+
"tabIcon": "_7tvizq_tabIcon",
|
|
4941
|
+
"noticeCount": "_7tvizq_noticeCount",
|
|
4942
|
+
"tabActive": "_7tvizq_tabActive"
|
|
4899
4943
|
};
|
|
4900
4944
|
//#endregion
|
|
4901
4945
|
//#region src/client/components/layout/SectionTabs.tsx
|
|
@@ -4943,9 +4987,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4943
4987
|
role: "tab",
|
|
4944
4988
|
"aria-selected": view === id,
|
|
4945
4989
|
title: t(hintKey),
|
|
4990
|
+
"aria-label": t(labelKey),
|
|
4946
4991
|
className: view === id ? SectionTabs_module_css_default.tabActive : SectionTabs_module_css_default.tab,
|
|
4947
4992
|
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", {
|
|
4993
|
+
}, (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
4994
|
type: "button",
|
|
4950
4995
|
className: SectionTabs_module_css_default.noticeBtn,
|
|
4951
4996
|
onClick: onOpenNotifications,
|
|
@@ -4970,42 +5015,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4970
5015
|
css: css$7
|
|
4971
5016
|
});
|
|
4972
5017
|
var InstalledView_module_css_default = {
|
|
4973
|
-
"
|
|
4974
|
-
"
|
|
4975
|
-
"rowDetail": "_1nXeGW_rowDetail",
|
|
4976
|
-
"searchInput": "_1nXeGW_searchInput",
|
|
5018
|
+
"rowTitleLine": "_1nXeGW_rowTitleLine",
|
|
5019
|
+
"segBtn": "_1nXeGW_segBtn",
|
|
4977
5020
|
"statusInactive": "_1nXeGW_statusInactive",
|
|
4978
|
-
"rowSourceTag": "_1nXeGW_rowSourceTag",
|
|
4979
|
-
"exampleRow": "_1nXeGW_exampleRow",
|
|
4980
|
-
"rowUninstall": "_1nXeGW_rowUninstall",
|
|
4981
5021
|
"rowRepo": "_1nXeGW_rowRepo",
|
|
4982
|
-
"
|
|
4983
|
-
"
|
|
4984
|
-
"
|
|
4985
|
-
"statusPending": "_1nXeGW_statusPending",
|
|
5022
|
+
"rowUninstall": "_1nXeGW_rowUninstall",
|
|
5023
|
+
"root": "_1nXeGW_root",
|
|
5024
|
+
"rowDetail": "_1nXeGW_rowDetail",
|
|
4986
5025
|
"toolbar": "_1nXeGW_toolbar",
|
|
5026
|
+
"rowRestart": "_1nXeGW_rowRestart",
|
|
5027
|
+
"emptyTitle": "_1nXeGW_emptyTitle",
|
|
4987
5028
|
"rowCategory": "_1nXeGW_rowCategory",
|
|
5029
|
+
"searchInput": "_1nXeGW_searchInput",
|
|
5030
|
+
"segLabel": "_1nXeGW_segLabel",
|
|
5031
|
+
"rowUpdate": "_1nXeGW_rowUpdate",
|
|
5032
|
+
"rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
|
|
5033
|
+
"updateBadge": "_1nXeGW_updateBadge",
|
|
5034
|
+
"statusPending": "_1nXeGW_statusPending",
|
|
5035
|
+
"exampleBadge": "_1nXeGW_exampleBadge",
|
|
5036
|
+
"rowDesc": "_1nXeGW_rowDesc",
|
|
5037
|
+
"rowMeta": "_1nXeGW_rowMeta",
|
|
4988
5038
|
"segRow": "_1nXeGW_segRow",
|
|
4989
|
-
"list": "_1nXeGW_list",
|
|
4990
|
-
"segBtn": "_1nXeGW_segBtn",
|
|
4991
|
-
"row": "_1nXeGW_row",
|
|
4992
5039
|
"rowTitle": "_1nXeGW_rowTitle",
|
|
4993
|
-
"
|
|
4994
|
-
"
|
|
4995
|
-
"
|
|
5040
|
+
"searchWrap": "_1nXeGW_searchWrap",
|
|
5041
|
+
"segGroup": "_1nXeGW_segGroup",
|
|
5042
|
+
"segBtnActive": "_1nXeGW_segBtnActive",
|
|
4996
5043
|
"empty": "_1nXeGW_empty",
|
|
4997
|
-
"rowDesc": "_1nXeGW_rowDesc",
|
|
4998
|
-
"emptyDesc": "_1nXeGW_emptyDesc",
|
|
4999
|
-
"segLabel": "_1nXeGW_segLabel",
|
|
5000
|
-
"root": "_1nXeGW_root",
|
|
5001
|
-
"updateBadge": "_1nXeGW_updateBadge",
|
|
5002
5044
|
"statusDot": "_1nXeGW_statusDot",
|
|
5003
|
-
"rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
|
|
5004
5045
|
"rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
|
|
5005
|
-
"
|
|
5006
|
-
"
|
|
5007
|
-
"
|
|
5008
|
-
"
|
|
5046
|
+
"rowSourceTag": "_1nXeGW_rowSourceTag",
|
|
5047
|
+
"emptyDesc": "_1nXeGW_emptyDesc",
|
|
5048
|
+
"list": "_1nXeGW_list",
|
|
5049
|
+
"row": "_1nXeGW_row",
|
|
5050
|
+
"versionBadge": "_1nXeGW_versionBadge",
|
|
5051
|
+
"rowActions": "_1nXeGW_rowActions",
|
|
5052
|
+
"rowMain": "_1nXeGW_rowMain",
|
|
5053
|
+
"exampleRow": "_1nXeGW_exampleRow"
|
|
5009
5054
|
};
|
|
5010
5055
|
//#endregion
|
|
5011
5056
|
//#region src/client/components/views/InstalledView.tsx
|
|
@@ -5249,27 +5294,27 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5249
5294
|
css: css$6
|
|
5250
5295
|
});
|
|
5251
5296
|
var CustomInstallView_module_css_default = {
|
|
5252
|
-
"installBtn": "zISxCG_installBtn",
|
|
5253
|
-
"installError": "zISxCG_installError",
|
|
5254
|
-
"helpLine": "zISxCG_helpLine",
|
|
5255
|
-
"installCardHead": "zISxCG_installCardHead",
|
|
5256
|
-
"installInput": "zISxCG_installInput",
|
|
5257
|
-
"helpBody": "zISxCG_helpBody",
|
|
5258
|
-
"installExample": "zISxCG_installExample",
|
|
5259
|
-
"installInputError": "zISxCG_installInputError",
|
|
5260
5297
|
"helpCmd": "zISxCG_helpCmd",
|
|
5261
|
-
"
|
|
5298
|
+
"installCard": "zISxCG_installCard",
|
|
5299
|
+
"channelOffBtn": "zISxCG_channelOffBtn",
|
|
5300
|
+
"installError": "zISxCG_installError",
|
|
5301
|
+
"installCardDisabled": "zISxCG_installCardDisabled",
|
|
5262
5302
|
"root": "zISxCG_root",
|
|
5263
|
-
"desc": "zISxCG_desc",
|
|
5264
|
-
"installLabel": "zISxCG_installLabel",
|
|
5265
5303
|
"installCards": "zISxCG_installCards",
|
|
5266
|
-
"
|
|
5267
|
-
"
|
|
5304
|
+
"installInputError": "zISxCG_installInputError",
|
|
5305
|
+
"desc": "zISxCG_desc",
|
|
5306
|
+
"installHelpBtn": "zISxCG_installHelpBtn",
|
|
5307
|
+
"installBtn": "zISxCG_installBtn",
|
|
5268
5308
|
"channelOffText": "zISxCG_channelOffText",
|
|
5269
|
-
"
|
|
5270
|
-
"installCard": "zISxCG_installCard",
|
|
5309
|
+
"installExample": "zISxCG_installExample",
|
|
5271
5310
|
"helpNote": "zISxCG_helpNote",
|
|
5272
|
-
"
|
|
5311
|
+
"installRow": "zISxCG_installRow",
|
|
5312
|
+
"installCardHead": "zISxCG_installCardHead",
|
|
5313
|
+
"installInput": "zISxCG_installInput",
|
|
5314
|
+
"helpBody": "zISxCG_helpBody",
|
|
5315
|
+
"helpLine": "zISxCG_helpLine",
|
|
5316
|
+
"channelOff": "zISxCG_channelOff",
|
|
5317
|
+
"installLabel": "zISxCG_installLabel"
|
|
5273
5318
|
};
|
|
5274
5319
|
//#endregion
|
|
5275
5320
|
//#region src/client/components/views/CustomInstallView.tsx
|
|
@@ -5425,30 +5470,30 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5425
5470
|
css: css$5
|
|
5426
5471
|
});
|
|
5427
5472
|
var SettingsView_module_css_default = {
|
|
5428
|
-
"
|
|
5473
|
+
"settingRowStack": "_506LLG_settingRowStack",
|
|
5474
|
+
"navItemActive": "_506LLG_navItemActive",
|
|
5429
5475
|
"settingLabel": "_506LLG_settingLabel",
|
|
5430
|
-
"settingRow": "_506LLG_settingRow",
|
|
5431
|
-
"proxyHintFail": "_506LLG_proxyHintFail",
|
|
5432
|
-
"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",
|
|
5439
|
-
"navIcon": "_506LLG_navIcon",
|
|
5440
|
-
"settingTitle": "_506LLG_settingTitle",
|
|
5441
5476
|
"proxyControl": "_506LLG_proxyControl",
|
|
5442
|
-
"navItemActive": "_506LLG_navItemActive",
|
|
5443
|
-
"sidebar": "_506LLG_sidebar",
|
|
5444
|
-
"resetBtn": "_506LLG_resetBtn",
|
|
5445
|
-
"proxyHint": "_506LLG_proxyHint",
|
|
5446
5477
|
"pageTitle": "_506LLG_pageTitle",
|
|
5478
|
+
"pageDesc": "_506LLG_pageDesc",
|
|
5447
5479
|
"card": "_506LLG_card",
|
|
5480
|
+
"settingTitle": "_506LLG_settingTitle",
|
|
5481
|
+
"settingRow": "_506LLG_settingRow",
|
|
5448
5482
|
"settingDesc": "_506LLG_settingDesc",
|
|
5483
|
+
"settingControl": "_506LLG_settingControl",
|
|
5484
|
+
"proxyHint": "_506LLG_proxyHint",
|
|
5485
|
+
"root": "_506LLG_root",
|
|
5486
|
+
"proxyHintOk": "_506LLG_proxyHintOk",
|
|
5487
|
+
"controlDropdown": "_506LLG_controlDropdown",
|
|
5488
|
+
"resetBtn": "_506LLG_resetBtn",
|
|
5489
|
+
"navIcon": "_506LLG_navIcon",
|
|
5490
|
+
"pageHeader": "_506LLG_pageHeader",
|
|
5491
|
+
"settingControlStack": "_506LLG_settingControlStack",
|
|
5492
|
+
"navItem": "_506LLG_navItem",
|
|
5449
5493
|
"textInput": "_506LLG_textInput",
|
|
5450
|
-
"
|
|
5451
|
-
"
|
|
5494
|
+
"sidebar": "_506LLG_sidebar",
|
|
5495
|
+
"proxyHintFail": "_506LLG_proxyHintFail",
|
|
5496
|
+
"content": "_506LLG_content"
|
|
5452
5497
|
};
|
|
5453
5498
|
//#endregion
|
|
5454
5499
|
//#region \0dsh-css:src/client/styles/Dropdown.module.css.mjs
|
|
@@ -5467,17 +5512,17 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5467
5512
|
css: css$4
|
|
5468
5513
|
});
|
|
5469
5514
|
var Dropdown_module_css_default = {
|
|
5515
|
+
"dropdownLabel": "B_Gxsq_dropdownLabel",
|
|
5516
|
+
"dropdownItem": "B_Gxsq_dropdownItem",
|
|
5517
|
+
"dropdownItemActive": "B_Gxsq_dropdownItemActive",
|
|
5518
|
+
"dropdownArrow": "B_Gxsq_dropdownArrow",
|
|
5470
5519
|
"dropdownCount": "B_Gxsq_dropdownCount",
|
|
5520
|
+
"dropdownPanel": "B_Gxsq_dropdownPanel",
|
|
5521
|
+
"dropdownBtn": "B_Gxsq_dropdownBtn",
|
|
5522
|
+
"dropdown": "B_Gxsq_dropdown",
|
|
5471
5523
|
"dropdownItemLabel": "B_Gxsq_dropdownItemLabel",
|
|
5472
5524
|
"dropdownCountActive": "B_Gxsq_dropdownCountActive",
|
|
5473
|
-
"dropdownArrow": "B_Gxsq_dropdownArrow",
|
|
5474
|
-
"dropdown": "B_Gxsq_dropdown",
|
|
5475
|
-
"dropdownPanel": "B_Gxsq_dropdownPanel",
|
|
5476
5525
|
"dropdownFill": "B_Gxsq_dropdownFill",
|
|
5477
|
-
"dropdownBtn": "B_Gxsq_dropdownBtn",
|
|
5478
|
-
"dropdownItem": "B_Gxsq_dropdownItem",
|
|
5479
|
-
"dropdownLabel": "B_Gxsq_dropdownLabel",
|
|
5480
|
-
"dropdownItemActive": "B_Gxsq_dropdownItemActive",
|
|
5481
5526
|
"dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen"
|
|
5482
5527
|
};
|
|
5483
5528
|
//#endregion
|
|
@@ -5497,9 +5542,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5497
5542
|
css: css$3
|
|
5498
5543
|
});
|
|
5499
5544
|
var Toggle_module_css_default = {
|
|
5545
|
+
"toggleOn": "k-cD4G_toggleOn",
|
|
5500
5546
|
"knob": "k-cD4G_knob",
|
|
5501
|
-
"toggle": "k-cD4G_toggle"
|
|
5502
|
-
"toggleOn": "k-cD4G_toggleOn"
|
|
5547
|
+
"toggle": "k-cD4G_toggle"
|
|
5503
5548
|
};
|
|
5504
5549
|
//#endregion
|
|
5505
5550
|
//#region src/client/components/ui/Toggle.tsx
|
|
@@ -5596,29 +5641,29 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5596
5641
|
css: css$2
|
|
5597
5642
|
});
|
|
5598
5643
|
var DiagnosticsView_module_css_default = {
|
|
5599
|
-
"
|
|
5600
|
-
"envRow": "k9eRya_envRow",
|
|
5601
|
-
"name": "k9eRya_name",
|
|
5644
|
+
"diagPulse": "k9eRya_diagPulse",
|
|
5602
5645
|
"envCopyBtn": "k9eRya_envCopyBtn",
|
|
5603
|
-
"display": "k9eRya_display",
|
|
5604
5646
|
"panel": "k9eRya_panel",
|
|
5605
|
-
"
|
|
5606
|
-
"badge": "k9eRya_badge",
|
|
5607
|
-
"row": "k9eRya_row",
|
|
5608
|
-
"summary": "k9eRya_summary",
|
|
5609
|
-
"head": "k9eRya_head",
|
|
5610
|
-
"envLabel": "k9eRya_envLabel",
|
|
5647
|
+
"envRow": "k9eRya_envRow",
|
|
5611
5648
|
"envDesc": "k9eRya_envDesc",
|
|
5649
|
+
"summaryRunning": "k9eRya_summaryRunning",
|
|
5650
|
+
"row": "k9eRya_row",
|
|
5651
|
+
"display": "k9eRya_display",
|
|
5612
5652
|
"headHint": "k9eRya_headHint",
|
|
5613
|
-
"
|
|
5653
|
+
"head": "k9eRya_head",
|
|
5614
5654
|
"envTitle": "k9eRya_envTitle",
|
|
5655
|
+
"badgeRunning": "k9eRya_badgeRunning",
|
|
5656
|
+
"runBtn": "k9eRya_runBtn",
|
|
5615
5657
|
"badgeOk": "k9eRya_badgeOk",
|
|
5616
|
-
"
|
|
5658
|
+
"badgeIdle": "k9eRya_badgeIdle",
|
|
5617
5659
|
"meta": "k9eRya_meta",
|
|
5618
|
-
"
|
|
5660
|
+
"envLabel": "k9eRya_envLabel",
|
|
5661
|
+
"summary": "k9eRya_summary",
|
|
5662
|
+
"badgeFail": "k9eRya_badgeFail",
|
|
5619
5663
|
"summaryFail": "k9eRya_summaryFail",
|
|
5620
|
-
"
|
|
5621
|
-
"
|
|
5664
|
+
"summaryOk": "k9eRya_summaryOk",
|
|
5665
|
+
"badge": "k9eRya_badge",
|
|
5666
|
+
"name": "k9eRya_name"
|
|
5622
5667
|
};
|
|
5623
5668
|
//#endregion
|
|
5624
5669
|
//#region src/client/components/views/DiagnosticsView.tsx
|
|
@@ -5793,57 +5838,57 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5793
5838
|
css: css$1
|
|
5794
5839
|
});
|
|
5795
5840
|
var LogsView_module_css_default = {
|
|
5796
|
-
"
|
|
5797
|
-
"clearBtn": "_3j77BW_clearBtn",
|
|
5798
|
-
"pathDialog": "_3j77BW_pathDialog",
|
|
5799
|
-
"panel": "_3j77BW_panel",
|
|
5800
|
-
"pathDialogReset": "_3j77BW_pathDialogReset",
|
|
5801
|
-
"previewRow": "_3j77BW_previewRow",
|
|
5802
|
-
"footCount": "_3j77BW_footCount",
|
|
5841
|
+
"catUpdate": "_3j77BW_catUpdate",
|
|
5803
5842
|
"headActions": "_3j77BW_headActions",
|
|
5804
|
-
"
|
|
5805
|
-
"badgeInfo": "_3j77BW_badgeInfo",
|
|
5806
|
-
"catDiagnostics": "_3j77BW_catDiagnostics",
|
|
5807
|
-
"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",
|
|
5843
|
+
"pathDialogRow": "_3j77BW_pathDialogRow",
|
|
5814
5844
|
"linkBtn": "_3j77BW_linkBtn",
|
|
5815
|
-
"
|
|
5816
|
-
"
|
|
5817
|
-
"
|
|
5845
|
+
"pathDialogReset": "_3j77BW_pathDialogReset",
|
|
5846
|
+
"catDiagnostics": "_3j77BW_catDiagnostics",
|
|
5847
|
+
"empty": "_3j77BW_empty",
|
|
5818
5848
|
"searchInput": "_3j77BW_searchInput",
|
|
5819
|
-
"
|
|
5849
|
+
"footActions": "_3j77BW_footActions",
|
|
5850
|
+
"badgeDebug": "_3j77BW_badgeDebug",
|
|
5851
|
+
"pathLabel": "_3j77BW_pathLabel",
|
|
5852
|
+
"clearBtn": "_3j77BW_clearBtn",
|
|
5853
|
+
"footFail": "_3j77BW_footFail",
|
|
5820
5854
|
"footPath": "_3j77BW_footPath",
|
|
5821
|
-
"
|
|
5855
|
+
"footCount": "_3j77BW_footCount",
|
|
5856
|
+
"btn": "_3j77BW_btn",
|
|
5857
|
+
"badgeError": "_3j77BW_badgeError",
|
|
5858
|
+
"catBadge": "_3j77BW_catBadge",
|
|
5859
|
+
"moreEnd": "_3j77BW_moreEnd",
|
|
5860
|
+
"catSettings": "_3j77BW_catSettings",
|
|
5822
5861
|
"filterChipActive": "_3j77BW_filterChipActive",
|
|
5823
|
-
"
|
|
5824
|
-
"
|
|
5825
|
-
"
|
|
5826
|
-
"badgeDebug": "_3j77BW_badgeDebug",
|
|
5862
|
+
"message": "_3j77BW_message",
|
|
5863
|
+
"pathDraft": "_3j77BW_pathDraft",
|
|
5864
|
+
"pathRow": "_3j77BW_pathRow",
|
|
5827
5865
|
"entry": "_3j77BW_entry",
|
|
5828
|
-
"
|
|
5829
|
-
"
|
|
5866
|
+
"catInstall": "_3j77BW_catInstall",
|
|
5867
|
+
"pathDialog": "_3j77BW_pathDialog",
|
|
5868
|
+
"search": "_3j77BW_search",
|
|
5869
|
+
"head": "_3j77BW_head",
|
|
5870
|
+
"logList": "_3j77BW_logList",
|
|
5871
|
+
"pathDialogDesc": "_3j77BW_pathDialogDesc",
|
|
5830
5872
|
"more": "_3j77BW_more",
|
|
5831
|
-
"
|
|
5832
|
-
"
|
|
5833
|
-
"
|
|
5873
|
+
"event": "_3j77BW_event",
|
|
5874
|
+
"panel": "_3j77BW_panel",
|
|
5875
|
+
"previewRow": "_3j77BW_previewRow",
|
|
5876
|
+
"pathText": "_3j77BW_pathText",
|
|
5877
|
+
"filterBar": "_3j77BW_filterBar",
|
|
5878
|
+
"filterChip": "_3j77BW_filterChip",
|
|
5879
|
+
"foot": "_3j77BW_foot",
|
|
5880
|
+
"badgeWarn": "_3j77BW_badgeWarn",
|
|
5834
5881
|
"pathDialogFoot": "_3j77BW_pathDialogFoot",
|
|
5882
|
+
"pathDialogHint": "_3j77BW_pathDialogHint",
|
|
5883
|
+
"badgeInfo": "_3j77BW_badgeInfo",
|
|
5884
|
+
"list": "_3j77BW_list",
|
|
5835
5885
|
"time": "_3j77BW_time",
|
|
5836
|
-
"filterChip": "_3j77BW_filterChip",
|
|
5837
|
-
"head": "_3j77BW_head",
|
|
5838
|
-
"pathText": "_3j77BW_pathText",
|
|
5839
|
-
"footFail": "_3j77BW_footFail",
|
|
5840
5886
|
"badgeSuccess": "_3j77BW_badgeSuccess",
|
|
5841
|
-
"
|
|
5842
|
-
"
|
|
5843
|
-
"
|
|
5844
|
-
"
|
|
5845
|
-
"
|
|
5846
|
-
"btn": "_3j77BW_btn"
|
|
5887
|
+
"catUninstall": "_3j77BW_catUninstall",
|
|
5888
|
+
"badge": "_3j77BW_badge",
|
|
5889
|
+
"actions": "_3j77BW_actions",
|
|
5890
|
+
"headHint": "_3j77BW_headHint",
|
|
5891
|
+
"catSystem": "_3j77BW_catSystem"
|
|
5847
5892
|
};
|
|
5848
5893
|
//#endregion
|
|
5849
5894
|
//#region src/client/components/modals/LogsModal.tsx
|
|
@@ -6707,6 +6752,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
6707
6752
|
/** 结果视图是否显示「关闭后自动刷新」说明:插件已热挂进运行中 loader(安装)、或卸载后
|
|
6708
6753
|
* 插件面板仍残留在当前页面(卸载)。关闭弹窗即整页刷新,不给手动刷新按钮。 */
|
|
6709
6754
|
const [installNeedsReload, setInstallNeedsReload] = (0, react.useState)(false);
|
|
6755
|
+
/** 市场自更新成功、但 profile 的 bundle 列表里已不含 dsh-plugin:结果页提示重新勾选 */
|
|
6756
|
+
const [installBundleDeselected, setInstallBundleDeselected] = (0, react.useState)(false);
|
|
6710
6757
|
const [uninstallNeedsReload, setUninstallNeedsReload] = (0, react.useState)(false);
|
|
6711
6758
|
/** 结果视图「立即重启」:请求宿主重启后进入等待,服务回来后整页刷新 */
|
|
6712
6759
|
const [restarting, setRestarting] = (0, react.useState)(false);
|
|
@@ -6741,10 +6788,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
6741
6788
|
t,
|
|
6742
6789
|
langKey,
|
|
6743
6790
|
refreshInstalled: catalog.refreshInstalled,
|
|
6744
|
-
onInstallDone: (viaModal, repo, needsRestart, update, needsReload) => {
|
|
6791
|
+
onInstallDone: (viaModal, repo, needsRestart, update, needsReload, bundleDeselected) => {
|
|
6745
6792
|
const reload = needsReload === true;
|
|
6746
6793
|
setInstallNeedsRestart(needsRestart);
|
|
6747
6794
|
setInstallNeedsReload(reload);
|
|
6795
|
+
setInstallBundleDeselected(bundleDeselected === true);
|
|
6748
6796
|
if (viaModal) setInstallDone(true);
|
|
6749
6797
|
else setToast({
|
|
6750
6798
|
id: Date.now(),
|
|
@@ -7101,7 +7149,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
7101
7149
|
openSection: settingsSection,
|
|
7102
7150
|
onConsumedOpenSection: () => setSettingsSection(null)
|
|
7103
7151
|
}), showHubUpdate && (0, react.createElement)(HubUpdateModal, {
|
|
7104
|
-
info: catalog.hubUpdateInfo ?? { version: "2.0.
|
|
7152
|
+
info: catalog.hubUpdateInfo ?? { version: "2.0.6" },
|
|
7105
7153
|
state: catalog.hubUpdateState,
|
|
7106
7154
|
currentVersion: catalog.hubCurrentVersion,
|
|
7107
7155
|
lang,
|
|
@@ -7193,9 +7241,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
7193
7241
|
submitting: queue.submitting,
|
|
7194
7242
|
needsRestart: installNeedsRestart,
|
|
7195
7243
|
needsReload: installNeedsReload,
|
|
7244
|
+
bundleDeselected: installBundleDeselected,
|
|
7196
7245
|
onClose: () => {
|
|
7197
7246
|
const reload = installDone && installNeedsReload;
|
|
7198
7247
|
setConfirmPlugin(null);
|
|
7248
|
+
setInstallBundleDeselected(false);
|
|
7199
7249
|
if (reload) window.location.reload();
|
|
7200
7250
|
},
|
|
7201
7251
|
onCopy: () => copyCommand(confirmPlugin),
|