dsh-plugin 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +20 -15
- package/README.md +21 -16
- package/client/client.js +668 -429
- package/client/client.js.map +1 -1
- package/cordis.patch.yml +1 -1
- package/lib/http/routes.js +47 -3
- package/lib/index.js +1 -1
- package/lib/services/install/install-types.js +1 -1
- package/lib/services/install/npm-check.js +1 -1
- package/lib/services/install/npm-resolve.js +1 -1
- package/lib/services/install/preflight.js +1 -1
- package/lib/services/install/task-queue.js +1 -1
- package/lib/services/loader.js +1 -1
- package/lib/services/log.js +1 -1
- package/lib/services/probe.js +1 -1
- package/lib/services/profile/installed-versions.js +1 -1
- package/lib/services/profile/profile.js +6 -5
- package/lib/services/profile/progress.js +1 -1
- package/lib/services/settings.js +1 -1
- package/lib/types/index.d.ts +1 -1
- package/lib/types/services/install/install-types.d.ts +1 -1
- package/lib/types/services/install/install.d.ts +1 -1
- package/lib/types/services/profile/pending-restart.d.ts +1 -1
- package/lib/types/services/profile/progress.d.ts +1 -1
- package/package.json +2 -2
- package/src/client/components/PluginHubSection.tsx +83 -13
- package/src/client/components/catalog/CatalogList.tsx +1 -1
- package/src/client/components/catalog/PluginCard.tsx +1 -1
- package/src/client/components/layout/CatalogControls.tsx +1 -1
- package/src/client/components/layout/CatalogHeader.tsx +2 -2
- package/src/client/components/layout/CategoryTabs.tsx +1 -1
- package/src/client/components/layout/SectionTabs.tsx +1 -1
- package/src/client/components/modals/AboutModal.tsx +2 -2
- package/src/client/components/modals/HubUpdateModal.tsx +1 -1
- package/src/client/components/modals/InstalledDetailModal.tsx +1 -1
- package/src/client/components/modals/LogsModal.tsx +1 -1
- package/src/client/components/modals/LogsPathModal.tsx +1 -1
- package/src/client/components/modals/NotificationsModal.tsx +11 -2
- package/src/client/components/modals/ProgressView.tsx +1 -1
- package/src/client/components/modals/modals.tsx +1 -1
- package/src/client/components/ui/Dropdown.tsx +1 -1
- package/src/client/components/ui/Toggle.tsx +1 -1
- package/src/client/components/ui/icons.tsx +22 -1
- package/src/client/components/views/CustomInstallView.tsx +133 -44
- package/src/client/components/views/DiagnosticsView.tsx +2 -2
- package/src/client/components/views/InstalledView.tsx +1 -1
- package/src/client/components/views/LogsView.tsx +1 -1
- package/src/client/components/views/MarketView.tsx +1 -1
- package/src/client/components/views/SettingsView.tsx +1 -1
- package/src/client/data/catalog.ts +1 -1
- package/src/client/data/host.ts +1 -1
- package/src/client/data/hub.ts +12 -3
- package/src/client/hooks/useCatalog.ts +19 -6
- package/src/client/hooks/useIncrementalList.ts +1 -1
- package/src/client/hooks/useLanguage.ts +1 -1
- package/src/client/hooks/useSettings.ts +1 -1
- package/src/client/hooks/useTaskQueue.ts +1 -1
- package/src/client/index.tsx +1 -1
- package/src/client/locales.ts +50 -30
- package/src/client/logic/constants.ts +2 -2
- package/src/client/logic/failures.ts +48 -2
- package/src/client/logic/format.ts +1 -1
- package/src/client/logic/install-command.ts +1 -1
- package/src/client/logic/installed.ts +1 -1
- package/src/client/logic/normalize.ts +1 -1
- package/src/client/logic/renderMarkdown.ts +1 -1
- package/src/client/logic/urls.ts +2 -2
- package/src/client/styles/CustomInstallView.module.css +59 -1
- package/src/client/styles/DiagnosticsView.module.css +1 -1
- package/src/client/styles/Dropdown.module.css +1 -1
- package/src/client/styles/Header.module.css +1 -1
- package/src/client/styles/InstalledView.module.css +19 -6
- package/src/client/styles/List.module.css +11 -1
- package/src/client/styles/LogsView.module.css +1 -1
- package/src/client/styles/Modal.module.css +32 -1
- package/src/client/styles/SectionTabs.module.css +1 -1
- package/src/client/styles/SettingsView.module.css +1 -1
- package/src/client/styles/Toggle.module.css +1 -1
- package/src/client/styles/tokens.module.css +32 -5
- package/src/client/types.ts +1 -1
- package/src/server/http/routes.ts +54 -3
- package/src/server/index.ts +1 -1
- package/src/server/services/install/install-types.ts +1 -1
- package/src/server/services/install/install.ts +1 -1
- package/src/server/services/install/npm-check.ts +1 -1
- package/src/server/services/install/npm-resolve.ts +1 -1
- package/src/server/services/install/preflight.ts +1 -1
- package/src/server/services/install/task-queue.ts +1 -1
- package/src/server/services/loader.ts +1 -1
- package/src/server/services/log.ts +1 -1
- package/src/server/services/probe.ts +1 -1
- package/src/server/services/profile/installed-versions.ts +1 -1
- package/src/server/services/profile/pending-restart.ts +1 -1
- package/src/server/services/profile/profile.ts +6 -5
- package/src/server/services/profile/progress.ts +1 -1
- package/src/server/services/settings.ts +1 -1
package/client/client.js
CHANGED
|
@@ -7,18 +7,18 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
7
7
|
let react = require("react");
|
|
8
8
|
//#region src/client/locales.ts
|
|
9
9
|
/**
|
|
10
|
-
* DSH
|
|
10
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
11
11
|
* Website: https://dsh-plugin.org
|
|
12
12
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
13
13
|
*
|
|
14
|
-
* zh/en dictionaries for the DSH
|
|
14
|
+
* zh/en dictionaries for the DSH Plugin Hub settings section.
|
|
15
15
|
*/
|
|
16
16
|
const zh = {
|
|
17
17
|
nav: "插件中心",
|
|
18
|
-
title: "DSH
|
|
19
|
-
tagline: "DSH
|
|
18
|
+
title: "DSH Plugin Hub",
|
|
19
|
+
tagline: "DSH Plugin 插件中心:面向 DeepSeek Harness 插件收录平台,人工审验、来源可溯,免费安装",
|
|
20
20
|
adBadge: "推荐",
|
|
21
|
-
ad: "DSH
|
|
21
|
+
ad: "DSH Plugin 插件中心:收录 {total} 款插件,{verified} 款人工精选验证,每日更新",
|
|
22
22
|
search: "搜索插件名称、描述、标签…",
|
|
23
23
|
all: "全部",
|
|
24
24
|
sortStars: "Star",
|
|
@@ -48,23 +48,29 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
48
48
|
viewSettingsHint: "网络通道与偏好设置",
|
|
49
49
|
installedEmpty: "还没有安装插件",
|
|
50
50
|
installedEmptyDesc: "可以去「自定义安装」,手动安装 NPM 包或 GitHub 源码",
|
|
51
|
-
npmInstallLabel: "NPM 包",
|
|
52
|
-
npmInstallPlaceholder: "
|
|
53
|
-
npmInstallExample: "
|
|
54
|
-
|
|
51
|
+
npmInstallLabel: "NPM 包 / 命令",
|
|
52
|
+
npmInstallPlaceholder: "npm install <包名> 或直接输包名",
|
|
53
|
+
npmInstallExample: "支持原生命令:npm install lodash、npm i lodash、pnpm add @scope/pkg",
|
|
54
|
+
npmInstallExample2: "全局安装 CLI:npm install -g @scope/cli;或直接输入包名 lodash",
|
|
55
|
+
npmInstallInvalid: "请输入 npm 包名(如 lodash、@scope/pkg),或原生安装命令(如 npm install lodash、npm i lodash、pnpm add @scope/pkg、npm install -g @scope/cli)",
|
|
55
56
|
gitInstallLabel: "GitHub 源码",
|
|
56
57
|
gitInstallPlaceholder: "输入仓库地址",
|
|
57
58
|
gitInstallExample: "例如:owner/repo 或 https://github.com/owner/repo",
|
|
58
59
|
gitInstallInvalid: "请输入 GitHub 仓库地址,例如:owner/repo 或 https://github.com/owner/repo",
|
|
59
60
|
dshCmdLabel: "DeepSeek Harness 命令",
|
|
60
|
-
dshCmdPlaceholder: "
|
|
61
|
-
dshCmdExample: "例如:
|
|
62
|
-
dshCmdInvalid: "
|
|
61
|
+
dshCmdPlaceholder: "粘贴官方 dsh plugin 命令",
|
|
62
|
+
dshCmdExample: "例如:dsh plugin --profile web add github:owner/repo",
|
|
63
|
+
dshCmdInvalid: "请输入官方 dsh plugin 安装命令(--profile 必填)。例如:dsh plugin --profile web add github:owner/repo",
|
|
64
|
+
installHelp: "帮助",
|
|
65
|
+
helpModalTitle: "支持的命令格式",
|
|
66
|
+
npmInstallHelp: "lodash、@scope/pkg 直接输入包名\nnpm install lodash\nnpm i lodash\npnpm add @scope/pkg\npnpm i @scope/pkg\nnpm install -g @scope/cli 全局安装 CLI 工具,不进「已安装」列表",
|
|
67
|
+
gitInstallHelp: "owner/repo\nhttps://github.com/owner/repo\ngithub:owner/repo\ngit+https://github.com/owner/repo.git\ngit@github.com:owner/repo.git",
|
|
68
|
+
dshCmdHelp: "dsh plugin --profile web add <目标>\ndsh plugin --profile=web add <目标>\n --profile 必填,官方 CLI 无 -p 简写;<目标> 可为 npm 包名或 github:owner/repo",
|
|
63
69
|
globalNpmHint: "将全局安装 CLI 工具(npm install -g),不会出现在「已安装」列表,无需重启宿主",
|
|
64
70
|
installCliBtn: "安装",
|
|
65
71
|
channelDisabledHint: "该安装通道已关闭,请在「设置 → 安全信任」中打开开关",
|
|
66
72
|
goToSettings: "前往设置",
|
|
67
|
-
customViewDesc: "手动安装目录外的 NPM 包、GitHub
|
|
73
|
+
customViewDesc: "手动安装目录外的 NPM 包、GitHub 源码,或粘贴官方 dsh plugin 命令。装完的条目会出现在「已安装」列表,并标记为自定义安装。",
|
|
68
74
|
customLabel: "自定义安装",
|
|
69
75
|
installedSearch: "搜索已安装的插件…",
|
|
70
76
|
installedFilterCatalog: "目录插件",
|
|
@@ -189,6 +195,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
189
195
|
updatesFound: "发现 {n} 个插件可更新,已加入通知中心",
|
|
190
196
|
updateNoticeTitle: "发现新版本",
|
|
191
197
|
updateNoticeGo: "去更新",
|
|
198
|
+
ignoreUpdateRun: "忽略本次更新",
|
|
199
|
+
ignoreUpdateConfirmTitle: "忽略本次更新?",
|
|
200
|
+
ignoreUpdateConfirmDetail: "忽略后本次版本不再提醒;待插件发布下一个新版本时,会再次通知你。",
|
|
201
|
+
ignoreUpdateConfirm: "确认忽略",
|
|
192
202
|
uninstall: "卸载",
|
|
193
203
|
uninstalling: "卸载中…",
|
|
194
204
|
uninstallTitle: "确认卸载?",
|
|
@@ -274,8 +284,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
274
284
|
update: "可更新",
|
|
275
285
|
updateAvailable: "有更新",
|
|
276
286
|
updateAvailableHint: "检测到更新:有版本号的仓库比对版本号,无版本号的仓库比对仓库最近更新时间",
|
|
277
|
-
hubUpdateHint: "检测到 DSH
|
|
278
|
-
hubUpdateTitle: "DSH
|
|
287
|
+
hubUpdateHint: "检测到 DSH Plugin Hub 新版本,点击查看更新内容并更新",
|
|
288
|
+
hubUpdateTitle: "DSH Plugin Hub 有新版本",
|
|
279
289
|
hubUpdateDesc: "v{version} 已发布,点击下方按钮即可更新,完成后需重启宿主生效。",
|
|
280
290
|
hubUpdatePublished: "发布于",
|
|
281
291
|
hubUpdateNotes: "更新记录",
|
|
@@ -286,7 +296,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
286
296
|
hubUpToDate: "已是最新版本",
|
|
287
297
|
followUs: "关注我们",
|
|
288
298
|
aboutTitle: "关注我们",
|
|
289
|
-
aboutDesc: "了解 DSH
|
|
299
|
+
aboutDesc: "了解 DSH Plugin Hub 是做什么的,加入用户反馈群随时交流。",
|
|
290
300
|
aboutEmpty: "内容暂未发布,敬请期待。",
|
|
291
301
|
aboutUpdated: "更新于",
|
|
292
302
|
empty: "该分类暂无插件",
|
|
@@ -294,10 +304,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
294
304
|
};
|
|
295
305
|
const en = {
|
|
296
306
|
nav: "Plugin Hub",
|
|
297
|
-
title: "DSH
|
|
298
|
-
tagline: "DSH
|
|
307
|
+
title: "DSH Plugin Hub",
|
|
308
|
+
tagline: "DSH Plugin Hub: a human-verified, free marketplace for DeepSeek Harness plugins",
|
|
299
309
|
adBadge: "Featured",
|
|
300
|
-
ad: "DSH
|
|
310
|
+
ad: "DSH Plugin Hub: {total} plugins indexed, {verified} human-verified, updated daily",
|
|
301
311
|
search: "Search plugins by name, description, tags…",
|
|
302
312
|
all: "All",
|
|
303
313
|
sortStars: "Stars",
|
|
@@ -328,23 +338,29 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
328
338
|
viewSettingsHint: "Network sources and preferences",
|
|
329
339
|
installedEmpty: "No plugins installed yet",
|
|
330
340
|
installedEmptyDesc: "Go to Custom to add an npm package or GitHub source manually",
|
|
331
|
-
npmInstallLabel: "npm package",
|
|
332
|
-
npmInstallPlaceholder: "npm package name",
|
|
333
|
-
npmInstallExample: "
|
|
334
|
-
|
|
341
|
+
npmInstallLabel: "npm package / command",
|
|
342
|
+
npmInstallPlaceholder: "npm install <pkg> or a bare package name",
|
|
343
|
+
npmInstallExample: "Native commands: npm install lodash, npm i lodash, pnpm add @scope/pkg",
|
|
344
|
+
npmInstallExample2: "Global CLI: npm install -g @scope/cli; or just type a package name like lodash",
|
|
345
|
+
npmInstallInvalid: "Enter an npm package name (e.g. lodash, @scope/pkg), or a native install command (e.g. npm install lodash, npm i lodash, pnpm add @scope/pkg, npm install -g @scope/cli)",
|
|
335
346
|
gitInstallLabel: "GitHub source",
|
|
336
347
|
gitInstallPlaceholder: "Repository address",
|
|
337
348
|
gitInstallExample: "e.g. owner/repo or https://github.com/owner/repo",
|
|
338
349
|
gitInstallInvalid: "Enter a GitHub repository address, e.g. owner/repo or https://github.com/owner/repo",
|
|
339
350
|
dshCmdLabel: "DeepSeek Harness command",
|
|
340
|
-
dshCmdPlaceholder: "Paste an
|
|
341
|
-
dshCmdExample: "e.g.
|
|
342
|
-
dshCmdInvalid: "Paste
|
|
351
|
+
dshCmdPlaceholder: "Paste an official dsh plugin command",
|
|
352
|
+
dshCmdExample: "e.g. dsh plugin --profile web add github:owner/repo",
|
|
353
|
+
dshCmdInvalid: "Paste an official dsh plugin install command (--profile required), e.g. dsh plugin --profile web add github:owner/repo",
|
|
354
|
+
installHelp: "Help",
|
|
355
|
+
helpModalTitle: "Supported command formats",
|
|
356
|
+
npmInstallHelp: "lodash or @scope/pkg just type the package name\nnpm install lodash\nnpm i lodash\npnpm add @scope/pkg\npnpm i @scope/pkg\nnpm install -g @scope/cli installs the CLI globally, not shown in Installed",
|
|
357
|
+
gitInstallHelp: "owner/repo\nhttps://github.com/owner/repo\ngithub:owner/repo\ngit+https://github.com/owner/repo.git\ngit@github.com:owner/repo.git",
|
|
358
|
+
dshCmdHelp: "dsh plugin --profile web add <target>\ndsh plugin --profile=web add <target>\n --profile is required and there is no -p shorthand; <target> can be an npm package or github:owner/repo",
|
|
343
359
|
globalNpmHint: "This installs CLI tools globally (npm install -g). They won't appear in Installed and no host restart is needed.",
|
|
344
360
|
installCliBtn: "Install",
|
|
345
361
|
channelDisabledHint: "This install channel is disabled — enable it in Settings → Security & Trust",
|
|
346
362
|
goToSettings: "Go to Settings",
|
|
347
|
-
customViewDesc: "Manually install an npm package, a GitHub source, or paste an official
|
|
363
|
+
customViewDesc: "Manually install an npm package, a GitHub source, or paste an official dsh plugin command. Finished installs appear in Installed, marked as custom.",
|
|
348
364
|
customLabel: "Custom install",
|
|
349
365
|
installedSearch: "Search installed plugins…",
|
|
350
366
|
installedFilterCatalog: "Catalog",
|
|
@@ -471,6 +487,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
471
487
|
updatesFound: "{n} plugin(s) have updates — check the notification center",
|
|
472
488
|
updateNoticeTitle: "Update available",
|
|
473
489
|
updateNoticeGo: "Update",
|
|
490
|
+
ignoreUpdateRun: "Ignore this update",
|
|
491
|
+
ignoreUpdateConfirmTitle: "Ignore this update?",
|
|
492
|
+
ignoreUpdateConfirmDetail: "This version will no longer notify you. You will be alerted again when the next version is released.",
|
|
493
|
+
ignoreUpdateConfirm: "Ignore",
|
|
474
494
|
uninstall: "Uninstall",
|
|
475
495
|
uninstalling: "Removing…",
|
|
476
496
|
uninstallTitle: "Confirm uninstall?",
|
|
@@ -557,8 +577,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
557
577
|
update: "Update",
|
|
558
578
|
updateAvailable: "Update available",
|
|
559
579
|
updateAvailableHint: "An update was detected: repos with a release are compared by tag, repos without one by last push time",
|
|
560
|
-
hubUpdateHint: "A new DSH
|
|
561
|
-
hubUpdateTitle: "A new DSH
|
|
580
|
+
hubUpdateHint: "A new DSH Plugin Hub version is available — click to view the changelog and update",
|
|
581
|
+
hubUpdateTitle: "A new DSH Plugin Hub version is available",
|
|
562
582
|
hubUpdateDesc: "v{version} has been released — click below to update, then restart the host to apply it.",
|
|
563
583
|
hubUpdatePublished: "Published",
|
|
564
584
|
hubUpdateNotes: "What's new",
|
|
@@ -569,7 +589,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
569
589
|
hubUpToDate: "Up to date",
|
|
570
590
|
followUs: "Follow us",
|
|
571
591
|
aboutTitle: "Follow us",
|
|
572
|
-
aboutDesc: "Learn what DSH
|
|
592
|
+
aboutDesc: "Learn what DSH Plugin Hub does and join our user feedback group.",
|
|
573
593
|
aboutEmpty: "Content not published yet — stay tuned.",
|
|
574
594
|
aboutUpdated: "Updated",
|
|
575
595
|
empty: "No plugins in this category yet",
|
|
@@ -587,42 +607,178 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
587
607
|
document.head.appendChild(tag);
|
|
588
608
|
}
|
|
589
609
|
var Header_module_css_default = {
|
|
590
|
-
"searchRow": "qikqja_searchRow",
|
|
591
|
-
"taglineLink": "qikqja_taglineLink",
|
|
592
|
-
"tabCount": "qikqja_tabCount",
|
|
593
|
-
"sortGroup": "qikqja_sortGroup",
|
|
594
|
-
"tab": "qikqja_tab",
|
|
595
|
-
"segBtn": "qikqja_segBtn",
|
|
596
|
-
"versionBtn": "qikqja_versionBtn",
|
|
597
|
-
"resultSeg": "qikqja_resultSeg",
|
|
598
|
-
"headerTitleRow": "qikqja_headerTitleRow",
|
|
599
|
-
"header": "qikqja_header",
|
|
600
|
-
"tabs": "qikqja_tabs",
|
|
601
|
-
"resultCount": "qikqja_resultCount",
|
|
602
|
-
"tabActive": "qikqja_tabActive",
|
|
603
|
-
"adBanner": "qikqja_adBanner",
|
|
604
610
|
"copyIcon": "qikqja_copyIcon",
|
|
605
|
-
"controls": "qikqja_controls",
|
|
606
|
-
"githubIcon": "qikqja_githubIcon",
|
|
607
611
|
"hubUpdateBadge": "qikqja_hubUpdateBadge",
|
|
612
|
+
"adArrow": "qikqja_adArrow",
|
|
613
|
+
"githubLink": "qikqja_githubLink",
|
|
608
614
|
"tagline": "qikqja_tagline",
|
|
609
|
-
"
|
|
615
|
+
"controls": "qikqja_controls",
|
|
610
616
|
"adText": "qikqja_adText",
|
|
611
|
-
"
|
|
612
|
-
"root": "qikqja_root",
|
|
617
|
+
"tabCount": "qikqja_tabCount",
|
|
613
618
|
"tabsRow": "qikqja_tabsRow",
|
|
614
|
-
"langBtn": "qikqja_langBtn",
|
|
615
619
|
"logoIcon": "qikqja_logoIcon",
|
|
616
|
-
"
|
|
617
|
-
"
|
|
618
|
-
"segLabel": "qikqja_segLabel",
|
|
620
|
+
"root": "qikqja_root",
|
|
621
|
+
"resultCount": "qikqja_resultCount",
|
|
619
622
|
"version": "qikqja_version",
|
|
623
|
+
"segLabel": "qikqja_segLabel",
|
|
620
624
|
"aboutBtn": "qikqja_aboutBtn",
|
|
625
|
+
"segBtn": "qikqja_segBtn",
|
|
626
|
+
"tabs": "qikqja_tabs",
|
|
627
|
+
"adBanner": "qikqja_adBanner",
|
|
621
628
|
"segGroup": "qikqja_segGroup",
|
|
622
|
-
"
|
|
629
|
+
"resultSeg": "qikqja_resultSeg",
|
|
630
|
+
"githubIcon": "qikqja_githubIcon",
|
|
631
|
+
"tab": "qikqja_tab",
|
|
632
|
+
"langBtn": "qikqja_langBtn",
|
|
623
633
|
"brandTitle": "qikqja_brandTitle",
|
|
624
|
-
"
|
|
625
|
-
"
|
|
634
|
+
"taglineLink": "qikqja_taglineLink",
|
|
635
|
+
"search": "qikqja_search",
|
|
636
|
+
"searchRow": "qikqja_searchRow",
|
|
637
|
+
"segBtnActive": "qikqja_segBtnActive",
|
|
638
|
+
"title": "qikqja_title",
|
|
639
|
+
"sortGroup": "qikqja_sortGroup",
|
|
640
|
+
"header": "qikqja_header",
|
|
641
|
+
"tabActive": "qikqja_tabActive",
|
|
642
|
+
"headerRight": "qikqja_headerRight",
|
|
643
|
+
"versionBtn": "qikqja_versionBtn",
|
|
644
|
+
"headerTitleRow": "qikqja_headerTitleRow",
|
|
645
|
+
"adBadge": "qikqja_adBadge"
|
|
646
|
+
};
|
|
647
|
+
//#endregion
|
|
648
|
+
//#region \0dsh-css:src/client/styles/Modal.module.css.mjs
|
|
649
|
+
const css$10 = ".BiQ1zG_overlay{z-index:998;-webkit-user-select:none;user-select:none;background:#00000061;justify-content:center;align-items:center;animation:.16s ease-out BiQ1zG_overlayIn;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.BiQ1zG_modal,.BiQ1zG_errorModal{background:var(--hub-bg-1);border:1px solid var(--hub-border-2);border-radius:10px;flex-direction:column;gap:10px;width:420px;max-width:calc(100vw - 32px);max-height:calc(100vh - 64px);padding:14px 16px;animation:.18s ease-out BiQ1zG_modalIn;display:flex;box-shadow:0 12px 40px #0000003d}.BiQ1zG_errorModal{width:640px;max-width:calc(100vw - 48px)}.BiQ1zG_modalWide{width:560px;max-width:calc(100vw - 48px)}.BiQ1zG_helpModal{width:720px;max-width:calc(100vw - 48px)}.BiQ1zG_logModal{width:780px;max-width:calc(100vw - 48px);height:min(540px,100vh - 64px)}.BiQ1zG_modalHead{flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;display:flex}.BiQ1zG_modalTitle{color:var(--hub-text-primary);font-size:14px;font-weight:600;line-height:20px}.BiQ1zG_modalTitleBusy{color:var(--hub-brand)}.BiQ1zG_modalTitleQueued{color:var(--hub-warning)}.BiQ1zG_modalClose{width:24px;height:24px;color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;font-size:16px;line-height:1;display:inline-flex}.BiQ1zG_modalClose:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}.BiQ1zG_modalCloseIcon{flex-shrink:0;width:14px;height:14px}.BiQ1zG_modalDesc{color:var(--hub-text-secondary);font-size:12px;line-height:18px}.BiQ1zG_trustHint{color:var(--hub-danger-text);background:var(--hub-danger-tint);border:1px solid var(--hub-danger-border-soft);border-radius:6px;padding:6px 10px;font-size:12px;font-weight:500;line-height:18px}.BiQ1zG_cliOnlyHint{color:var(--hub-text-secondary);background:var(--hub-bg-hover);border-radius:6px;padding:6px 10px;font-size:12px;line-height:18px}.BiQ1zG_failedCopyHint{color:var(--hub-danger-text);background:var(--hub-danger-tint);border:1px solid var(--hub-danger-border-soft);border-radius:6px;padding:6px 10px;font-size:12px;font-weight:500;line-height:18px}.BiQ1zG_modalRow{align-items:baseline;gap:8px;min-width:0;font-size:12px;line-height:18px;display:flex}.BiQ1zG_modalLabel{min-width:64px;color:var(--hub-text-tertiary);flex-shrink:0}.BiQ1zG_modalValue{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-text-primary);font-weight:500;overflow:hidden}.BiQ1zG_modalLink{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;font-weight:500;text-decoration:none;transition:color .12s;display:inline-flex;overflow:hidden}.BiQ1zG_modalLink:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_linkIcon{flex-shrink:0}.BiQ1zG_modalCmd{color:var(--hub-text-primary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:6px 6px 6px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:18px;transition:border-color .12s,background .12s;display:flex}.BiQ1zG_modalCmd:hover{border-color:var(--hub-border-ghost);background:var(--hub-bg-3)}.BiQ1zG_modalCmdText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.BiQ1zG_modalCmdCopy{color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:4px;flex-shrink:0;align-items:center;gap:3px;padding:1px 7px;font-family:inherit;font-size:11px;line-height:16px;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_modalCmdCopy:hover{color:var(--hub-brand-hover);background:var(--hub-bg-2)}.BiQ1zG_modalActions{justify-content:flex-end;align-items:center;gap:8px;margin-top:2px;display:flex}.BiQ1zG_modalBody{flex-direction:column;flex:auto;gap:10px;min-height:0;display:flex;overflow-y:auto}.BiQ1zG_toast{z-index:1000;background:var(--hub-btn-fill);color:var(--hub-text-on-fill);pointer-events:none;white-space:nowrap;border:none;border-radius:8px;padding:10px 16px;font-size:12px;font-weight:500;line-height:18px;animation:.22s ease-out BiQ1zG_toastIn;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 6px 24px #00000047}@keyframes BiQ1zG_toastIn{0%{opacity:0;transform:translate(-50%,-44%)}to{opacity:1;transform:translate(-50%,-50%)}}.BiQ1zG_toastFail{background:var(--hub-danger);color:#fff;border-color:#ffffff3d}.BiQ1zG_queueSection{flex-direction:column;gap:6px;display:flex}.BiQ1zG_queueSectionTitle{color:var(--hub-text-secondary);padding:4px 2px 0;font-size:12px;font-weight:600;line-height:18px}.BiQ1zG_pendingRowStatus{color:var(--hub-warn);flex-shrink:0;font-weight:500}.BiQ1zG_pendingRowActions{flex-shrink:0;gap:8px;margin-left:auto;display:flex}.BiQ1zG_queueRow{border:1px solid var(--hub-border-2);background:var(--hub-bg-2);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;flex-direction:column;gap:5px;padding:8px 10px;font-size:12px;line-height:18px;transition:background .12s;display:flex}.BiQ1zG_queueRow:hover{background:var(--hub-brand-tint)}.BiQ1zG_queueRowHead{align-items:center;gap:10px;display:flex}.BiQ1zG_queueRowTarget{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-text-primary);flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow:hidden}.BiQ1zG_queueRowDesc{color:var(--hub-text-tertiary);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.BiQ1zG_queueRowBody{align-items:center;gap:8px;display:flex}.BiQ1zG_queueRowStatus{color:var(--hub-brand);flex-shrink:0;font-weight:500}.BiQ1zG_queueRowTrack{flex:1;min-width:0}.BiQ1zG_queueRowPct{color:var(--hub-text-tertiary);font-variant-numeric:tabular-nums;flex-shrink:0}.BiQ1zG_stripCancel{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;flex-shrink:0;padding:2px 10px;font-size:12px;line-height:18px;transition:background .12s,color .12s}.BiQ1zG_stripCancel:hover{background:var(--hub-danger-tint);color:var(--hub-danger-text)}.BiQ1zG_stripCancel:disabled{opacity:.45;cursor:default}.BiQ1zG_queuedHint{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft);border-radius:6px;padding:5px 10px;font-size:12px;line-height:18px}.BiQ1zG_errorTitle{color:var(--hub-danger-text);font-size:14px;font-weight:600;line-height:20px}.BiQ1zG_errorBox{border:1px solid var(--hub-danger-border);background:var(--hub-danger-tint-weak);max-height:240px;color:var(--hub-text-primary);white-space:pre-wrap;word-break:break-word;-webkit-user-select:none;user-select:none;border-radius:6px;margin:0;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:17px;overflow:auto}.BiQ1zG_errorCopySoft{color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:4px;flex-shrink:0;align-items:center;padding:2px 8px;font-size:11px;line-height:16px;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_errorCopySoft:hover{color:var(--hub-text-secondary);background:var(--hub-bg-2)}.BiQ1zG_errorHint{color:var(--hub-text-tertiary);font-size:12px;line-height:18px}.BiQ1zG_modalCancel,.BiQ1zG_modalCopy{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;padding:5px 14px;font-size:12px;line-height:18px;transition:color .12s,background .12s}.BiQ1zG_modalCancel:hover,.BiQ1zG_modalCopy:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}.BiQ1zG_modalInstall{color:var(--hub-text-on-fill);background:var(--hub-btn-fill);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_modalInstall:hover{background:var(--hub-btn-hover)}.BiQ1zG_modalCopy:disabled,.BiQ1zG_modalInstall:disabled,.BiQ1zG_modalCancel:disabled,.BiQ1zG_modalClose:disabled,.BiQ1zG_uninstallConfirm:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.BiQ1zG_uninstallConfirm{color:#fff;background:var(--hub-danger);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_uninstallConfirm:hover{background:var(--hub-danger-hover)}.BiQ1zG_result{text-align:center;flex-direction:column;align-items:center;gap:5px;padding:10px 0 2px;display:flex}.BiQ1zG_resultCheck{background:var(--hub-success-tint);width:40px;height:40px;color:var(--hub-success);border-radius:50%;justify-content:center;align-items:center;margin-bottom:3px;display:inline-flex}.BiQ1zG_resultCheckIcon{flex-shrink:0;width:20px;height:20px}.BiQ1zG_resultTitle{color:var(--hub-text-primary);font-size:13px;font-weight:600;line-height:20px}.BiQ1zG_resultDesc{color:var(--hub-text-secondary);font-size:12px;line-height:18px}.BiQ1zG_resultRestarting{color:var(--hub-text-tertiary);padding:12px 0 6px;font-size:12px;line-height:18px}.BiQ1zG_restartLater{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;padding:5px 14px;font-size:12px;line-height:18px;transition:color .12s,background .12s}.BiQ1zG_restartLater:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}.BiQ1zG_restartNow{color:var(--hub-text-on-fill);background:var(--hub-btn-fill);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_restartNow:hover{background:var(--hub-btn-hover)}.BiQ1zG_restartNow:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.BiQ1zG_restartNowWarning{color:#fff;background:var(--hub-warning);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_restartNowWarning:hover{background:var(--hub-warning-hover)}.BiQ1zG_restartNowWarning:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.BiQ1zG_result .BiQ1zG_modalActions{justify-content:center;gap:10px;margin-top:0;padding:6px 0 2px}.BiQ1zG_result .BiQ1zG_modalActions .BiQ1zG_restartLater,.BiQ1zG_result .BiQ1zG_modalActions .BiQ1zG_restartNow,.BiQ1zG_result .BiQ1zG_modalActions .BiQ1zG_restartNowWarning{min-width:100px}.BiQ1zG_progress{margin:10px 0 2px}.BiQ1zG_progressHead{justify-content:flex-end;align-items:center;margin-bottom:3px;display:flex}.BiQ1zG_progressText{color:var(--hub-text-secondary);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:14px}.BiQ1zG_progressTrack{background:var(--hub-border-2);border-radius:2px;height:4px;overflow:hidden}.BiQ1zG_progressFill{background:var(--hub-brand);border-radius:2px;height:100%;transition:width .32s}.BiQ1zG_progressFillFail{background:var(--hub-danger)}@keyframes BiQ1zG_overlayIn{0%{opacity:0}to{opacity:1}}@keyframes BiQ1zG_modalIn{0%{opacity:0;transform:translateY(6px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.BiQ1zG_failList{flex-direction:column;gap:12px;padding-right:2px;display:flex}.BiQ1zG_failRow{border:1px solid var(--hub-border-2);background:var(--hub-bg-2);border-radius:8px;flex-direction:column;gap:8px;padding:10px 12px;display:flex}.BiQ1zG_failHead{align-items:center;gap:8px;min-width:0;display:flex}.BiQ1zG_noticeList{flex-direction:column;gap:10px;padding-right:2px;display:flex}.BiQ1zG_noticeRow{border:1px solid var(--hub-border-2);background:var(--hub-bg-2);border-radius:8px;flex-direction:column;align-items:stretch;gap:6px;padding:10px 12px;display:flex}.BiQ1zG_noticeRowMain{align-items:center;gap:10px;width:100%;min-width:0;display:flex}.BiQ1zG_noticeBadgeOk,.BiQ1zG_noticeBadgeFail{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex;box-shadow:0 2px 6px #0000002e}.BiQ1zG_noticeBadgeOk{background:var(--hub-success)}.BiQ1zG_noticeBadgeFail{background:var(--hub-danger)}.BiQ1zG_noticeBadgeIcon{flex-shrink:0;width:12px;height:12px}.BiQ1zG_noticeMain{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.BiQ1zG_noticeHead{align-items:center;gap:8px;min-width:0;display:flex}.BiQ1zG_noticeTextOk{color:var(--hub-success);flex-shrink:0;font-size:12px;font-weight:600;line-height:18px}.BiQ1zG_noticeTextFail{color:var(--hub-danger-text);flex-shrink:0;font-size:12px;font-weight:600;line-height:18px}.BiQ1zG_noticeFoot{justify-content:flex-end;align-items:center;display:flex}.BiQ1zG_noticeTime{color:var(--hub-text-tertiary);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:11px;line-height:16px}.BiQ1zG_noticeRemove{width:22px;height:22px;color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_noticeRemove:hover{color:var(--hub-danger-text);background:var(--hub-danger-tint)}.BiQ1zG_noticeRowOk .BiQ1zG_noticeRemove{margin-left:0}.BiQ1zG_noticeRowOk .BiQ1zG_noticeTime{margin-left:auto}.BiQ1zG_noticeRowUpdate{cursor:pointer;transition:border-color .12s,background .12s}.BiQ1zG_noticeRowUpdate:hover{border-color:var(--hub-brand);background:var(--hub-brand-tint)}.BiQ1zG_noticeVersion{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border);font-variant-numeric:tabular-nums;border-radius:5px;flex-shrink:0;padding:0 6px;font-size:11px;font-weight:600;line-height:18px}.BiQ1zG_noticeUpdateGo{color:#fff;background:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:5px;flex-shrink:0;margin-left:2px;padding:2px 8px;font-size:11px;font-weight:600;line-height:16px;transition:background .12s}.BiQ1zG_noticeUpdateGo:hover{background:var(--hub-brand-hover)}.BiQ1zG_noticeIgnore{color:var(--hub-text-secondary);border:1px solid var(--hub-border-2);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border-radius:5px;flex-shrink:0;margin-left:2px;padding:1px 8px;font-size:11px;font-weight:500;line-height:16px;transition:color .12s,border-color .12s,background .12s}.BiQ1zG_noticeIgnore:hover{color:var(--hub-danger-text);border-color:var(--hub-danger-border);background:var(--hub-danger-tint)}.BiQ1zG_failKind{border:1px solid #0000;border-radius:4px;flex-shrink:0;padding:0 6px;font-size:10px;font-weight:500;line-height:16px}.BiQ1zG_failKindInstall{color:var(--hub-danger-text);border-color:var(--hub-danger-border);background:var(--hub-danger-tint)}.BiQ1zG_failKindUninstall{color:var(--hub-warn);border-color:var(--hub-warn-border);background:var(--hub-warn-tint)}.BiQ1zG_failRepo{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:18px;text-decoration:none;overflow:hidden}.BiQ1zG_failRepo:hover{text-decoration:underline}.BiQ1zG_failCopy{color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:4px;flex-shrink:0;align-items:center;padding:2px 8px;font-size:11px;line-height:16px;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_failCopy:hover{color:var(--hub-text-secondary);background:var(--hub-bg-2)}.BiQ1zG_failEmpty{text-align:center;color:var(--hub-text-tertiary);padding:24px 0;font-size:12px;line-height:18px}.BiQ1zG_failClear{color:var(--hub-danger);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;padding:5px 14px;font-size:12px;line-height:18px;transition:color .12s,background .12s}.BiQ1zG_failClear:hover{color:#fff;background:var(--hub-danger)}.BiQ1zG_failBigIssue{box-sizing:border-box;text-align:center;color:#fff;background:var(--hub-danger);border:1px solid var(--hub-danger);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;width:100%;margin-top:4px;padding:3px 16px;font-size:13px;font-weight:600;line-height:18px;text-decoration:none;transition:background .12s,border-color .12s,box-shadow .12s;display:block}.BiQ1zG_failBigIssue:hover{background:var(--hub-danger-hover);border-color:var(--hub-danger-hover);box-shadow:0 3px 10px #d1242f59}.BiQ1zG_failPrepareHint{color:var(--hub-warning);background:var(--hub-warning-tint);border:1px solid var(--hub-warning-border);border-radius:6px;margin-top:6px;padding:8px 12px;font-size:12px;line-height:18px}.BiQ1zG_aboutModal{width:460px;max-width:calc(100vw - 48px)}.BiQ1zG_aboutContent{min-height:0;max-height:340px;color:var(--hub-text-secondary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);border-radius:8px;flex:auto;padding:10px 12px;font-size:12px;line-height:18px;overflow-y:auto}.BiQ1zG_aboutContent>:first-child{margin-top:0}.BiQ1zG_aboutContent>:last-child{margin-bottom:0}.BiQ1zG_aboutContent h2,.BiQ1zG_aboutContent h3,.BiQ1zG_aboutContent h4,.BiQ1zG_aboutContent h5{color:var(--hub-text-primary);margin:10px 0 4px;font-size:13px;font-weight:600;line-height:20px}.BiQ1zG_aboutContent h2{font-size:14px}.BiQ1zG_aboutContent p{margin:4px 0}.BiQ1zG_aboutContent ul,.BiQ1zG_aboutContent ol{margin:4px 0;padding-left:18px}.BiQ1zG_aboutContent li{margin:2px 0}.BiQ1zG_aboutContent code{background:var(--hub-bg-hover);color:var(--hub-text-primary);border-radius:4px;padding:1px 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.BiQ1zG_aboutContent pre{background:var(--hub-bg-1);border:1px solid var(--hub-border-2);border-radius:6px;margin:6px 0;padding:8px 10px;overflow-x:auto}.BiQ1zG_aboutContent pre code{background:0 0;border-radius:0;padding:0}.BiQ1zG_aboutContent blockquote{border-left:3px solid var(--hub-brand);background:var(--hub-bg-hover);color:var(--hub-text-tertiary);border-radius:0 6px 6px 0;margin:6px 0;padding:2px 10px}.BiQ1zG_aboutContent a{color:var(--hub-brand);text-decoration:none}.BiQ1zG_aboutContent a:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_aboutContent img{border-radius:8px;max-width:100%;max-height:220px;margin:8px auto;display:block;box-shadow:0 2px 8px #0000001f}.BiQ1zG_aboutMeta{color:var(--hub-text-tertiary);font-size:11px;line-height:16px}.BiQ1zG_hubUpdateModal{width:520px;max-width:calc(100vw - 48px)}.BiQ1zG_hubUpdateMeta{flex-wrap:wrap;align-items:center;gap:4px 14px;font-size:12px;line-height:18px;display:flex}.BiQ1zG_hubUpdateMetaItem{color:var(--hub-text-tertiary)}.BiQ1zG_hubUpdateNotes{min-height:0;max-height:300px;color:var(--hub-text-secondary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);border-radius:8px;flex:auto;padding:10px 12px;font-size:12px;line-height:18px;overflow-y:auto}.BiQ1zG_hubUpdateNotes>:first-child{margin-top:0}.BiQ1zG_hubUpdateNotes>:last-child{margin-bottom:0}.BiQ1zG_hubUpdateNotes h2,.BiQ1zG_hubUpdateNotes h3,.BiQ1zG_hubUpdateNotes h4,.BiQ1zG_hubUpdateNotes h5{color:var(--hub-text-primary);margin:10px 0 4px;font-size:13px;font-weight:600;line-height:20px}.BiQ1zG_hubUpdateNotes h2{font-size:14px}.BiQ1zG_hubUpdateNotes p{margin:4px 0}.BiQ1zG_hubUpdateNotes ul,.BiQ1zG_hubUpdateNotes ol{margin:4px 0;padding-left:18px}.BiQ1zG_hubUpdateNotes li{margin:2px 0}.BiQ1zG_hubUpdateNotes code{background:var(--hub-bg-hover);color:var(--hub-text-primary);border-radius:4px;padding:1px 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.BiQ1zG_hubUpdateNotes pre{background:var(--hub-bg-1);border:1px solid var(--hub-border-2);border-radius:6px;margin:6px 0;padding:8px 10px;overflow-x:auto}.BiQ1zG_hubUpdateNotes pre code{background:0 0;border-radius:0;padding:0}.BiQ1zG_hubUpdateNotes blockquote{border-left:3px solid var(--hub-brand);background:var(--hub-bg-hover);color:var(--hub-text-tertiary);border-radius:0 6px 6px 0;margin:6px 0;padding:2px 10px}.BiQ1zG_hubUpdateNotes a{color:var(--hub-brand);text-decoration:none}.BiQ1zG_hubUpdateNotes a:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_detailModal{width:480px;max-width:calc(100vw - 48px)}.BiQ1zG_detailUpdateHint{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft);border-radius:6px;padding:6px 10px;font-size:12px;line-height:18px}.BiQ1zG_detailGrid{flex-direction:column;gap:6px;display:flex}.BiQ1zG_detailRow{align-items:baseline;gap:10px;min-width:0;font-size:12px;line-height:20px;display:flex}.BiQ1zG_detailLabel{text-align:right;width:76px;color:var(--hub-text-tertiary);flex-shrink:0}.BiQ1zG_detailValue{min-width:0;color:var(--hub-text-primary);flex-wrap:wrap;flex:auto;align-items:baseline;gap:4px 6px;font-weight:500;display:flex}.BiQ1zG_detailMono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;font-weight:500}.BiQ1zG_detailArrow{color:var(--hub-text-tertiary);align-items:baseline;gap:4px;display:inline-flex}.BiQ1zG_detailDim{color:var(--hub-text-tertiary);font-size:11px;font-weight:400}.BiQ1zG_detailLink{min-width:0;color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;font-weight:500;text-decoration:none;transition:color .12s;display:inline-flex}.BiQ1zG_detailLink:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_detailStars{color:#b45309;font-weight:600}.BiQ1zG_detailPath{min-width:0;color:var(--hub-text-primary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);border-radius:6px;flex:auto;justify-content:space-between;align-items:center;gap:6px;padding:3px 3px 3px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:18px;transition:border-color .12s,background .12s;display:flex}.BiQ1zG_detailPath:hover{border-color:var(--hub-border-ghost);background:var(--hub-bg-3)}.BiQ1zG_detailPathText{text-overflow:ellipsis;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;min-width:0;overflow:hidden}.BiQ1zG_detailPathActions{flex-shrink:0;align-items:center;gap:4px;display:inline-flex}.BiQ1zG_detailPathBtn{width:28px;height:28px;color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;justify-content:center;align-items:center;transition:color .12s,background .12s,border-color .12s;display:inline-flex}.BiQ1zG_detailPathBtn svg{width:15px;height:15px}.BiQ1zG_detailPathBtn:hover{color:#fff;background:var(--hub-brand);border-color:var(--hub-brand)}.BiQ1zG_detailStatusRunning,.BiQ1zG_detailStatusPending{border-radius:50%;flex-shrink:0;align-self:center;width:8px;height:8px}.BiQ1zG_detailStatusRunning{background:var(--hub-success)}.BiQ1zG_detailStatusPending{background:var(--hub-warning)}.BiQ1zG_detailStatusText{font-weight:500}";
|
|
650
|
+
const tagId$10 = "dsh-plugin/Modal.module.css";
|
|
651
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$10) + "]") === null) {
|
|
652
|
+
const tag = document.createElement("style");
|
|
653
|
+
tag.dataset.plugin = "dsh-plugin";
|
|
654
|
+
tag.dataset.pluginCss = tagId$10;
|
|
655
|
+
tag.textContent = css$10;
|
|
656
|
+
document.head.appendChild(tag);
|
|
657
|
+
}
|
|
658
|
+
var Modal_module_css_default = {
|
|
659
|
+
"resultDesc": "BiQ1zG_resultDesc",
|
|
660
|
+
"detailLabel": "BiQ1zG_detailLabel",
|
|
661
|
+
"errorModal": "BiQ1zG_errorModal",
|
|
662
|
+
"resultCheckIcon": "BiQ1zG_resultCheckIcon",
|
|
663
|
+
"progressText": "BiQ1zG_progressText",
|
|
664
|
+
"failRepo": "BiQ1zG_failRepo",
|
|
665
|
+
"pendingRowActions": "BiQ1zG_pendingRowActions",
|
|
666
|
+
"detailStatusText": "BiQ1zG_detailStatusText",
|
|
667
|
+
"overlayIn": "BiQ1zG_overlayIn",
|
|
668
|
+
"noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
|
|
669
|
+
"errorHint": "BiQ1zG_errorHint",
|
|
670
|
+
"trustHint": "BiQ1zG_trustHint",
|
|
671
|
+
"stripCancel": "BiQ1zG_stripCancel",
|
|
672
|
+
"noticeHead": "BiQ1zG_noticeHead",
|
|
673
|
+
"queuedHint": "BiQ1zG_queuedHint",
|
|
674
|
+
"modalHead": "BiQ1zG_modalHead",
|
|
675
|
+
"uninstallConfirm": "BiQ1zG_uninstallConfirm",
|
|
676
|
+
"noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
|
|
677
|
+
"aboutContent": "BiQ1zG_aboutContent",
|
|
678
|
+
"modalCmd": "BiQ1zG_modalCmd",
|
|
679
|
+
"aboutMeta": "BiQ1zG_aboutMeta",
|
|
680
|
+
"failCopy": "BiQ1zG_failCopy",
|
|
681
|
+
"queueRowBody": "BiQ1zG_queueRowBody",
|
|
682
|
+
"detailModal": "BiQ1zG_detailModal",
|
|
683
|
+
"modalRow": "BiQ1zG_modalRow",
|
|
684
|
+
"noticeVersion": "BiQ1zG_noticeVersion",
|
|
685
|
+
"failKindUninstall": "BiQ1zG_failKindUninstall",
|
|
686
|
+
"failedCopyHint": "BiQ1zG_failedCopyHint",
|
|
687
|
+
"overlay": "BiQ1zG_overlay",
|
|
688
|
+
"noticeRemove": "BiQ1zG_noticeRemove",
|
|
689
|
+
"hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
|
|
690
|
+
"modalTitle": "BiQ1zG_modalTitle",
|
|
691
|
+
"noticeTextFail": "BiQ1zG_noticeTextFail",
|
|
692
|
+
"logModal": "BiQ1zG_logModal",
|
|
693
|
+
"detailLink": "BiQ1zG_detailLink",
|
|
694
|
+
"helpModal": "BiQ1zG_helpModal",
|
|
695
|
+
"modalValue": "BiQ1zG_modalValue",
|
|
696
|
+
"toastFail": "BiQ1zG_toastFail",
|
|
697
|
+
"detailStatusRunning": "BiQ1zG_detailStatusRunning",
|
|
698
|
+
"restartNow": "BiQ1zG_restartNow",
|
|
699
|
+
"modalTitleQueued": "BiQ1zG_modalTitleQueued",
|
|
700
|
+
"detailStars": "BiQ1zG_detailStars",
|
|
701
|
+
"noticeTime": "BiQ1zG_noticeTime",
|
|
702
|
+
"modalInstall": "BiQ1zG_modalInstall",
|
|
703
|
+
"detailPathBtn": "BiQ1zG_detailPathBtn",
|
|
704
|
+
"resultCheck": "BiQ1zG_resultCheck",
|
|
705
|
+
"queueRowTarget": "BiQ1zG_queueRowTarget",
|
|
706
|
+
"queueRowHead": "BiQ1zG_queueRowHead",
|
|
707
|
+
"progressTrack": "BiQ1zG_progressTrack",
|
|
708
|
+
"progressHead": "BiQ1zG_progressHead",
|
|
709
|
+
"failRow": "BiQ1zG_failRow",
|
|
710
|
+
"detailArrow": "BiQ1zG_detailArrow",
|
|
711
|
+
"result": "BiQ1zG_result",
|
|
712
|
+
"toast": "BiQ1zG_toast",
|
|
713
|
+
"failClear": "BiQ1zG_failClear",
|
|
714
|
+
"detailGrid": "BiQ1zG_detailGrid",
|
|
715
|
+
"detailPathActions": "BiQ1zG_detailPathActions",
|
|
716
|
+
"noticeFoot": "BiQ1zG_noticeFoot",
|
|
717
|
+
"progressFill": "BiQ1zG_progressFill",
|
|
718
|
+
"noticeTextOk": "BiQ1zG_noticeTextOk",
|
|
719
|
+
"cliOnlyHint": "BiQ1zG_cliOnlyHint",
|
|
720
|
+
"resultTitle": "BiQ1zG_resultTitle",
|
|
721
|
+
"noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
|
|
722
|
+
"aboutModal": "BiQ1zG_aboutModal",
|
|
723
|
+
"modal": "BiQ1zG_modal",
|
|
724
|
+
"detailRow": "BiQ1zG_detailRow",
|
|
725
|
+
"queueRowDesc": "BiQ1zG_queueRowDesc",
|
|
726
|
+
"errorTitle": "BiQ1zG_errorTitle",
|
|
727
|
+
"failBigIssue": "BiQ1zG_failBigIssue",
|
|
728
|
+
"hubUpdateModal": "BiQ1zG_hubUpdateModal",
|
|
729
|
+
"modalLink": "BiQ1zG_modalLink",
|
|
730
|
+
"modalIn": "BiQ1zG_modalIn",
|
|
731
|
+
"modalActions": "BiQ1zG_modalActions",
|
|
732
|
+
"modalDesc": "BiQ1zG_modalDesc",
|
|
733
|
+
"toastIn": "BiQ1zG_toastIn",
|
|
734
|
+
"modalLabel": "BiQ1zG_modalLabel",
|
|
735
|
+
"errorBox": "BiQ1zG_errorBox",
|
|
736
|
+
"restartNowWarning": "BiQ1zG_restartNowWarning",
|
|
737
|
+
"hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
|
|
738
|
+
"detailStatusPending": "BiQ1zG_detailStatusPending",
|
|
739
|
+
"modalWide": "BiQ1zG_modalWide",
|
|
740
|
+
"noticeRow": "BiQ1zG_noticeRow",
|
|
741
|
+
"noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
|
|
742
|
+
"linkIcon": "BiQ1zG_linkIcon",
|
|
743
|
+
"failKindInstall": "BiQ1zG_failKindInstall",
|
|
744
|
+
"modalCmdText": "BiQ1zG_modalCmdText",
|
|
745
|
+
"detailUpdateHint": "BiQ1zG_detailUpdateHint",
|
|
746
|
+
"noticeMain": "BiQ1zG_noticeMain",
|
|
747
|
+
"modalCopy": "BiQ1zG_modalCopy",
|
|
748
|
+
"resultRestarting": "BiQ1zG_resultRestarting",
|
|
749
|
+
"modalCancel": "BiQ1zG_modalCancel",
|
|
750
|
+
"noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
|
|
751
|
+
"detailValue": "BiQ1zG_detailValue",
|
|
752
|
+
"queueRowTrack": "BiQ1zG_queueRowTrack",
|
|
753
|
+
"progress": "BiQ1zG_progress",
|
|
754
|
+
"failEmpty": "BiQ1zG_failEmpty",
|
|
755
|
+
"hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
|
|
756
|
+
"modalClose": "BiQ1zG_modalClose",
|
|
757
|
+
"queueRow": "BiQ1zG_queueRow",
|
|
758
|
+
"modalTitleBusy": "BiQ1zG_modalTitleBusy",
|
|
759
|
+
"progressFillFail": "BiQ1zG_progressFillFail",
|
|
760
|
+
"noticeRowMain": "BiQ1zG_noticeRowMain",
|
|
761
|
+
"noticeRowOk": "BiQ1zG_noticeRowOk",
|
|
762
|
+
"modalCloseIcon": "BiQ1zG_modalCloseIcon",
|
|
763
|
+
"detailMono": "BiQ1zG_detailMono",
|
|
764
|
+
"failPrepareHint": "BiQ1zG_failPrepareHint",
|
|
765
|
+
"failKind": "BiQ1zG_failKind",
|
|
766
|
+
"queueRowPct": "BiQ1zG_queueRowPct",
|
|
767
|
+
"queueRowStatus": "BiQ1zG_queueRowStatus",
|
|
768
|
+
"noticeList": "BiQ1zG_noticeList",
|
|
769
|
+
"detailPath": "BiQ1zG_detailPath",
|
|
770
|
+
"modalCmdCopy": "BiQ1zG_modalCmdCopy",
|
|
771
|
+
"modalBody": "BiQ1zG_modalBody",
|
|
772
|
+
"errorCopySoft": "BiQ1zG_errorCopySoft",
|
|
773
|
+
"restartLater": "BiQ1zG_restartLater",
|
|
774
|
+
"queueSection": "BiQ1zG_queueSection",
|
|
775
|
+
"noticeIgnore": "BiQ1zG_noticeIgnore",
|
|
776
|
+
"detailDim": "BiQ1zG_detailDim",
|
|
777
|
+
"detailPathText": "BiQ1zG_detailPathText",
|
|
778
|
+
"pendingRowStatus": "BiQ1zG_pendingRowStatus",
|
|
779
|
+
"failList": "BiQ1zG_failList",
|
|
780
|
+
"queueSectionTitle": "BiQ1zG_queueSectionTitle",
|
|
781
|
+
"failHead": "BiQ1zG_failHead"
|
|
626
782
|
};
|
|
627
783
|
//#endregion
|
|
628
784
|
//#region src/client/logic/install-command.ts
|
|
@@ -688,11 +844,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
688
844
|
/** 接口中心「关注我们」内容(静态 JSON,由 api-center 的 about.md 构建生成,Markdown)。 */
|
|
689
845
|
const HUB_ABOUT_URL = "https://api.dsh-plugin.org/about.json";
|
|
690
846
|
/**
|
|
691
|
-
* 插件当前版本号,供头部标题展示「DSH
|
|
847
|
+
* 插件当前版本号,供头部标题展示「DSH Plugin Hub v0.1.1」。
|
|
692
848
|
* tsdown 构建时用 define 把 __PLUGIN_VERSION__ 替换成 package.json 的版本号;
|
|
693
849
|
* node --test 直接 import 本模块时该标识符不存在,typeof 守卫兜底为空串。
|
|
694
850
|
*/
|
|
695
|
-
const PLUGIN_VERSION = "1.
|
|
851
|
+
const PLUGIN_VERSION = "1.3.0";
|
|
696
852
|
const CATEGORY_ORDER = [
|
|
697
853
|
"interface",
|
|
698
854
|
"session",
|
|
@@ -939,10 +1095,17 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
939
1095
|
}
|
|
940
1096
|
//#endregion
|
|
941
1097
|
//#region src/client/data/hub.ts
|
|
1098
|
+
/** 版本接口是 Pages 静态文件,默认带 CDN 缓存(Cache-Control: public, max-age=43200,
|
|
1099
|
+
* 即 12 小时),客户端 no-store 管不到 CDN 边缘,会拿到旧公告。
|
|
1100
|
+
* 静态资产请求免费且无限,因此所有版本检查一律带时间戳 query:URL 每次不同 →
|
|
1101
|
+
* CDN 缓存 key 不同 → 强制回源拉到最新公告,无任何配额顾虑。 */
|
|
1102
|
+
function busted(url) {
|
|
1103
|
+
return `${url}${url.includes("?") ? "&" : "?"}_t=${Date.now()}`;
|
|
1104
|
+
}
|
|
942
1105
|
/** Worker 版本控制中心:最新版本 + Markdown 变更记录;不可用返回 null。 */
|
|
943
1106
|
async function fetchHubUpdate() {
|
|
944
1107
|
try {
|
|
945
|
-
const res = await fetch(HUB_UPDATE_URL, { cache: "no-store" });
|
|
1108
|
+
const res = await fetch(busted(HUB_UPDATE_URL), { cache: "no-store" });
|
|
946
1109
|
if (!res.ok) return null;
|
|
947
1110
|
const data = await res.json();
|
|
948
1111
|
if (!data) return null;
|
|
@@ -960,7 +1123,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
960
1123
|
/** Worker「关注我们」内容(平台介绍 + 反馈群二维码,Markdown);未推送返回 null。 */
|
|
961
1124
|
async function fetchHubAbout() {
|
|
962
1125
|
try {
|
|
963
|
-
const res = await fetch(HUB_ABOUT_URL, { cache: "no-store" });
|
|
1126
|
+
const res = await fetch(busted(HUB_ABOUT_URL), { cache: "no-store" });
|
|
964
1127
|
if (!res.ok) return null;
|
|
965
1128
|
const data = await res.json();
|
|
966
1129
|
if (!data || data.content === null || data.content === void 0) return null;
|
|
@@ -1095,7 +1258,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1095
1258
|
//#endregion
|
|
1096
1259
|
//#region src/client/hooks/useCatalog.ts
|
|
1097
1260
|
/**
|
|
1098
|
-
* DSH
|
|
1261
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
1099
1262
|
* Website: https://dsh-plugin.org
|
|
1100
1263
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
1101
1264
|
*
|
|
@@ -1105,7 +1268,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1105
1268
|
* installed-plugin table, and the filter/search/sort/install-status view
|
|
1106
1269
|
* state, exposing the derived visible list and per-category counts.
|
|
1107
1270
|
*/
|
|
1108
|
-
/** 插件市场自身仓库:DSH
|
|
1271
|
+
/** 插件市场自身仓库:DSH Plugin Hub 不显示在目录里(自己不进自己的插件列表) */
|
|
1109
1272
|
const SELF_REPO = "dshplugin/dsh-plugin-hub";
|
|
1110
1273
|
/** 市场各排序的默认方向:全部按倒序(Star/Fork 多、更新/收录近的在前) */
|
|
1111
1274
|
const SORT_DEFAULT_DIR$1 = {
|
|
@@ -1137,6 +1300,17 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1137
1300
|
setSortDir(SORT_DEFAULT_DIR$1[key]);
|
|
1138
1301
|
}
|
|
1139
1302
|
}
|
|
1303
|
+
/**
|
|
1304
|
+
* 强制刷新 Hub 版本与「关注我们」信息:点击头部版本号/徽标时触发。
|
|
1305
|
+
* 挂载期的 useEffect 只在进入/reload 时拉一次,发版后已打开的界面点版本号
|
|
1306
|
+
* 仍显示旧数据;此处重新拉接口中心,最新版本与变更记录点击即见。
|
|
1307
|
+
* 失败静默为 null(弹窗兜底展示当前版本号),与挂载期拉取口径一致。
|
|
1308
|
+
*/
|
|
1309
|
+
const refreshHub = async () => {
|
|
1310
|
+
const [info, about] = await Promise.all([fetchHubUpdate(), fetchHubAbout()]);
|
|
1311
|
+
setHubUpdateInfo(info);
|
|
1312
|
+
setHubAboutInfo(about);
|
|
1313
|
+
};
|
|
1140
1314
|
/** 当前 profile 已安装插件:npm 包名 -> manifest spec(来自宿主本地路由) */
|
|
1141
1315
|
const [installed, setInstalled] = (0, react.useState)({});
|
|
1142
1316
|
/** 安装时记录的目录信号:repo(小写) -> { version, updatedAt }(来自宿主本地路由);
|
|
@@ -1236,7 +1410,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1236
1410
|
*/
|
|
1237
1411
|
const hubHasUpdate = (() => {
|
|
1238
1412
|
if (!hubUpdateInfo) return false;
|
|
1239
|
-
return hubUpdateInfo.version !== "1.
|
|
1413
|
+
return hubUpdateInfo.version !== "1.3.0";
|
|
1240
1414
|
})();
|
|
1241
1415
|
(0, react.useMemo)(() => {
|
|
1242
1416
|
if (!plugins) return [];
|
|
@@ -1286,6 +1460,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1286
1460
|
hubHasUpdate,
|
|
1287
1461
|
hubUpdateInfo,
|
|
1288
1462
|
hubAboutInfo,
|
|
1463
|
+
refreshHub,
|
|
1289
1464
|
refreshInstalled,
|
|
1290
1465
|
category,
|
|
1291
1466
|
setCategory,
|
|
@@ -1355,14 +1530,50 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1355
1530
|
message: ""
|
|
1356
1531
|
});
|
|
1357
1532
|
}
|
|
1358
|
-
/** 记录一条「发现新版本」更新提醒:成功类轻量记录,携带目录新版本号供通知中心展示。
|
|
1533
|
+
/** 记录一条「发现新版本」更新提醒:成功类轻量记录,携带目录新版本号供通知中心展示。
|
|
1534
|
+
* 同一插件同一新版本已在通知中心时跳过:宿主重载会重新触发启动检查,不更新时
|
|
1535
|
+
* 通知里已有的提醒保持单条,不重复追加。 */
|
|
1359
1536
|
function addUpdateNotice(record) {
|
|
1537
|
+
const prev = loadNotifications();
|
|
1538
|
+
if (prev.some((r) => r.kind === "update" && r.repo === record.repo && (r.version ?? void 0) === (record.version ?? void 0))) return prev;
|
|
1360
1539
|
return addNotification({
|
|
1361
1540
|
...record,
|
|
1362
1541
|
ok: true,
|
|
1363
1542
|
message: ""
|
|
1364
1543
|
});
|
|
1365
1544
|
}
|
|
1545
|
+
/** 已忽略的更新提醒持久化 key:`owner/repo@version` 字符串数组。 */
|
|
1546
|
+
const IGNORE_KEY = "gro.ngilp-hsd.ignored-updates";
|
|
1547
|
+
/** 读取已忽略的更新提醒(`owner/repo@version` 字符串集合);损坏/不可用时返回空集合。 */
|
|
1548
|
+
function loadIgnoredUpdates() {
|
|
1549
|
+
try {
|
|
1550
|
+
const raw = storage()?.getItem(IGNORE_KEY);
|
|
1551
|
+
if (!raw) return /* @__PURE__ */ new Set();
|
|
1552
|
+
const list = JSON.parse(raw);
|
|
1553
|
+
if (!Array.isArray(list)) return /* @__PURE__ */ new Set();
|
|
1554
|
+
return new Set(list.filter((x) => typeof x === "string"));
|
|
1555
|
+
} catch {
|
|
1556
|
+
return /* @__PURE__ */ new Set();
|
|
1557
|
+
}
|
|
1558
|
+
}
|
|
1559
|
+
function saveIgnoredUpdates(ignored) {
|
|
1560
|
+
try {
|
|
1561
|
+
storage()?.setItem(IGNORE_KEY, JSON.stringify([...ignored]));
|
|
1562
|
+
} catch {}
|
|
1563
|
+
}
|
|
1564
|
+
/** 忽略某插件本次更新(repo+version 持久化入忽略集):本次版本不再提醒,直到下一个新版本发布。 */
|
|
1565
|
+
function ignoreUpdate(repo, version) {
|
|
1566
|
+
const next = loadIgnoredUpdates();
|
|
1567
|
+
next.add(`${repo}@${version ?? ""}`);
|
|
1568
|
+
saveIgnoredUpdates(next);
|
|
1569
|
+
return next;
|
|
1570
|
+
}
|
|
1571
|
+
/** 移除某插件某版本的更新提醒记录(忽略本次更新时一并清理通知),返回更新后的列表。 */
|
|
1572
|
+
function removeUpdateNotice(repo, version) {
|
|
1573
|
+
const next = loadNotifications().filter((r) => !(r.kind === "update" && r.repo === repo && (r.version ?? void 0) === (version ?? void 0)));
|
|
1574
|
+
save(next);
|
|
1575
|
+
return next;
|
|
1576
|
+
}
|
|
1366
1577
|
/** 清空全部通知记录,返回空列表。 */
|
|
1367
1578
|
function clearNotifications() {
|
|
1368
1579
|
save([]);
|
|
@@ -1483,7 +1694,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1483
1694
|
`- Cause: ${reason}`,
|
|
1484
1695
|
...code ? [`- Key error: \`${code}\``] : [],
|
|
1485
1696
|
"",
|
|
1486
|
-
`## [DSH
|
|
1697
|
+
`## [DSH Plugin 插件中心](${SITE_URL}) · 安装 Plugin 失败错误信息`,
|
|
1487
1698
|
`本错误信息由 [dsh-plugin-hub](${GITHUB_URL}) 插件中心的安装程序自动生成,随本次安装失败一并提交。`,
|
|
1488
1699
|
`- 实际执行的安装命令:\`${command ?? `dsh plugin${env?.profile ? ` --profile ${env.profile}` : ""} add git+https://github.com/${repo}.git`}\``,
|
|
1489
1700
|
`- 执行结果:安装失败,未能安装该插件。`,
|
|
@@ -1538,7 +1749,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1538
1749
|
//#endregion
|
|
1539
1750
|
//#region src/client/hooks/useLanguage.ts
|
|
1540
1751
|
/**
|
|
1541
|
-
* DSH
|
|
1752
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
1542
1753
|
* Website: https://dsh-plugin.org
|
|
1543
1754
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
1544
1755
|
*
|
|
@@ -1569,7 +1780,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1569
1780
|
//#endregion
|
|
1570
1781
|
//#region src/client/hooks/useSettings.ts
|
|
1571
1782
|
/**
|
|
1572
|
-
* DSH
|
|
1783
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
1573
1784
|
* Website: https://dsh-plugin.org
|
|
1574
1785
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
1575
1786
|
*
|
|
@@ -1645,7 +1856,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1645
1856
|
//#endregion
|
|
1646
1857
|
//#region src/client/hooks/useTaskQueue.ts
|
|
1647
1858
|
/**
|
|
1648
|
-
* DSH
|
|
1859
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
1649
1860
|
* Website: https://dsh-plugin.org
|
|
1650
1861
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
1651
1862
|
*
|
|
@@ -2144,143 +2355,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2144
2355
|
};
|
|
2145
2356
|
}
|
|
2146
2357
|
//#endregion
|
|
2147
|
-
//#region \0dsh-css:src/client/styles/Modal.module.css.mjs
|
|
2148
|
-
const css$10 = ".BiQ1zG_overlay{z-index:998;-webkit-user-select:none;user-select:none;background:#00000061;justify-content:center;align-items:center;animation:.16s ease-out BiQ1zG_overlayIn;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.BiQ1zG_modal,.BiQ1zG_errorModal{background:var(--hub-bg-1);border:1px solid var(--hub-border-2);border-radius:10px;flex-direction:column;gap:10px;width:420px;max-width:calc(100vw - 32px);max-height:calc(100vh - 64px);padding:14px 16px;animation:.18s ease-out BiQ1zG_modalIn;display:flex;box-shadow:0 12px 40px #0000003d}.BiQ1zG_errorModal{width:640px;max-width:calc(100vw - 48px)}.BiQ1zG_modalWide{width:560px;max-width:calc(100vw - 48px)}.BiQ1zG_logModal{width:780px;max-width:calc(100vw - 48px);height:min(540px,100vh - 64px)}.BiQ1zG_modalHead{flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;display:flex}.BiQ1zG_modalTitle{color:var(--hub-text-primary);font-size:14px;font-weight:600;line-height:20px}.BiQ1zG_modalTitleBusy{color:var(--hub-brand)}.BiQ1zG_modalTitleQueued{color:var(--hub-warning)}.BiQ1zG_modalClose{width:24px;height:24px;color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;font-size:16px;line-height:1;display:inline-flex}.BiQ1zG_modalClose:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}.BiQ1zG_modalCloseIcon{flex-shrink:0;width:14px;height:14px}.BiQ1zG_modalDesc{color:var(--hub-text-secondary);font-size:12px;line-height:18px}.BiQ1zG_trustHint{color:var(--hub-danger-text);background:var(--hub-danger-tint);border:1px solid var(--hub-danger-border-soft);border-radius:6px;padding:6px 10px;font-size:12px;font-weight:500;line-height:18px}.BiQ1zG_cliOnlyHint{color:var(--hub-text-secondary);background:var(--hub-bg-hover);border-radius:6px;padding:6px 10px;font-size:12px;line-height:18px}.BiQ1zG_failedCopyHint{color:var(--hub-danger-text);background:var(--hub-danger-tint);border:1px solid var(--hub-danger-border-soft);border-radius:6px;padding:6px 10px;font-size:12px;font-weight:500;line-height:18px}.BiQ1zG_modalRow{align-items:baseline;gap:8px;min-width:0;font-size:12px;line-height:18px;display:flex}.BiQ1zG_modalLabel{min-width:64px;color:var(--hub-text-tertiary);flex-shrink:0}.BiQ1zG_modalValue{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-text-primary);font-weight:500;overflow:hidden}.BiQ1zG_modalLink{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;font-weight:500;text-decoration:none;transition:color .12s;display:inline-flex;overflow:hidden}.BiQ1zG_modalLink:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_linkIcon{flex-shrink:0}.BiQ1zG_modalCmd{color:var(--hub-text-primary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:6px 6px 6px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:18px;transition:border-color .12s,background .12s;display:flex}.BiQ1zG_modalCmd:hover{border-color:var(--hub-border-ghost);background:var(--hub-bg-3)}.BiQ1zG_modalCmdText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.BiQ1zG_modalCmdCopy{color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:4px;flex-shrink:0;align-items:center;gap:3px;padding:1px 7px;font-family:inherit;font-size:11px;line-height:16px;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_modalCmdCopy:hover{color:var(--hub-brand-hover);background:var(--hub-bg-2)}.BiQ1zG_modalActions{justify-content:flex-end;align-items:center;gap:8px;margin-top:2px;display:flex}.BiQ1zG_modalBody{flex-direction:column;flex:auto;gap:10px;min-height:0;display:flex;overflow-y:auto}.BiQ1zG_toast{z-index:1000;background:var(--hub-btn-fill);color:var(--hub-text-on-fill);pointer-events:none;white-space:nowrap;border:none;border-radius:8px;padding:10px 16px;font-size:12px;font-weight:500;line-height:18px;animation:.22s ease-out BiQ1zG_toastIn;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 6px 24px #00000047}@keyframes BiQ1zG_toastIn{0%{opacity:0;transform:translate(-50%,-44%)}to{opacity:1;transform:translate(-50%,-50%)}}.BiQ1zG_toastFail{background:var(--hub-danger);color:#fff;border-color:#ffffff3d}.BiQ1zG_queueSection{flex-direction:column;gap:6px;display:flex}.BiQ1zG_queueSectionTitle{color:var(--hub-text-secondary);padding:4px 2px 0;font-size:12px;font-weight:600;line-height:18px}.BiQ1zG_pendingRowStatus{color:var(--hub-warn);flex-shrink:0;font-weight:500}.BiQ1zG_pendingRowActions{flex-shrink:0;gap:8px;margin-left:auto;display:flex}.BiQ1zG_queueRow{border:1px solid var(--hub-border-2);background:var(--hub-bg-2);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;flex-direction:column;gap:5px;padding:8px 10px;font-size:12px;line-height:18px;transition:background .12s;display:flex}.BiQ1zG_queueRow:hover{background:var(--hub-brand-tint)}.BiQ1zG_queueRowHead{align-items:center;gap:10px;display:flex}.BiQ1zG_queueRowTarget{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-text-primary);flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow:hidden}.BiQ1zG_queueRowDesc{color:var(--hub-text-tertiary);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.BiQ1zG_queueRowBody{align-items:center;gap:8px;display:flex}.BiQ1zG_queueRowStatus{color:var(--hub-brand);flex-shrink:0;font-weight:500}.BiQ1zG_queueRowTrack{flex:1;min-width:0}.BiQ1zG_queueRowPct{color:var(--hub-text-tertiary);font-variant-numeric:tabular-nums;flex-shrink:0}.BiQ1zG_stripCancel{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;flex-shrink:0;padding:2px 10px;font-size:12px;line-height:18px;transition:background .12s,color .12s}.BiQ1zG_stripCancel:hover{background:var(--hub-danger-tint);color:var(--hub-danger-text)}.BiQ1zG_stripCancel:disabled{opacity:.45;cursor:default}.BiQ1zG_queuedHint{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft);border-radius:6px;padding:5px 10px;font-size:12px;line-height:18px}.BiQ1zG_errorTitle{color:var(--hub-danger-text);font-size:14px;font-weight:600;line-height:20px}.BiQ1zG_errorBox{border:1px solid var(--hub-danger-border);background:var(--hub-danger-tint-weak);max-height:240px;color:var(--hub-text-primary);white-space:pre-wrap;word-break:break-word;-webkit-user-select:none;user-select:none;border-radius:6px;margin:0;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:17px;overflow:auto}.BiQ1zG_errorCopySoft{color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:4px;flex-shrink:0;align-items:center;padding:2px 8px;font-size:11px;line-height:16px;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_errorCopySoft:hover{color:var(--hub-text-secondary);background:var(--hub-bg-2)}.BiQ1zG_errorHint{color:var(--hub-text-tertiary);font-size:12px;line-height:18px}.BiQ1zG_modalCancel,.BiQ1zG_modalCopy{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;padding:5px 14px;font-size:12px;line-height:18px;transition:color .12s,background .12s}.BiQ1zG_modalCancel:hover,.BiQ1zG_modalCopy:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}.BiQ1zG_modalInstall{color:var(--hub-text-on-fill);background:var(--hub-btn-fill);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_modalInstall:hover{background:var(--hub-btn-hover)}.BiQ1zG_modalCopy:disabled,.BiQ1zG_modalInstall:disabled,.BiQ1zG_modalCancel:disabled,.BiQ1zG_modalClose:disabled,.BiQ1zG_uninstallConfirm:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.BiQ1zG_uninstallConfirm{color:#fff;background:var(--hub-danger);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_uninstallConfirm:hover{background:var(--hub-danger-hover)}.BiQ1zG_result{text-align:center;flex-direction:column;align-items:center;gap:5px;padding:10px 0 2px;display:flex}.BiQ1zG_resultCheck{background:var(--hub-success-tint);width:40px;height:40px;color:var(--hub-success);border-radius:50%;justify-content:center;align-items:center;margin-bottom:3px;display:inline-flex}.BiQ1zG_resultCheckIcon{flex-shrink:0;width:20px;height:20px}.BiQ1zG_resultTitle{color:var(--hub-text-primary);font-size:13px;font-weight:600;line-height:20px}.BiQ1zG_resultDesc{color:var(--hub-text-secondary);font-size:12px;line-height:18px}.BiQ1zG_resultRestarting{color:var(--hub-text-tertiary);padding:12px 0 6px;font-size:12px;line-height:18px}.BiQ1zG_restartLater{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;padding:5px 14px;font-size:12px;line-height:18px;transition:color .12s,background .12s}.BiQ1zG_restartLater:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}.BiQ1zG_restartNow{color:var(--hub-text-on-fill);background:var(--hub-btn-fill);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_restartNow:hover{background:var(--hub-btn-hover)}.BiQ1zG_restartNow:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.BiQ1zG_restartNowWarning{color:#fff;background:var(--hub-warning);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_restartNowWarning:hover{background:var(--hub-warning-hover)}.BiQ1zG_restartNowWarning:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.BiQ1zG_result .BiQ1zG_modalActions{justify-content:center;gap:10px;margin-top:0;padding:6px 0 2px}.BiQ1zG_result .BiQ1zG_modalActions .BiQ1zG_restartLater,.BiQ1zG_result .BiQ1zG_modalActions .BiQ1zG_restartNow,.BiQ1zG_result .BiQ1zG_modalActions .BiQ1zG_restartNowWarning{min-width:100px}.BiQ1zG_progress{margin:10px 0 2px}.BiQ1zG_progressHead{justify-content:flex-end;align-items:center;margin-bottom:3px;display:flex}.BiQ1zG_progressText{color:var(--hub-text-secondary);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:14px}.BiQ1zG_progressTrack{background:var(--hub-border-2);border-radius:2px;height:4px;overflow:hidden}.BiQ1zG_progressFill{background:var(--hub-brand);border-radius:2px;height:100%;transition:width .32s}.BiQ1zG_progressFillFail{background:var(--hub-danger)}@keyframes BiQ1zG_overlayIn{0%{opacity:0}to{opacity:1}}@keyframes BiQ1zG_modalIn{0%{opacity:0;transform:translateY(6px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.BiQ1zG_failList{flex-direction:column;gap:12px;padding-right:2px;display:flex}.BiQ1zG_failRow{border:1px solid var(--hub-border-2);background:var(--hub-bg-2);border-radius:8px;flex-direction:column;gap:8px;padding:10px 12px;display:flex}.BiQ1zG_failHead{align-items:center;gap:8px;min-width:0;display:flex}.BiQ1zG_noticeList{flex-direction:column;gap:10px;padding-right:2px;display:flex}.BiQ1zG_noticeRow{border:1px solid var(--hub-border-2);background:var(--hub-bg-2);border-radius:8px;flex-direction:column;align-items:stretch;gap:6px;padding:10px 12px;display:flex}.BiQ1zG_noticeRowMain{align-items:center;gap:10px;width:100%;min-width:0;display:flex}.BiQ1zG_noticeBadgeOk,.BiQ1zG_noticeBadgeFail{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex;box-shadow:0 2px 6px #0000002e}.BiQ1zG_noticeBadgeOk{background:var(--hub-success)}.BiQ1zG_noticeBadgeFail{background:var(--hub-danger)}.BiQ1zG_noticeBadgeIcon{flex-shrink:0;width:12px;height:12px}.BiQ1zG_noticeMain{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.BiQ1zG_noticeHead{align-items:center;gap:8px;min-width:0;display:flex}.BiQ1zG_noticeTextOk{color:var(--hub-success);flex-shrink:0;font-size:12px;font-weight:600;line-height:18px}.BiQ1zG_noticeTextFail{color:var(--hub-danger-text);flex-shrink:0;font-size:12px;font-weight:600;line-height:18px}.BiQ1zG_noticeFoot{justify-content:flex-end;align-items:center;display:flex}.BiQ1zG_noticeTime{color:var(--hub-text-tertiary);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:11px;line-height:16px}.BiQ1zG_noticeRemove{width:22px;height:22px;color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_noticeRemove:hover{color:var(--hub-danger-text);background:var(--hub-danger-tint)}.BiQ1zG_noticeRowOk .BiQ1zG_noticeRemove{margin-left:0}.BiQ1zG_noticeRowOk .BiQ1zG_noticeTime{margin-left:auto}.BiQ1zG_noticeRowUpdate{cursor:pointer;transition:border-color .12s,background .12s}.BiQ1zG_noticeRowUpdate:hover{border-color:var(--hub-brand);background:var(--hub-brand-tint)}.BiQ1zG_noticeVersion{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border);font-variant-numeric:tabular-nums;border-radius:5px;flex-shrink:0;padding:0 6px;font-size:11px;font-weight:600;line-height:18px}.BiQ1zG_noticeUpdateGo{color:#fff;background:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:5px;flex-shrink:0;margin-left:2px;padding:2px 8px;font-size:11px;font-weight:600;line-height:16px;transition:background .12s}.BiQ1zG_noticeUpdateGo:hover{background:var(--hub-brand-hover)}.BiQ1zG_failKind{border:1px solid #0000;border-radius:4px;flex-shrink:0;padding:0 6px;font-size:10px;font-weight:500;line-height:16px}.BiQ1zG_failKindInstall{color:var(--hub-danger-text);border-color:var(--hub-danger-border);background:var(--hub-danger-tint)}.BiQ1zG_failKindUninstall{color:var(--hub-warn);border-color:var(--hub-warn-border);background:var(--hub-warn-tint)}.BiQ1zG_failRepo{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:18px;text-decoration:none;overflow:hidden}.BiQ1zG_failRepo:hover{text-decoration:underline}.BiQ1zG_failCopy{color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:4px;flex-shrink:0;align-items:center;padding:2px 8px;font-size:11px;line-height:16px;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_failCopy:hover{color:var(--hub-text-secondary);background:var(--hub-bg-2)}.BiQ1zG_failEmpty{text-align:center;color:var(--hub-text-tertiary);padding:24px 0;font-size:12px;line-height:18px}.BiQ1zG_failClear{color:var(--hub-danger);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;padding:5px 14px;font-size:12px;line-height:18px;transition:color .12s,background .12s}.BiQ1zG_failClear:hover{color:#fff;background:var(--hub-danger)}.BiQ1zG_failBigIssue{box-sizing:border-box;text-align:center;color:#fff;background:var(--hub-danger);border:1px solid var(--hub-danger);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;width:100%;margin-top:4px;padding:3px 16px;font-size:13px;font-weight:600;line-height:18px;text-decoration:none;transition:background .12s,border-color .12s,box-shadow .12s;display:block}.BiQ1zG_failBigIssue:hover{background:var(--hub-danger-hover);border-color:var(--hub-danger-hover);box-shadow:0 3px 10px #d1242f59}.BiQ1zG_failPrepareHint{color:var(--hub-warning);background:var(--hub-warning-tint);border:1px solid var(--hub-warning-border);border-radius:6px;margin-top:6px;padding:8px 12px;font-size:12px;line-height:18px}.BiQ1zG_aboutModal{width:460px;max-width:calc(100vw - 48px)}.BiQ1zG_aboutContent{min-height:0;max-height:340px;color:var(--hub-text-secondary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);border-radius:8px;flex:auto;padding:10px 12px;font-size:12px;line-height:18px;overflow-y:auto}.BiQ1zG_aboutContent>:first-child{margin-top:0}.BiQ1zG_aboutContent>:last-child{margin-bottom:0}.BiQ1zG_aboutContent h2,.BiQ1zG_aboutContent h3,.BiQ1zG_aboutContent h4,.BiQ1zG_aboutContent h5{color:var(--hub-text-primary);margin:10px 0 4px;font-size:13px;font-weight:600;line-height:20px}.BiQ1zG_aboutContent h2{font-size:14px}.BiQ1zG_aboutContent p{margin:4px 0}.BiQ1zG_aboutContent ul,.BiQ1zG_aboutContent ol{margin:4px 0;padding-left:18px}.BiQ1zG_aboutContent li{margin:2px 0}.BiQ1zG_aboutContent code{background:var(--hub-bg-hover);color:var(--hub-text-primary);border-radius:4px;padding:1px 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.BiQ1zG_aboutContent pre{background:var(--hub-bg-1);border:1px solid var(--hub-border-2);border-radius:6px;margin:6px 0;padding:8px 10px;overflow-x:auto}.BiQ1zG_aboutContent pre code{background:0 0;border-radius:0;padding:0}.BiQ1zG_aboutContent blockquote{border-left:3px solid var(--hub-brand);background:var(--hub-bg-hover);color:var(--hub-text-tertiary);border-radius:0 6px 6px 0;margin:6px 0;padding:2px 10px}.BiQ1zG_aboutContent a{color:var(--hub-brand);text-decoration:none}.BiQ1zG_aboutContent a:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_aboutContent img{border-radius:8px;max-width:100%;max-height:220px;margin:8px auto;display:block;box-shadow:0 2px 8px #0000001f}.BiQ1zG_aboutMeta{color:var(--hub-text-tertiary);font-size:11px;line-height:16px}.BiQ1zG_hubUpdateModal{width:520px;max-width:calc(100vw - 48px)}.BiQ1zG_hubUpdateMeta{flex-wrap:wrap;align-items:center;gap:4px 14px;font-size:12px;line-height:18px;display:flex}.BiQ1zG_hubUpdateMetaItem{color:var(--hub-text-tertiary)}.BiQ1zG_hubUpdateNotes{min-height:0;max-height:300px;color:var(--hub-text-secondary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);border-radius:8px;flex:auto;padding:10px 12px;font-size:12px;line-height:18px;overflow-y:auto}.BiQ1zG_hubUpdateNotes>:first-child{margin-top:0}.BiQ1zG_hubUpdateNotes>:last-child{margin-bottom:0}.BiQ1zG_hubUpdateNotes h2,.BiQ1zG_hubUpdateNotes h3,.BiQ1zG_hubUpdateNotes h4,.BiQ1zG_hubUpdateNotes h5{color:var(--hub-text-primary);margin:10px 0 4px;font-size:13px;font-weight:600;line-height:20px}.BiQ1zG_hubUpdateNotes h2{font-size:14px}.BiQ1zG_hubUpdateNotes p{margin:4px 0}.BiQ1zG_hubUpdateNotes ul,.BiQ1zG_hubUpdateNotes ol{margin:4px 0;padding-left:18px}.BiQ1zG_hubUpdateNotes li{margin:2px 0}.BiQ1zG_hubUpdateNotes code{background:var(--hub-bg-hover);color:var(--hub-text-primary);border-radius:4px;padding:1px 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.BiQ1zG_hubUpdateNotes pre{background:var(--hub-bg-1);border:1px solid var(--hub-border-2);border-radius:6px;margin:6px 0;padding:8px 10px;overflow-x:auto}.BiQ1zG_hubUpdateNotes pre code{background:0 0;border-radius:0;padding:0}.BiQ1zG_hubUpdateNotes blockquote{border-left:3px solid var(--hub-brand);background:var(--hub-bg-hover);color:var(--hub-text-tertiary);border-radius:0 6px 6px 0;margin:6px 0;padding:2px 10px}.BiQ1zG_hubUpdateNotes a{color:var(--hub-brand);text-decoration:none}.BiQ1zG_hubUpdateNotes a:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_detailModal{width:480px;max-width:calc(100vw - 48px)}.BiQ1zG_detailUpdateHint{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft);border-radius:6px;padding:6px 10px;font-size:12px;line-height:18px}.BiQ1zG_detailGrid{flex-direction:column;gap:6px;display:flex}.BiQ1zG_detailRow{align-items:baseline;gap:10px;min-width:0;font-size:12px;line-height:20px;display:flex}.BiQ1zG_detailLabel{text-align:right;width:76px;color:var(--hub-text-tertiary);flex-shrink:0}.BiQ1zG_detailValue{min-width:0;color:var(--hub-text-primary);flex-wrap:wrap;flex:auto;align-items:baseline;gap:4px 6px;font-weight:500;display:flex}.BiQ1zG_detailMono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;font-weight:500}.BiQ1zG_detailArrow{color:var(--hub-text-tertiary);align-items:baseline;gap:4px;display:inline-flex}.BiQ1zG_detailDim{color:var(--hub-text-tertiary);font-size:11px;font-weight:400}.BiQ1zG_detailLink{min-width:0;color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;font-weight:500;text-decoration:none;transition:color .12s;display:inline-flex}.BiQ1zG_detailLink:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_detailStars{color:#b45309;font-weight:600}.BiQ1zG_detailPath{min-width:0;color:var(--hub-text-primary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);border-radius:6px;flex:auto;justify-content:space-between;align-items:center;gap:6px;padding:3px 3px 3px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:18px;transition:border-color .12s,background .12s;display:flex}.BiQ1zG_detailPath:hover{border-color:var(--hub-border-ghost);background:var(--hub-bg-3)}.BiQ1zG_detailPathText{text-overflow:ellipsis;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;min-width:0;overflow:hidden}.BiQ1zG_detailPathActions{flex-shrink:0;align-items:center;gap:4px;display:inline-flex}.BiQ1zG_detailPathBtn{width:28px;height:28px;color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;justify-content:center;align-items:center;transition:color .12s,background .12s,border-color .12s;display:inline-flex}.BiQ1zG_detailPathBtn svg{width:15px;height:15px}.BiQ1zG_detailPathBtn:hover{color:#fff;background:var(--hub-brand);border-color:var(--hub-brand)}.BiQ1zG_detailStatusRunning,.BiQ1zG_detailStatusPending{border-radius:50%;flex-shrink:0;align-self:center;width:8px;height:8px}.BiQ1zG_detailStatusRunning{background:var(--hub-success)}.BiQ1zG_detailStatusPending{background:var(--hub-warning)}.BiQ1zG_detailStatusText{font-weight:500}";
|
|
2149
|
-
const tagId$10 = "dsh-plugin/Modal.module.css";
|
|
2150
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$10) + "]") === null) {
|
|
2151
|
-
const tag = document.createElement("style");
|
|
2152
|
-
tag.dataset.plugin = "dsh-plugin";
|
|
2153
|
-
tag.dataset.pluginCss = tagId$10;
|
|
2154
|
-
tag.textContent = css$10;
|
|
2155
|
-
document.head.appendChild(tag);
|
|
2156
|
-
}
|
|
2157
|
-
var Modal_module_css_default = {
|
|
2158
|
-
"modal": "BiQ1zG_modal",
|
|
2159
|
-
"queueSectionTitle": "BiQ1zG_queueSectionTitle",
|
|
2160
|
-
"detailModal": "BiQ1zG_detailModal",
|
|
2161
|
-
"cliOnlyHint": "BiQ1zG_cliOnlyHint",
|
|
2162
|
-
"pendingRowActions": "BiQ1zG_pendingRowActions",
|
|
2163
|
-
"queueRowStatus": "BiQ1zG_queueRowStatus",
|
|
2164
|
-
"modalCopy": "BiQ1zG_modalCopy",
|
|
2165
|
-
"modalInstall": "BiQ1zG_modalInstall",
|
|
2166
|
-
"modalWide": "BiQ1zG_modalWide",
|
|
2167
|
-
"hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
|
|
2168
|
-
"errorTitle": "BiQ1zG_errorTitle",
|
|
2169
|
-
"noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
|
|
2170
|
-
"modalCmd": "BiQ1zG_modalCmd",
|
|
2171
|
-
"noticeVersion": "BiQ1zG_noticeVersion",
|
|
2172
|
-
"failKind": "BiQ1zG_failKind",
|
|
2173
|
-
"detailValue": "BiQ1zG_detailValue",
|
|
2174
|
-
"noticeList": "BiQ1zG_noticeList",
|
|
2175
|
-
"modalValue": "BiQ1zG_modalValue",
|
|
2176
|
-
"detailMono": "BiQ1zG_detailMono",
|
|
2177
|
-
"overlayIn": "BiQ1zG_overlayIn",
|
|
2178
|
-
"noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
|
|
2179
|
-
"resultCheck": "BiQ1zG_resultCheck",
|
|
2180
|
-
"failKindUninstall": "BiQ1zG_failKindUninstall",
|
|
2181
|
-
"detailPath": "BiQ1zG_detailPath",
|
|
2182
|
-
"restartNowWarning": "BiQ1zG_restartNowWarning",
|
|
2183
|
-
"queueRowTarget": "BiQ1zG_queueRowTarget",
|
|
2184
|
-
"modalTitle": "BiQ1zG_modalTitle",
|
|
2185
|
-
"toast": "BiQ1zG_toast",
|
|
2186
|
-
"progressTrack": "BiQ1zG_progressTrack",
|
|
2187
|
-
"errorHint": "BiQ1zG_errorHint",
|
|
2188
|
-
"detailUpdateHint": "BiQ1zG_detailUpdateHint",
|
|
2189
|
-
"detailPathActions": "BiQ1zG_detailPathActions",
|
|
2190
|
-
"aboutModal": "BiQ1zG_aboutModal",
|
|
2191
|
-
"noticeFoot": "BiQ1zG_noticeFoot",
|
|
2192
|
-
"result": "BiQ1zG_result",
|
|
2193
|
-
"noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
|
|
2194
|
-
"modalIn": "BiQ1zG_modalIn",
|
|
2195
|
-
"modalCloseIcon": "BiQ1zG_modalCloseIcon",
|
|
2196
|
-
"modalActions": "BiQ1zG_modalActions",
|
|
2197
|
-
"errorCopySoft": "BiQ1zG_errorCopySoft",
|
|
2198
|
-
"modalCancel": "BiQ1zG_modalCancel",
|
|
2199
|
-
"modalDesc": "BiQ1zG_modalDesc",
|
|
2200
|
-
"resultCheckIcon": "BiQ1zG_resultCheckIcon",
|
|
2201
|
-
"modalTitleQueued": "BiQ1zG_modalTitleQueued",
|
|
2202
|
-
"trustHint": "BiQ1zG_trustHint",
|
|
2203
|
-
"detailArrow": "BiQ1zG_detailArrow",
|
|
2204
|
-
"overlay": "BiQ1zG_overlay",
|
|
2205
|
-
"progressFillFail": "BiQ1zG_progressFillFail",
|
|
2206
|
-
"noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
|
|
2207
|
-
"errorBox": "BiQ1zG_errorBox",
|
|
2208
|
-
"queuedHint": "BiQ1zG_queuedHint",
|
|
2209
|
-
"restartLater": "BiQ1zG_restartLater",
|
|
2210
|
-
"failHead": "BiQ1zG_failHead",
|
|
2211
|
-
"failBigIssue": "BiQ1zG_failBigIssue",
|
|
2212
|
-
"detailGrid": "BiQ1zG_detailGrid",
|
|
2213
|
-
"detailRow": "BiQ1zG_detailRow",
|
|
2214
|
-
"progressHead": "BiQ1zG_progressHead",
|
|
2215
|
-
"detailStatusRunning": "BiQ1zG_detailStatusRunning",
|
|
2216
|
-
"hubUpdateModal": "BiQ1zG_hubUpdateModal",
|
|
2217
|
-
"queueRowDesc": "BiQ1zG_queueRowDesc",
|
|
2218
|
-
"noticeTime": "BiQ1zG_noticeTime",
|
|
2219
|
-
"detailPathText": "BiQ1zG_detailPathText",
|
|
2220
|
-
"failEmpty": "BiQ1zG_failEmpty",
|
|
2221
|
-
"progress": "BiQ1zG_progress",
|
|
2222
|
-
"failRepo": "BiQ1zG_failRepo",
|
|
2223
|
-
"aboutMeta": "BiQ1zG_aboutMeta",
|
|
2224
|
-
"queueRowTrack": "BiQ1zG_queueRowTrack",
|
|
2225
|
-
"noticeMain": "BiQ1zG_noticeMain",
|
|
2226
|
-
"detailDim": "BiQ1zG_detailDim",
|
|
2227
|
-
"stripCancel": "BiQ1zG_stripCancel",
|
|
2228
|
-
"resultTitle": "BiQ1zG_resultTitle",
|
|
2229
|
-
"detailLabel": "BiQ1zG_detailLabel",
|
|
2230
|
-
"noticeHead": "BiQ1zG_noticeHead",
|
|
2231
|
-
"noticeRemove": "BiQ1zG_noticeRemove",
|
|
2232
|
-
"failList": "BiQ1zG_failList",
|
|
2233
|
-
"queueRow": "BiQ1zG_queueRow",
|
|
2234
|
-
"modalCmdCopy": "BiQ1zG_modalCmdCopy",
|
|
2235
|
-
"detailStars": "BiQ1zG_detailStars",
|
|
2236
|
-
"failKindInstall": "BiQ1zG_failKindInstall",
|
|
2237
|
-
"noticeRow": "BiQ1zG_noticeRow",
|
|
2238
|
-
"noticeTextFail": "BiQ1zG_noticeTextFail",
|
|
2239
|
-
"pendingRowStatus": "BiQ1zG_pendingRowStatus",
|
|
2240
|
-
"logModal": "BiQ1zG_logModal",
|
|
2241
|
-
"hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
|
|
2242
|
-
"modalLink": "BiQ1zG_modalLink",
|
|
2243
|
-
"queueSection": "BiQ1zG_queueSection",
|
|
2244
|
-
"uninstallConfirm": "BiQ1zG_uninstallConfirm",
|
|
2245
|
-
"modalRow": "BiQ1zG_modalRow",
|
|
2246
|
-
"detailStatusText": "BiQ1zG_detailStatusText",
|
|
2247
|
-
"modalBody": "BiQ1zG_modalBody",
|
|
2248
|
-
"progressText": "BiQ1zG_progressText",
|
|
2249
|
-
"resultDesc": "BiQ1zG_resultDesc",
|
|
2250
|
-
"noticeRowMain": "BiQ1zG_noticeRowMain",
|
|
2251
|
-
"modalCmdText": "BiQ1zG_modalCmdText",
|
|
2252
|
-
"modalLabel": "BiQ1zG_modalLabel",
|
|
2253
|
-
"hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
|
|
2254
|
-
"modalClose": "BiQ1zG_modalClose",
|
|
2255
|
-
"resultRestarting": "BiQ1zG_resultRestarting",
|
|
2256
|
-
"modalHead": "BiQ1zG_modalHead",
|
|
2257
|
-
"linkIcon": "BiQ1zG_linkIcon",
|
|
2258
|
-
"toastFail": "BiQ1zG_toastFail",
|
|
2259
|
-
"queueRowPct": "BiQ1zG_queueRowPct",
|
|
2260
|
-
"progressFill": "BiQ1zG_progressFill",
|
|
2261
|
-
"failRow": "BiQ1zG_failRow",
|
|
2262
|
-
"failPrepareHint": "BiQ1zG_failPrepareHint",
|
|
2263
|
-
"aboutContent": "BiQ1zG_aboutContent",
|
|
2264
|
-
"noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
|
|
2265
|
-
"noticeTextOk": "BiQ1zG_noticeTextOk",
|
|
2266
|
-
"errorModal": "BiQ1zG_errorModal",
|
|
2267
|
-
"toastIn": "BiQ1zG_toastIn",
|
|
2268
|
-
"detailPathBtn": "BiQ1zG_detailPathBtn",
|
|
2269
|
-
"noticeRowOk": "BiQ1zG_noticeRowOk",
|
|
2270
|
-
"restartNow": "BiQ1zG_restartNow",
|
|
2271
|
-
"modalTitleBusy": "BiQ1zG_modalTitleBusy",
|
|
2272
|
-
"failedCopyHint": "BiQ1zG_failedCopyHint",
|
|
2273
|
-
"detailStatusPending": "BiQ1zG_detailStatusPending",
|
|
2274
|
-
"failCopy": "BiQ1zG_failCopy",
|
|
2275
|
-
"detailLink": "BiQ1zG_detailLink",
|
|
2276
|
-
"failClear": "BiQ1zG_failClear",
|
|
2277
|
-
"queueRowHead": "BiQ1zG_queueRowHead",
|
|
2278
|
-
"queueRowBody": "BiQ1zG_queueRowBody"
|
|
2279
|
-
};
|
|
2280
|
-
//#endregion
|
|
2281
2358
|
//#region src/client/components/ui/icons.tsx
|
|
2282
2359
|
/**
|
|
2283
|
-
* DSH
|
|
2360
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2284
2361
|
* Website: https://dsh-plugin.org
|
|
2285
2362
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2286
2363
|
*
|
|
@@ -2326,6 +2403,32 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2326
2403
|
strokeLinejoin: "round"
|
|
2327
2404
|
}));
|
|
2328
2405
|
}
|
|
2406
|
+
/** 帮助图标:圆圈 + 问号(stroke 继承 currentColor),自定义安装卡片标题旁的「帮助」按钮用。 */
|
|
2407
|
+
function HelpIcon() {
|
|
2408
|
+
return (0, react.createElement)("svg", {
|
|
2409
|
+
viewBox: "0 0 16 16",
|
|
2410
|
+
width: 13,
|
|
2411
|
+
height: 13,
|
|
2412
|
+
fill: "none",
|
|
2413
|
+
"aria-hidden": "true"
|
|
2414
|
+
}, (0, react.createElement)("circle", {
|
|
2415
|
+
cx: 8,
|
|
2416
|
+
cy: 8,
|
|
2417
|
+
r: 6.3,
|
|
2418
|
+
stroke: "currentColor",
|
|
2419
|
+
strokeWidth: 1.4
|
|
2420
|
+
}), (0, react.createElement)("path", {
|
|
2421
|
+
d: "M6.3 6.5a1.9 1.9 0 1 1 2.7 1.7c-.7.3-1 .8-1 1.4",
|
|
2422
|
+
stroke: "currentColor",
|
|
2423
|
+
strokeWidth: 1.4,
|
|
2424
|
+
strokeLinecap: "round"
|
|
2425
|
+
}), (0, react.createElement)("circle", {
|
|
2426
|
+
cx: 8,
|
|
2427
|
+
cy: 11.6,
|
|
2428
|
+
r: .95,
|
|
2429
|
+
fill: "currentColor"
|
|
2430
|
+
}));
|
|
2431
|
+
}
|
|
2329
2432
|
/** 品牌 logo 图标:蓝紫渐变圆角方块 + 白色拼图块(2x2 错落),标题左侧的品牌标识。 */
|
|
2330
2433
|
function LogoIcon() {
|
|
2331
2434
|
return (0, react.createElement)("svg", {
|
|
@@ -2667,7 +2770,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2667
2770
|
//#endregion
|
|
2668
2771
|
//#region src/client/components/modals/ProgressView.tsx
|
|
2669
2772
|
/**
|
|
2670
|
-
* DSH
|
|
2773
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2671
2774
|
* Website: https://dsh-plugin.org
|
|
2672
2775
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2673
2776
|
*
|
|
@@ -2685,7 +2788,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2685
2788
|
//#endregion
|
|
2686
2789
|
//#region src/client/components/modals/modals.tsx
|
|
2687
2790
|
/**
|
|
2688
|
-
* DSH
|
|
2791
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2689
2792
|
* Website: https://dsh-plugin.org
|
|
2690
2793
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2691
2794
|
*
|
|
@@ -2923,7 +3026,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2923
3026
|
//#endregion
|
|
2924
3027
|
//#region src/client/logic/renderMarkdown.ts
|
|
2925
3028
|
/**
|
|
2926
|
-
* DSH
|
|
3029
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2927
3030
|
* Website: https://dsh-plugin.org
|
|
2928
3031
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2929
3032
|
*
|
|
@@ -3014,11 +3117,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3014
3117
|
//#endregion
|
|
3015
3118
|
//#region src/client/components/modals/AboutModal.tsx
|
|
3016
3119
|
/**
|
|
3017
|
-
* DSH
|
|
3120
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3018
3121
|
* Website: https://dsh-plugin.org
|
|
3019
3122
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3020
3123
|
*
|
|
3021
|
-
* 头部「关注我们」弹窗:介绍 DSH
|
|
3124
|
+
* 头部「关注我们」弹窗:介绍 DSH Plugin Hub 的功能定位 + 用户反馈群二维码。
|
|
3022
3125
|
* 内容以 Markdown 形式由 dsh-update Worker 的 /about 接口下发(key = hub:about),
|
|
3023
3126
|
* 客户端按接口返回渲染,不内置固定文案。
|
|
3024
3127
|
* 图片(反馈群二维码)经 renderMarkdown 的  语法嵌入,居中、最大高度受控。
|
|
@@ -3055,7 +3158,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3055
3158
|
//#endregion
|
|
3056
3159
|
//#region src/client/components/modals/HubUpdateModal.tsx
|
|
3057
3160
|
/**
|
|
3058
|
-
* DSH
|
|
3161
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3059
3162
|
* Website: https://dsh-plugin.org
|
|
3060
3163
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3061
3164
|
*
|
|
@@ -3122,7 +3225,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3122
3225
|
//#endregion
|
|
3123
3226
|
//#region src/client/components/modals/InstalledDetailModal.tsx
|
|
3124
3227
|
/**
|
|
3125
|
-
* DSH
|
|
3228
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3126
3229
|
* Website: https://dsh-plugin.org
|
|
3127
3230
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3128
3231
|
*
|
|
@@ -3204,7 +3307,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3204
3307
|
//#endregion
|
|
3205
3308
|
//#region src/client/components/modals/NotificationsModal.tsx
|
|
3206
3309
|
/**
|
|
3207
|
-
* DSH
|
|
3310
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3208
3311
|
* Website: https://dsh-plugin.org
|
|
3209
3312
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3210
3313
|
*
|
|
@@ -3246,7 +3349,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3246
3349
|
strokeLinecap: "round"
|
|
3247
3350
|
}));
|
|
3248
3351
|
}
|
|
3249
|
-
function NotificationsModal({ records, tasks, pendingRestarts, t, env, onClose, onCopy, onClear, onRemove, onUpdate, cancelTask, restarting, onRestart }) {
|
|
3352
|
+
function NotificationsModal({ records, tasks, pendingRestarts, t, env, onClose, onCopy, onClear, onRemove, onUpdate, onIgnoreUpdate, cancelTask, restarting, onRestart }) {
|
|
3250
3353
|
return (0, react.createElement)("div", {
|
|
3251
3354
|
className: Modal_module_css_default.overlay,
|
|
3252
3355
|
onClick: (e) => {
|
|
@@ -3329,7 +3432,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3329
3432
|
e.stopPropagation();
|
|
3330
3433
|
onUpdate(r.repo);
|
|
3331
3434
|
}
|
|
3332
|
-
}, t("updateNoticeGo")) : null, (0, react.createElement)("button", {
|
|
3435
|
+
}, t("updateNoticeGo")) : null, isUpdate ? (0, react.createElement)("button", {
|
|
3436
|
+
className: Modal_module_css_default.noticeIgnore,
|
|
3437
|
+
onClick: (e) => {
|
|
3438
|
+
e.stopPropagation();
|
|
3439
|
+
onIgnoreUpdate(r.repo, r.version);
|
|
3440
|
+
}
|
|
3441
|
+
}, t("ignoreUpdateRun")) : null, (0, react.createElement)("button", {
|
|
3333
3442
|
className: Modal_module_css_default.noticeRemove,
|
|
3334
3443
|
"aria-label": t("removeNotification"),
|
|
3335
3444
|
title: t("removeNotification"),
|
|
@@ -3372,7 +3481,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3372
3481
|
//#endregion
|
|
3373
3482
|
//#region src/client/components/layout/CatalogHeader.tsx
|
|
3374
3483
|
/**
|
|
3375
|
-
* DSH
|
|
3484
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3376
3485
|
* Website: https://dsh-plugin.org
|
|
3377
3486
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3378
3487
|
*
|
|
@@ -3434,7 +3543,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3434
3543
|
//#endregion
|
|
3435
3544
|
//#region src/client/components/layout/CategoryTabs.tsx
|
|
3436
3545
|
/**
|
|
3437
|
-
* DSH
|
|
3546
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3438
3547
|
* Website: https://dsh-plugin.org
|
|
3439
3548
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3440
3549
|
*
|
|
@@ -3456,7 +3565,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3456
3565
|
//#endregion
|
|
3457
3566
|
//#region src/client/components/layout/CatalogControls.tsx
|
|
3458
3567
|
/**
|
|
3459
|
-
* DSH
|
|
3568
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3460
3569
|
* Website: https://dsh-plugin.org
|
|
3461
3570
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3462
3571
|
*
|
|
@@ -3500,7 +3609,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3500
3609
|
}
|
|
3501
3610
|
//#endregion
|
|
3502
3611
|
//#region \0dsh-css:src/client/styles/List.module.css.mjs
|
|
3503
|
-
const css$9 = "._3XaZHa_body{flex-direction:column;flex:1;min-height:0;display:flex}._3XaZHa_list{flex-direction:column;flex:1;gap:6px;min-height:0;padding:2px 4px 4px 2px;display:flex;overflow-y:auto}._3XaZHa_moreSentinel{flex-shrink:0;height:1px}._3XaZHa_card{border:1px solid var(--hub-border-2);background:var(--hub-bg-1);border-radius:8px;justify-content:space-between;align-items:stretch;gap:12px;padding:9px 12px;transition:border-color .12s,background .12s;display:flex}._3XaZHa_card:hover{border-color:var(--hub-brand);background:var(--hub-bg-2)}._3XaZHa_cardMain{flex-direction:column;gap:4px;min-width:0;display:flex}._3XaZHa_cardHead{align-items:center;gap:6px;min-width:0;display:flex}._3XaZHa_cardTitle{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;line-height:18px;overflow:hidden}._3XaZHa_categoryBadge,._3XaZHa_verified,._3XaZHa_versionBadge,._3XaZHa_updateBadge{border:1px solid #0000;border-radius:4px;flex-shrink:0;padding:0 6px;font-size:10px;line-height:16px}._3XaZHa_categoryBadge{color:var(--hub-brand);border-color:var(--hub-border-ghost)}._3XaZHa_verified{color:var(--hub-success);border-color:var(--hub-success-border)}._3XaZHa_versionBadge{color:var(--hub-text-secondary);border-color:var(--hub-border-input)}._3XaZHa_updateBadge{color:var(--hub-warn);border-color:var(--hub-warn-border);background:var(--hub-warn-tint)}._3XaZHa_desc{color:var(--hub-text-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:12px;line-height:18px;display:-webkit-box;overflow:hidden}._3XaZHa_topics{flex-wrap:wrap;align-items:center;gap:4px;min-width:0;display:flex}._3XaZHa_topic{color:var(--hub-text-tertiary);background:var(--hub-bg-3);white-space:nowrap;border-radius:4px;flex-shrink:0;padding:0 6px;font-size:10px;line-height:16px}._3XaZHa_cardSide{flex-direction:column;flex-shrink:0;justify-content:space-between;align-items:flex-end;gap:6px;display:flex}._3XaZHa_stats{flex-direction:column;align-items:flex-end;gap:1px;display:flex}._3XaZHa_star{color:var(--hub-warn);white-space:nowrap;font-size:11px;line-height:16px}._3XaZHa_fork{color:var(--hub-text-tertiary);white-space:nowrap;font-size:11px;line-height:16px}._3XaZHa_date{color:var(--hub-text-tertiary);white-space:nowrap;font-size:10px;line-height:14px}._3XaZHa_installBtn,._3XaZHa_installBtnCopied,._3XaZHa_installBtnInstalled,._3XaZHa_installBtnUpdate,._3XaZHa_uninstallBtn,._3XaZHa_detailBtn{cursor:pointer;border-radius:6px;padding:2px 10px;font-size:11px;line-height:18px;transition:color .12s,border-color .12s,background .12s}._3XaZHa_installBtnInstalled{color:var(--hub-success);background:var(--hub-success-tint);cursor:default;-webkit-user-select:none;user-select:none;border:none}._3XaZHa_installBtnUpdate{color:#fff;background:var(--hub-warn);-webkit-user-select:none;user-select:none;border:none;font-weight:500}._3XaZHa_installBtnUpdate:hover{background:var(--hub-warn-strong)}._3XaZHa_uninstallBtn{color:var(--hub-danger);background:var(--hub-danger-tint);-webkit-user-select:none;user-select:none;border:none}._3XaZHa_uninstallBtn:hover{color:#fff;background:var(--hub-danger-hover)}._3XaZHa_installBtn{color:var(--hub-text-on-fill);background:var(--hub-btn-fill);-webkit-user-select:none;user-select:none;border:none;font-weight:500}._3XaZHa_installBtn:hover{background:var(--hub-btn-hover)}._3XaZHa_detailBtn{color:var(--hub-text-secondary);-webkit-user-select:none;user-select:none;background:0 0;border:none;align-items:center;text-decoration:none;display:inline-flex}._3XaZHa_detailBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._3XaZHa_actions{align-items:center;gap:6px;display:flex}._3XaZHa_installBtnCopied{color:var(--hub-success);background:var(--hub-success-tint);-webkit-user-select:none;user-select:none;border:none}._3XaZHa_state{text-align:center;min-height:160px;color:var(--hub-text-tertiary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:24px;font-size:12px;line-height:18px;display:flex}._3XaZHa_stateTitle{color:var(--hub-text-primary);font-size:13px;font-weight:600}._3XaZHa_stateDesc{max-width:420px}._3XaZHa_retryBtn{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;margin-top:4px;padding:4px 12px;font-size:12px;line-height:18px}._3XaZHa_retryBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._3XaZHa_footer{border-top:1px solid var(--hub-border-1);flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;padding:6px 4px 0;display:flex}._3XaZHa_footLink{color:var(--hub-brand);white-space:nowrap;-webkit-user-select:none;user-select:none;font-size:11px;line-height:16px;text-decoration:none}._3XaZHa_footLink:hover{text-decoration:underline}";
|
|
3612
|
+
const css$9 = "._3XaZHa_body{flex-direction:column;flex:1;min-height:0;display:flex}._3XaZHa_list{flex-direction:column;flex:1;gap:6px;min-height:0;padding:2px 4px 4px 2px;display:flex;overflow-y:auto}._3XaZHa_moreSentinel{flex-shrink:0;height:1px}._3XaZHa_card{border:1px solid var(--hub-border-2);background:var(--hub-bg-1);border-radius:8px;justify-content:space-between;align-items:stretch;gap:12px;padding:9px 12px;transition:border-color .12s,background .12s;display:flex}._3XaZHa_card:hover{border-color:var(--hub-brand);background:var(--hub-bg-2)}._3XaZHa_cardMain{flex-direction:column;gap:4px;min-width:0;display:flex}._3XaZHa_cardHead{align-items:center;gap:6px;min-width:0;display:flex}._3XaZHa_cardTitle{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;line-height:18px;overflow:hidden}._3XaZHa_categoryBadge,._3XaZHa_verified,._3XaZHa_versionBadge,._3XaZHa_updateBadge{border:1px solid #0000;border-radius:4px;flex-shrink:0;padding:0 6px;font-size:10px;line-height:16px}._3XaZHa_categoryBadge{color:var(--hub-brand);border-color:var(--hub-border-ghost)}._3XaZHa_verified{color:var(--hub-success);border-color:var(--hub-success-border)}._3XaZHa_versionBadge{color:var(--hub-text-secondary);border-color:var(--hub-border-input)}._3XaZHa_updateBadge{color:var(--hub-warn);border-color:var(--hub-warn-border);background:var(--hub-warn-tint)}._3XaZHa_desc{color:var(--hub-text-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:12px;line-height:18px;display:-webkit-box;overflow:hidden}._3XaZHa_topics{flex-wrap:wrap;align-items:center;gap:4px;min-width:0;display:flex}._3XaZHa_topic{color:var(--hub-text-tertiary);background:var(--hub-bg-3);white-space:nowrap;border-radius:4px;flex-shrink:0;padding:0 6px;font-size:10px;line-height:16px}._3XaZHa_cardSide{flex-direction:column;flex-shrink:0;justify-content:space-between;align-items:flex-end;gap:6px;display:flex}._3XaZHa_stats{flex-direction:column;align-items:flex-end;gap:1px;display:flex}._3XaZHa_star{color:var(--hub-warn);white-space:nowrap;font-size:11px;line-height:16px}._3XaZHa_fork{color:var(--hub-text-tertiary);white-space:nowrap;font-size:11px;line-height:16px}._3XaZHa_date{color:var(--hub-text-tertiary);white-space:nowrap;font-size:10px;line-height:14px}._3XaZHa_installBtn,._3XaZHa_installBtnCopied,._3XaZHa_installBtnInstalled,._3XaZHa_installBtnUpdate,._3XaZHa_uninstallBtn,._3XaZHa_detailBtn{cursor:pointer;border-radius:6px;padding:2px 10px;font-size:11px;line-height:18px;transition:color .12s,border-color .12s,background .12s}._3XaZHa_installBtnInstalled{color:var(--hub-success);background:var(--hub-success-tint);cursor:default;-webkit-user-select:none;user-select:none;border:none}._3XaZHa_installBtnUpdate{color:#fff;background:var(--hub-warn);-webkit-user-select:none;user-select:none;border:none;font-weight:500}._3XaZHa_installBtnUpdate:hover{background:var(--hub-warn-strong)}._3XaZHa_uninstallBtn{color:var(--hub-danger);background:var(--hub-danger-tint);-webkit-user-select:none;user-select:none;border:none}._3XaZHa_uninstallBtn:hover{color:#fff;background:var(--hub-danger-hover)}body[data-ds-dark-theme] ._3XaZHa_uninstallBtn{color:#fff;background:var(--hub-danger)}body[data-ds-dark-theme] ._3XaZHa_uninstallBtn:hover{background:var(--hub-danger-hover)}._3XaZHa_installBtn{color:var(--hub-text-on-fill);background:var(--hub-btn-fill);-webkit-user-select:none;user-select:none;border:none;font-weight:500}._3XaZHa_installBtn:hover{background:var(--hub-btn-hover)}._3XaZHa_detailBtn{color:var(--hub-text-secondary);-webkit-user-select:none;user-select:none;background:0 0;border:none;align-items:center;text-decoration:none;display:inline-flex}._3XaZHa_detailBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._3XaZHa_actions{align-items:center;gap:6px;display:flex}._3XaZHa_installBtnCopied{color:var(--hub-success);background:var(--hub-success-tint);-webkit-user-select:none;user-select:none;border:none}._3XaZHa_state{text-align:center;min-height:160px;color:var(--hub-text-tertiary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:24px;font-size:12px;line-height:18px;display:flex}._3XaZHa_stateTitle{color:var(--hub-text-primary);font-size:13px;font-weight:600}._3XaZHa_stateDesc{max-width:420px}._3XaZHa_retryBtn{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;margin-top:4px;padding:4px 12px;font-size:12px;line-height:18px}._3XaZHa_retryBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._3XaZHa_footer{border-top:1px solid var(--hub-border-1);flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;padding:6px 4px 0;display:flex}._3XaZHa_footLink{color:var(--hub-brand);white-space:nowrap;-webkit-user-select:none;user-select:none;font-size:11px;line-height:16px;text-decoration:none}._3XaZHa_footLink:hover{text-decoration:underline}";
|
|
3504
3613
|
const tagId$9 = "dsh-plugin/List.module.css";
|
|
3505
3614
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$9) + "]") === null) {
|
|
3506
3615
|
const tag = document.createElement("style");
|
|
@@ -3510,43 +3619,43 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3510
3619
|
document.head.appendChild(tag);
|
|
3511
3620
|
}
|
|
3512
3621
|
var List_module_css_default = {
|
|
3513
|
-
"installBtnCopied": "_3XaZHa_installBtnCopied",
|
|
3514
|
-
"date": "_3XaZHa_date",
|
|
3515
|
-
"state": "_3XaZHa_state",
|
|
3516
3622
|
"fork": "_3XaZHa_fork",
|
|
3517
|
-
"
|
|
3518
|
-
"moreSentinel": "_3XaZHa_moreSentinel",
|
|
3519
|
-
"desc": "_3XaZHa_desc",
|
|
3520
|
-
"footer": "_3XaZHa_footer",
|
|
3521
|
-
"list": "_3XaZHa_list",
|
|
3522
|
-
"body": "_3XaZHa_body",
|
|
3523
|
-
"card": "_3XaZHa_card",
|
|
3524
|
-
"cardTitle": "_3XaZHa_cardTitle",
|
|
3525
|
-
"verified": "_3XaZHa_verified",
|
|
3623
|
+
"installBtn": "_3XaZHa_installBtn",
|
|
3526
3624
|
"detailBtn": "_3XaZHa_detailBtn",
|
|
3527
|
-
"
|
|
3528
|
-
"
|
|
3529
|
-
"stateDesc": "_3XaZHa_stateDesc",
|
|
3530
|
-
"installBtnUpdate": "_3XaZHa_installBtnUpdate",
|
|
3531
|
-
"topic": "_3XaZHa_topic",
|
|
3532
|
-
"actions": "_3XaZHa_actions",
|
|
3625
|
+
"moreSentinel": "_3XaZHa_moreSentinel",
|
|
3626
|
+
"cardMain": "_3XaZHa_cardMain",
|
|
3533
3627
|
"cardSide": "_3XaZHa_cardSide",
|
|
3628
|
+
"star": "_3XaZHa_star",
|
|
3629
|
+
"card": "_3XaZHa_card",
|
|
3630
|
+
"installBtnCopied": "_3XaZHa_installBtnCopied",
|
|
3534
3631
|
"categoryBadge": "_3XaZHa_categoryBadge",
|
|
3632
|
+
"body": "_3XaZHa_body",
|
|
3535
3633
|
"versionBadge": "_3XaZHa_versionBadge",
|
|
3536
|
-
"star": "_3XaZHa_star",
|
|
3537
|
-
"footLink": "_3XaZHa_footLink",
|
|
3538
|
-
"stateTitle": "_3XaZHa_stateTitle",
|
|
3539
|
-
"cardMain": "_3XaZHa_cardMain",
|
|
3540
3634
|
"topics": "_3XaZHa_topics",
|
|
3635
|
+
"installBtnUpdate": "_3XaZHa_installBtnUpdate",
|
|
3636
|
+
"stateDesc": "_3XaZHa_stateDesc",
|
|
3637
|
+
"desc": "_3XaZHa_desc",
|
|
3638
|
+
"cardHead": "_3XaZHa_cardHead",
|
|
3639
|
+
"list": "_3XaZHa_list",
|
|
3640
|
+
"updateBadge": "_3XaZHa_updateBadge",
|
|
3641
|
+
"actions": "_3XaZHa_actions",
|
|
3642
|
+
"footLink": "_3XaZHa_footLink",
|
|
3643
|
+
"uninstallBtn": "_3XaZHa_uninstallBtn",
|
|
3644
|
+
"state": "_3XaZHa_state",
|
|
3645
|
+
"topic": "_3XaZHa_topic",
|
|
3646
|
+
"footer": "_3XaZHa_footer",
|
|
3541
3647
|
"stats": "_3XaZHa_stats",
|
|
3648
|
+
"retryBtn": "_3XaZHa_retryBtn",
|
|
3649
|
+
"cardTitle": "_3XaZHa_cardTitle",
|
|
3650
|
+
"date": "_3XaZHa_date",
|
|
3542
3651
|
"installBtnInstalled": "_3XaZHa_installBtnInstalled",
|
|
3543
|
-
"
|
|
3544
|
-
"
|
|
3652
|
+
"verified": "_3XaZHa_verified",
|
|
3653
|
+
"stateTitle": "_3XaZHa_stateTitle"
|
|
3545
3654
|
};
|
|
3546
3655
|
//#endregion
|
|
3547
3656
|
//#region src/client/hooks/useIncrementalList.ts
|
|
3548
3657
|
/**
|
|
3549
|
-
* DSH
|
|
3658
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3550
3659
|
* Website: https://dsh-plugin.org
|
|
3551
3660
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3552
3661
|
*
|
|
@@ -3584,7 +3693,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3584
3693
|
//#endregion
|
|
3585
3694
|
//#region src/client/components/catalog/PluginCard.tsx
|
|
3586
3695
|
/**
|
|
3587
|
-
* DSH
|
|
3696
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3588
3697
|
* Website: https://dsh-plugin.org
|
|
3589
3698
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3590
3699
|
*
|
|
@@ -3635,7 +3744,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3635
3744
|
//#endregion
|
|
3636
3745
|
//#region src/client/components/catalog/CatalogList.tsx
|
|
3637
3746
|
/**
|
|
3638
|
-
* DSH
|
|
3747
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3639
3748
|
* Website: https://dsh-plugin.org
|
|
3640
3749
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3641
3750
|
*
|
|
@@ -3684,7 +3793,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3684
3793
|
//#endregion
|
|
3685
3794
|
//#region src/client/components/views/MarketView.tsx
|
|
3686
3795
|
/**
|
|
3687
|
-
* DSH
|
|
3796
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3688
3797
|
* Website: https://dsh-plugin.org
|
|
3689
3798
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3690
3799
|
*
|
|
@@ -3738,20 +3847,20 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3738
3847
|
document.head.appendChild(tag);
|
|
3739
3848
|
}
|
|
3740
3849
|
var SectionTabs_module_css_default = {
|
|
3741
|
-
"tabActive": "_7tvizq_tabActive",
|
|
3742
|
-
"tabCount": "_7tvizq_tabCount",
|
|
3743
3850
|
"noticeBtn": "_7tvizq_noticeBtn",
|
|
3744
|
-
"noticeCount": "_7tvizq_noticeCount",
|
|
3745
3851
|
"root": "_7tvizq_root",
|
|
3746
|
-
"tabCountActive": "_7tvizq_tabCountActive",
|
|
3747
3852
|
"tab": "_7tvizq_tab",
|
|
3853
|
+
"tabCount": "_7tvizq_tabCount",
|
|
3748
3854
|
"tabIcon": "_7tvizq_tabIcon",
|
|
3749
|
-
"noticeIcon": "_7tvizq_noticeIcon"
|
|
3855
|
+
"noticeIcon": "_7tvizq_noticeIcon",
|
|
3856
|
+
"tabActive": "_7tvizq_tabActive",
|
|
3857
|
+
"noticeCount": "_7tvizq_noticeCount",
|
|
3858
|
+
"tabCountActive": "_7tvizq_tabCountActive"
|
|
3750
3859
|
};
|
|
3751
3860
|
//#endregion
|
|
3752
3861
|
//#region src/client/components/layout/SectionTabs.tsx
|
|
3753
3862
|
/**
|
|
3754
|
-
* DSH
|
|
3863
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3755
3864
|
* Website: https://dsh-plugin.org
|
|
3756
3865
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3757
3866
|
*
|
|
@@ -3808,7 +3917,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3808
3917
|
}
|
|
3809
3918
|
//#endregion
|
|
3810
3919
|
//#region \0dsh-css:src/client/styles/InstalledView.module.css.mjs
|
|
3811
|
-
const css$7 = "._1nXeGW_root{flex-direction:column;gap:8px;min-width:0;display:flex}._1nXeGW_toolbar{border-bottom:1px solid var(--hub-border-1);flex-direction:column;flex-shrink:0;gap:8px;padding:0 2px 10px;display:flex}._1nXeGW_searchWrap{width:100%;min-width:0;height:28px}._1nXeGW_searchInput{width:100%;height:28px;color:var(--hub-text-primary);border:1px solid var(--hub-border-2);background:0 0;border-radius:6px;outline:none;padding:0 9px;font-size:12px;line-height:26px;transition:border-color .12s}._1nXeGW_searchInput::placeholder{color:var(--hub-text-tertiary)}._1nXeGW_searchInput:focus{border-color:var(--hub-brand)}._1nXeGW_segRow{align-items:center;gap:8px;min-width:0;display:flex}._1nXeGW_segLabel{color:var(--hub-text-tertiary);flex-shrink:0;font-size:11px;line-height:16px}._1nXeGW_segGroup{border:1px solid var(--hub-border-2);border-radius:6px;flex-shrink:0;align-items:center;display:inline-flex;overflow:hidden}._1nXeGW_segBtn{height:24px;color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;background:0 0;border:none;justify-content:center;align-items:center;gap:4px;padding:0 10px;font-family:inherit;font-size:12px;line-height:24px;transition:color .12s,background .12s;display:inline-flex}._1nXeGW_segBtn svg{flex-shrink:0;display:block}._1nXeGW_segBtn+._1nXeGW_segBtn{border-left:1px solid var(--hub-border-2)}._1nXeGW_segBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._1nXeGW_segBtnActive,._1nXeGW_segBtnActive:hover{color:#fff;background:var(--hub-brand)}._1nXeGW_empty{color:var(--hub-text-tertiary);text-align:center;border:1px dashed var(--hub-border-2);border-radius:8px;flex-direction:column;align-items:center;gap:4px;padding:36px 12px;font-size:12px;line-height:18px;display:flex}._1nXeGW_emptyTitle{color:var(--hub-text-secondary);font-size:13px;font-weight:600}._1nXeGW_emptyDesc{color:var(--hub-text-tertiary)}._1nXeGW_list{border:1px solid var(--hub-border-1);border-radius:8px;flex-direction:column;margin:0;padding:0;list-style:none;display:flex;overflow:hidden}._1nXeGW_row{background:var(--hub-bg-1);cursor:pointer;-webkit-user-select:none;user-select:none;flex-direction:column;gap:4px;padding:8px 10px;transition:background .12s;display:flex}._1nXeGW_row+._1nXeGW_row{border-top:1px solid var(--hub-border-1)}._1nXeGW_row:hover{background:var(--hub-bg-2)}._1nXeGW_rowTitleLine{align-items:center;gap:8px;min-width:0;display:flex}._1nXeGW_rowDesc{color:var(--hub-text-tertiary);white-space:nowrap;text-overflow:ellipsis;min-width:0;padding-left:16px;font-size:11px;line-height:16px;overflow:hidden}._1nXeGW_statusDot{background:var(--hub-success);border-radius:50%;flex-shrink:0;width:8px;height:8px}._1nXeGW_statusDot._1nXeGW_statusPending{background:var(--hub-warning)}._1nXeGW_statusDot._1nXeGW_statusInactive{background:var(--hub-text-tertiary)}._1nXeGW_rowMain{flex:auto;align-items:baseline;gap:6px;min-width:0;display:flex}._1nXeGW_rowTitle{color:var(--hub-text-primary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:12px;font-weight:600;line-height:18px;overflow:hidden}._1nXeGW_versionBadge{color:var(--hub-text-tertiary);background:var(--hub-bg-hover);border-radius:4px;flex-shrink:0;padding:0 5px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:16px}._1nXeGW_updateBadge{color:var(--hub-
|
|
3920
|
+
const css$7 = "._1nXeGW_root{flex-direction:column;gap:8px;min-width:0;display:flex}._1nXeGW_toolbar{border-bottom:1px solid var(--hub-border-1);flex-direction:column;flex-shrink:0;gap:8px;padding:0 2px 10px;display:flex}._1nXeGW_searchWrap{width:100%;min-width:0;height:28px}._1nXeGW_searchInput{width:100%;height:28px;color:var(--hub-text-primary);border:1px solid var(--hub-border-2);background:0 0;border-radius:6px;outline:none;padding:0 9px;font-size:12px;line-height:26px;transition:border-color .12s}._1nXeGW_searchInput::placeholder{color:var(--hub-text-tertiary)}._1nXeGW_searchInput:focus{border-color:var(--hub-brand)}._1nXeGW_segRow{align-items:center;gap:8px;min-width:0;display:flex}._1nXeGW_segLabel{color:var(--hub-text-tertiary);flex-shrink:0;font-size:11px;line-height:16px}._1nXeGW_segGroup{border:1px solid var(--hub-border-2);border-radius:6px;flex-shrink:0;align-items:center;display:inline-flex;overflow:hidden}._1nXeGW_segBtn{height:24px;color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;background:0 0;border:none;justify-content:center;align-items:center;gap:4px;padding:0 10px;font-family:inherit;font-size:12px;line-height:24px;transition:color .12s,background .12s;display:inline-flex}._1nXeGW_segBtn svg{flex-shrink:0;display:block}._1nXeGW_segBtn+._1nXeGW_segBtn{border-left:1px solid var(--hub-border-2)}._1nXeGW_segBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._1nXeGW_segBtnActive,._1nXeGW_segBtnActive:hover{color:#fff;background:var(--hub-brand)}._1nXeGW_empty{color:var(--hub-text-tertiary);text-align:center;border:1px dashed var(--hub-border-2);border-radius:8px;flex-direction:column;align-items:center;gap:4px;padding:36px 12px;font-size:12px;line-height:18px;display:flex}._1nXeGW_emptyTitle{color:var(--hub-text-secondary);font-size:13px;font-weight:600}._1nXeGW_emptyDesc{color:var(--hub-text-tertiary)}._1nXeGW_list{border:1px solid var(--hub-border-1);border-radius:8px;flex-direction:column;margin:0;padding:0;list-style:none;display:flex;overflow:hidden}._1nXeGW_row{background:var(--hub-bg-1);cursor:pointer;-webkit-user-select:none;user-select:none;flex-direction:column;gap:4px;padding:8px 10px;transition:background .12s;display:flex}._1nXeGW_row+._1nXeGW_row{border-top:1px solid var(--hub-border-1)}._1nXeGW_row:hover{background:var(--hub-bg-2)}._1nXeGW_rowTitleLine{align-items:center;gap:8px;min-width:0;display:flex}._1nXeGW_rowDesc{color:var(--hub-text-tertiary);white-space:nowrap;text-overflow:ellipsis;min-width:0;padding-left:16px;font-size:11px;line-height:16px;overflow:hidden}._1nXeGW_statusDot{background:var(--hub-success);border-radius:50%;flex-shrink:0;width:8px;height:8px}._1nXeGW_statusDot._1nXeGW_statusPending{background:var(--hub-warning)}._1nXeGW_statusDot._1nXeGW_statusInactive{background:var(--hub-text-tertiary)}._1nXeGW_rowMain{flex:auto;align-items:baseline;gap:6px;min-width:0;display:flex}._1nXeGW_rowTitle{color:var(--hub-text-primary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:12px;font-weight:600;line-height:18px;overflow:hidden}._1nXeGW_versionBadge{color:var(--hub-text-tertiary);background:var(--hub-bg-hover);border-radius:4px;flex-shrink:0;padding:0 5px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:16px}._1nXeGW_updateBadge{color:var(--hub-warn);background:var(--hub-warn-tint);border:1px solid var(--hub-warn-border);border-radius:4px;flex-shrink:0;padding:0 5px;font-size:11px;font-weight:500;line-height:16px}._1nXeGW_rowSourceTag{box-sizing:border-box;text-align:center;white-space:nowrap;text-overflow:ellipsis;border-radius:4px;flex-shrink:0;width:60px;padding:0 4px;font-size:11px;font-weight:500;line-height:16px;overflow:hidden}._1nXeGW_rowSourceTagHub{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft)}._1nXeGW_rowSourceTagManual{color:var(--hub-warning);background:var(--hub-warning-tint);border:1px solid var(--hub-warning-border)}._1nXeGW_exampleBadge{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft);border-radius:4px;flex-shrink:0;padding:0 5px;font-size:11px;font-weight:500;line-height:16px}._1nXeGW_exampleRow{align-items:center;min-width:0;padding-left:16px;display:flex}._1nXeGW_rowMeta{align-items:center;gap:8px;min-width:0;padding-left:16px;display:flex;overflow:hidden}._1nXeGW_rowRepo{color:var(--hub-text-tertiary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:16px;overflow:hidden}._1nXeGW_rowCategory{color:var(--hub-text-tertiary);background:var(--hub-bg-hover);border-radius:4px;flex-shrink:0;padding:0 6px;font-size:11px;line-height:16px}._1nXeGW_rowActions{flex-shrink:0;align-items:center;gap:4px;display:flex}._1nXeGW_rowDetail{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:6px;padding:2px 10px;font-family:inherit;font-size:12px;line-height:18px;transition:color .12s,background .12s,border-color .12s}._1nXeGW_rowDetail:hover{color:var(--hub-text-primary);border-color:var(--hub-border-ghost);background:var(--hub-bg-hover)}._1nXeGW_rowRestart{color:var(--hub-warning);background:var(--hub-warning-tint);border:1px solid var(--hub-warning-border);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;padding:2px 10px;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;transition:color .12s,background .12s,border-color .12s}._1nXeGW_rowRestart:hover{color:#fff;background:var(--hub-warning);border-color:var(--hub-warning)}._1nXeGW_rowUpdate{color:#fff;background:var(--hub-warn);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:3px 10px;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;transition:background .12s}._1nXeGW_rowUpdate:hover{background:var(--hub-warn-strong)}._1nXeGW_rowUninstall{color:var(--hub-danger);border:1px solid var(--hub-danger-border-soft);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border-radius:6px;padding:2px 10px;font-family:inherit;font-size:12px;line-height:18px;transition:color .12s,background .12s,border-color .12s}._1nXeGW_rowUninstall:hover,body[data-ds-dark-theme] ._1nXeGW_rowUninstall{color:#fff;background:var(--hub-danger);border-color:var(--hub-danger)}body[data-ds-dark-theme] ._1nXeGW_rowUninstall:hover{background:var(--hub-danger-hover);border-color:var(--hub-danger-hover)}";
|
|
3812
3921
|
const tagId$7 = "dsh-plugin/InstalledView.module.css";
|
|
3813
3922
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$7) + "]") === null) {
|
|
3814
3923
|
const tag = document.createElement("style");
|
|
@@ -3818,47 +3927,47 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3818
3927
|
document.head.appendChild(tag);
|
|
3819
3928
|
}
|
|
3820
3929
|
var InstalledView_module_css_default = {
|
|
3821
|
-
"
|
|
3822
|
-
"
|
|
3823
|
-
"
|
|
3824
|
-
"
|
|
3825
|
-
"statusPending": "_1nXeGW_statusPending",
|
|
3826
|
-
"versionBadge": "_1nXeGW_versionBadge",
|
|
3827
|
-
"searchInput": "_1nXeGW_searchInput",
|
|
3828
|
-
"rowRepo": "_1nXeGW_rowRepo",
|
|
3829
|
-
"rowActions": "_1nXeGW_rowActions",
|
|
3830
|
-
"segRow": "_1nXeGW_segRow",
|
|
3930
|
+
"exampleRow": "_1nXeGW_exampleRow",
|
|
3931
|
+
"segBtn": "_1nXeGW_segBtn",
|
|
3932
|
+
"rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
|
|
3933
|
+
"searchWrap": "_1nXeGW_searchWrap",
|
|
3831
3934
|
"updateBadge": "_1nXeGW_updateBadge",
|
|
3935
|
+
"rowSourceTag": "_1nXeGW_rowSourceTag",
|
|
3832
3936
|
"segLabel": "_1nXeGW_segLabel",
|
|
3833
|
-
"
|
|
3834
|
-
"rowDesc": "_1nXeGW_rowDesc",
|
|
3835
|
-
"rowRestart": "_1nXeGW_rowRestart",
|
|
3836
|
-
"rowDetail": "_1nXeGW_rowDetail",
|
|
3837
|
-
"emptyTitle": "_1nXeGW_emptyTitle",
|
|
3838
|
-
"empty": "_1nXeGW_empty",
|
|
3839
|
-
"rowMeta": "_1nXeGW_rowMeta",
|
|
3937
|
+
"rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
|
|
3840
3938
|
"segGroup": "_1nXeGW_segGroup",
|
|
3841
|
-
"
|
|
3939
|
+
"toolbar": "_1nXeGW_toolbar",
|
|
3940
|
+
"segRow": "_1nXeGW_segRow",
|
|
3941
|
+
"rowMeta": "_1nXeGW_rowMeta",
|
|
3942
|
+
"rowCategory": "_1nXeGW_rowCategory",
|
|
3842
3943
|
"exampleBadge": "_1nXeGW_exampleBadge",
|
|
3843
|
-
"
|
|
3844
|
-
"
|
|
3845
|
-
"
|
|
3846
|
-
"
|
|
3847
|
-
"
|
|
3944
|
+
"versionBadge": "_1nXeGW_versionBadge",
|
|
3945
|
+
"rowRepo": "_1nXeGW_rowRepo",
|
|
3946
|
+
"rowUpdate": "_1nXeGW_rowUpdate",
|
|
3947
|
+
"rowUninstall": "_1nXeGW_rowUninstall",
|
|
3948
|
+
"rowRestart": "_1nXeGW_rowRestart",
|
|
3949
|
+
"searchInput": "_1nXeGW_searchInput",
|
|
3950
|
+
"list": "_1nXeGW_list",
|
|
3848
3951
|
"statusInactive": "_1nXeGW_statusInactive",
|
|
3849
3952
|
"rowMain": "_1nXeGW_rowMain",
|
|
3850
|
-
"
|
|
3851
|
-
"exampleRow": "_1nXeGW_exampleRow",
|
|
3852
|
-
"toolbar": "_1nXeGW_toolbar",
|
|
3953
|
+
"rowActions": "_1nXeGW_rowActions",
|
|
3853
3954
|
"segBtnActive": "_1nXeGW_segBtnActive",
|
|
3854
|
-
"
|
|
3955
|
+
"rowTitleLine": "_1nXeGW_rowTitleLine",
|
|
3855
3956
|
"emptyDesc": "_1nXeGW_emptyDesc",
|
|
3856
|
-
"
|
|
3957
|
+
"row": "_1nXeGW_row",
|
|
3958
|
+
"rowDesc": "_1nXeGW_rowDesc",
|
|
3959
|
+
"statusPending": "_1nXeGW_statusPending",
|
|
3960
|
+
"rowTitle": "_1nXeGW_rowTitle",
|
|
3961
|
+
"emptyTitle": "_1nXeGW_emptyTitle",
|
|
3962
|
+
"rowDetail": "_1nXeGW_rowDetail",
|
|
3963
|
+
"root": "_1nXeGW_root",
|
|
3964
|
+
"statusDot": "_1nXeGW_statusDot",
|
|
3965
|
+
"empty": "_1nXeGW_empty"
|
|
3857
3966
|
};
|
|
3858
3967
|
//#endregion
|
|
3859
3968
|
//#region src/client/components/views/InstalledView.tsx
|
|
3860
3969
|
/**
|
|
3861
|
-
* DSH
|
|
3970
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3862
3971
|
* Website: https://dsh-plugin.org
|
|
3863
3972
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3864
3973
|
*
|
|
@@ -4084,7 +4193,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4084
4193
|
}
|
|
4085
4194
|
//#endregion
|
|
4086
4195
|
//#region \0dsh-css:src/client/styles/CustomInstallView.module.css.mjs
|
|
4087
|
-
const css$6 = ".zISxCG_root{flex-direction:column;gap:10px;min-width:0;max-width:560px;display:flex}.zISxCG_desc{color:var(--hub-text-tertiary);margin:0;font-size:12px;line-height:18px}.zISxCG_installCards{flex-direction:column;flex-shrink:0;gap:10px;min-width:0;display:flex}.zISxCG_installCard{background:var(--hub-bg-1);border:1px solid var(--hub-border-1);border-radius:8px;flex-direction:column;gap:8px;min-width:0;padding:10px 12px;display:flex}.zISxCG_installCardHead{align-items:center;min-width:0;display:flex}.zISxCG_installLabel{color:var(--hub-text-primary);font-size:12px;font-weight:600;line-height:18px}.zISxCG_installExample{color:var(--hub-text-tertiary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:11px;line-height:16px;overflow:hidden}.zISxCG_installRow{align-items:center;gap:8px;min-width:0;display:flex}.zISxCG_installInput{min-width:0;height:28px;color:var(--hub-text-primary);border:1px solid var(--hub-border-2);background:0 0;border-radius:6px;outline:none;flex:auto;padding:0 9px;font-size:12px;line-height:26px;transition:border-color .12s}.zISxCG_installInput::placeholder{color:var(--hub-text-tertiary)}.zISxCG_installInput:focus{border-color:var(--hub-brand)}.zISxCG_installInputError,.zISxCG_installInputError:focus{border-color:var(--hub-danger-text)}.zISxCG_installBtn{color:#fff;background:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;flex-shrink:0;padding:5px 14px;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;transition:background .12s,opacity .12s}.zISxCG_installBtn:hover{background:var(--hub-brand-hover)}.zISxCG_installBtn:disabled{opacity:.45;cursor:default}.zISxCG_installCardDisabled{opacity:.8}.zISxCG_channelOff{min-width:0;color:var(--hub-warn);background:var(--hub-warn-tint);border:1px solid var(--hub-warn-border);border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:6px 9px;font-size:12px;line-height:16px;display:flex}.zISxCG_channelOffText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.zISxCG_channelOffBtn{color:var(--hub-warn-strong);border:1px solid var(--hub-warn-border);cursor:pointer;white-space:nowrap;background:0 0;border-radius:6px;flex-shrink:0;padding:3px 10px;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;transition:background .12s,color .12s}.zISxCG_channelOffBtn:hover{background:var(--hub-warn-tint);color:var(--hub-warn)}.zISxCG_installError{color:var(--hub-danger-text);background:var(--hub-danger-tint);border:1px solid var(--hub-danger-border);border-radius:6px;padding:5px 8px;font-size:12px;line-height:16px}";
|
|
4196
|
+
const css$6 = ".zISxCG_root{flex-direction:column;gap:10px;min-width:0;max-width:560px;display:flex}.zISxCG_desc{color:var(--hub-text-tertiary);margin:0;font-size:12px;line-height:18px}.zISxCG_installCards{flex-direction:column;flex-shrink:0;gap:10px;min-width:0;display:flex}.zISxCG_installCard{background:var(--hub-bg-1);border:1px solid var(--hub-border-1);border-radius:8px;flex-direction:column;gap:8px;min-width:0;padding:10px 12px;display:flex}.zISxCG_installCardHead{align-items:center;min-width:0;display:flex}.zISxCG_installLabel{color:var(--hub-text-primary);font-size:12px;font-weight:600;line-height:18px}.zISxCG_installHelpBtn{width:18px;height:18px;color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:1px solid #0000;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-left:6px;padding:0;transition:color .12s,background .12s,border-color .12s;display:inline-flex}.zISxCG_installHelpBtn:hover{color:var(--hub-brand);background:var(--hub-brand-tint);border-color:var(--hub-brand-border-soft)}.zISxCG_installExample{color:var(--hub-text-tertiary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:11px;line-height:16px;overflow:hidden}.zISxCG_installRow{align-items:center;gap:8px;min-width:0;display:flex}.zISxCG_installInput{min-width:0;height:28px;color:var(--hub-text-primary);border:1px solid var(--hub-border-2);background:0 0;border-radius:6px;outline:none;flex:auto;padding:0 9px;font-size:12px;line-height:26px;transition:border-color .12s}.zISxCG_installInput::placeholder{color:var(--hub-text-tertiary)}.zISxCG_installInput:focus{border-color:var(--hub-brand)}.zISxCG_installInputError,.zISxCG_installInputError:focus{border-color:var(--hub-danger-text)}.zISxCG_installBtn{color:#fff;background:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;flex-shrink:0;padding:5px 14px;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;transition:background .12s,opacity .12s}.zISxCG_installBtn:hover{background:var(--hub-brand-hover)}.zISxCG_installBtn:disabled{opacity:.45;cursor:default}.zISxCG_installCardDisabled{opacity:.8}.zISxCG_channelOff{min-width:0;color:var(--hub-warn);background:var(--hub-warn-tint);border:1px solid var(--hub-warn-border);border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:6px 9px;font-size:12px;line-height:16px;display:flex}.zISxCG_channelOffText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.zISxCG_channelOffBtn{color:var(--hub-warn-strong);border:1px solid var(--hub-warn-border);cursor:pointer;white-space:nowrap;background:0 0;border-radius:6px;flex-shrink:0;padding:3px 10px;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;transition:background .12s,color .12s}.zISxCG_channelOffBtn:hover{background:var(--hub-warn-tint);color:var(--hub-warn)}.zISxCG_installError{color:var(--hub-danger-text);background:var(--hub-danger-tint);border:1px solid var(--hub-danger-border);border-radius:6px;padding:5px 8px;font-size:12px;line-height:16px}.zISxCG_helpBody{flex-direction:column;gap:7px;padding:4px 2px;display:flex}.zISxCG_helpLine{align-items:baseline;gap:12px;min-width:0;font-size:12px;line-height:20px;display:flex}.zISxCG_helpCmd{color:var(--hub-text-primary);white-space:nowrap;flex-shrink:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.zISxCG_helpNote{min-width:0;color:var(--hub-text-tertiary);font-size:11px}";
|
|
4088
4197
|
const tagId$6 = "dsh-plugin/CustomInstallView.module.css";
|
|
4089
4198
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$6) + "]") === null) {
|
|
4090
4199
|
const tag = document.createElement("style");
|
|
@@ -4094,38 +4203,43 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4094
4203
|
document.head.appendChild(tag);
|
|
4095
4204
|
}
|
|
4096
4205
|
var CustomInstallView_module_css_default = {
|
|
4206
|
+
"root": "zISxCG_root",
|
|
4207
|
+
"helpBody": "zISxCG_helpBody",
|
|
4208
|
+
"installHelpBtn": "zISxCG_installHelpBtn",
|
|
4209
|
+
"installRow": "zISxCG_installRow",
|
|
4210
|
+
"installCardHead": "zISxCG_installCardHead",
|
|
4211
|
+
"helpCmd": "zISxCG_helpCmd",
|
|
4212
|
+
"helpNote": "zISxCG_helpNote",
|
|
4213
|
+
"helpLine": "zISxCG_helpLine",
|
|
4214
|
+
"installExample": "zISxCG_installExample",
|
|
4097
4215
|
"installCardDisabled": "zISxCG_installCardDisabled",
|
|
4216
|
+
"desc": "zISxCG_desc",
|
|
4098
4217
|
"installCard": "zISxCG_installCard",
|
|
4099
|
-
"installLabel": "zISxCG_installLabel",
|
|
4100
|
-
"installExample": "zISxCG_installExample",
|
|
4101
4218
|
"channelOff": "zISxCG_channelOff",
|
|
4102
|
-
"
|
|
4103
|
-
"channelOffText": "zISxCG_channelOffText",
|
|
4104
|
-
"installInput": "zISxCG_installInput",
|
|
4105
|
-
"installRow": "zISxCG_installRow",
|
|
4106
|
-
"installCards": "zISxCG_installCards",
|
|
4107
|
-
"root": "zISxCG_root",
|
|
4108
|
-
"installBtn": "zISxCG_installBtn",
|
|
4109
|
-
"installCardHead": "zISxCG_installCardHead",
|
|
4219
|
+
"installError": "zISxCG_installError",
|
|
4110
4220
|
"installInputError": "zISxCG_installInputError",
|
|
4111
4221
|
"channelOffBtn": "zISxCG_channelOffBtn",
|
|
4112
|
-
"
|
|
4222
|
+
"installInput": "zISxCG_installInput",
|
|
4223
|
+
"installBtn": "zISxCG_installBtn",
|
|
4224
|
+
"channelOffText": "zISxCG_channelOffText",
|
|
4225
|
+
"installCards": "zISxCG_installCards",
|
|
4226
|
+
"installLabel": "zISxCG_installLabel"
|
|
4113
4227
|
};
|
|
4114
4228
|
//#endregion
|
|
4115
4229
|
//#region src/client/components/views/CustomInstallView.tsx
|
|
4116
4230
|
/**
|
|
4117
|
-
* DSH
|
|
4231
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
4118
4232
|
* Website: https://dsh-plugin.org
|
|
4119
4233
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
4120
4234
|
*
|
|
4121
4235
|
* Custom install view: a standalone top-level section for manually
|
|
4122
4236
|
* installing npm packages or GitHub sources outside the catalog. Three
|
|
4123
|
-
* installer cards, one per channel — npm package
|
|
4124
|
-
* install command
|
|
4125
|
-
*
|
|
4126
|
-
* input and its own format check.
|
|
4127
|
-
* has to guess which format goes
|
|
4128
|
-
* Installed view, marked as custom.
|
|
4237
|
+
* installer cards, one per channel — npm package (bare name or a full
|
|
4238
|
+
* npm/pnpm install command, including the official global `npm install -g`),
|
|
4239
|
+
* GitHub source and the official `dsh plugin ... add <target>` command —
|
|
4240
|
+
* each with a placeholder example above the input and its own format check.
|
|
4241
|
+
* The cards stay separate so a user never has to guess which format goes
|
|
4242
|
+
* where. Finished installs surface in the Installed view, marked as custom.
|
|
4129
4243
|
*
|
|
4130
4244
|
* Pure presentational: owns only the three local input/error states; the
|
|
4131
4245
|
* actual install (custom source, gated by the security toggles) bubbles up
|
|
@@ -4137,35 +4251,76 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4137
4251
|
const GITHUB_BARE_RE = /^[A-Za-z0-9._-]+\/[A-Za-z0-9._-]+$/;
|
|
4138
4252
|
/** npm 包名(含 @scope/pkg) */
|
|
4139
4253
|
const NPM_PACKAGE_RE = /^(?:@[a-z0-9._-]+\/)?[a-z0-9._-]+$/;
|
|
4140
|
-
/** DSH
|
|
4141
|
-
*
|
|
4142
|
-
|
|
4254
|
+
/** DSH 命令行前缀(官方唯一形式 `dsh plugin --profile <name> add <target>`)—— 提取其中的安装目标。
|
|
4255
|
+
* 官方 CLI(apps/cli/src/args.ts,commander):--profile 为必填长选项(无 -p 简写,省略即报错),
|
|
4256
|
+
* 支持 `--profile=<name>` 等号形式;命令大小写不敏感。与 server 端 installTargetOf 口径一致。 */
|
|
4257
|
+
const DSH_PLUGIN_CMD_RE = /^dsh\s+plugin\s+--profile(?:\s+|=)\S+\s+add\s+(.+)$/i;
|
|
4143
4258
|
/** npm 全局安装命令(官方 README 格式,如 `npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tui`)——
|
|
4144
4259
|
* 提取 -g 之后的包列表;任一包名非法返回 null(交给格式错误提示)。与 server 端 globalNpmPackagesOf 口径一致。 */
|
|
4145
4260
|
const NPM_GLOBAL_CMD_RE = /^npm\s+(?:install|i)\s+(?:-g|--global)\s+(.+)$/i;
|
|
4261
|
+
/** 常规 npm/pnpm 安装命令(装进当前 profile,如 `npm install lodash`、`pnpm add @scope/pkg`)——
|
|
4262
|
+
* 提取命令后的包列表;包列表在 splitPackages 里逐个校验。 */
|
|
4263
|
+
const NPM_INSTALL_CMD_RE = /^(?:npm\s+(?:install|i)|pnpm\s+(?:add|i|install))\s+(.+)$/i;
|
|
4146
4264
|
function installTargetOf(raw) {
|
|
4147
4265
|
const input = raw.trim();
|
|
4148
4266
|
const match = DSH_PLUGIN_CMD_RE.exec(input);
|
|
4149
4267
|
return match !== null ? match[1].trim() : input;
|
|
4150
4268
|
}
|
|
4151
|
-
|
|
4152
|
-
|
|
4153
|
-
|
|
4154
|
-
|
|
4155
|
-
const packages = match[1].trim().split(/\s+/).filter((p) => p !== "");
|
|
4269
|
+
/** 空格分隔的包列表:逐个按 npm 包名语法校验 + 拒绝以 - 开头的 token(npm 会把 --xxx 当参数而非包名),
|
|
4270
|
+
* 任一非法返回 null(交给格式错误提示)。与 server 端 globalNpmPackagesOf 同口径。 */
|
|
4271
|
+
function splitPackages(raw) {
|
|
4272
|
+
const packages = raw.trim().split(/\s+/).filter((p) => p !== "");
|
|
4156
4273
|
if (packages.length === 0 || packages.some((p) => !NPM_PACKAGE_RE.test(p) || p.startsWith("-"))) return null;
|
|
4157
4274
|
return packages;
|
|
4158
4275
|
}
|
|
4276
|
+
function parseNpmInput(raw) {
|
|
4277
|
+
const input = raw.trim();
|
|
4278
|
+
if (NPM_PACKAGE_RE.test(input)) return {
|
|
4279
|
+
kind: "pkg",
|
|
4280
|
+
target: input
|
|
4281
|
+
};
|
|
4282
|
+
const global = NPM_GLOBAL_CMD_RE.exec(input);
|
|
4283
|
+
if (global !== null) {
|
|
4284
|
+
const pkgs = splitPackages(global[1]);
|
|
4285
|
+
if (pkgs !== null) return {
|
|
4286
|
+
kind: "global",
|
|
4287
|
+
pkgs
|
|
4288
|
+
};
|
|
4289
|
+
return null;
|
|
4290
|
+
}
|
|
4291
|
+
const install = NPM_INSTALL_CMD_RE.exec(input);
|
|
4292
|
+
if (install !== null) {
|
|
4293
|
+
const pkgs = splitPackages(install[1]);
|
|
4294
|
+
if (pkgs !== null && pkgs.length === 1) return {
|
|
4295
|
+
kind: "pkg",
|
|
4296
|
+
target: pkgs[0]
|
|
4297
|
+
};
|
|
4298
|
+
return null;
|
|
4299
|
+
}
|
|
4300
|
+
return null;
|
|
4301
|
+
}
|
|
4159
4302
|
function isGitHubInput(raw) {
|
|
4160
4303
|
const input = raw.trim();
|
|
4161
4304
|
return GITHUB_URL_RE.test(input) || GITHUB_BARE_RE.test(input);
|
|
4162
4305
|
}
|
|
4163
|
-
function isNpmInput(raw) {
|
|
4164
|
-
return NPM_PACKAGE_RE.test(raw.trim());
|
|
4165
|
-
}
|
|
4166
4306
|
function isDshCommand(raw) {
|
|
4167
4307
|
return DSH_PLUGIN_CMD_RE.test(raw.trim());
|
|
4168
4308
|
}
|
|
4309
|
+
/** 卡片标题旁的「帮助」弹窗:三块卡片各自的标题与格式清单语言包 key。 */
|
|
4310
|
+
const HELP_CARDS = {
|
|
4311
|
+
npm: {
|
|
4312
|
+
titleKey: "npmInstallLabel",
|
|
4313
|
+
contentKey: "npmInstallHelp"
|
|
4314
|
+
},
|
|
4315
|
+
git: {
|
|
4316
|
+
titleKey: "gitInstallLabel",
|
|
4317
|
+
contentKey: "gitInstallHelp"
|
|
4318
|
+
},
|
|
4319
|
+
cmd: {
|
|
4320
|
+
titleKey: "dshCmdLabel",
|
|
4321
|
+
contentKey: "dshCmdHelp"
|
|
4322
|
+
}
|
|
4323
|
+
};
|
|
4169
4324
|
function CustomInstallView({ t, onInstallCustom, enableNpm, enableGit, enableDsh, onOpenSettings }) {
|
|
4170
4325
|
/** 自定义安装:NPM 包输入与格式错误('' = 无错误) */
|
|
4171
4326
|
const [npmQuery, setNpmQuery] = (0, react.useState)("");
|
|
@@ -4176,6 +4331,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4176
4331
|
/** 自定义安装:DSH 命令输入与格式错误('' = 无错误) */
|
|
4177
4332
|
const [cmdQuery, setCmdQuery] = (0, react.useState)("");
|
|
4178
4333
|
const [cmdError, setCmdError] = (0, react.useState)("");
|
|
4334
|
+
/** 卡片标题旁「帮助」弹窗:null = 未打开;'npm' | 'git' | 'cmd' = 打开对应卡片的格式清单 */
|
|
4335
|
+
const [helpFor, setHelpFor] = (0, react.useState)(null);
|
|
4179
4336
|
/** 通道关闭提示行:开关关掉后替代示例与输入行,引导去设置打开 */
|
|
4180
4337
|
const channelOffRow = (0, react.createElement)("div", { className: CustomInstallView_module_css_default.channelOff }, (0, react.createElement)("span", { className: CustomInstallView_module_css_default.channelOffText }, t("channelDisabledHint")), (0, react.createElement)("button", {
|
|
4181
4338
|
type: "button",
|
|
@@ -4183,13 +4340,15 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4183
4340
|
onClick: onOpenSettings
|
|
4184
4341
|
}, t("goToSettings")));
|
|
4185
4342
|
const submitNpm = () => {
|
|
4186
|
-
const
|
|
4187
|
-
if (!
|
|
4188
|
-
|
|
4343
|
+
const raw = npmQuery.trim();
|
|
4344
|
+
if (!raw) return;
|
|
4345
|
+
const parsed = parseNpmInput(raw);
|
|
4346
|
+
if (parsed === null) {
|
|
4189
4347
|
setNpmError(t("npmInstallInvalid"));
|
|
4190
4348
|
return;
|
|
4191
4349
|
}
|
|
4192
|
-
onInstallCustom(
|
|
4350
|
+
if (parsed.kind === "global") onInstallCustom(raw, { globalNpm: parsed.pkgs });
|
|
4351
|
+
else onInstallCustom(parsed.target);
|
|
4193
4352
|
setNpmQuery("");
|
|
4194
4353
|
setNpmError("");
|
|
4195
4354
|
};
|
|
@@ -4207,13 +4366,6 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4207
4366
|
const submitCmd = () => {
|
|
4208
4367
|
const raw = cmdQuery.trim();
|
|
4209
4368
|
if (!raw) return;
|
|
4210
|
-
const globalPkgs = parseNpmGlobalPackages(raw);
|
|
4211
|
-
if (globalPkgs !== null) {
|
|
4212
|
-
onInstallCustom(raw, { globalNpm: globalPkgs });
|
|
4213
|
-
setCmdQuery("");
|
|
4214
|
-
setCmdError("");
|
|
4215
|
-
return;
|
|
4216
|
-
}
|
|
4217
4369
|
if (!isDshCommand(raw)) {
|
|
4218
4370
|
setCmdError(t("dshCmdInvalid"));
|
|
4219
4371
|
return;
|
|
@@ -4222,8 +4374,14 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4222
4374
|
setCmdQuery("");
|
|
4223
4375
|
setCmdError("");
|
|
4224
4376
|
};
|
|
4225
|
-
return (0, react.createElement)("div", { className: CustomInstallView_module_css_default.root }, (0, react.createElement)("p", { className: CustomInstallView_module_css_default.desc }, t("customViewDesc")), (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installCards }, (0, react.createElement)("div", { className: enableNpm ? CustomInstallView_module_css_default.installCard : `${CustomInstallView_module_css_default.installCard} ${CustomInstallView_module_css_default.installCardDisabled}` }, (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installCardHead }, (0, react.createElement)("span", { className: CustomInstallView_module_css_default.installLabel }, t("npmInstallLabel"))
|
|
4226
|
-
|
|
4377
|
+
return (0, react.createElement)("div", { className: CustomInstallView_module_css_default.root }, (0, react.createElement)("p", { className: CustomInstallView_module_css_default.desc }, t("customViewDesc")), (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installCards }, (0, react.createElement)("div", { className: enableNpm ? CustomInstallView_module_css_default.installCard : `${CustomInstallView_module_css_default.installCard} ${CustomInstallView_module_css_default.installCardDisabled}` }, (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installCardHead }, (0, react.createElement)("span", { className: CustomInstallView_module_css_default.installLabel }, t("npmInstallLabel")), (0, react.createElement)("button", {
|
|
4378
|
+
type: "button",
|
|
4379
|
+
className: CustomInstallView_module_css_default.installHelpBtn,
|
|
4380
|
+
title: t("installHelp"),
|
|
4381
|
+
"aria-label": t("installHelp"),
|
|
4382
|
+
onClick: () => setHelpFor("npm")
|
|
4383
|
+
}, (0, react.createElement)(HelpIcon))), !enableNpm ? channelOffRow : [
|
|
4384
|
+
(0, react.createElement)("div", { className: CustomInstallView_module_css_default.installExample }, t("npmInstallExample"), (0, react.createElement)("br"), t("npmInstallExample2")),
|
|
4227
4385
|
(0, react.createElement)("div", { className: CustomInstallView_module_css_default.installRow }, (0, react.createElement)("input", {
|
|
4228
4386
|
className: npmError ? `${CustomInstallView_module_css_default.installInput} ${CustomInstallView_module_css_default.installInputError}` : CustomInstallView_module_css_default.installInput,
|
|
4229
4387
|
type: "text",
|
|
@@ -4244,7 +4402,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4244
4402
|
onClick: submitNpm
|
|
4245
4403
|
}, t("installCliBtn"))),
|
|
4246
4404
|
npmError ? (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installError }, npmError) : null
|
|
4247
|
-
]), (0, react.createElement)("div", { className: enableGit ? CustomInstallView_module_css_default.installCard : `${CustomInstallView_module_css_default.installCard} ${CustomInstallView_module_css_default.installCardDisabled}` }, (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installCardHead }, (0, react.createElement)("span", { className: CustomInstallView_module_css_default.installLabel }, t("gitInstallLabel"))
|
|
4405
|
+
]), (0, react.createElement)("div", { className: enableGit ? CustomInstallView_module_css_default.installCard : `${CustomInstallView_module_css_default.installCard} ${CustomInstallView_module_css_default.installCardDisabled}` }, (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installCardHead }, (0, react.createElement)("span", { className: CustomInstallView_module_css_default.installLabel }, t("gitInstallLabel")), (0, react.createElement)("button", {
|
|
4406
|
+
type: "button",
|
|
4407
|
+
className: CustomInstallView_module_css_default.installHelpBtn,
|
|
4408
|
+
title: t("installHelp"),
|
|
4409
|
+
"aria-label": t("installHelp"),
|
|
4410
|
+
onClick: () => setHelpFor("git")
|
|
4411
|
+
}, (0, react.createElement)(HelpIcon))), !enableGit ? channelOffRow : [
|
|
4248
4412
|
(0, react.createElement)("div", { className: CustomInstallView_module_css_default.installExample }, t("gitInstallExample")),
|
|
4249
4413
|
(0, react.createElement)("div", { className: CustomInstallView_module_css_default.installRow }, (0, react.createElement)("input", {
|
|
4250
4414
|
className: gitError ? `${CustomInstallView_module_css_default.installInput} ${CustomInstallView_module_css_default.installInputError}` : CustomInstallView_module_css_default.installInput,
|
|
@@ -4266,7 +4430,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4266
4430
|
onClick: submitGit
|
|
4267
4431
|
}, t("installCliBtn"))),
|
|
4268
4432
|
gitError ? (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installError }, gitError) : null
|
|
4269
|
-
]), (0, react.createElement)("div", { className: enableDsh ? CustomInstallView_module_css_default.installCard : `${CustomInstallView_module_css_default.installCard} ${CustomInstallView_module_css_default.installCardDisabled}` }, (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installCardHead }, (0, react.createElement)("span", { className: CustomInstallView_module_css_default.installLabel }, t("dshCmdLabel"))
|
|
4433
|
+
]), (0, react.createElement)("div", { className: enableDsh ? CustomInstallView_module_css_default.installCard : `${CustomInstallView_module_css_default.installCard} ${CustomInstallView_module_css_default.installCardDisabled}` }, (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installCardHead }, (0, react.createElement)("span", { className: CustomInstallView_module_css_default.installLabel }, t("dshCmdLabel")), (0, react.createElement)("button", {
|
|
4434
|
+
type: "button",
|
|
4435
|
+
className: CustomInstallView_module_css_default.installHelpBtn,
|
|
4436
|
+
title: t("installHelp"),
|
|
4437
|
+
"aria-label": t("installHelp"),
|
|
4438
|
+
onClick: () => setHelpFor("cmd")
|
|
4439
|
+
}, (0, react.createElement)(HelpIcon))), !enableDsh ? channelOffRow : [
|
|
4270
4440
|
(0, react.createElement)("div", { className: CustomInstallView_module_css_default.installExample }, t("dshCmdExample")),
|
|
4271
4441
|
(0, react.createElement)("div", { className: CustomInstallView_module_css_default.installRow }, (0, react.createElement)("input", {
|
|
4272
4442
|
className: cmdError ? `${CustomInstallView_module_css_default.installInput} ${CustomInstallView_module_css_default.installInputError}` : CustomInstallView_module_css_default.installInput,
|
|
@@ -4288,7 +4458,26 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4288
4458
|
onClick: submitCmd
|
|
4289
4459
|
}, t("installCliBtn"))),
|
|
4290
4460
|
cmdError ? (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installError }, cmdError) : null
|
|
4291
|
-
])))
|
|
4461
|
+
])), helpFor !== null ? (0, react.createElement)("div", {
|
|
4462
|
+
className: Modal_module_css_default.overlay,
|
|
4463
|
+
onClick: (e) => {
|
|
4464
|
+
if (e.target === e.currentTarget) setHelpFor(null);
|
|
4465
|
+
}
|
|
4466
|
+
}, (0, react.createElement)("div", {
|
|
4467
|
+
className: `${Modal_module_css_default.errorModal} ${Modal_module_css_default.helpModal}`,
|
|
4468
|
+
role: "dialog",
|
|
4469
|
+
"aria-modal": "true"
|
|
4470
|
+
}, (0, react.createElement)("div", { className: Modal_module_css_default.modalHead }, (0, react.createElement)("div", { className: Modal_module_css_default.modalTitle }, `${t(HELP_CARDS[helpFor].titleKey)} · ${t("helpModalTitle")}`), (0, react.createElement)("button", {
|
|
4471
|
+
className: Modal_module_css_default.modalClose,
|
|
4472
|
+
"aria-label": t("errorClose"),
|
|
4473
|
+
onClick: () => setHelpFor(null)
|
|
4474
|
+
}, (0, react.createElement)(CloseIcon))), (0, react.createElement)("div", { className: Modal_module_css_default.modalBody }, (0, react.createElement)("div", { className: CustomInstallView_module_css_default.helpBody }, t(HELP_CARDS[helpFor].contentKey).split("\n").map((line, i) => {
|
|
4475
|
+
const [cmd, note] = line.split(" ");
|
|
4476
|
+
return (0, react.createElement)("div", {
|
|
4477
|
+
key: i,
|
|
4478
|
+
className: CustomInstallView_module_css_default.helpLine
|
|
4479
|
+
}, cmd !== "" ? (0, react.createElement)("span", { className: CustomInstallView_module_css_default.helpCmd }, cmd) : null, note !== void 0 ? (0, react.createElement)("span", { className: CustomInstallView_module_css_default.helpNote }, note) : null);
|
|
4480
|
+
}))))) : null);
|
|
4292
4481
|
}
|
|
4293
4482
|
//#endregion
|
|
4294
4483
|
//#region \0dsh-css:src/client/styles/SettingsView.module.css.mjs
|
|
@@ -4302,26 +4491,26 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4302
4491
|
document.head.appendChild(tag);
|
|
4303
4492
|
}
|
|
4304
4493
|
var SettingsView_module_css_default = {
|
|
4305
|
-
"
|
|
4494
|
+
"pageTitle": "_506LLG_pageTitle",
|
|
4495
|
+
"settingControl": "_506LLG_settingControl",
|
|
4496
|
+
"settingRowStack": "_506LLG_settingRowStack",
|
|
4497
|
+
"navItem": "_506LLG_navItem",
|
|
4306
4498
|
"pageDesc": "_506LLG_pageDesc",
|
|
4499
|
+
"settingControlStack": "_506LLG_settingControlStack",
|
|
4307
4500
|
"navIcon": "_506LLG_navIcon",
|
|
4308
|
-
"
|
|
4309
|
-
"
|
|
4501
|
+
"resetBtn": "_506LLG_resetBtn",
|
|
4502
|
+
"root": "_506LLG_root",
|
|
4503
|
+
"sidebar": "_506LLG_sidebar",
|
|
4310
4504
|
"settingLabel": "_506LLG_settingLabel",
|
|
4311
4505
|
"card": "_506LLG_card",
|
|
4506
|
+
"settingDesc": "_506LLG_settingDesc",
|
|
4312
4507
|
"textInput": "_506LLG_textInput",
|
|
4313
|
-
"
|
|
4314
|
-
"settingControl": "_506LLG_settingControl",
|
|
4315
|
-
"settingRowStack": "_506LLG_settingRowStack",
|
|
4316
|
-
"pageTitle": "_506LLG_pageTitle",
|
|
4317
|
-
"content": "_506LLG_content",
|
|
4318
|
-
"resetBtn": "_506LLG_resetBtn",
|
|
4319
|
-
"sidebar": "_506LLG_sidebar",
|
|
4508
|
+
"pageHeader": "_506LLG_pageHeader",
|
|
4320
4509
|
"settingRow": "_506LLG_settingRow",
|
|
4510
|
+
"content": "_506LLG_content",
|
|
4511
|
+
"settingTitle": "_506LLG_settingTitle",
|
|
4321
4512
|
"controlDropdown": "_506LLG_controlDropdown",
|
|
4322
|
-
"
|
|
4323
|
-
"pageHeader": "_506LLG_pageHeader",
|
|
4324
|
-
"settingDesc": "_506LLG_settingDesc"
|
|
4513
|
+
"navItemActive": "_506LLG_navItemActive"
|
|
4325
4514
|
};
|
|
4326
4515
|
//#endregion
|
|
4327
4516
|
//#region \0dsh-css:src/client/styles/Dropdown.module.css.mjs
|
|
@@ -4335,22 +4524,22 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4335
4524
|
document.head.appendChild(tag);
|
|
4336
4525
|
}
|
|
4337
4526
|
var Dropdown_module_css_default = {
|
|
4527
|
+
"dropdownCountActive": "B_Gxsq_dropdownCountActive",
|
|
4338
4528
|
"dropdownItem": "B_Gxsq_dropdownItem",
|
|
4339
|
-
"dropdownLabel": "B_Gxsq_dropdownLabel",
|
|
4340
|
-
"dropdownItemActive": "B_Gxsq_dropdownItemActive",
|
|
4341
4529
|
"dropdownCount": "B_Gxsq_dropdownCount",
|
|
4530
|
+
"dropdownItemActive": "B_Gxsq_dropdownItemActive",
|
|
4531
|
+
"dropdownBtn": "B_Gxsq_dropdownBtn",
|
|
4342
4532
|
"dropdownPanel": "B_Gxsq_dropdownPanel",
|
|
4343
|
-
"dropdown": "B_Gxsq_dropdown",
|
|
4344
4533
|
"dropdownItemLabel": "B_Gxsq_dropdownItemLabel",
|
|
4345
|
-
"dropdownCountActive": "B_Gxsq_dropdownCountActive",
|
|
4346
4534
|
"dropdownArrow": "B_Gxsq_dropdownArrow",
|
|
4535
|
+
"dropdown": "B_Gxsq_dropdown",
|
|
4347
4536
|
"dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen",
|
|
4348
|
-
"
|
|
4537
|
+
"dropdownLabel": "B_Gxsq_dropdownLabel"
|
|
4349
4538
|
};
|
|
4350
4539
|
//#endregion
|
|
4351
4540
|
//#region src/client/components/ui/Dropdown.tsx
|
|
4352
4541
|
/**
|
|
4353
|
-
* DSH
|
|
4542
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
4354
4543
|
* Website: https://dsh-plugin.org
|
|
4355
4544
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
4356
4545
|
*
|
|
@@ -4418,14 +4607,14 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4418
4607
|
document.head.appendChild(tag);
|
|
4419
4608
|
}
|
|
4420
4609
|
var Toggle_module_css_default = {
|
|
4610
|
+
"toggle": "k-cD4G_toggle",
|
|
4421
4611
|
"toggleOn": "k-cD4G_toggleOn",
|
|
4422
|
-
"knob": "k-cD4G_knob"
|
|
4423
|
-
"toggle": "k-cD4G_toggle"
|
|
4612
|
+
"knob": "k-cD4G_knob"
|
|
4424
4613
|
};
|
|
4425
4614
|
//#endregion
|
|
4426
4615
|
//#region src/client/components/ui/Toggle.tsx
|
|
4427
4616
|
/**
|
|
4428
|
-
* DSH
|
|
4617
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
4429
4618
|
* Website: https://dsh-plugin.org
|
|
4430
4619
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
4431
4620
|
*
|
|
@@ -4456,34 +4645,34 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4456
4645
|
document.head.appendChild(tag);
|
|
4457
4646
|
}
|
|
4458
4647
|
var DiagnosticsView_module_css_default = {
|
|
4459
|
-
"
|
|
4648
|
+
"head": "k9eRya_head",
|
|
4649
|
+
"headHint": "k9eRya_headHint",
|
|
4460
4650
|
"meta": "k9eRya_meta",
|
|
4461
|
-
"
|
|
4651
|
+
"summaryOk": "k9eRya_summaryOk",
|
|
4652
|
+
"envTitle": "k9eRya_envTitle",
|
|
4653
|
+
"summaryFail": "k9eRya_summaryFail",
|
|
4654
|
+
"badgeRunning": "k9eRya_badgeRunning",
|
|
4655
|
+
"badgeIdle": "k9eRya_badgeIdle",
|
|
4656
|
+
"badge": "k9eRya_badge",
|
|
4657
|
+
"panel": "k9eRya_panel",
|
|
4462
4658
|
"envLabel": "k9eRya_envLabel",
|
|
4463
|
-
"envCopyBtn": "k9eRya_envCopyBtn",
|
|
4464
|
-
"headHint": "k9eRya_headHint",
|
|
4465
4659
|
"display": "k9eRya_display",
|
|
4466
|
-
"head": "k9eRya_head",
|
|
4467
|
-
"runBtn": "k9eRya_runBtn",
|
|
4468
|
-
"badge": "k9eRya_badge",
|
|
4469
4660
|
"summary": "k9eRya_summary",
|
|
4470
|
-
"
|
|
4471
|
-
"
|
|
4472
|
-
"
|
|
4661
|
+
"badgeFail": "k9eRya_badgeFail",
|
|
4662
|
+
"summaryRunning": "k9eRya_summaryRunning",
|
|
4663
|
+
"runBtn": "k9eRya_runBtn",
|
|
4664
|
+
"name": "k9eRya_name",
|
|
4665
|
+
"envCopyBtn": "k9eRya_envCopyBtn",
|
|
4473
4666
|
"badgeOk": "k9eRya_badgeOk",
|
|
4474
|
-
"summaryOk": "k9eRya_summaryOk",
|
|
4475
|
-
"diagPulse": "k9eRya_diagPulse",
|
|
4476
|
-
"badgeRunning": "k9eRya_badgeRunning",
|
|
4477
|
-
"envRow": "k9eRya_envRow",
|
|
4478
4667
|
"envDesc": "k9eRya_envDesc",
|
|
4479
|
-
"
|
|
4480
|
-
"
|
|
4481
|
-
"
|
|
4668
|
+
"row": "k9eRya_row",
|
|
4669
|
+
"diagPulse": "k9eRya_diagPulse",
|
|
4670
|
+
"envRow": "k9eRya_envRow"
|
|
4482
4671
|
};
|
|
4483
4672
|
//#endregion
|
|
4484
4673
|
//#region src/client/components/views/DiagnosticsView.tsx
|
|
4485
4674
|
/**
|
|
4486
|
-
* DSH
|
|
4675
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
4487
4676
|
* Website: https://dsh-plugin.org
|
|
4488
4677
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
4489
4678
|
*
|
|
@@ -4497,7 +4686,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4497
4686
|
/** 系统版本文本:提交 Issue 时粘贴到正文,方便作者复现。 */
|
|
4498
4687
|
function formatEnv(env) {
|
|
4499
4688
|
return [
|
|
4500
|
-
`DSH
|
|
4689
|
+
`DSH Plugin Hub ${PLUGIN_VERSION}`,
|
|
4501
4690
|
`DSH ${env.dshVersion ?? "unknown"}`,
|
|
4502
4691
|
`Node ${env.nodeVersion}`,
|
|
4503
4692
|
`${env.platform} ${env.arch} (${env.release})`,
|
|
@@ -4636,61 +4825,61 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4636
4825
|
document.head.appendChild(tag);
|
|
4637
4826
|
}
|
|
4638
4827
|
var LogsView_module_css_default = {
|
|
4639
|
-
"
|
|
4640
|
-
"pathText": "_3j77BW_pathText",
|
|
4828
|
+
"pathDialogHint": "_3j77BW_pathDialogHint",
|
|
4641
4829
|
"actions": "_3j77BW_actions",
|
|
4642
|
-
"pathDialogFoot": "_3j77BW_pathDialogFoot",
|
|
4643
|
-
"badgeDebug": "_3j77BW_badgeDebug",
|
|
4644
|
-
"empty": "_3j77BW_empty",
|
|
4645
|
-
"pathDialogDesc": "_3j77BW_pathDialogDesc",
|
|
4646
|
-
"catUninstall": "_3j77BW_catUninstall",
|
|
4647
4830
|
"message": "_3j77BW_message",
|
|
4648
|
-
"
|
|
4649
|
-
"
|
|
4831
|
+
"pathDraft": "_3j77BW_pathDraft",
|
|
4832
|
+
"pathDialogDesc": "_3j77BW_pathDialogDesc",
|
|
4650
4833
|
"head": "_3j77BW_head",
|
|
4651
|
-
"
|
|
4834
|
+
"filterChip": "_3j77BW_filterChip",
|
|
4835
|
+
"search": "_3j77BW_search",
|
|
4836
|
+
"more": "_3j77BW_more",
|
|
4837
|
+
"badgeError": "_3j77BW_badgeError",
|
|
4838
|
+
"catInstall": "_3j77BW_catInstall",
|
|
4839
|
+
"event": "_3j77BW_event",
|
|
4652
4840
|
"badge": "_3j77BW_badge",
|
|
4653
|
-
"
|
|
4654
|
-
"
|
|
4655
|
-
"
|
|
4656
|
-
"
|
|
4841
|
+
"catUpdate": "_3j77BW_catUpdate",
|
|
4842
|
+
"badgeInfo": "_3j77BW_badgeInfo",
|
|
4843
|
+
"footCount": "_3j77BW_footCount",
|
|
4844
|
+
"catSystem": "_3j77BW_catSystem",
|
|
4657
4845
|
"time": "_3j77BW_time",
|
|
4658
|
-
"
|
|
4659
|
-
"
|
|
4660
|
-
"moreEnd": "_3j77BW_moreEnd",
|
|
4846
|
+
"filterBar": "_3j77BW_filterBar",
|
|
4847
|
+
"badgeWarn": "_3j77BW_badgeWarn",
|
|
4661
4848
|
"foot": "_3j77BW_foot",
|
|
4662
|
-
"
|
|
4663
|
-
"
|
|
4849
|
+
"btnPrimary": "_3j77BW_btnPrimary",
|
|
4850
|
+
"footFail": "_3j77BW_footFail",
|
|
4664
4851
|
"footActions": "_3j77BW_footActions",
|
|
4665
4852
|
"btn": "_3j77BW_btn",
|
|
4666
|
-
"
|
|
4667
|
-
"
|
|
4853
|
+
"badgeDebug": "_3j77BW_badgeDebug",
|
|
4854
|
+
"linkBtn": "_3j77BW_linkBtn",
|
|
4855
|
+
"pathDialog": "_3j77BW_pathDialog",
|
|
4856
|
+
"footPath": "_3j77BW_footPath",
|
|
4857
|
+
"badgeSuccess": "_3j77BW_badgeSuccess",
|
|
4858
|
+
"pathLabel": "_3j77BW_pathLabel",
|
|
4859
|
+
"catBadge": "_3j77BW_catBadge",
|
|
4668
4860
|
"headHint": "_3j77BW_headHint",
|
|
4669
|
-
"
|
|
4670
|
-
"
|
|
4671
|
-
"
|
|
4672
|
-
"
|
|
4673
|
-
"badgeError": "_3j77BW_badgeError",
|
|
4674
|
-
"pathDraft": "_3j77BW_pathDraft",
|
|
4675
|
-
"filterBar": "_3j77BW_filterBar",
|
|
4861
|
+
"logList": "_3j77BW_logList",
|
|
4862
|
+
"filterChipActive": "_3j77BW_filterChipActive",
|
|
4863
|
+
"catUninstall": "_3j77BW_catUninstall",
|
|
4864
|
+
"moreEnd": "_3j77BW_moreEnd",
|
|
4676
4865
|
"list": "_3j77BW_list",
|
|
4677
|
-
"
|
|
4866
|
+
"entry": "_3j77BW_entry",
|
|
4867
|
+
"pathDialogFoot": "_3j77BW_pathDialogFoot",
|
|
4868
|
+
"pathDialogReset": "_3j77BW_pathDialogReset",
|
|
4678
4869
|
"pathDialogRow": "_3j77BW_pathDialogRow",
|
|
4679
|
-
"
|
|
4680
|
-
"
|
|
4681
|
-
"
|
|
4870
|
+
"searchInput": "_3j77BW_searchInput",
|
|
4871
|
+
"catSettings": "_3j77BW_catSettings",
|
|
4872
|
+
"panel": "_3j77BW_panel",
|
|
4682
4873
|
"pathRow": "_3j77BW_pathRow",
|
|
4683
|
-
"
|
|
4684
|
-
"
|
|
4685
|
-
"
|
|
4686
|
-
"
|
|
4687
|
-
"catSystem": "_3j77BW_catSystem",
|
|
4688
|
-
"search": "_3j77BW_search"
|
|
4874
|
+
"pathText": "_3j77BW_pathText",
|
|
4875
|
+
"catDiagnostics": "_3j77BW_catDiagnostics",
|
|
4876
|
+
"previewRow": "_3j77BW_previewRow",
|
|
4877
|
+
"empty": "_3j77BW_empty"
|
|
4689
4878
|
};
|
|
4690
4879
|
//#endregion
|
|
4691
4880
|
//#region src/client/components/modals/LogsModal.tsx
|
|
4692
4881
|
/**
|
|
4693
|
-
* DSH
|
|
4882
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
4694
4883
|
* Website: https://dsh-plugin.org
|
|
4695
4884
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
4696
4885
|
*
|
|
@@ -4963,7 +5152,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4963
5152
|
//#endregion
|
|
4964
5153
|
//#region src/client/components/modals/LogsPathModal.tsx
|
|
4965
5154
|
/**
|
|
4966
|
-
* DSH
|
|
5155
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
4967
5156
|
* Website: https://dsh-plugin.org
|
|
4968
5157
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
4969
5158
|
*
|
|
@@ -5078,7 +5267,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5078
5267
|
//#endregion
|
|
5079
5268
|
//#region src/client/components/views/LogsView.tsx
|
|
5080
5269
|
/**
|
|
5081
|
-
* DSH
|
|
5270
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
5082
5271
|
* Website: https://dsh-plugin.org
|
|
5083
5272
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
5084
5273
|
*
|
|
@@ -5202,7 +5391,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5202
5391
|
//#endregion
|
|
5203
5392
|
//#region src/client/components/views/SettingsView.tsx
|
|
5204
5393
|
/**
|
|
5205
|
-
* DSH
|
|
5394
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
5206
5395
|
* Website: https://dsh-plugin.org
|
|
5207
5396
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
5208
5397
|
*
|
|
@@ -5418,7 +5607,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5418
5607
|
//#endregion
|
|
5419
5608
|
//#region src/client/components/PluginHubSection.tsx
|
|
5420
5609
|
/**
|
|
5421
|
-
* DSH
|
|
5610
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
5422
5611
|
* Website: https://dsh-plugin.org
|
|
5423
5612
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
5424
5613
|
*
|
|
@@ -5476,6 +5665,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5476
5665
|
const [notifications, setNotifications] = (0, react.useState)(() => loadNotifications());
|
|
5477
5666
|
/** 通知中心弹窗:一级导航「设置」tab 后边的铃铛入口按钮打开 */
|
|
5478
5667
|
const [showNotifications, setShowNotifications] = (0, react.useState)(false);
|
|
5668
|
+
/** 「忽略本次更新」确认弹窗:{ repo, version };null = 关闭 */
|
|
5669
|
+
const [ignoreTarget, setIgnoreTarget] = (0, react.useState)(null);
|
|
5479
5670
|
/** 宿主机器环境快照:提交 bug 的 issue 正文附带;取不到为 null(链接少环境段,不阻塞) */
|
|
5480
5671
|
const [env, setEnv] = (0, react.useState)(null);
|
|
5481
5672
|
(0, react.useEffect)(() => {
|
|
@@ -5544,24 +5735,35 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5544
5735
|
} : null;
|
|
5545
5736
|
}
|
|
5546
5737
|
});
|
|
5547
|
-
|
|
5548
|
-
|
|
5549
|
-
|
|
5550
|
-
|
|
5551
|
-
startupCheckedRef.current = true;
|
|
5552
|
-
if (!hubSettings.checkUpdatesOnStart) return;
|
|
5738
|
+
/** 补齐更新提醒:把「当前有更新但通知中心还没有」的插件补写进通知(repo+version 去重)。
|
|
5739
|
+
* 返回本次实际新增的条数(0 = 无可更新或全部已提示过)。启动检查与打开通知中心共用,
|
|
5740
|
+
* 保证通知中心始终反映可更新状态:同一版本只一条、清空/删除后重开恢复、更新完成后消失。 */
|
|
5741
|
+
const syncUpdateNotices = () => {
|
|
5553
5742
|
const updatable = catalog.installedItems.filter((i) => i.hasUpdate && i.plugin);
|
|
5554
|
-
if (updatable.length === 0) return;
|
|
5555
|
-
|
|
5743
|
+
if (updatable.length === 0) return 0;
|
|
5744
|
+
const known = new Set(loadIgnoredUpdates());
|
|
5745
|
+
for (const r of loadNotifications()) if (r.kind === "update") known.add(`${r.repo}@${r.version ?? ""}`);
|
|
5746
|
+
const fresh = updatable.filter((item) => item.repo !== null && !known.has(`${item.repo}@${item.catalogVersion ?? ""}`));
|
|
5747
|
+
if (fresh.length === 0) return 0;
|
|
5748
|
+
for (const item of fresh) if (item.repo) addUpdateNotice({
|
|
5556
5749
|
kind: "update",
|
|
5557
5750
|
repo: item.repo,
|
|
5558
5751
|
version: item.catalogVersion ?? void 0
|
|
5559
5752
|
});
|
|
5560
5753
|
setNotifications(loadNotifications());
|
|
5561
|
-
|
|
5754
|
+
return fresh.length;
|
|
5755
|
+
};
|
|
5756
|
+
const startupCheckedRef = (0, react.useRef)(false);
|
|
5757
|
+
(0, react.useEffect)(() => {
|
|
5758
|
+
if (startupCheckedRef.current) return;
|
|
5759
|
+
if (!settingsReady || catalog.plugins === null || catalog.failed) return;
|
|
5760
|
+
startupCheckedRef.current = true;
|
|
5761
|
+
if (!hubSettings.checkUpdatesOnStart) return;
|
|
5762
|
+
const added = syncUpdateNotices();
|
|
5763
|
+
if (added > 0) setToast({
|
|
5562
5764
|
id: Date.now(),
|
|
5563
5765
|
kind: "updates",
|
|
5564
|
-
n:
|
|
5766
|
+
n: added
|
|
5565
5767
|
});
|
|
5566
5768
|
}, [
|
|
5567
5769
|
settingsReady,
|
|
@@ -5572,7 +5774,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5572
5774
|
queue
|
|
5573
5775
|
]);
|
|
5574
5776
|
(0, react.useEffect)(() => {
|
|
5575
|
-
if (!confirmPlugin && !confirmCustomTarget && !confirmGlobalNpm && !uninstallPlugin && !uninstallItem && !detailItem && !showHubUpdate && !showAbout && !showNotifications) return;
|
|
5777
|
+
if (!confirmPlugin && !confirmCustomTarget && !confirmGlobalNpm && !uninstallPlugin && !uninstallItem && !detailItem && !showHubUpdate && !showAbout && !showNotifications && !ignoreTarget) return;
|
|
5576
5778
|
const onKey = (e) => {
|
|
5577
5779
|
if (e.key === "Escape") {
|
|
5578
5780
|
setConfirmPlugin(null);
|
|
@@ -5585,6 +5787,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5585
5787
|
setShowHubUpdate(false);
|
|
5586
5788
|
setShowAbout(false);
|
|
5587
5789
|
setShowNotifications(false);
|
|
5790
|
+
setIgnoreTarget(null);
|
|
5588
5791
|
}
|
|
5589
5792
|
};
|
|
5590
5793
|
window.addEventListener("keydown", onKey);
|
|
@@ -5597,7 +5800,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5597
5800
|
detailItem,
|
|
5598
5801
|
showHubUpdate,
|
|
5599
5802
|
showAbout,
|
|
5600
|
-
showNotifications
|
|
5803
|
+
showNotifications,
|
|
5804
|
+
ignoreTarget
|
|
5601
5805
|
]);
|
|
5602
5806
|
(0, react.useEffect)(() => {
|
|
5603
5807
|
if (!toast) return;
|
|
@@ -5711,7 +5915,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5711
5915
|
statsVerified,
|
|
5712
5916
|
onToggleLang: toggleLang,
|
|
5713
5917
|
hubUpdate: catalog.hubHasUpdate,
|
|
5714
|
-
onVersionClick: () =>
|
|
5918
|
+
onVersionClick: () => {
|
|
5919
|
+
catalog.refreshHub().then(() => setShowHubUpdate(true));
|
|
5920
|
+
},
|
|
5715
5921
|
onAboutClick: () => setShowAbout(true)
|
|
5716
5922
|
}), (0, react.createElement)("div", { className: Header_module_css_default.tabsRow }, (0, react.createElement)(SectionTabs, {
|
|
5717
5923
|
view,
|
|
@@ -5719,7 +5925,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5719
5925
|
installedCount: catalog.installedItems.length,
|
|
5720
5926
|
t,
|
|
5721
5927
|
noticeCount: notifications.length + queue.queue.length + queue.pendingRestarts.length,
|
|
5722
|
-
onOpenNotifications: () =>
|
|
5928
|
+
onOpenNotifications: () => {
|
|
5929
|
+
if (hubSettings.checkUpdatesOnStart) syncUpdateNotices();
|
|
5930
|
+
setShowNotifications(true);
|
|
5931
|
+
}
|
|
5723
5932
|
})), view === "market" ? (0, react.createElement)(MarketView, {
|
|
5724
5933
|
catalog,
|
|
5725
5934
|
t,
|
|
@@ -5800,7 +6009,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5800
6009
|
});
|
|
5801
6010
|
}
|
|
5802
6011
|
}), showHubUpdate && (0, react.createElement)(HubUpdateModal, {
|
|
5803
|
-
info: catalog.hubUpdateInfo ?? { version: "1.
|
|
6012
|
+
info: catalog.hubUpdateInfo ?? { version: "1.3.0" },
|
|
5804
6013
|
lang,
|
|
5805
6014
|
t,
|
|
5806
6015
|
hasUpdate: catalog.hubHasUpdate,
|
|
@@ -5844,12 +6053,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5844
6053
|
queue.clearModalTask();
|
|
5845
6054
|
setConfirmPlugin(plugin);
|
|
5846
6055
|
},
|
|
6056
|
+
onIgnoreUpdate: (repo, version) => setIgnoreTarget({
|
|
6057
|
+
repo,
|
|
6058
|
+
version
|
|
6059
|
+
}),
|
|
5847
6060
|
cancelTask: queue.cancelTask,
|
|
5848
6061
|
restarting,
|
|
5849
6062
|
onRestart: () => {
|
|
5850
6063
|
requestRestart();
|
|
5851
6064
|
}
|
|
5852
|
-
}),
|
|
6065
|
+
}), ignoreTarget && (0, react.createElement)("div", {
|
|
6066
|
+
className: Modal_module_css_default.overlay,
|
|
6067
|
+
onClick: (e) => {
|
|
6068
|
+
if (e.target === e.currentTarget) setIgnoreTarget(null);
|
|
6069
|
+
}
|
|
6070
|
+
}, (0, react.createElement)("div", {
|
|
6071
|
+
className: Modal_module_css_default.modal,
|
|
6072
|
+
role: "dialog",
|
|
6073
|
+
"aria-modal": "true"
|
|
6074
|
+
}, (0, react.createElement)("div", { className: Modal_module_css_default.modalHead }, (0, react.createElement)("div", { className: Modal_module_css_default.modalTitle }, t("ignoreUpdateConfirmTitle")), (0, react.createElement)("button", {
|
|
6075
|
+
className: Modal_module_css_default.modalClose,
|
|
6076
|
+
type: "button",
|
|
6077
|
+
"aria-label": t("errorClose"),
|
|
6078
|
+
onClick: () => setIgnoreTarget(null)
|
|
6079
|
+
}, (0, react.createElement)(CloseIcon))), (0, react.createElement)("div", { className: Modal_module_css_default.modalBody }, (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("ignoreUpdateConfirmDetail")), (0, react.createElement)("div", { className: Modal_module_css_default.modalActions }, (0, react.createElement)("button", {
|
|
6080
|
+
className: Modal_module_css_default.restartLater,
|
|
6081
|
+
type: "button",
|
|
6082
|
+
onClick: () => setIgnoreTarget(null)
|
|
6083
|
+
}, t("confirmCancel")), (0, react.createElement)("button", {
|
|
6084
|
+
className: Modal_module_css_default.restartNow,
|
|
6085
|
+
type: "button",
|
|
6086
|
+
onClick: () => {
|
|
6087
|
+
ignoreUpdate(ignoreTarget.repo, ignoreTarget.version);
|
|
6088
|
+
setNotifications(removeUpdateNotice(ignoreTarget.repo, ignoreTarget.version));
|
|
6089
|
+
setIgnoreTarget(null);
|
|
6090
|
+
}
|
|
6091
|
+
}, t("ignoreUpdateConfirm")))))), confirmPlugin && (0, react.createElement)(InstallModal, {
|
|
5853
6092
|
plugin: confirmPlugin,
|
|
5854
6093
|
done: installDone,
|
|
5855
6094
|
task: queue.installModalTask,
|
|
@@ -6007,7 +6246,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
6007
6246
|
}
|
|
6008
6247
|
//#endregion
|
|
6009
6248
|
//#region \0dsh-css:src/client/styles/tokens.module.css.mjs
|
|
6010
|
-
const css = ":root,body[data-ds-dark-theme]{--hub-text-primary:var(--dsw-alias-label-primary,#1f2328);--hub-text-secondary:var(--dsw-alias-label-secondary,#6b7280);--hub-text-tertiary:var(--dsw-alias-label-tertiary,#8b93a1);--hub-text-disabled:var(--dsw-alias-label-disabled,#aab1bd);--hub-text-on-fill:var(--dsw-alias-label-primary-foreground,#fff);--hub-bg-1:var(--dsw-alias-bg-layer-1,#fff);--hub-bg-2:var(--dsw-alias-bg-layer-2,#80808014);--hub-bg-3:#8080801a;--hub-bg-btn:#8080801f;--hub-bg-hover:var(--dsw-alias-interactive-bg-hover,#80808029);--hub-bg-on-fill:#80808038;--hub-border-1:var(--dsw-alias-border-l1,#eceef1);--hub-border-2:var(--dsw-alias-border-l2,#e5e7eb);--hub-border-ghost:var(--dsw-alias-button-ghost-active-border,#4f6ef740);--hub-border-input:var(--dsw-alias-input-border,#6b728040);--hub-brand:var(--dsw-alias-state-business-primary,#4f6ef7);--hub-brand-hover:#3b5bdb;--hub-brand-tint:#4f6ef70f;--hub-brand-tint-strong:#4f6ef71f;--hub-brand-border:#4f6ef759;--hub-brand-border-soft:#4f6ef738;--hub-purple-1:#4f46e5;--hub-purple-2:#7c3aed;--hub-purple-border:#8b5cf68c;--hub-purple-tint:#4f46e514;--hub-purple-shadow:#4f46e547;--hub-purple-shadow-strong:#7c3aed6b;--hub-btn-fill:var(--dsw-alias-button-primary-fill,#1f2328);--hub-btn-hover:var(--dsw-alias-button-primary-hover,#43454a);--hub-success:#16a34a;--hub-success-tint:#16a34a1f;--hub-success-border:#16a34a4d;--hub-warn:var(--dsw-alias-state-warn-primary,#b8860b);--hub-warn-tint:#b8860b14;--hub-warn-border:#b8860b59;--hub-warn-strong:#b8860bd9;--hub-warning:var(--dsw-alias-state-warning-primary,#b45309);--hub-warning-hover:#92400e;--hub-warning-tint:#b4530914;--hub-warning-border:#b453094d;--hub-danger:var(--dsw-alias-state-danger-primary,#d1242f);--hub-danger-hover:var(--dsw-alias-state-danger-hover,#b91c1c);--hub-danger-strong:#b0202a;--hub-danger-text:#e5484d;--hub-danger-tint:#e5484d14;--hub-danger-tint-weak:#e5484d0d;--hub-danger-border:#e5484d59;--hub-danger-border-soft:#e5484d47;--hub-danger-soft:#d1242f14}body[data-ds-dark-theme]{--hub-bg-btn:#ffffff1f;--hub-success:#
|
|
6249
|
+
const css = ":root,body[data-ds-dark-theme]{--hub-text-primary:var(--dsw-alias-label-primary,#1f2328);--hub-text-secondary:var(--dsw-alias-label-secondary,#6b7280);--hub-text-tertiary:var(--dsw-alias-label-tertiary,#8b93a1);--hub-text-disabled:var(--dsw-alias-label-disabled,#aab1bd);--hub-text-on-fill:var(--dsw-alias-label-primary-foreground,#fff);--hub-bg-1:var(--dsw-alias-bg-layer-1,#fff);--hub-bg-2:var(--dsw-alias-bg-layer-2,#80808014);--hub-bg-3:#8080801a;--hub-bg-btn:#8080801f;--hub-bg-hover:var(--dsw-alias-interactive-bg-hover,#80808029);--hub-bg-on-fill:#80808038;--hub-border-1:var(--dsw-alias-border-l1,#eceef1);--hub-border-2:var(--dsw-alias-border-l2,#e5e7eb);--hub-border-ghost:var(--dsw-alias-button-ghost-active-border,#4f6ef740);--hub-border-input:var(--dsw-alias-input-border,#6b728040);--hub-brand:var(--dsw-alias-state-business-primary,#4f6ef7);--hub-brand-hover:#3b5bdb;--hub-brand-tint:#4f6ef70f;--hub-brand-tint-strong:#4f6ef71f;--hub-brand-border:#4f6ef759;--hub-brand-border-soft:#4f6ef738;--hub-purple-1:#4f46e5;--hub-purple-2:#7c3aed;--hub-purple-border:#8b5cf68c;--hub-purple-tint:#4f46e514;--hub-purple-shadow:#4f46e547;--hub-purple-shadow-strong:#7c3aed6b;--hub-btn-fill:var(--dsw-alias-button-primary-fill,#1f2328);--hub-btn-hover:var(--dsw-alias-button-primary-hover,#43454a);--hub-success:#16a34a;--hub-success-tint:#16a34a1f;--hub-success-border:#16a34a4d;--hub-warn:var(--dsw-alias-state-warn-primary,#b8860b);--hub-warn-tint:#b8860b14;--hub-warn-border:#b8860b59;--hub-warn-strong:#b8860bd9;--hub-warning:var(--dsw-alias-state-warning-primary,#b45309);--hub-warning-hover:#92400e;--hub-warning-tint:#b4530914;--hub-warning-border:#b453094d;--hub-danger:var(--dsw-alias-state-danger-primary,#d1242f);--hub-danger-hover:var(--dsw-alias-state-danger-hover,#b91c1c);--hub-danger-strong:#b0202a;--hub-danger-text:#e5484d;--hub-danger-tint:#e5484d14;--hub-danger-tint-weak:#e5484d0d;--hub-danger-border:#e5484d59;--hub-danger-border-soft:#e5484d47;--hub-danger-soft:#d1242f14}body[data-ds-dark-theme]{--hub-bg-btn:#ffffff1f;--hub-brand:#6b6b76;--hub-brand-hover:#7d7d88;--hub-brand-tint:#ffffff14;--hub-brand-tint-strong:#ffffff21;--hub-brand-border:#ffffff4d;--hub-brand-border-soft:#fff3;--hub-purple-1:#6b6b76;--hub-purple-2:#7d7d88;--hub-purple-border:#ffffff59;--hub-purple-tint:#ffffff14;--hub-purple-shadow:#00000059;--hub-purple-shadow-strong:#00000080;--hub-warn:#6b6b76;--hub-warn-tint:#ffffff14;--hub-warn-border:#ffffff4d;--hub-warn-strong:#7d7d88;--hub-warning:#6b6b76;--hub-warning-hover:#7d7d88;--hub-warning-tint:#ffffff14;--hub-warning-border:#ffffff4d;--hub-success:#9a9aa4;--hub-success-tint:#ffffff1a;--hub-success-border:#ffffff4d}";
|
|
6011
6250
|
const tagId = "dsh-plugin/tokens.module.css";
|
|
6012
6251
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
6013
6252
|
const tag = document.createElement("style");
|
|
@@ -6019,7 +6258,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
6019
6258
|
//#endregion
|
|
6020
6259
|
//#region src/client/index.tsx
|
|
6021
6260
|
/**
|
|
6022
|
-
* DSH
|
|
6261
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
6023
6262
|
* Website: https://dsh-plugin.org
|
|
6024
6263
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
6025
6264
|
*
|