dsh-plugin 1.5.0 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/client/client.js CHANGED
@@ -307,6 +307,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
307
307
  failAccessDeniedHint: "安装过程中 pnpm 写入 profile 里的文件被系统拒绝访问(Windows 常见报错 os error 5「拒绝访问」,英文为 Access is denied;Node 下的 EPERM / EACCES 同理)。常见原因是该文件或目录正被其他进程占用、文件带只读属性、目录权限受限,或杀毒软件实时防护拦截了写入——这与「文件正被占用」(os error 32)同属本机文件系统问题,任何插件装进该目录都会一样失败,不是插件本身的问题。请完全退出 DeepSeek Harness(Windows 可在任务管理器确认进程已结束,必要时临时关闭杀毒软件实时防护)后重试;若仍然失败,请检查 profile 目录及其文件是否被设为只读,并以管理员身份重新运行。",
308
308
  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 后重试。",
309
309
  failPnpmWorkspaceHint: "安装器调用 pnpm 时报「不能把依赖装到 workspace 根目录」(ERR_PNPM_ADDING_TO_ROOT):你的 profile 目录被 pnpm 视为 workspace 根目录,而本次安装命令没有声明在根目录操作,pnpm 直接拒绝执行,因此任何插件装进来都会失败。这不是插件本身的问题——可在 profile 目录(~/.dsh/profiles/<profile>)的 .npmrc 里加一行 ignore-workspace-root-check=true 后重试,或把 DeepSeek Harness 升级到最新版再试。",
310
+ failPnpmTarballIntegrityHint: "pnpm 报 ERR_PNPM_MISSING_TARBALL_INTEGRITY:锁文件中的 tarball 条目没有校验值,无法验证下载的包。先查看完整日志,完全退出 DeepSeek Harness,并检查、备份当前 profile 的 package.json、pnpm-lock.yaml 和 pnpm-workspace.yaml。确认依赖来源后,将 pnpm-lock.yaml 改名保留,再通过同一 DSH 安装器安装适配当前宿主版本的插件,重新生成锁文件。重建会重新解析 profile 依赖,请核对新旧版本;保持完整性校验开启。",
310
311
  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 查看完整报错)。",
311
312
  installChannelNpm: "NPM 包",
312
313
  installChannelGit: "GitHub 源码",
@@ -645,6 +646,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
645
646
  failAccessDeniedHint: "During install, Windows denied pnpm access to a file inside the profile (this shows as os error 5, \"Access is denied\"; on Node the equivalent codes are EPERM / EACCES). Typical causes: the file or directory is held by another process, the file is marked read-only, the directory permissions are restricted, or a real-time antivirus scan blocked the write. This is the same class of local file-system problem as a locked file (os error 32) — no plugin can be installed into that directory, so it is not a problem with the plugin itself. Fully quit DeepSeek Harness (on Windows, confirm in Task Manager that the process has ended, and temporarily disable real-time antivirus protection if needed), then retry. If it still fails, check whether the profile directory or its files are read-only and run as administrator.",
646
647
  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.",
647
648
  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.",
649
+ 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.",
648
650
  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.",
649
651
  installChannelNpm: "NPM package",
650
652
  installChannelGit: "GitHub source",
@@ -702,42 +704,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
702
704
  css: css$11
703
705
  });
704
706
  var Header_module_css_default = {
705
- "versionBtn": "qikqja_versionBtn",
706
- "headerTitleRow": "qikqja_headerTitleRow",
707
- "tab": "qikqja_tab",
708
- "controls": "qikqja_controls",
709
- "tabsRow": "qikqja_tabsRow",
710
- "aboutBtn": "qikqja_aboutBtn",
711
- "hubUpdateBadge": "qikqja_hubUpdateBadge",
707
+ "version": "qikqja_version",
708
+ "segBtn": "qikqja_segBtn",
709
+ "tabCount": "qikqja_tabCount",
712
710
  "adArrow": "qikqja_adArrow",
713
- "githubIcon": "qikqja_githubIcon",
714
- "sortGroup": "qikqja_sortGroup",
715
- "tagline": "qikqja_tagline",
716
- "segGroup": "qikqja_segGroup",
717
711
  "root": "qikqja_root",
718
- "version": "qikqja_version",
719
- "title": "qikqja_title",
720
- "copyIcon": "qikqja_copyIcon",
721
- "segBtnActive": "qikqja_segBtnActive",
722
- "resultCount": "qikqja_resultCount",
723
- "resultSeg": "qikqja_resultSeg",
712
+ "segLabel": "qikqja_segLabel",
713
+ "aboutBtn": "qikqja_aboutBtn",
714
+ "tabsRow": "qikqja_tabsRow",
724
715
  "logoIcon": "qikqja_logoIcon",
725
- "tabs": "qikqja_tabs",
726
- "adBanner": "qikqja_adBanner",
727
716
  "brandTitle": "qikqja_brandTitle",
728
- "taglineLink": "qikqja_taglineLink",
729
- "segBtn": "qikqja_segBtn",
730
- "tabCount": "qikqja_tabCount",
731
- "adText": "qikqja_adText",
732
717
  "headerRight": "qikqja_headerRight",
733
- "langBtn": "qikqja_langBtn",
734
- "searchRow": "qikqja_searchRow",
735
- "search": "qikqja_search",
736
- "segLabel": "qikqja_segLabel",
718
+ "adBanner": "qikqja_adBanner",
719
+ "versionBtn": "qikqja_versionBtn",
720
+ "taglineLink": "qikqja_taglineLink",
721
+ "controls": "qikqja_controls",
722
+ "tabs": "qikqja_tabs",
737
723
  "header": "qikqja_header",
724
+ "langBtn": "qikqja_langBtn",
725
+ "title": "qikqja_title",
726
+ "sortGroup": "qikqja_sortGroup",
738
727
  "githubLink": "qikqja_githubLink",
728
+ "resultSeg": "qikqja_resultSeg",
729
+ "segGroup": "qikqja_segGroup",
730
+ "adText": "qikqja_adText",
731
+ "searchRow": "qikqja_searchRow",
732
+ "githubIcon": "qikqja_githubIcon",
739
733
  "tabActive": "qikqja_tabActive",
740
- "adBadge": "qikqja_adBadge"
734
+ "headerTitleRow": "qikqja_headerTitleRow",
735
+ "copyIcon": "qikqja_copyIcon",
736
+ "hubUpdateBadge": "qikqja_hubUpdateBadge",
737
+ "tagline": "qikqja_tagline",
738
+ "adBadge": "qikqja_adBadge",
739
+ "search": "qikqja_search",
740
+ "tab": "qikqja_tab",
741
+ "resultCount": "qikqja_resultCount",
742
+ "segBtnActive": "qikqja_segBtnActive"
741
743
  };
742
744
  //#endregion
743
745
  //#region \0dsh-css:src/client/styles/Modal.module.css.mjs
@@ -756,136 +758,136 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
756
758
  css: css$10
757
759
  });
758
760
  var Modal_module_css_default = {
759
- "failClear": "BiQ1zG_failClear",
760
- "detailUpdateHint": "BiQ1zG_detailUpdateHint",
761
- "modalLabel": "BiQ1zG_modalLabel",
761
+ "modalWide": "BiQ1zG_modalWide",
762
+ "failKindInstall": "BiQ1zG_failKindInstall",
763
+ "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
764
+ "queueRowStatus": "BiQ1zG_queueRowStatus",
765
+ "resultTitle": "BiQ1zG_resultTitle",
766
+ "stripCancel": "BiQ1zG_stripCancel",
767
+ "noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
762
768
  "resultCheckIcon": "BiQ1zG_resultCheckIcon",
763
- "errorCopySoft": "BiQ1zG_errorCopySoft",
769
+ "detailPathText": "BiQ1zG_detailPathText",
770
+ "modalCmdCopy": "BiQ1zG_modalCmdCopy",
771
+ "linkIcon": "BiQ1zG_linkIcon",
772
+ "queueRow": "BiQ1zG_queueRow",
773
+ "toast": "BiQ1zG_toast",
774
+ "errorHint": "BiQ1zG_errorHint",
775
+ "detailPath": "BiQ1zG_detailPath",
776
+ "hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
777
+ "progressText": "BiQ1zG_progressText",
778
+ "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
764
779
  "resultCheck": "BiQ1zG_resultCheck",
765
- "queueSection": "BiQ1zG_queueSection",
766
- "modalTitleBusy": "BiQ1zG_modalTitleBusy",
767
- "queueRowHead": "BiQ1zG_queueRowHead",
768
- "queueRowBody": "BiQ1zG_queueRowBody",
769
- "progressHead": "BiQ1zG_progressHead",
780
+ "failRow": "BiQ1zG_failRow",
770
781
  "modal": "BiQ1zG_modal",
771
- "failList": "BiQ1zG_failList",
772
- "modalValue": "BiQ1zG_modalValue",
782
+ "progress": "BiQ1zG_progress",
783
+ "noticeRow": "BiQ1zG_noticeRow",
773
784
  "hubUpdateModal": "BiQ1zG_hubUpdateModal",
774
- "modalActions": "BiQ1zG_modalActions",
775
- "queueRowTarget": "BiQ1zG_queueRowTarget",
776
- "modalBody": "BiQ1zG_modalBody",
777
- "progressFillFail": "BiQ1zG_progressFillFail",
778
- "queueRowPct": "BiQ1zG_queueRowPct",
779
- "failHead": "BiQ1zG_failHead",
780
- "noticeVersion": "BiQ1zG_noticeVersion",
781
- "restartLater": "BiQ1zG_restartLater",
782
- "noticeTime": "BiQ1zG_noticeTime",
783
- "hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
785
+ "detailModal": "BiQ1zG_detailModal",
784
786
  "modalRow": "BiQ1zG_modalRow",
785
- "errorHint": "BiQ1zG_errorHint",
786
- "noticeTextOk": "BiQ1zG_noticeTextOk",
787
- "detailValue": "BiQ1zG_detailValue",
788
- "resultTitle": "BiQ1zG_resultTitle",
789
- "detailDim": "BiQ1zG_detailDim",
790
- "noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
791
- "cliOnlyHint": "BiQ1zG_cliOnlyHint",
792
- "noticeFoot": "BiQ1zG_noticeFoot",
793
- "modalCmdText": "BiQ1zG_modalCmdText",
794
- "detailPathText": "BiQ1zG_detailPathText",
795
- "detailStatusRunning": "BiQ1zG_detailStatusRunning",
796
- "aboutContent": "BiQ1zG_aboutContent",
797
- "toastFail": "BiQ1zG_toastFail",
798
- "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
799
- "progressText": "BiQ1zG_progressText",
800
- "modalIn": "BiQ1zG_modalIn",
801
- "noticeRemove": "BiQ1zG_noticeRemove",
802
- "detailArrow": "BiQ1zG_detailArrow",
803
- "trustHint": "BiQ1zG_trustHint",
804
- "noticeRowOk": "BiQ1zG_noticeRowOk",
805
- "detailStatusText": "BiQ1zG_detailStatusText",
806
- "failKindUninstall": "BiQ1zG_failKindUninstall",
807
787
  "confirmPrimary": "BiQ1zG_confirmPrimary",
808
- "modalCloseIcon": "BiQ1zG_modalCloseIcon",
809
- "result": "BiQ1zG_result",
810
- "errorModal": "BiQ1zG_errorModal",
811
- "hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
812
- "detailStatusPending": "BiQ1zG_detailStatusPending",
813
- "errorTitle": "BiQ1zG_errorTitle",
788
+ "modalLink": "BiQ1zG_modalLink",
789
+ "queueSection": "BiQ1zG_queueSection",
790
+ "noticeList": "BiQ1zG_noticeList",
791
+ "modalCmd": "BiQ1zG_modalCmd",
792
+ "pendingRowActions": "BiQ1zG_pendingRowActions",
793
+ "modalDesc": "BiQ1zG_modalDesc",
794
+ "modalActions": "BiQ1zG_modalActions",
795
+ "resultRestarting": "BiQ1zG_resultRestarting",
796
+ "failClear": "BiQ1zG_failClear",
797
+ "confirmIcon": "BiQ1zG_confirmIcon",
798
+ "failedCopyHint": "BiQ1zG_failedCopyHint",
799
+ "detailStars": "BiQ1zG_detailStars",
800
+ "errorCopySoft": "BiQ1zG_errorCopySoft",
814
801
  "queuedHint": "BiQ1zG_queuedHint",
815
- "failKind": "BiQ1zG_failKind",
816
- "detailModal": "BiQ1zG_detailModal",
817
- "aboutModal": "BiQ1zG_aboutModal",
818
- "noticeMain": "BiQ1zG_noticeMain",
819
- "errorBox": "BiQ1zG_errorBox",
802
+ "failCopy": "BiQ1zG_failCopy",
803
+ "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
820
804
  "dangerConfirm": "BiQ1zG_dangerConfirm",
821
- "noticeRow": "BiQ1zG_noticeRow",
822
- "aboutMeta": "BiQ1zG_aboutMeta",
823
- "failRepo": "BiQ1zG_failRepo",
824
- "detailStars": "BiQ1zG_detailStars",
805
+ "modalTitle": "BiQ1zG_modalTitle",
806
+ "modalTitleBusy": "BiQ1zG_modalTitleBusy",
807
+ "modalClose": "BiQ1zG_modalClose",
808
+ "modalLabel": "BiQ1zG_modalLabel",
809
+ "failNetworkTarget": "BiQ1zG_failNetworkTarget",
810
+ "resultDesc": "BiQ1zG_resultDesc",
811
+ "detailPathBtn": "BiQ1zG_detailPathBtn",
812
+ "errorTitle": "BiQ1zG_errorTitle",
813
+ "modalCopy": "BiQ1zG_modalCopy",
814
+ "toastFail": "BiQ1zG_toastFail",
815
+ "modalHead": "BiQ1zG_modalHead",
816
+ "progressFill": "BiQ1zG_progressFill",
817
+ "helpModal": "BiQ1zG_helpModal",
825
818
  "confirmIconWrap": "BiQ1zG_confirmIconWrap",
826
- "modalTitleQueued": "BiQ1zG_modalTitleQueued",
827
819
  "restartNowWarning": "BiQ1zG_restartNowWarning",
828
- "overlay": "BiQ1zG_overlay",
820
+ "detailArrow": "BiQ1zG_detailArrow",
821
+ "modalCancel": "BiQ1zG_modalCancel",
822
+ "queueRowTarget": "BiQ1zG_queueRowTarget",
823
+ "detailMono": "BiQ1zG_detailMono",
824
+ "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
825
+ "noticeFoot": "BiQ1zG_noticeFoot",
826
+ "detailDim": "BiQ1zG_detailDim",
827
+ "failRepo": "BiQ1zG_failRepo",
828
+ "queueRowTrack": "BiQ1zG_queueRowTrack",
829
+ "overlayIn": "BiQ1zG_overlayIn",
830
+ "detailStatusText": "BiQ1zG_detailStatusText",
831
+ "detailGrid": "BiQ1zG_detailGrid",
832
+ "modalValue": "BiQ1zG_modalValue",
833
+ "restartLater": "BiQ1zG_restartLater",
834
+ "detailLink": "BiQ1zG_detailLink",
835
+ "modalInstall": "BiQ1zG_modalInstall",
836
+ "noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
837
+ "detailLabel": "BiQ1zG_detailLabel",
829
838
  "queueRowDesc": "BiQ1zG_queueRowDesc",
830
- "modalHead": "BiQ1zG_modalHead",
831
- "modalCmdCopy": "BiQ1zG_modalCmdCopy",
832
- "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
833
- "stripCancel": "BiQ1zG_stripCancel",
834
- "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
835
- "modalCmd": "BiQ1zG_modalCmd",
836
- "toast": "BiQ1zG_toast",
839
+ "detailStatusPending": "BiQ1zG_detailStatusPending",
840
+ "aboutMeta": "BiQ1zG_aboutMeta",
841
+ "errorModal": "BiQ1zG_errorModal",
837
842
  "pendingRowStatus": "BiQ1zG_pendingRowStatus",
838
- "detailPath": "BiQ1zG_detailPath",
839
- "failKindInstall": "BiQ1zG_failKindInstall",
840
- "queueRow": "BiQ1zG_queueRow",
841
- "modalInstall": "BiQ1zG_modalInstall",
842
- "failPrepareHint": "BiQ1zG_failPrepareHint",
843
+ "modalCmdText": "BiQ1zG_modalCmdText",
844
+ "noticeTextOk": "BiQ1zG_noticeTextOk",
845
+ "noticeMain": "BiQ1zG_noticeMain",
846
+ "noticeRowOk": "BiQ1zG_noticeRowOk",
847
+ "failKindUninstall": "BiQ1zG_failKindUninstall",
848
+ "detailRow": "BiQ1zG_detailRow",
849
+ "noticeHead": "BiQ1zG_noticeHead",
850
+ "modalTitleQueued": "BiQ1zG_modalTitleQueued",
851
+ "detailValue": "BiQ1zG_detailValue",
852
+ "errorBox": "BiQ1zG_errorBox",
853
+ "uninstallConfirm": "BiQ1zG_uninstallConfirm",
854
+ "aboutContent": "BiQ1zG_aboutContent",
855
+ "overlay": "BiQ1zG_overlay",
856
+ "noticeTime": "BiQ1zG_noticeTime",
857
+ "queueRowPct": "BiQ1zG_queueRowPct",
858
+ "noticeRowMain": "BiQ1zG_noticeRowMain",
859
+ "progressFillFail": "BiQ1zG_progressFillFail",
860
+ "modalCloseIcon": "BiQ1zG_modalCloseIcon",
861
+ "noticeRemove": "BiQ1zG_noticeRemove",
862
+ "progressTrack": "BiQ1zG_progressTrack",
843
863
  "logModal": "BiQ1zG_logModal",
844
- "toastIn": "BiQ1zG_toastIn",
845
- "failEmpty": "BiQ1zG_failEmpty",
846
- "detailLabel": "BiQ1zG_detailLabel",
847
- "detailLink": "BiQ1zG_detailLink",
848
- "detailMono": "BiQ1zG_detailMono",
849
- "detailGrid": "BiQ1zG_detailGrid",
864
+ "detailPathActions": "BiQ1zG_detailPathActions",
865
+ "failPrepareHint": "BiQ1zG_failPrepareHint",
866
+ "queueRowHead": "BiQ1zG_queueRowHead",
867
+ "noticeVersion": "BiQ1zG_noticeVersion",
850
868
  "restartNow": "BiQ1zG_restartNow",
869
+ "toastIn": "BiQ1zG_toastIn",
870
+ "aboutModal": "BiQ1zG_aboutModal",
871
+ "failKind": "BiQ1zG_failKind",
872
+ "detailUpdateHint": "BiQ1zG_detailUpdateHint",
851
873
  "queueSectionTitle": "BiQ1zG_queueSectionTitle",
852
- "confirmIcon": "BiQ1zG_confirmIcon",
853
- "uninstallConfirm": "BiQ1zG_uninstallConfirm",
854
- "resultDesc": "BiQ1zG_resultDesc",
855
- "failRow": "BiQ1zG_failRow",
856
- "noticeHead": "BiQ1zG_noticeHead",
857
- "modalWide": "BiQ1zG_modalWide",
858
- "modalLink": "BiQ1zG_modalLink",
859
- "detailPathBtn": "BiQ1zG_detailPathBtn",
860
- "noticeList": "BiQ1zG_noticeList",
861
- "queueRowStatus": "BiQ1zG_queueRowStatus",
862
- "modalCancel": "BiQ1zG_modalCancel",
863
- "modalDesc": "BiQ1zG_modalDesc",
864
- "queueRowTrack": "BiQ1zG_queueRowTrack",
865
- "noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
866
- "noticeIgnore": "BiQ1zG_noticeIgnore",
867
- "failNetworkTarget": "BiQ1zG_failNetworkTarget",
868
- "progress": "BiQ1zG_progress",
869
- "modalTitle": "BiQ1zG_modalTitle",
870
- "progressTrack": "BiQ1zG_progressTrack",
871
- "overlayIn": "BiQ1zG_overlayIn",
872
- "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
874
+ "cliOnlyHint": "BiQ1zG_cliOnlyHint",
875
+ "modalIn": "BiQ1zG_modalIn",
876
+ "failEmpty": "BiQ1zG_failEmpty",
877
+ "result": "BiQ1zG_result",
873
878
  "failDiagBtn": "BiQ1zG_failDiagBtn",
874
- "modalClose": "BiQ1zG_modalClose",
875
- "modalCopy": "BiQ1zG_modalCopy",
876
- "failCopy": "BiQ1zG_failCopy",
877
- "detailRow": "BiQ1zG_detailRow",
878
- "noticeRowMain": "BiQ1zG_noticeRowMain",
879
- "helpModal": "BiQ1zG_helpModal",
880
- "resultRestarting": "BiQ1zG_resultRestarting",
879
+ "queueRowBody": "BiQ1zG_queueRowBody",
881
880
  "confirmIconDanger": "BiQ1zG_confirmIconDanger",
882
- "failBigIssue": "BiQ1zG_failBigIssue",
881
+ "failHead": "BiQ1zG_failHead",
882
+ "trustHint": "BiQ1zG_trustHint",
883
883
  "noticeTextFail": "BiQ1zG_noticeTextFail",
884
- "progressFill": "BiQ1zG_progressFill",
885
- "detailPathActions": "BiQ1zG_detailPathActions",
886
- "pendingRowActions": "BiQ1zG_pendingRowActions",
887
- "failedCopyHint": "BiQ1zG_failedCopyHint",
888
- "linkIcon": "BiQ1zG_linkIcon"
884
+ "failBigIssue": "BiQ1zG_failBigIssue",
885
+ "hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
886
+ "modalBody": "BiQ1zG_modalBody",
887
+ "failList": "BiQ1zG_failList",
888
+ "detailStatusRunning": "BiQ1zG_detailStatusRunning",
889
+ "noticeIgnore": "BiQ1zG_noticeIgnore",
890
+ "progressHead": "BiQ1zG_progressHead"
889
891
  };
890
892
  //#endregion
891
893
  //#region src/server/services/install/release-target.ts
@@ -913,6 +915,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
913
915
  }
914
916
  //#endregion
915
917
  //#region src/client/logic/install-command.ts
918
+ /** Backend attempts are chronological; report the last executed command before a display fallback.
919
+ * These prefixes are the task queue's recorded command shapes, never commands to execute here.
920
+ */
921
+ function executedCommandOf(command, attempts) {
922
+ if (attempts === void 0) return command;
923
+ return attempts.slice().reverse().find((attempt) => /^dsh plugin --profile(?:=| )\S+ (?:add|remove|update) \S/.test(attempt) || /^npm install -g \S/.test(attempt));
924
+ }
916
925
  /**
917
926
  * 安装通道决策(用户无感知):目录探测到 npm 包名 → 用 npm 包名安装
918
927
  * (走 npm registry tarball,更快、与 GitHub 网络无关);其次用「同仓库」的权威
@@ -990,7 +999,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
990
999
  * tsdown 构建时用 define 把 __PLUGIN_VERSION__ 替换成 package.json 的版本号;
991
1000
  * node --test 直接 import 本模块时该标识符不存在,typeof 守卫兜底为空串。
992
1001
  */
993
- const PLUGIN_VERSION = "1.5.0";
1002
+ const PLUGIN_VERSION = "1.5.2";
994
1003
  const CATEGORY_ORDER = [
995
1004
  "interface",
996
1005
  "session",
@@ -1627,7 +1636,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1627
1636
  */
1628
1637
  const hubHasUpdate = (() => {
1629
1638
  if (!hubUpdateInfo) return false;
1630
- if (hubUpdateInfo.version === "1.5.0") return false;
1639
+ if (hubUpdateInfo.version === "1.5.2") return false;
1631
1640
  const publishedAt = hubUpdateInfo.publishedAt;
1632
1641
  if (publishedAt) {
1633
1642
  const publishedMs = Date.parse(publishedAt);
@@ -1813,6 +1822,14 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1813
1822
  save(next);
1814
1823
  return next;
1815
1824
  }
1825
+ /** Match the pnpm error code, not a generic mention of checksum or integrity. */
1826
+ function missingTarballIntegrity(message) {
1827
+ return /\bERR_PNPM_MISSING_TARBALL_INTEGRITY\b/.test(message);
1828
+ }
1829
+ /** The same policy subtype selects recovery copy in live and saved failures. */
1830
+ function pnpmPolicyHintOf(message) {
1831
+ return missingTarballIntegrity(message) ? "failPnpmTarballIntegrityHint" : "failPnpmPolicyHint";
1832
+ }
1816
1833
  /**
1817
1834
  * 失败归类:把安装输出归到具体成因,供弹窗文案、是否引导提 Issue 与 issue 预填原因使用。
1818
1835
  * 分界是「本机环境问题」(装任何插件都会同样失败 → 不引导提 Issue)与
@@ -1843,7 +1860,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1843
1860
  * - originRejected:请求的来源没通过本地 hub 服务的校验(服务端 403,正文是裸的
1844
1861
  * `untrusted origin`)—— 请求在进入安装流程前就被拒,与 pnpm 无关;常见于用非 localhost 的
1845
1862
  * 地址(如局域网 IP)打开市场页面,或宿主页面的 origin 未被识别 → 提示从本机地址打开市场后重试
1846
- * - pnpmPolicy:pnpm 11 的供应链安全策略拒绝安装(`ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION` /
1863
+ * - pnpmPolicy:pnpm 的供应链安全策略拒绝安装(缺少 tarball integrity、`ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION` /
1847
1864
  * `Minimum release age` —— 锁文件里包的发布时间还不满 24 小时被拒;`untrusted origin` ——
1848
1865
  * 依赖来源未被本机 pnpm 信任)→ 提示按子场景给解法(发布未满 24 小时 → `minimumReleaseAge: 0`
1849
1866
  * 豁免或等满 24 小时;untrusted origin → 删除 profile 的 node_modules + pnpm-lock.yaml 清掉
@@ -1891,7 +1908,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1891
1908
  if (/ERR_PNPM_UNEXPECTED_(VIRTUAL_)?STORE|Unexpected (virtual )?store location/i.test(message)) return "pnpmStore";
1892
1909
  if (/ERR_PNPM_ADDING_TO_ROOT|add the dependency to the workspace root/i.test(message)) return "pnpmWorkspace";
1893
1910
  if (/(^|\n)untrusted origin\s*$/.test(message)) return "originRejected";
1894
- if (/ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION|Minimum release age|untrusted origin/i.test(message)) return "pnpmPolicy";
1911
+ if (missingTarballIntegrity(message) || /ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION|Minimum release age|untrusted origin/i.test(message)) return "pnpmPolicy";
1895
1912
  if (/ERR_PNPM_UNUSED_PATCH|patches were not used/i.test(message)) return "pnpmUnusedPatch";
1896
1913
  if (/os error 32|EBUSY|resource busy or locked|being used by another process/i.test(message)) return "fileLocked";
1897
1914
  if (/os error 5\b|ERROR_ACCESS_DENIED|\bEPERM\b|\bEACCES\b|access is denied/i.test(message)) return "accessDenied";
@@ -2063,8 +2080,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2063
2080
  */
2064
2081
  function pluginIssueUrl(repo, message, env, command, attempts) {
2065
2082
  const kind = classifyFailure(message);
2083
+ const executed = executedCommandOf(command, attempts);
2066
2084
  const title = `[dsh-plugin.org | dsh-plugin-hub] ${reasonTitleOf(kind)}: ${repo}`;
2067
- const reason = /\[packaging\]/i.test(message) ? "plugin distribution is incomplete — the entry file declared in package.json is missing from the published package (github tarball or npm package); please commit build output or publish a complete package" : kind === "network" ? "network connectivity issue on the user side (DNS, proxy, firewall, or a blocked connection)" : kind === "pluginPrepare" ? "plugin prepare/build script failed during install (packaging/distribution issue)" : kind === "pnpmIgnoredBuild" ? "plugin depends on a native module whose build script pnpm blocks by default (use a prebuilt variant)" : kind === "originRejected" ? "the request never reached the install flow — the local service rejected its origin (local environment issue)" : kind === "pnpmPolicy" ? "the pnpm supply-chain policy on the user machine blocked the install (minimum release age for freshly published packages / untrusted origin)" : kind === "pnpmUnusedPatch" ? "the profile keeps a pnpm patch entry for an older dsh-plugin version, so pnpm aborted the install (local config issue)" : kind === "fileLocked" ? "a file in the profile is locked by another process on the user machine (local environment issue)" : kind === "accessDenied" ? "the system denied write access to a file in the profile on the user machine (local environment issue)" : kind === "fsUnavailable" ? "the local file system could not accept the write — no space left, read-only volume, or too many open file handles on the user machine (local environment issue)" : "plugin-side install failure";
2085
+ const reason = /\[packaging\]/i.test(message) ? "plugin distribution is incomplete — the entry file declared in package.json is missing from the published package (github tarball or npm package); please commit build output or publish a complete package" : kind === "network" ? "network connectivity issue on the user side (DNS, proxy, firewall, or a blocked connection)" : kind === "pluginPrepare" ? "plugin prepare/build script failed during install (packaging/distribution issue)" : kind === "pnpmIgnoredBuild" ? "plugin depends on a native module whose build script pnpm blocks by default (use a prebuilt variant)" : kind === "originRejected" ? "the request never reached the install flow — the local service rejected its origin (local environment issue)" : kind === "pnpmPolicy" ? pnpmPolicyHintOf(message) === "failPnpmTarballIntegrityHint" ? "pnpm rejected a lockfile entry without tarball integrity; inspect and back up the profile lockfile before resolving it again, keeping integrity checks enabled" : "the pnpm supply-chain policy on the user machine blocked the install (minimum release age for freshly published packages / untrusted origin)" : kind === "pnpmUnusedPatch" ? "the profile keeps a pnpm patch entry for an older dsh-plugin version, so pnpm aborted the install (local config issue)" : kind === "fileLocked" ? "a file in the profile is locked by another process on the user machine (local environment issue)" : kind === "accessDenied" ? "the system denied write access to a file in the profile on the user machine (local environment issue)" : kind === "fsUnavailable" ? "the local file system could not accept the write — no space left, read-only volume, or too many open file handles on the user machine (local environment issue)" : "plugin-side install failure";
2068
2086
  const code = coreErrorCode(message);
2069
2087
  const build = (coreChars) => {
2070
2088
  const body = [
@@ -2074,7 +2092,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2074
2092
  "",
2075
2093
  `## [DSH Plugin 插件市场](${SITE_URL}) · 安装 Plugin 失败错误信息`,
2076
2094
  `本错误信息由 [dsh-plugin-hub](${GITHUB_URL}) 插件市场的安装程序自动生成,随本次安装失败一并提交。`,
2077
- `- 实际执行的安装命令:\`${command ?? `dsh plugin${env?.profile ? ` --profile ${env.profile}` : ""} add git+https://github.com/${repo}.git`}\``,
2095
+ `- 实际执行的安装命令:${executed ? `\`${executed}\`` : "unknown (no executed command recorded)"}`,
2078
2096
  `- 执行结果:安装失败,未能安装该插件。`,
2079
2097
  ...attempts && attempts.length > 0 ? [
2080
2098
  "",
@@ -2372,7 +2390,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2372
2390
  } else {
2373
2391
  const rawDetail = lines.length > 0 ? [...lines].reverse().join("\n") : q.kind === "uninstall" ? t("uninstallFail") : t("installFail");
2374
2392
  const entry = entryLineOf(t, q.channel);
2375
- onError(entry ? `${entry}\n${rawDetail}` : rawDetail, q.repo, q.kind, q.command, q.attempts, q.action === "update");
2393
+ onError(entry ? `${entry}\n${rawDetail}` : rawDetail, q.repo, q.kind, executedCommandOf(q.command, q.attempts), q.attempts, q.action === "update");
2376
2394
  }
2377
2395
  maybeStopPoll();
2378
2396
  };
@@ -3447,7 +3465,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3447
3465
  }, repo) : null, (0, react.createElement)("button", {
3448
3466
  className: Modal_module_css_default.errorCopySoft,
3449
3467
  onClick: () => onCopy(copyText)
3450
- }, t("errorCopy"))), (0, react.createElement)("pre", { className: Modal_module_css_default.errorBox }, message), failureKind === "npmTooOld" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t(npmVersion ? "failNpmTooLowV" : "failNpmTooLow", npmVersion ? { v: npmVersion } : void 0)) : failureKind === "dshMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failDshMissingHint")) : failureKind === "gitMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failGitMissingHint")) : failureKind === "pnpmMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmMissingHint")) : failureKind === "npmMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failNpmMissingHint")) : failureKind === "pnpmWorkspace" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmWorkspaceHint")) : failureKind === "pnpmStore" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmStoreHint")) : failureKind === "pnpmPolicy" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmPolicyHint")) : failureKind === "pnpmUnusedPatch" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmUnusedPatchHint")) : failureKind === "pnpmMissingDep" ? (0, react.createElement)("div", null, [(() => {
3468
+ }, t("errorCopy"))), (0, react.createElement)("pre", { className: Modal_module_css_default.errorBox }, message), failureKind === "npmTooOld" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t(npmVersion ? "failNpmTooLowV" : "failNpmTooLow", npmVersion ? { v: npmVersion } : void 0)) : failureKind === "dshMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failDshMissingHint")) : failureKind === "gitMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failGitMissingHint")) : failureKind === "pnpmMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmMissingHint")) : failureKind === "npmMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failNpmMissingHint")) : failureKind === "pnpmWorkspace" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmWorkspaceHint")) : failureKind === "pnpmStore" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmStoreHint")) : failureKind === "pnpmPolicy" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t(pnpmPolicyHintOf(message))) : failureKind === "pnpmUnusedPatch" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmUnusedPatchHint")) : failureKind === "pnpmMissingDep" ? (0, react.createElement)("div", null, [(() => {
3451
3469
  const pkg = missingRegistryPackageOf(message);
3452
3470
  return pkg ? (0, react.createElement)("div", { className: Modal_module_css_default.failNetworkTarget }, t("failPnpmMissingDepTarget", { pkg })) : null;
3453
3471
  })(), (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmMissingDepHint"))]) : failureKind === "fileLocked" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failFileLockedHint")) : failureKind === "accessDenied" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failAccessDeniedHint")) : failureKind === "fsUnavailable" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failFsUnavailableHint")) : failureKind === "originRejected" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failOriginRejectedHint")) : failureKind === "network" ? (0, react.createElement)("div", null, [
@@ -4021,7 +4039,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4021
4039
  if (kind === "npmMissing") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failNpmMissingHint"));
4022
4040
  if (kind === "pnpmWorkspace") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmWorkspaceHint"));
4023
4041
  if (kind === "pnpmStore") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmStoreHint"));
4024
- if (kind === "pnpmPolicy") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmPolicyHint"));
4042
+ if (kind === "pnpmPolicy") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t(pnpmPolicyHintOf(r.message)));
4025
4043
  if (kind === "pnpmUnusedPatch") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmUnusedPatchHint"));
4026
4044
  if (kind === "pnpmMissingDep") {
4027
4045
  const pkg = missingRegistryPackageOf(r.message);
@@ -4233,47 +4251,47 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4233
4251
  tag.dataset.pluginCss = tagId$9;
4234
4252
  tag.textContent = css$9;
4235
4253
  document.head.appendChild(tag);
4236
- }
4237
- const cssRegistry$9 = globalThis.__DSH_PLUGIN_CSS__ ??= [];
4238
- if (!cssRegistry$9.some((e) => e.tagId === tagId$9)) cssRegistry$9.push({
4239
- tagId: tagId$9,
4240
- css: css$9
4241
- });
4242
- var List_module_css_default = {
4243
- "installBtnCopied": "_3XaZHa_installBtnCopied",
4244
- "stateActions": "_3XaZHa_stateActions",
4245
- "fork": "_3XaZHa_fork",
4246
- "cardSide": "_3XaZHa_cardSide",
4247
- "topic": "_3XaZHa_topic",
4248
- "verified": "_3XaZHa_verified",
4249
- "state": "_3XaZHa_state",
4250
- "body": "_3XaZHa_body",
4251
- "moreSentinel": "_3XaZHa_moreSentinel",
4252
- "diagBtn": "_3XaZHa_diagBtn",
4253
- "updateBadge": "_3XaZHa_updateBadge",
4254
- "date": "_3XaZHa_date",
4255
- "star": "_3XaZHa_star",
4256
- "stateDesc": "_3XaZHa_stateDesc",
4257
- "retryBtn": "_3XaZHa_retryBtn",
4258
- "card": "_3XaZHa_card",
4259
- "uninstallBtn": "_3XaZHa_uninstallBtn",
4260
- "versionBadge": "_3XaZHa_versionBadge",
4254
+ }
4255
+ const cssRegistry$9 = globalThis.__DSH_PLUGIN_CSS__ ??= [];
4256
+ if (!cssRegistry$9.some((e) => e.tagId === tagId$9)) cssRegistry$9.push({
4257
+ tagId: tagId$9,
4258
+ css: css$9
4259
+ });
4260
+ var List_module_css_default = {
4261
+ "body": "_3XaZHa_body",
4262
+ "stateActions": "_3XaZHa_stateActions",
4261
4263
  "list": "_3XaZHa_list",
4262
- "desc": "_3XaZHa_desc",
4263
- "installBtnInstalled": "_3XaZHa_installBtnInstalled",
4264
+ "footer": "_3XaZHa_footer",
4264
4265
  "topics": "_3XaZHa_topics",
4265
- "installBtnUpdate": "_3XaZHa_installBtnUpdate",
4266
- "stateTitle": "_3XaZHa_stateTitle",
4267
- "actions": "_3XaZHa_actions",
4266
+ "fork": "_3XaZHa_fork",
4267
+ "desc": "_3XaZHa_desc",
4268
4268
  "cardMain": "_3XaZHa_cardMain",
4269
+ "updateBadge": "_3XaZHa_updateBadge",
4270
+ "actions": "_3XaZHa_actions",
4269
4271
  "cardHead": "_3XaZHa_cardHead",
4270
- "cardTitle": "_3XaZHa_cardTitle",
4271
- "footer": "_3XaZHa_footer",
4272
- "stats": "_3XaZHa_stats",
4272
+ "uninstallBtn": "_3XaZHa_uninstallBtn",
4273
4273
  "categoryBadge": "_3XaZHa_categoryBadge",
4274
+ "diagBtn": "_3XaZHa_diagBtn",
4274
4275
  "installBtn": "_3XaZHa_installBtn",
4276
+ "installBtnUpdate": "_3XaZHa_installBtnUpdate",
4277
+ "card": "_3XaZHa_card",
4278
+ "stateDesc": "_3XaZHa_stateDesc",
4279
+ "stats": "_3XaZHa_stats",
4280
+ "moreSentinel": "_3XaZHa_moreSentinel",
4281
+ "topic": "_3XaZHa_topic",
4282
+ "cardSide": "_3XaZHa_cardSide",
4283
+ "date": "_3XaZHa_date",
4284
+ "stateTitle": "_3XaZHa_stateTitle",
4285
+ "retryBtn": "_3XaZHa_retryBtn",
4286
+ "verified": "_3XaZHa_verified",
4287
+ "detailBtn": "_3XaZHa_detailBtn",
4288
+ "state": "_3XaZHa_state",
4289
+ "cardTitle": "_3XaZHa_cardTitle",
4290
+ "versionBadge": "_3XaZHa_versionBadge",
4291
+ "installBtnInstalled": "_3XaZHa_installBtnInstalled",
4275
4292
  "footLink": "_3XaZHa_footLink",
4276
- "detailBtn": "_3XaZHa_detailBtn"
4293
+ "star": "_3XaZHa_star",
4294
+ "installBtnCopied": "_3XaZHa_installBtnCopied"
4277
4295
  };
4278
4296
  //#endregion
4279
4297
  //#region src/client/hooks/useIncrementalList.ts
@@ -4481,14 +4499,14 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4481
4499
  });
4482
4500
  var SectionTabs_module_css_default = {
4483
4501
  "tabCountActive": "_7tvizq_tabCountActive",
4484
- "noticeBtn": "_7tvizq_noticeBtn",
4485
- "noticeCount": "_7tvizq_noticeCount",
4486
- "noticeIcon": "_7tvizq_noticeIcon",
4487
4502
  "tabActive": "_7tvizq_tabActive",
4488
- "tab": "_7tvizq_tab",
4489
- "tabIcon": "_7tvizq_tabIcon",
4503
+ "noticeIcon": "_7tvizq_noticeIcon",
4490
4504
  "root": "_7tvizq_root",
4491
- "tabCount": "_7tvizq_tabCount"
4505
+ "tabCount": "_7tvizq_tabCount",
4506
+ "noticeCount": "_7tvizq_noticeCount",
4507
+ "tabIcon": "_7tvizq_tabIcon",
4508
+ "noticeBtn": "_7tvizq_noticeBtn",
4509
+ "tab": "_7tvizq_tab"
4492
4510
  };
4493
4511
  //#endregion
4494
4512
  //#region src/client/components/layout/SectionTabs.tsx
@@ -4565,42 +4583,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4565
4583
  css: css$7
4566
4584
  });
4567
4585
  var InstalledView_module_css_default = {
4586
+ "root": "_1nXeGW_root",
4587
+ "rowRestart": "_1nXeGW_rowRestart",
4588
+ "rowUninstall": "_1nXeGW_rowUninstall",
4589
+ "exampleBadge": "_1nXeGW_exampleBadge",
4590
+ "segBtn": "_1nXeGW_segBtn",
4568
4591
  "emptyTitle": "_1nXeGW_emptyTitle",
4569
- "searchInput": "_1nXeGW_searchInput",
4570
- "list": "_1nXeGW_list",
4571
- "rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
4572
4592
  "versionBadge": "_1nXeGW_versionBadge",
4593
+ "segBtnActive": "_1nXeGW_segBtnActive",
4594
+ "rowDetail": "_1nXeGW_rowDetail",
4573
4595
  "segLabel": "_1nXeGW_segLabel",
4574
- "rowUninstall": "_1nXeGW_rowUninstall",
4575
- "segGroup": "_1nXeGW_segGroup",
4576
- "statusDot": "_1nXeGW_statusDot",
4577
4596
  "searchWrap": "_1nXeGW_searchWrap",
4597
+ "segGroup": "_1nXeGW_segGroup",
4578
4598
  "rowActions": "_1nXeGW_rowActions",
4579
- "rowMeta": "_1nXeGW_rowMeta",
4580
- "toolbar": "_1nXeGW_toolbar",
4581
- "segBtnActive": "_1nXeGW_segBtnActive",
4582
- "statusInactive": "_1nXeGW_statusInactive",
4583
4599
  "updateBadge": "_1nXeGW_updateBadge",
4584
- "rowCategory": "_1nXeGW_rowCategory",
4585
- "rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
4586
- "rowRestart": "_1nXeGW_rowRestart",
4587
- "segBtn": "_1nXeGW_segBtn",
4600
+ "rowMeta": "_1nXeGW_rowMeta",
4588
4601
  "segRow": "_1nXeGW_segRow",
4602
+ "row": "_1nXeGW_row",
4589
4603
  "rowRepo": "_1nXeGW_rowRepo",
4590
4604
  "empty": "_1nXeGW_empty",
4591
- "rowDetail": "_1nXeGW_rowDetail",
4592
- "row": "_1nXeGW_row",
4593
- "emptyDesc": "_1nXeGW_emptyDesc",
4594
- "rowTitle": "_1nXeGW_rowTitle",
4595
- "rowMain": "_1nXeGW_rowMain",
4596
- "exampleBadge": "_1nXeGW_exampleBadge",
4597
- "rowDesc": "_1nXeGW_rowDesc",
4605
+ "statusDot": "_1nXeGW_statusDot",
4598
4606
  "statusPending": "_1nXeGW_statusPending",
4599
- "rowTitleLine": "_1nXeGW_rowTitleLine",
4600
4607
  "exampleRow": "_1nXeGW_exampleRow",
4601
- "root": "_1nXeGW_root",
4608
+ "rowCategory": "_1nXeGW_rowCategory",
4609
+ "rowTitle": "_1nXeGW_rowTitle",
4610
+ "rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
4611
+ "rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
4612
+ "searchInput": "_1nXeGW_searchInput",
4613
+ "rowUpdate": "_1nXeGW_rowUpdate",
4602
4614
  "rowSourceTag": "_1nXeGW_rowSourceTag",
4603
- "rowUpdate": "_1nXeGW_rowUpdate"
4615
+ "rowTitleLine": "_1nXeGW_rowTitleLine",
4616
+ "rowDesc": "_1nXeGW_rowDesc",
4617
+ "rowMain": "_1nXeGW_rowMain",
4618
+ "statusInactive": "_1nXeGW_statusInactive",
4619
+ "list": "_1nXeGW_list",
4620
+ "toolbar": "_1nXeGW_toolbar",
4621
+ "emptyDesc": "_1nXeGW_emptyDesc"
4604
4622
  };
4605
4623
  //#endregion
4606
4624
  //#region src/client/components/views/InstalledView.tsx
@@ -4846,28 +4864,28 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4846
4864
  css: css$6
4847
4865
  });
4848
4866
  var CustomInstallView_module_css_default = {
4849
- "helpCmd": "zISxCG_helpCmd",
4850
- "installInput": "zISxCG_installInput",
4851
- "channelOff": "zISxCG_channelOff",
4852
- "installCardDisabled": "zISxCG_installCardDisabled",
4853
- "installInputError": "zISxCG_installInputError",
4854
- "installRow": "zISxCG_installRow",
4855
- "root": "zISxCG_root",
4856
- "desc": "zISxCG_desc",
4857
- "installInsertBtn": "zISxCG_installInsertBtn",
4858
- "installBtn": "zISxCG_installBtn",
4859
- "installHelpBtn": "zISxCG_installHelpBtn",
4860
4867
  "installCard": "zISxCG_installCard",
4861
- "installLabel": "zISxCG_installLabel",
4862
- "channelOffText": "zISxCG_channelOffText",
4863
- "installCards": "zISxCG_installCards",
4864
- "channelOffBtn": "zISxCG_channelOffBtn",
4868
+ "installHelpBtn": "zISxCG_installHelpBtn",
4865
4869
  "installCardHead": "zISxCG_installCardHead",
4870
+ "installCardDisabled": "zISxCG_installCardDisabled",
4871
+ "installBtn": "zISxCG_installBtn",
4866
4872
  "installError": "zISxCG_installError",
4873
+ "installInputError": "zISxCG_installInputError",
4867
4874
  "helpBody": "zISxCG_helpBody",
4868
4875
  "helpLine": "zISxCG_helpLine",
4876
+ "desc": "zISxCG_desc",
4877
+ "installLabel": "zISxCG_installLabel",
4869
4878
  "installExample": "zISxCG_installExample",
4870
- "helpNote": "zISxCG_helpNote"
4879
+ "installRow": "zISxCG_installRow",
4880
+ "helpCmd": "zISxCG_helpCmd",
4881
+ "installCards": "zISxCG_installCards",
4882
+ "channelOffText": "zISxCG_channelOffText",
4883
+ "helpNote": "zISxCG_helpNote",
4884
+ "root": "zISxCG_root",
4885
+ "installInput": "zISxCG_installInput",
4886
+ "channelOff": "zISxCG_channelOff",
4887
+ "installInsertBtn": "zISxCG_installInsertBtn",
4888
+ "channelOffBtn": "zISxCG_channelOffBtn"
4871
4889
  };
4872
4890
  //#endregion
4873
4891
  //#region src/client/components/views/CustomInstallView.tsx
@@ -5157,30 +5175,30 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5157
5175
  css: css$5
5158
5176
  });
5159
5177
  var SettingsView_module_css_default = {
5160
- "proxyHint": "_506LLG_proxyHint",
5178
+ "content": "_506LLG_content",
5179
+ "sidebar": "_506LLG_sidebar",
5180
+ "pageDesc": "_506LLG_pageDesc",
5161
5181
  "navItem": "_506LLG_navItem",
5182
+ "settingRowStack": "_506LLG_settingRowStack",
5162
5183
  "navIcon": "_506LLG_navIcon",
5163
- "settingControl": "_506LLG_settingControl",
5164
- "pageTitle": "_506LLG_pageTitle",
5184
+ "resetBtn": "_506LLG_resetBtn",
5185
+ "settingControlStack": "_506LLG_settingControlStack",
5186
+ "settingDesc": "_506LLG_settingDesc",
5187
+ "settingRow": "_506LLG_settingRow",
5188
+ "settingLabel": "_506LLG_settingLabel",
5189
+ "navItemActive": "_506LLG_navItemActive",
5165
5190
  "proxyControl": "_506LLG_proxyControl",
5166
- "proxyHintOk": "_506LLG_proxyHintOk",
5191
+ "settingControl": "_506LLG_settingControl",
5167
5192
  "controlDropdown": "_506LLG_controlDropdown",
5168
- "navItemActive": "_506LLG_navItemActive",
5169
- "resetBtn": "_506LLG_resetBtn",
5170
5193
  "pageHeader": "_506LLG_pageHeader",
5171
- "settingRowStack": "_506LLG_settingRowStack",
5172
5194
  "root": "_506LLG_root",
5173
- "card": "_506LLG_card",
5174
- "sidebar": "_506LLG_sidebar",
5175
- "settingTitle": "_506LLG_settingTitle",
5176
- "settingRow": "_506LLG_settingRow",
5177
- "pageDesc": "_506LLG_pageDesc",
5178
- "settingDesc": "_506LLG_settingDesc",
5179
- "settingControlStack": "_506LLG_settingControlStack",
5195
+ "pageTitle": "_506LLG_pageTitle",
5180
5196
  "textInput": "_506LLG_textInput",
5181
- "content": "_506LLG_content",
5182
- "settingLabel": "_506LLG_settingLabel",
5183
- "proxyHintFail": "_506LLG_proxyHintFail"
5197
+ "proxyHint": "_506LLG_proxyHint",
5198
+ "proxyHintOk": "_506LLG_proxyHintOk",
5199
+ "settingTitle": "_506LLG_settingTitle",
5200
+ "proxyHintFail": "_506LLG_proxyHintFail",
5201
+ "card": "_506LLG_card"
5184
5202
  };
5185
5203
  //#endregion
5186
5204
  //#region \0dsh-css:src/client/styles/Dropdown.module.css.mjs
@@ -5199,18 +5217,18 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5199
5217
  css: css$4
5200
5218
  });
5201
5219
  var Dropdown_module_css_default = {
5202
- "dropdownItemActive": "B_Gxsq_dropdownItemActive",
5203
- "dropdownPanel": "B_Gxsq_dropdownPanel",
5204
- "dropdownBtn": "B_Gxsq_dropdownBtn",
5205
5220
  "dropdownArrow": "B_Gxsq_dropdownArrow",
5206
5221
  "dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen",
5222
+ "dropdownPanel": "B_Gxsq_dropdownPanel",
5223
+ "dropdownItemActive": "B_Gxsq_dropdownItemActive",
5224
+ "dropdownCountActive": "B_Gxsq_dropdownCountActive",
5225
+ "dropdown": "B_Gxsq_dropdown",
5226
+ "dropdownBtn": "B_Gxsq_dropdownBtn",
5227
+ "dropdownLabel": "B_Gxsq_dropdownLabel",
5207
5228
  "dropdownItem": "B_Gxsq_dropdownItem",
5208
5229
  "dropdownItemLabel": "B_Gxsq_dropdownItemLabel",
5209
- "dropdownFill": "B_Gxsq_dropdownFill",
5210
- "dropdown": "B_Gxsq_dropdown",
5211
5230
  "dropdownCount": "B_Gxsq_dropdownCount",
5212
- "dropdownCountActive": "B_Gxsq_dropdownCountActive",
5213
- "dropdownLabel": "B_Gxsq_dropdownLabel"
5231
+ "dropdownFill": "B_Gxsq_dropdownFill"
5214
5232
  };
5215
5233
  //#endregion
5216
5234
  //#region \0dsh-css:src/client/styles/Toggle.module.css.mjs
@@ -5229,9 +5247,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5229
5247
  css: css$3
5230
5248
  });
5231
5249
  var Toggle_module_css_default = {
5250
+ "knob": "k-cD4G_knob",
5232
5251
  "toggle": "k-cD4G_toggle",
5233
- "toggleOn": "k-cD4G_toggleOn",
5234
- "knob": "k-cD4G_knob"
5252
+ "toggleOn": "k-cD4G_toggleOn"
5235
5253
  };
5236
5254
  //#endregion
5237
5255
  //#region src/client/components/ui/Toggle.tsx
@@ -5331,29 +5349,29 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5331
5349
  css: css$2
5332
5350
  });
5333
5351
  var DiagnosticsView_module_css_default = {
5334
- "runBtn": "k9eRya_runBtn",
5335
- "badgeFail": "k9eRya_badgeFail",
5352
+ "envDesc": "k9eRya_envDesc",
5336
5353
  "envCopyBtn": "k9eRya_envCopyBtn",
5337
- "name": "k9eRya_name",
5354
+ "display": "k9eRya_display",
5355
+ "badgeOk": "k9eRya_badgeOk",
5356
+ "meta": "k9eRya_meta",
5357
+ "badge": "k9eRya_badge",
5358
+ "runBtn": "k9eRya_runBtn",
5359
+ "row": "k9eRya_row",
5360
+ "envLabel": "k9eRya_envLabel",
5361
+ "envRow": "k9eRya_envRow",
5338
5362
  "headHint": "k9eRya_headHint",
5339
- "diagPulse": "k9eRya_diagPulse",
5340
- "envDesc": "k9eRya_envDesc",
5341
- "badgeIdle": "k9eRya_badgeIdle",
5342
- "summary": "k9eRya_summary",
5343
- "head": "k9eRya_head",
5363
+ "name": "k9eRya_name",
5344
5364
  "summaryOk": "k9eRya_summaryOk",
5345
5365
  "summaryFail": "k9eRya_summaryFail",
5346
- "badge": "k9eRya_badge",
5347
- "display": "k9eRya_display",
5348
- "envLabel": "k9eRya_envLabel",
5366
+ "badgeFail": "k9eRya_badgeFail",
5367
+ "badgeIdle": "k9eRya_badgeIdle",
5349
5368
  "summaryRunning": "k9eRya_summaryRunning",
5350
5369
  "envTitle": "k9eRya_envTitle",
5351
- "meta": "k9eRya_meta",
5370
+ "head": "k9eRya_head",
5352
5371
  "badgeRunning": "k9eRya_badgeRunning",
5353
5372
  "panel": "k9eRya_panel",
5354
- "envRow": "k9eRya_envRow",
5355
- "row": "k9eRya_row",
5356
- "badgeOk": "k9eRya_badgeOk"
5373
+ "diagPulse": "k9eRya_diagPulse",
5374
+ "summary": "k9eRya_summary"
5357
5375
  };
5358
5376
  //#endregion
5359
5377
  //#region src/client/components/views/DiagnosticsView.tsx
@@ -5531,57 +5549,57 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5531
5549
  css: css$1
5532
5550
  });
5533
5551
  var LogsView_module_css_default = {
5552
+ "empty": "_3j77BW_empty",
5553
+ "previewRow": "_3j77BW_previewRow",
5534
5554
  "message": "_3j77BW_message",
5535
5555
  "linkBtn": "_3j77BW_linkBtn",
5536
- "pathRow": "_3j77BW_pathRow",
5537
- "headHint": "_3j77BW_headHint",
5538
- "pathText": "_3j77BW_pathText",
5539
- "pathLabel": "_3j77BW_pathLabel",
5540
- "actions": "_3j77BW_actions",
5541
5556
  "filterBar": "_3j77BW_filterBar",
5542
- "moreEnd": "_3j77BW_moreEnd",
5543
- "time": "_3j77BW_time",
5544
- "pathDialog": "_3j77BW_pathDialog",
5557
+ "entry": "_3j77BW_entry",
5558
+ "headHint": "_3j77BW_headHint",
5545
5559
  "pathDialogRow": "_3j77BW_pathDialogRow",
5546
- "headActions": "_3j77BW_headActions",
5547
- "foot": "_3j77BW_foot",
5548
- "footPath": "_3j77BW_footPath",
5549
- "badge": "_3j77BW_badge",
5550
- "head": "_3j77BW_head",
5551
5560
  "pathDialogReset": "_3j77BW_pathDialogReset",
5552
- "badgeWarn": "_3j77BW_badgeWarn",
5553
- "badgeError": "_3j77BW_badgeError",
5554
- "catSystem": "_3j77BW_catSystem",
5555
- "badgeDebug": "_3j77BW_badgeDebug",
5561
+ "pathDialogFoot": "_3j77BW_pathDialogFoot",
5562
+ "foot": "_3j77BW_foot",
5556
5563
  "footFail": "_3j77BW_footFail",
5564
+ "pathLabel": "_3j77BW_pathLabel",
5557
5565
  "pathDraft": "_3j77BW_pathDraft",
5558
- "more": "_3j77BW_more",
5559
- "event": "_3j77BW_event",
5560
- "filterChip": "_3j77BW_filterChip",
5561
- "entry": "_3j77BW_entry",
5562
- "clearBtn": "_3j77BW_clearBtn",
5563
- "pathDialogDesc": "_3j77BW_pathDialogDesc",
5564
- "previewRow": "_3j77BW_previewRow",
5565
5566
  "footCount": "_3j77BW_footCount",
5566
- "searchInput": "_3j77BW_searchInput",
5567
- "catDiagnostics": "_3j77BW_catDiagnostics",
5568
- "empty": "_3j77BW_empty",
5569
- "catSettings": "_3j77BW_catSettings",
5570
- "btn": "_3j77BW_btn",
5571
- "catUninstall": "_3j77BW_catUninstall",
5572
5567
  "footActions": "_3j77BW_footActions",
5573
- "catBadge": "_3j77BW_catBadge",
5574
- "list": "_3j77BW_list",
5568
+ "badgeWarn": "_3j77BW_badgeWarn",
5575
5569
  "badgeInfo": "_3j77BW_badgeInfo",
5576
- "badgeSuccess": "_3j77BW_badgeSuccess",
5570
+ "filterChipActive": "_3j77BW_filterChipActive",
5571
+ "catSettings": "_3j77BW_catSettings",
5572
+ "pathDialogHint": "_3j77BW_pathDialogHint",
5573
+ "list": "_3j77BW_list",
5574
+ "head": "_3j77BW_head",
5575
+ "filterChip": "_3j77BW_filterChip",
5576
+ "badgeDebug": "_3j77BW_badgeDebug",
5577
+ "panel": "_3j77BW_panel",
5578
+ "pathRow": "_3j77BW_pathRow",
5579
+ "more": "_3j77BW_more",
5580
+ "footPath": "_3j77BW_footPath",
5577
5581
  "catInstall": "_3j77BW_catInstall",
5582
+ "catUninstall": "_3j77BW_catUninstall",
5578
5583
  "catUpdate": "_3j77BW_catUpdate",
5579
- "pathDialogFoot": "_3j77BW_pathDialogFoot",
5584
+ "clearBtn": "_3j77BW_clearBtn",
5585
+ "pathDialogDesc": "_3j77BW_pathDialogDesc",
5586
+ "catDiagnostics": "_3j77BW_catDiagnostics",
5587
+ "searchInput": "_3j77BW_searchInput",
5588
+ "headActions": "_3j77BW_headActions",
5589
+ "badgeSuccess": "_3j77BW_badgeSuccess",
5590
+ "catSystem": "_3j77BW_catSystem",
5591
+ "pathText": "_3j77BW_pathText",
5592
+ "catBadge": "_3j77BW_catBadge",
5580
5593
  "search": "_3j77BW_search",
5594
+ "btn": "_3j77BW_btn",
5595
+ "actions": "_3j77BW_actions",
5596
+ "event": "_3j77BW_event",
5597
+ "time": "_3j77BW_time",
5598
+ "pathDialog": "_3j77BW_pathDialog",
5581
5599
  "logList": "_3j77BW_logList",
5582
- "panel": "_3j77BW_panel",
5583
- "pathDialogHint": "_3j77BW_pathDialogHint",
5584
- "filterChipActive": "_3j77BW_filterChipActive"
5600
+ "moreEnd": "_3j77BW_moreEnd",
5601
+ "badgeError": "_3j77BW_badgeError",
5602
+ "badge": "_3j77BW_badge"
5585
5603
  };
5586
5604
  //#endregion
5587
5605
  //#region src/client/components/modals/LogsModal.tsx
@@ -6830,7 +6848,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6830
6848
  openSection: settingsSection,
6831
6849
  onConsumedOpenSection: () => setSettingsSection(null)
6832
6850
  }), showHubUpdate && (0, react.createElement)(HubUpdateModal, {
6833
- info: catalog.hubUpdateInfo ?? { version: "1.5.0" },
6851
+ info: catalog.hubUpdateInfo ?? { version: "1.5.2" },
6834
6852
  lang,
6835
6853
  t,
6836
6854
  hasUpdate: catalog.hubHasUpdate,