dsh-plugin 1.2.0 → 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 +684 -446
- 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 +8 -9
- 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
|
-
"
|
|
591
|
-
"adBanner": "qikqja_adBanner",
|
|
592
|
-
"adArrow": "qikqja_adArrow",
|
|
610
|
+
"copyIcon": "qikqja_copyIcon",
|
|
593
611
|
"hubUpdateBadge": "qikqja_hubUpdateBadge",
|
|
594
|
-
"
|
|
612
|
+
"adArrow": "qikqja_adArrow",
|
|
613
|
+
"githubLink": "qikqja_githubLink",
|
|
614
|
+
"tagline": "qikqja_tagline",
|
|
615
|
+
"controls": "qikqja_controls",
|
|
616
|
+
"adText": "qikqja_adText",
|
|
617
|
+
"tabCount": "qikqja_tabCount",
|
|
595
618
|
"tabsRow": "qikqja_tabsRow",
|
|
596
|
-
"
|
|
597
|
-
"githubIcon": "qikqja_githubIcon",
|
|
598
|
-
"versionBtn": "qikqja_versionBtn",
|
|
599
|
-
"taglineLink": "qikqja_taglineLink",
|
|
600
|
-
"headerRight": "qikqja_headerRight",
|
|
619
|
+
"logoIcon": "qikqja_logoIcon",
|
|
601
620
|
"root": "qikqja_root",
|
|
602
|
-
"
|
|
603
|
-
"
|
|
604
|
-
"
|
|
605
|
-
"segBtn": "qikqja_segBtn",
|
|
606
|
-
"tab": "qikqja_tab",
|
|
607
|
-
"adBadge": "qikqja_adBadge",
|
|
621
|
+
"resultCount": "qikqja_resultCount",
|
|
622
|
+
"version": "qikqja_version",
|
|
623
|
+
"segLabel": "qikqja_segLabel",
|
|
608
624
|
"aboutBtn": "qikqja_aboutBtn",
|
|
609
|
-
"
|
|
610
|
-
"tagline": "qikqja_tagline",
|
|
625
|
+
"segBtn": "qikqja_segBtn",
|
|
611
626
|
"tabs": "qikqja_tabs",
|
|
612
|
-
"
|
|
613
|
-
"
|
|
614
|
-
"
|
|
627
|
+
"adBanner": "qikqja_adBanner",
|
|
628
|
+
"segGroup": "qikqja_segGroup",
|
|
629
|
+
"resultSeg": "qikqja_resultSeg",
|
|
630
|
+
"githubIcon": "qikqja_githubIcon",
|
|
631
|
+
"tab": "qikqja_tab",
|
|
632
|
+
"langBtn": "qikqja_langBtn",
|
|
615
633
|
"brandTitle": "qikqja_brandTitle",
|
|
616
|
-
"
|
|
634
|
+
"taglineLink": "qikqja_taglineLink",
|
|
635
|
+
"search": "qikqja_search",
|
|
617
636
|
"searchRow": "qikqja_searchRow",
|
|
618
|
-
"copyIcon": "qikqja_copyIcon",
|
|
619
|
-
"tabActive": "qikqja_tabActive",
|
|
620
|
-
"title": "qikqja_title",
|
|
621
|
-
"segGroup": "qikqja_segGroup",
|
|
622
|
-
"segLabel": "qikqja_segLabel",
|
|
623
637
|
"segBtnActive": "qikqja_segBtnActive",
|
|
624
|
-
"
|
|
625
|
-
"
|
|
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
|
|
@@ -679,21 +835,20 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
679
835
|
/** 插件中心源码仓库:头部右上角 GitHub 图标的跳转地址 */
|
|
680
836
|
const GITHUB_URL = "https://github.com/dshplugin/dsh-plugin-hub";
|
|
681
837
|
/**
|
|
682
|
-
* Hub
|
|
683
|
-
*
|
|
684
|
-
*
|
|
685
|
-
* 不再依赖主站目录数据管道(每日刷新 + 重建站点)。
|
|
838
|
+
* Hub 自我更新版本控制(接口中心 Pages:api.dsh-plugin.org,静态 JSON 发布)。
|
|
839
|
+
* 发新版 = 在 api-center 的 releases/ 写发版记录 + 重新部署,hub.json 随之更新,
|
|
840
|
+
* 所有已装用户的「可更新」徽标即可见,不再依赖主站目录数据管道。
|
|
686
841
|
* 响应:{ version: string | null, publishedAt: string | null, notes: string | {zh,en} | null }
|
|
687
842
|
*/
|
|
688
|
-
const HUB_UPDATE_URL = "https://api.dsh-plugin.org/hub";
|
|
689
|
-
/**
|
|
690
|
-
const HUB_ABOUT_URL = "https://api.dsh-plugin.org/about";
|
|
843
|
+
const HUB_UPDATE_URL = "https://api.dsh-plugin.org/hub.json";
|
|
844
|
+
/** 接口中心「关注我们」内容(静态 JSON,由 api-center 的 about.md 构建生成,Markdown)。 */
|
|
845
|
+
const HUB_ABOUT_URL = "https://api.dsh-plugin.org/about.json";
|
|
691
846
|
/**
|
|
692
|
-
* 插件当前版本号,供头部标题展示「DSH
|
|
847
|
+
* 插件当前版本号,供头部标题展示「DSH Plugin Hub v0.1.1」。
|
|
693
848
|
* tsdown 构建时用 define 把 __PLUGIN_VERSION__ 替换成 package.json 的版本号;
|
|
694
849
|
* node --test 直接 import 本模块时该标识符不存在,typeof 守卫兜底为空串。
|
|
695
850
|
*/
|
|
696
|
-
const PLUGIN_VERSION = "1.
|
|
851
|
+
const PLUGIN_VERSION = "1.3.0";
|
|
697
852
|
const CATEGORY_ORDER = [
|
|
698
853
|
"interface",
|
|
699
854
|
"session",
|
|
@@ -940,10 +1095,17 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
940
1095
|
}
|
|
941
1096
|
//#endregion
|
|
942
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
|
+
}
|
|
943
1105
|
/** Worker 版本控制中心:最新版本 + Markdown 变更记录;不可用返回 null。 */
|
|
944
1106
|
async function fetchHubUpdate() {
|
|
945
1107
|
try {
|
|
946
|
-
const res = await fetch(HUB_UPDATE_URL, { cache: "no-store" });
|
|
1108
|
+
const res = await fetch(busted(HUB_UPDATE_URL), { cache: "no-store" });
|
|
947
1109
|
if (!res.ok) return null;
|
|
948
1110
|
const data = await res.json();
|
|
949
1111
|
if (!data) return null;
|
|
@@ -961,7 +1123,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
961
1123
|
/** Worker「关注我们」内容(平台介绍 + 反馈群二维码,Markdown);未推送返回 null。 */
|
|
962
1124
|
async function fetchHubAbout() {
|
|
963
1125
|
try {
|
|
964
|
-
const res = await fetch(HUB_ABOUT_URL, { cache: "no-store" });
|
|
1126
|
+
const res = await fetch(busted(HUB_ABOUT_URL), { cache: "no-store" });
|
|
965
1127
|
if (!res.ok) return null;
|
|
966
1128
|
const data = await res.json();
|
|
967
1129
|
if (!data || data.content === null || data.content === void 0) return null;
|
|
@@ -1096,7 +1258,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1096
1258
|
//#endregion
|
|
1097
1259
|
//#region src/client/hooks/useCatalog.ts
|
|
1098
1260
|
/**
|
|
1099
|
-
* DSH
|
|
1261
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
1100
1262
|
* Website: https://dsh-plugin.org
|
|
1101
1263
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
1102
1264
|
*
|
|
@@ -1106,7 +1268,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1106
1268
|
* installed-plugin table, and the filter/search/sort/install-status view
|
|
1107
1269
|
* state, exposing the derived visible list and per-category counts.
|
|
1108
1270
|
*/
|
|
1109
|
-
/** 插件市场自身仓库:DSH
|
|
1271
|
+
/** 插件市场自身仓库:DSH Plugin Hub 不显示在目录里(自己不进自己的插件列表) */
|
|
1110
1272
|
const SELF_REPO = "dshplugin/dsh-plugin-hub";
|
|
1111
1273
|
/** 市场各排序的默认方向:全部按倒序(Star/Fork 多、更新/收录近的在前) */
|
|
1112
1274
|
const SORT_DEFAULT_DIR$1 = {
|
|
@@ -1138,6 +1300,17 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1138
1300
|
setSortDir(SORT_DEFAULT_DIR$1[key]);
|
|
1139
1301
|
}
|
|
1140
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
|
+
};
|
|
1141
1314
|
/** 当前 profile 已安装插件:npm 包名 -> manifest spec(来自宿主本地路由) */
|
|
1142
1315
|
const [installed, setInstalled] = (0, react.useState)({});
|
|
1143
1316
|
/** 安装时记录的目录信号:repo(小写) -> { version, updatedAt }(来自宿主本地路由);
|
|
@@ -1237,7 +1410,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1237
1410
|
*/
|
|
1238
1411
|
const hubHasUpdate = (() => {
|
|
1239
1412
|
if (!hubUpdateInfo) return false;
|
|
1240
|
-
return hubUpdateInfo.version !== "1.
|
|
1413
|
+
return hubUpdateInfo.version !== "1.3.0";
|
|
1241
1414
|
})();
|
|
1242
1415
|
(0, react.useMemo)(() => {
|
|
1243
1416
|
if (!plugins) return [];
|
|
@@ -1287,6 +1460,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1287
1460
|
hubHasUpdate,
|
|
1288
1461
|
hubUpdateInfo,
|
|
1289
1462
|
hubAboutInfo,
|
|
1463
|
+
refreshHub,
|
|
1290
1464
|
refreshInstalled,
|
|
1291
1465
|
category,
|
|
1292
1466
|
setCategory,
|
|
@@ -1356,14 +1530,50 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1356
1530
|
message: ""
|
|
1357
1531
|
});
|
|
1358
1532
|
}
|
|
1359
|
-
/** 记录一条「发现新版本」更新提醒:成功类轻量记录,携带目录新版本号供通知中心展示。
|
|
1533
|
+
/** 记录一条「发现新版本」更新提醒:成功类轻量记录,携带目录新版本号供通知中心展示。
|
|
1534
|
+
* 同一插件同一新版本已在通知中心时跳过:宿主重载会重新触发启动检查,不更新时
|
|
1535
|
+
* 通知里已有的提醒保持单条,不重复追加。 */
|
|
1360
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;
|
|
1361
1539
|
return addNotification({
|
|
1362
1540
|
...record,
|
|
1363
1541
|
ok: true,
|
|
1364
1542
|
message: ""
|
|
1365
1543
|
});
|
|
1366
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
|
+
}
|
|
1367
1577
|
/** 清空全部通知记录,返回空列表。 */
|
|
1368
1578
|
function clearNotifications() {
|
|
1369
1579
|
save([]);
|
|
@@ -1484,7 +1694,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1484
1694
|
`- Cause: ${reason}`,
|
|
1485
1695
|
...code ? [`- Key error: \`${code}\``] : [],
|
|
1486
1696
|
"",
|
|
1487
|
-
`## [DSH
|
|
1697
|
+
`## [DSH Plugin 插件中心](${SITE_URL}) · 安装 Plugin 失败错误信息`,
|
|
1488
1698
|
`本错误信息由 [dsh-plugin-hub](${GITHUB_URL}) 插件中心的安装程序自动生成,随本次安装失败一并提交。`,
|
|
1489
1699
|
`- 实际执行的安装命令:\`${command ?? `dsh plugin${env?.profile ? ` --profile ${env.profile}` : ""} add git+https://github.com/${repo}.git`}\``,
|
|
1490
1700
|
`- 执行结果:安装失败,未能安装该插件。`,
|
|
@@ -1539,7 +1749,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1539
1749
|
//#endregion
|
|
1540
1750
|
//#region src/client/hooks/useLanguage.ts
|
|
1541
1751
|
/**
|
|
1542
|
-
* DSH
|
|
1752
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
1543
1753
|
* Website: https://dsh-plugin.org
|
|
1544
1754
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
1545
1755
|
*
|
|
@@ -1570,7 +1780,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1570
1780
|
//#endregion
|
|
1571
1781
|
//#region src/client/hooks/useSettings.ts
|
|
1572
1782
|
/**
|
|
1573
|
-
* DSH
|
|
1783
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
1574
1784
|
* Website: https://dsh-plugin.org
|
|
1575
1785
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
1576
1786
|
*
|
|
@@ -1646,7 +1856,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1646
1856
|
//#endregion
|
|
1647
1857
|
//#region src/client/hooks/useTaskQueue.ts
|
|
1648
1858
|
/**
|
|
1649
|
-
* DSH
|
|
1859
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
1650
1860
|
* Website: https://dsh-plugin.org
|
|
1651
1861
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
1652
1862
|
*
|
|
@@ -2145,143 +2355,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2145
2355
|
};
|
|
2146
2356
|
}
|
|
2147
2357
|
//#endregion
|
|
2148
|
-
//#region \0dsh-css:src/client/styles/Modal.module.css.mjs
|
|
2149
|
-
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}";
|
|
2150
|
-
const tagId$10 = "dsh-plugin/Modal.module.css";
|
|
2151
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$10) + "]") === null) {
|
|
2152
|
-
const tag = document.createElement("style");
|
|
2153
|
-
tag.dataset.plugin = "dsh-plugin";
|
|
2154
|
-
tag.dataset.pluginCss = tagId$10;
|
|
2155
|
-
tag.textContent = css$10;
|
|
2156
|
-
document.head.appendChild(tag);
|
|
2157
|
-
}
|
|
2158
|
-
var Modal_module_css_default = {
|
|
2159
|
-
"noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
|
|
2160
|
-
"pendingRowStatus": "BiQ1zG_pendingRowStatus",
|
|
2161
|
-
"modalLabel": "BiQ1zG_modalLabel",
|
|
2162
|
-
"modalRow": "BiQ1zG_modalRow",
|
|
2163
|
-
"overlayIn": "BiQ1zG_overlayIn",
|
|
2164
|
-
"detailGrid": "BiQ1zG_detailGrid",
|
|
2165
|
-
"detailPathText": "BiQ1zG_detailPathText",
|
|
2166
|
-
"detailMono": "BiQ1zG_detailMono",
|
|
2167
|
-
"noticeTextFail": "BiQ1zG_noticeTextFail",
|
|
2168
|
-
"modalTitleBusy": "BiQ1zG_modalTitleBusy",
|
|
2169
|
-
"modalValue": "BiQ1zG_modalValue",
|
|
2170
|
-
"queueRowPct": "BiQ1zG_queueRowPct",
|
|
2171
|
-
"hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
|
|
2172
|
-
"detailStatusPending": "BiQ1zG_detailStatusPending",
|
|
2173
|
-
"modalInstall": "BiQ1zG_modalInstall",
|
|
2174
|
-
"toastIn": "BiQ1zG_toastIn",
|
|
2175
|
-
"modalIn": "BiQ1zG_modalIn",
|
|
2176
|
-
"noticeTextOk": "BiQ1zG_noticeTextOk",
|
|
2177
|
-
"linkIcon": "BiQ1zG_linkIcon",
|
|
2178
|
-
"restartLater": "BiQ1zG_restartLater",
|
|
2179
|
-
"noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
|
|
2180
|
-
"toast": "BiQ1zG_toast",
|
|
2181
|
-
"detailDim": "BiQ1zG_detailDim",
|
|
2182
|
-
"modalTitle": "BiQ1zG_modalTitle",
|
|
2183
|
-
"progressFillFail": "BiQ1zG_progressFillFail",
|
|
2184
|
-
"noticeRowMain": "BiQ1zG_noticeRowMain",
|
|
2185
|
-
"noticeHead": "BiQ1zG_noticeHead",
|
|
2186
|
-
"failList": "BiQ1zG_failList",
|
|
2187
|
-
"noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
|
|
2188
|
-
"failEmpty": "BiQ1zG_failEmpty",
|
|
2189
|
-
"noticeRemove": "BiQ1zG_noticeRemove",
|
|
2190
|
-
"noticeRow": "BiQ1zG_noticeRow",
|
|
2191
|
-
"detailPathActions": "BiQ1zG_detailPathActions",
|
|
2192
|
-
"progress": "BiQ1zG_progress",
|
|
2193
|
-
"failKind": "BiQ1zG_failKind",
|
|
2194
|
-
"resultCheckIcon": "BiQ1zG_resultCheckIcon",
|
|
2195
|
-
"noticeRowOk": "BiQ1zG_noticeRowOk",
|
|
2196
|
-
"failCopy": "BiQ1zG_failCopy",
|
|
2197
|
-
"overlay": "BiQ1zG_overlay",
|
|
2198
|
-
"logModal": "BiQ1zG_logModal",
|
|
2199
|
-
"progressHead": "BiQ1zG_progressHead",
|
|
2200
|
-
"hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
|
|
2201
|
-
"detailLink": "BiQ1zG_detailLink",
|
|
2202
|
-
"progressText": "BiQ1zG_progressText",
|
|
2203
|
-
"errorModal": "BiQ1zG_errorModal",
|
|
2204
|
-
"restartNowWarning": "BiQ1zG_restartNowWarning",
|
|
2205
|
-
"errorHint": "BiQ1zG_errorHint",
|
|
2206
|
-
"modalCmdText": "BiQ1zG_modalCmdText",
|
|
2207
|
-
"queueSectionTitle": "BiQ1zG_queueSectionTitle",
|
|
2208
|
-
"detailArrow": "BiQ1zG_detailArrow",
|
|
2209
|
-
"queueRowBody": "BiQ1zG_queueRowBody",
|
|
2210
|
-
"errorCopySoft": "BiQ1zG_errorCopySoft",
|
|
2211
|
-
"modalWide": "BiQ1zG_modalWide",
|
|
2212
|
-
"modalClose": "BiQ1zG_modalClose",
|
|
2213
|
-
"uninstallConfirm": "BiQ1zG_uninstallConfirm",
|
|
2214
|
-
"progressFill": "BiQ1zG_progressFill",
|
|
2215
|
-
"noticeMain": "BiQ1zG_noticeMain",
|
|
2216
|
-
"detailPathBtn": "BiQ1zG_detailPathBtn",
|
|
2217
|
-
"modalDesc": "BiQ1zG_modalDesc",
|
|
2218
|
-
"detailValue": "BiQ1zG_detailValue",
|
|
2219
|
-
"restartNow": "BiQ1zG_restartNow",
|
|
2220
|
-
"queueRowDesc": "BiQ1zG_queueRowDesc",
|
|
2221
|
-
"modalLink": "BiQ1zG_modalLink",
|
|
2222
|
-
"modalTitleQueued": "BiQ1zG_modalTitleQueued",
|
|
2223
|
-
"noticeFoot": "BiQ1zG_noticeFoot",
|
|
2224
|
-
"stripCancel": "BiQ1zG_stripCancel",
|
|
2225
|
-
"failBigIssue": "BiQ1zG_failBigIssue",
|
|
2226
|
-
"pendingRowActions": "BiQ1zG_pendingRowActions",
|
|
2227
|
-
"queueRowTrack": "BiQ1zG_queueRowTrack",
|
|
2228
|
-
"trustHint": "BiQ1zG_trustHint",
|
|
2229
|
-
"failKindInstall": "BiQ1zG_failKindInstall",
|
|
2230
|
-
"resultTitle": "BiQ1zG_resultTitle",
|
|
2231
|
-
"noticeTime": "BiQ1zG_noticeTime",
|
|
2232
|
-
"modalHead": "BiQ1zG_modalHead",
|
|
2233
|
-
"detailUpdateHint": "BiQ1zG_detailUpdateHint",
|
|
2234
|
-
"detailRow": "BiQ1zG_detailRow",
|
|
2235
|
-
"noticeVersion": "BiQ1zG_noticeVersion",
|
|
2236
|
-
"modal": "BiQ1zG_modal",
|
|
2237
|
-
"resultDesc": "BiQ1zG_resultDesc",
|
|
2238
|
-
"queueRowStatus": "BiQ1zG_queueRowStatus",
|
|
2239
|
-
"failRow": "BiQ1zG_failRow",
|
|
2240
|
-
"detailStatusRunning": "BiQ1zG_detailStatusRunning",
|
|
2241
|
-
"queueRow": "BiQ1zG_queueRow",
|
|
2242
|
-
"modalBody": "BiQ1zG_modalBody",
|
|
2243
|
-
"queueRowHead": "BiQ1zG_queueRowHead",
|
|
2244
|
-
"failPrepareHint": "BiQ1zG_failPrepareHint",
|
|
2245
|
-
"hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
|
|
2246
|
-
"errorTitle": "BiQ1zG_errorTitle",
|
|
2247
|
-
"detailStatusText": "BiQ1zG_detailStatusText",
|
|
2248
|
-
"resultRestarting": "BiQ1zG_resultRestarting",
|
|
2249
|
-
"modalCmd": "BiQ1zG_modalCmd",
|
|
2250
|
-
"aboutModal": "BiQ1zG_aboutModal",
|
|
2251
|
-
"failKindUninstall": "BiQ1zG_failKindUninstall",
|
|
2252
|
-
"result": "BiQ1zG_result",
|
|
2253
|
-
"resultCheck": "BiQ1zG_resultCheck",
|
|
2254
|
-
"detailLabel": "BiQ1zG_detailLabel",
|
|
2255
|
-
"detailModal": "BiQ1zG_detailModal",
|
|
2256
|
-
"noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
|
|
2257
|
-
"failClear": "BiQ1zG_failClear",
|
|
2258
|
-
"detailPath": "BiQ1zG_detailPath",
|
|
2259
|
-
"errorBox": "BiQ1zG_errorBox",
|
|
2260
|
-
"queuedHint": "BiQ1zG_queuedHint",
|
|
2261
|
-
"modalCopy": "BiQ1zG_modalCopy",
|
|
2262
|
-
"noticeList": "BiQ1zG_noticeList",
|
|
2263
|
-
"aboutContent": "BiQ1zG_aboutContent",
|
|
2264
|
-
"modalCancel": "BiQ1zG_modalCancel",
|
|
2265
|
-
"failedCopyHint": "BiQ1zG_failedCopyHint",
|
|
2266
|
-
"modalActions": "BiQ1zG_modalActions",
|
|
2267
|
-
"queueSection": "BiQ1zG_queueSection",
|
|
2268
|
-
"modalCloseIcon": "BiQ1zG_modalCloseIcon",
|
|
2269
|
-
"hubUpdateModal": "BiQ1zG_hubUpdateModal",
|
|
2270
|
-
"failRepo": "BiQ1zG_failRepo",
|
|
2271
|
-
"failHead": "BiQ1zG_failHead",
|
|
2272
|
-
"detailStars": "BiQ1zG_detailStars",
|
|
2273
|
-
"noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
|
|
2274
|
-
"toastFail": "BiQ1zG_toastFail",
|
|
2275
|
-
"modalCmdCopy": "BiQ1zG_modalCmdCopy",
|
|
2276
|
-
"cliOnlyHint": "BiQ1zG_cliOnlyHint",
|
|
2277
|
-
"aboutMeta": "BiQ1zG_aboutMeta",
|
|
2278
|
-
"queueRowTarget": "BiQ1zG_queueRowTarget",
|
|
2279
|
-
"progressTrack": "BiQ1zG_progressTrack"
|
|
2280
|
-
};
|
|
2281
|
-
//#endregion
|
|
2282
2358
|
//#region src/client/components/ui/icons.tsx
|
|
2283
2359
|
/**
|
|
2284
|
-
* DSH
|
|
2360
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2285
2361
|
* Website: https://dsh-plugin.org
|
|
2286
2362
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2287
2363
|
*
|
|
@@ -2327,6 +2403,32 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2327
2403
|
strokeLinejoin: "round"
|
|
2328
2404
|
}));
|
|
2329
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
|
+
}
|
|
2330
2432
|
/** 品牌 logo 图标:蓝紫渐变圆角方块 + 白色拼图块(2x2 错落),标题左侧的品牌标识。 */
|
|
2331
2433
|
function LogoIcon() {
|
|
2332
2434
|
return (0, react.createElement)("svg", {
|
|
@@ -2668,7 +2770,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2668
2770
|
//#endregion
|
|
2669
2771
|
//#region src/client/components/modals/ProgressView.tsx
|
|
2670
2772
|
/**
|
|
2671
|
-
* DSH
|
|
2773
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2672
2774
|
* Website: https://dsh-plugin.org
|
|
2673
2775
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2674
2776
|
*
|
|
@@ -2686,7 +2788,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2686
2788
|
//#endregion
|
|
2687
2789
|
//#region src/client/components/modals/modals.tsx
|
|
2688
2790
|
/**
|
|
2689
|
-
* DSH
|
|
2791
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2690
2792
|
* Website: https://dsh-plugin.org
|
|
2691
2793
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2692
2794
|
*
|
|
@@ -2924,7 +3026,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2924
3026
|
//#endregion
|
|
2925
3027
|
//#region src/client/logic/renderMarkdown.ts
|
|
2926
3028
|
/**
|
|
2927
|
-
* DSH
|
|
3029
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2928
3030
|
* Website: https://dsh-plugin.org
|
|
2929
3031
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2930
3032
|
*
|
|
@@ -3015,11 +3117,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3015
3117
|
//#endregion
|
|
3016
3118
|
//#region src/client/components/modals/AboutModal.tsx
|
|
3017
3119
|
/**
|
|
3018
|
-
* DSH
|
|
3120
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3019
3121
|
* Website: https://dsh-plugin.org
|
|
3020
3122
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3021
3123
|
*
|
|
3022
|
-
* 头部「关注我们」弹窗:介绍 DSH
|
|
3124
|
+
* 头部「关注我们」弹窗:介绍 DSH Plugin Hub 的功能定位 + 用户反馈群二维码。
|
|
3023
3125
|
* 内容以 Markdown 形式由 dsh-update Worker 的 /about 接口下发(key = hub:about),
|
|
3024
3126
|
* 客户端按接口返回渲染,不内置固定文案。
|
|
3025
3127
|
* 图片(反馈群二维码)经 renderMarkdown 的  语法嵌入,居中、最大高度受控。
|
|
@@ -3056,7 +3158,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3056
3158
|
//#endregion
|
|
3057
3159
|
//#region src/client/components/modals/HubUpdateModal.tsx
|
|
3058
3160
|
/**
|
|
3059
|
-
* DSH
|
|
3161
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3060
3162
|
* Website: https://dsh-plugin.org
|
|
3061
3163
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3062
3164
|
*
|
|
@@ -3123,7 +3225,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3123
3225
|
//#endregion
|
|
3124
3226
|
//#region src/client/components/modals/InstalledDetailModal.tsx
|
|
3125
3227
|
/**
|
|
3126
|
-
* DSH
|
|
3228
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3127
3229
|
* Website: https://dsh-plugin.org
|
|
3128
3230
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3129
3231
|
*
|
|
@@ -3205,7 +3307,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3205
3307
|
//#endregion
|
|
3206
3308
|
//#region src/client/components/modals/NotificationsModal.tsx
|
|
3207
3309
|
/**
|
|
3208
|
-
* DSH
|
|
3310
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3209
3311
|
* Website: https://dsh-plugin.org
|
|
3210
3312
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3211
3313
|
*
|
|
@@ -3247,7 +3349,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3247
3349
|
strokeLinecap: "round"
|
|
3248
3350
|
}));
|
|
3249
3351
|
}
|
|
3250
|
-
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 }) {
|
|
3251
3353
|
return (0, react.createElement)("div", {
|
|
3252
3354
|
className: Modal_module_css_default.overlay,
|
|
3253
3355
|
onClick: (e) => {
|
|
@@ -3330,7 +3432,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3330
3432
|
e.stopPropagation();
|
|
3331
3433
|
onUpdate(r.repo);
|
|
3332
3434
|
}
|
|
3333
|
-
}, 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", {
|
|
3334
3442
|
className: Modal_module_css_default.noticeRemove,
|
|
3335
3443
|
"aria-label": t("removeNotification"),
|
|
3336
3444
|
title: t("removeNotification"),
|
|
@@ -3373,7 +3481,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3373
3481
|
//#endregion
|
|
3374
3482
|
//#region src/client/components/layout/CatalogHeader.tsx
|
|
3375
3483
|
/**
|
|
3376
|
-
* DSH
|
|
3484
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3377
3485
|
* Website: https://dsh-plugin.org
|
|
3378
3486
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3379
3487
|
*
|
|
@@ -3435,7 +3543,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3435
3543
|
//#endregion
|
|
3436
3544
|
//#region src/client/components/layout/CategoryTabs.tsx
|
|
3437
3545
|
/**
|
|
3438
|
-
* DSH
|
|
3546
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3439
3547
|
* Website: https://dsh-plugin.org
|
|
3440
3548
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3441
3549
|
*
|
|
@@ -3457,7 +3565,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3457
3565
|
//#endregion
|
|
3458
3566
|
//#region src/client/components/layout/CatalogControls.tsx
|
|
3459
3567
|
/**
|
|
3460
|
-
* DSH
|
|
3568
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3461
3569
|
* Website: https://dsh-plugin.org
|
|
3462
3570
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3463
3571
|
*
|
|
@@ -3501,7 +3609,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3501
3609
|
}
|
|
3502
3610
|
//#endregion
|
|
3503
3611
|
//#region \0dsh-css:src/client/styles/List.module.css.mjs
|
|
3504
|
-
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}";
|
|
3505
3613
|
const tagId$9 = "dsh-plugin/List.module.css";
|
|
3506
3614
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$9) + "]") === null) {
|
|
3507
3615
|
const tag = document.createElement("style");
|
|
@@ -3511,43 +3619,43 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3511
3619
|
document.head.appendChild(tag);
|
|
3512
3620
|
}
|
|
3513
3621
|
var List_module_css_default = {
|
|
3514
|
-
"
|
|
3515
|
-
"
|
|
3516
|
-
"
|
|
3622
|
+
"fork": "_3XaZHa_fork",
|
|
3623
|
+
"installBtn": "_3XaZHa_installBtn",
|
|
3624
|
+
"detailBtn": "_3XaZHa_detailBtn",
|
|
3625
|
+
"moreSentinel": "_3XaZHa_moreSentinel",
|
|
3517
3626
|
"cardMain": "_3XaZHa_cardMain",
|
|
3518
|
-
"retryBtn": "_3XaZHa_retryBtn",
|
|
3519
|
-
"star": "_3XaZHa_star",
|
|
3520
3627
|
"cardSide": "_3XaZHa_cardSide",
|
|
3521
|
-
"
|
|
3522
|
-
"installBtnUpdate": "_3XaZHa_installBtnUpdate",
|
|
3523
|
-
"list": "_3XaZHa_list",
|
|
3524
|
-
"stats": "_3XaZHa_stats",
|
|
3525
|
-
"categoryBadge": "_3XaZHa_categoryBadge",
|
|
3526
|
-
"stateTitle": "_3XaZHa_stateTitle",
|
|
3527
|
-
"installBtnCopied": "_3XaZHa_installBtnCopied",
|
|
3528
|
-
"uninstallBtn": "_3XaZHa_uninstallBtn",
|
|
3529
|
-
"stateDesc": "_3XaZHa_stateDesc",
|
|
3530
|
-
"topics": "_3XaZHa_topics",
|
|
3531
|
-
"date": "_3XaZHa_date",
|
|
3628
|
+
"star": "_3XaZHa_star",
|
|
3532
3629
|
"card": "_3XaZHa_card",
|
|
3533
|
-
"
|
|
3534
|
-
"
|
|
3535
|
-
"footer": "_3XaZHa_footer",
|
|
3630
|
+
"installBtnCopied": "_3XaZHa_installBtnCopied",
|
|
3631
|
+
"categoryBadge": "_3XaZHa_categoryBadge",
|
|
3536
3632
|
"body": "_3XaZHa_body",
|
|
3537
|
-
"state": "_3XaZHa_state",
|
|
3538
|
-
"footLink": "_3XaZHa_footLink",
|
|
3539
|
-
"fork": "_3XaZHa_fork",
|
|
3540
|
-
"detailBtn": "_3XaZHa_detailBtn",
|
|
3541
|
-
"moreSentinel": "_3XaZHa_moreSentinel",
|
|
3542
3633
|
"versionBadge": "_3XaZHa_versionBadge",
|
|
3634
|
+
"topics": "_3XaZHa_topics",
|
|
3635
|
+
"installBtnUpdate": "_3XaZHa_installBtnUpdate",
|
|
3636
|
+
"stateDesc": "_3XaZHa_stateDesc",
|
|
3637
|
+
"desc": "_3XaZHa_desc",
|
|
3638
|
+
"cardHead": "_3XaZHa_cardHead",
|
|
3639
|
+
"list": "_3XaZHa_list",
|
|
3543
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",
|
|
3647
|
+
"stats": "_3XaZHa_stats",
|
|
3648
|
+
"retryBtn": "_3XaZHa_retryBtn",
|
|
3649
|
+
"cardTitle": "_3XaZHa_cardTitle",
|
|
3650
|
+
"date": "_3XaZHa_date",
|
|
3544
3651
|
"installBtnInstalled": "_3XaZHa_installBtnInstalled",
|
|
3545
|
-
"
|
|
3652
|
+
"verified": "_3XaZHa_verified",
|
|
3653
|
+
"stateTitle": "_3XaZHa_stateTitle"
|
|
3546
3654
|
};
|
|
3547
3655
|
//#endregion
|
|
3548
3656
|
//#region src/client/hooks/useIncrementalList.ts
|
|
3549
3657
|
/**
|
|
3550
|
-
* DSH
|
|
3658
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3551
3659
|
* Website: https://dsh-plugin.org
|
|
3552
3660
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3553
3661
|
*
|
|
@@ -3585,7 +3693,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3585
3693
|
//#endregion
|
|
3586
3694
|
//#region src/client/components/catalog/PluginCard.tsx
|
|
3587
3695
|
/**
|
|
3588
|
-
* DSH
|
|
3696
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3589
3697
|
* Website: https://dsh-plugin.org
|
|
3590
3698
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3591
3699
|
*
|
|
@@ -3636,7 +3744,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3636
3744
|
//#endregion
|
|
3637
3745
|
//#region src/client/components/catalog/CatalogList.tsx
|
|
3638
3746
|
/**
|
|
3639
|
-
* DSH
|
|
3747
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3640
3748
|
* Website: https://dsh-plugin.org
|
|
3641
3749
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3642
3750
|
*
|
|
@@ -3685,7 +3793,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3685
3793
|
//#endregion
|
|
3686
3794
|
//#region src/client/components/views/MarketView.tsx
|
|
3687
3795
|
/**
|
|
3688
|
-
* DSH
|
|
3796
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3689
3797
|
* Website: https://dsh-plugin.org
|
|
3690
3798
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3691
3799
|
*
|
|
@@ -3739,20 +3847,20 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3739
3847
|
document.head.appendChild(tag);
|
|
3740
3848
|
}
|
|
3741
3849
|
var SectionTabs_module_css_default = {
|
|
3742
|
-
"
|
|
3850
|
+
"noticeBtn": "_7tvizq_noticeBtn",
|
|
3743
3851
|
"root": "_7tvizq_root",
|
|
3744
3852
|
"tab": "_7tvizq_tab",
|
|
3745
3853
|
"tabCount": "_7tvizq_tabCount",
|
|
3746
|
-
"
|
|
3747
|
-
"noticeBtn": "_7tvizq_noticeBtn",
|
|
3854
|
+
"tabIcon": "_7tvizq_tabIcon",
|
|
3748
3855
|
"noticeIcon": "_7tvizq_noticeIcon",
|
|
3856
|
+
"tabActive": "_7tvizq_tabActive",
|
|
3749
3857
|
"noticeCount": "_7tvizq_noticeCount",
|
|
3750
|
-
"
|
|
3858
|
+
"tabCountActive": "_7tvizq_tabCountActive"
|
|
3751
3859
|
};
|
|
3752
3860
|
//#endregion
|
|
3753
3861
|
//#region src/client/components/layout/SectionTabs.tsx
|
|
3754
3862
|
/**
|
|
3755
|
-
* DSH
|
|
3863
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3756
3864
|
* Website: https://dsh-plugin.org
|
|
3757
3865
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3758
3866
|
*
|
|
@@ -3809,7 +3917,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3809
3917
|
}
|
|
3810
3918
|
//#endregion
|
|
3811
3919
|
//#region \0dsh-css:src/client/styles/InstalledView.module.css.mjs
|
|
3812
|
-
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)}";
|
|
3813
3921
|
const tagId$7 = "dsh-plugin/InstalledView.module.css";
|
|
3814
3922
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$7) + "]") === null) {
|
|
3815
3923
|
const tag = document.createElement("style");
|
|
@@ -3817,49 +3925,49 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3817
3925
|
tag.dataset.pluginCss = tagId$7;
|
|
3818
3926
|
tag.textContent = css$7;
|
|
3819
3927
|
document.head.appendChild(tag);
|
|
3820
|
-
}
|
|
3821
|
-
var InstalledView_module_css_default = {
|
|
3822
|
-
"searchWrap": "_1nXeGW_searchWrap",
|
|
3823
|
-
"emptyTitle": "_1nXeGW_emptyTitle",
|
|
3824
|
-
"toolbar": "_1nXeGW_toolbar",
|
|
3825
|
-
"segRow": "_1nXeGW_segRow",
|
|
3826
|
-
"empty": "_1nXeGW_empty",
|
|
3827
|
-
"rowDesc": "_1nXeGW_rowDesc",
|
|
3828
|
-
"statusDot": "_1nXeGW_statusDot",
|
|
3829
|
-
"statusInactive": "_1nXeGW_statusInactive",
|
|
3830
|
-
"versionBadge": "_1nXeGW_versionBadge",
|
|
3831
|
-
"rowActions": "_1nXeGW_rowActions",
|
|
3832
|
-
"list": "_1nXeGW_list",
|
|
3833
|
-
"searchInput": "_1nXeGW_searchInput",
|
|
3834
|
-
"segLabel": "_1nXeGW_segLabel",
|
|
3835
|
-
"rowRestart": "_1nXeGW_rowRestart",
|
|
3836
|
-
"rowUpdate": "_1nXeGW_rowUpdate",
|
|
3837
|
-
"segBtnActive": "_1nXeGW_segBtnActive",
|
|
3838
|
-
"row": "_1nXeGW_row",
|
|
3839
|
-
"rowTitle": "_1nXeGW_rowTitle",
|
|
3840
|
-
"rowTitleLine": "_1nXeGW_rowTitleLine",
|
|
3841
|
-
"exampleBadge": "_1nXeGW_exampleBadge",
|
|
3842
|
-
"rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
|
|
3843
|
-
"rowMain": "_1nXeGW_rowMain",
|
|
3844
|
-
"rowSourceTag": "_1nXeGW_rowSourceTag",
|
|
3845
|
-
"root": "_1nXeGW_root",
|
|
3846
|
-
"rowDetail": "_1nXeGW_rowDetail",
|
|
3928
|
+
}
|
|
3929
|
+
var InstalledView_module_css_default = {
|
|
3847
3930
|
"exampleRow": "_1nXeGW_exampleRow",
|
|
3848
3931
|
"segBtn": "_1nXeGW_segBtn",
|
|
3849
|
-
"statusPending": "_1nXeGW_statusPending",
|
|
3850
3932
|
"rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
|
|
3933
|
+
"searchWrap": "_1nXeGW_searchWrap",
|
|
3934
|
+
"updateBadge": "_1nXeGW_updateBadge",
|
|
3935
|
+
"rowSourceTag": "_1nXeGW_rowSourceTag",
|
|
3936
|
+
"segLabel": "_1nXeGW_segLabel",
|
|
3937
|
+
"rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
|
|
3938
|
+
"segGroup": "_1nXeGW_segGroup",
|
|
3939
|
+
"toolbar": "_1nXeGW_toolbar",
|
|
3940
|
+
"segRow": "_1nXeGW_segRow",
|
|
3851
3941
|
"rowMeta": "_1nXeGW_rowMeta",
|
|
3852
|
-
"
|
|
3942
|
+
"rowCategory": "_1nXeGW_rowCategory",
|
|
3943
|
+
"exampleBadge": "_1nXeGW_exampleBadge",
|
|
3944
|
+
"versionBadge": "_1nXeGW_versionBadge",
|
|
3853
3945
|
"rowRepo": "_1nXeGW_rowRepo",
|
|
3946
|
+
"rowUpdate": "_1nXeGW_rowUpdate",
|
|
3947
|
+
"rowUninstall": "_1nXeGW_rowUninstall",
|
|
3948
|
+
"rowRestart": "_1nXeGW_rowRestart",
|
|
3949
|
+
"searchInput": "_1nXeGW_searchInput",
|
|
3950
|
+
"list": "_1nXeGW_list",
|
|
3951
|
+
"statusInactive": "_1nXeGW_statusInactive",
|
|
3952
|
+
"rowMain": "_1nXeGW_rowMain",
|
|
3953
|
+
"rowActions": "_1nXeGW_rowActions",
|
|
3954
|
+
"segBtnActive": "_1nXeGW_segBtnActive",
|
|
3955
|
+
"rowTitleLine": "_1nXeGW_rowTitleLine",
|
|
3854
3956
|
"emptyDesc": "_1nXeGW_emptyDesc",
|
|
3855
|
-
"
|
|
3856
|
-
"
|
|
3857
|
-
"
|
|
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"
|
|
3858
3966
|
};
|
|
3859
3967
|
//#endregion
|
|
3860
3968
|
//#region src/client/components/views/InstalledView.tsx
|
|
3861
3969
|
/**
|
|
3862
|
-
* DSH
|
|
3970
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3863
3971
|
* Website: https://dsh-plugin.org
|
|
3864
3972
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3865
3973
|
*
|
|
@@ -4085,7 +4193,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4085
4193
|
}
|
|
4086
4194
|
//#endregion
|
|
4087
4195
|
//#region \0dsh-css:src/client/styles/CustomInstallView.module.css.mjs
|
|
4088
|
-
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}";
|
|
4089
4197
|
const tagId$6 = "dsh-plugin/CustomInstallView.module.css";
|
|
4090
4198
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$6) + "]") === null) {
|
|
4091
4199
|
const tag = document.createElement("style");
|
|
@@ -4095,38 +4203,43 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4095
4203
|
document.head.appendChild(tag);
|
|
4096
4204
|
}
|
|
4097
4205
|
var CustomInstallView_module_css_default = {
|
|
4098
|
-
"
|
|
4099
|
-
"
|
|
4100
|
-
"
|
|
4101
|
-
"
|
|
4206
|
+
"root": "zISxCG_root",
|
|
4207
|
+
"helpBody": "zISxCG_helpBody",
|
|
4208
|
+
"installHelpBtn": "zISxCG_installHelpBtn",
|
|
4209
|
+
"installRow": "zISxCG_installRow",
|
|
4102
4210
|
"installCardHead": "zISxCG_installCardHead",
|
|
4103
|
-
"
|
|
4104
|
-
"
|
|
4211
|
+
"helpCmd": "zISxCG_helpCmd",
|
|
4212
|
+
"helpNote": "zISxCG_helpNote",
|
|
4213
|
+
"helpLine": "zISxCG_helpLine",
|
|
4214
|
+
"installExample": "zISxCG_installExample",
|
|
4215
|
+
"installCardDisabled": "zISxCG_installCardDisabled",
|
|
4216
|
+
"desc": "zISxCG_desc",
|
|
4105
4217
|
"installCard": "zISxCG_installCard",
|
|
4106
|
-
"
|
|
4218
|
+
"channelOff": "zISxCG_channelOff",
|
|
4107
4219
|
"installError": "zISxCG_installError",
|
|
4108
|
-
"installCardDisabled": "zISxCG_installCardDisabled",
|
|
4109
4220
|
"installInputError": "zISxCG_installInputError",
|
|
4221
|
+
"channelOffBtn": "zISxCG_channelOffBtn",
|
|
4222
|
+
"installInput": "zISxCG_installInput",
|
|
4223
|
+
"installBtn": "zISxCG_installBtn",
|
|
4224
|
+
"channelOffText": "zISxCG_channelOffText",
|
|
4110
4225
|
"installCards": "zISxCG_installCards",
|
|
4111
|
-
"
|
|
4112
|
-
"installRow": "zISxCG_installRow",
|
|
4113
|
-
"desc": "zISxCG_desc"
|
|
4226
|
+
"installLabel": "zISxCG_installLabel"
|
|
4114
4227
|
};
|
|
4115
4228
|
//#endregion
|
|
4116
4229
|
//#region src/client/components/views/CustomInstallView.tsx
|
|
4117
4230
|
/**
|
|
4118
|
-
* DSH
|
|
4231
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
4119
4232
|
* Website: https://dsh-plugin.org
|
|
4120
4233
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
4121
4234
|
*
|
|
4122
4235
|
* Custom install view: a standalone top-level section for manually
|
|
4123
4236
|
* installing npm packages or GitHub sources outside the catalog. Three
|
|
4124
|
-
* installer cards, one per channel — npm package
|
|
4125
|
-
* install command
|
|
4126
|
-
*
|
|
4127
|
-
* input and its own format check.
|
|
4128
|
-
* has to guess which format goes
|
|
4129
|
-
* 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.
|
|
4130
4243
|
*
|
|
4131
4244
|
* Pure presentational: owns only the three local input/error states; the
|
|
4132
4245
|
* actual install (custom source, gated by the security toggles) bubbles up
|
|
@@ -4138,35 +4251,76 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4138
4251
|
const GITHUB_BARE_RE = /^[A-Za-z0-9._-]+\/[A-Za-z0-9._-]+$/;
|
|
4139
4252
|
/** npm 包名(含 @scope/pkg) */
|
|
4140
4253
|
const NPM_PACKAGE_RE = /^(?:@[a-z0-9._-]+\/)?[a-z0-9._-]+$/;
|
|
4141
|
-
/** DSH
|
|
4142
|
-
*
|
|
4143
|
-
|
|
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;
|
|
4144
4258
|
/** npm 全局安装命令(官方 README 格式,如 `npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tui`)——
|
|
4145
4259
|
* 提取 -g 之后的包列表;任一包名非法返回 null(交给格式错误提示)。与 server 端 globalNpmPackagesOf 口径一致。 */
|
|
4146
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;
|
|
4147
4264
|
function installTargetOf(raw) {
|
|
4148
4265
|
const input = raw.trim();
|
|
4149
4266
|
const match = DSH_PLUGIN_CMD_RE.exec(input);
|
|
4150
4267
|
return match !== null ? match[1].trim() : input;
|
|
4151
4268
|
}
|
|
4152
|
-
|
|
4153
|
-
|
|
4154
|
-
|
|
4155
|
-
|
|
4156
|
-
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 !== "");
|
|
4157
4273
|
if (packages.length === 0 || packages.some((p) => !NPM_PACKAGE_RE.test(p) || p.startsWith("-"))) return null;
|
|
4158
4274
|
return packages;
|
|
4159
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
|
+
}
|
|
4160
4302
|
function isGitHubInput(raw) {
|
|
4161
4303
|
const input = raw.trim();
|
|
4162
4304
|
return GITHUB_URL_RE.test(input) || GITHUB_BARE_RE.test(input);
|
|
4163
4305
|
}
|
|
4164
|
-
function isNpmInput(raw) {
|
|
4165
|
-
return NPM_PACKAGE_RE.test(raw.trim());
|
|
4166
|
-
}
|
|
4167
4306
|
function isDshCommand(raw) {
|
|
4168
4307
|
return DSH_PLUGIN_CMD_RE.test(raw.trim());
|
|
4169
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
|
+
};
|
|
4170
4324
|
function CustomInstallView({ t, onInstallCustom, enableNpm, enableGit, enableDsh, onOpenSettings }) {
|
|
4171
4325
|
/** 自定义安装:NPM 包输入与格式错误('' = 无错误) */
|
|
4172
4326
|
const [npmQuery, setNpmQuery] = (0, react.useState)("");
|
|
@@ -4177,6 +4331,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4177
4331
|
/** 自定义安装:DSH 命令输入与格式错误('' = 无错误) */
|
|
4178
4332
|
const [cmdQuery, setCmdQuery] = (0, react.useState)("");
|
|
4179
4333
|
const [cmdError, setCmdError] = (0, react.useState)("");
|
|
4334
|
+
/** 卡片标题旁「帮助」弹窗:null = 未打开;'npm' | 'git' | 'cmd' = 打开对应卡片的格式清单 */
|
|
4335
|
+
const [helpFor, setHelpFor] = (0, react.useState)(null);
|
|
4180
4336
|
/** 通道关闭提示行:开关关掉后替代示例与输入行,引导去设置打开 */
|
|
4181
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", {
|
|
4182
4338
|
type: "button",
|
|
@@ -4184,13 +4340,15 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4184
4340
|
onClick: onOpenSettings
|
|
4185
4341
|
}, t("goToSettings")));
|
|
4186
4342
|
const submitNpm = () => {
|
|
4187
|
-
const
|
|
4188
|
-
if (!
|
|
4189
|
-
|
|
4343
|
+
const raw = npmQuery.trim();
|
|
4344
|
+
if (!raw) return;
|
|
4345
|
+
const parsed = parseNpmInput(raw);
|
|
4346
|
+
if (parsed === null) {
|
|
4190
4347
|
setNpmError(t("npmInstallInvalid"));
|
|
4191
4348
|
return;
|
|
4192
4349
|
}
|
|
4193
|
-
onInstallCustom(
|
|
4350
|
+
if (parsed.kind === "global") onInstallCustom(raw, { globalNpm: parsed.pkgs });
|
|
4351
|
+
else onInstallCustom(parsed.target);
|
|
4194
4352
|
setNpmQuery("");
|
|
4195
4353
|
setNpmError("");
|
|
4196
4354
|
};
|
|
@@ -4208,13 +4366,6 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4208
4366
|
const submitCmd = () => {
|
|
4209
4367
|
const raw = cmdQuery.trim();
|
|
4210
4368
|
if (!raw) return;
|
|
4211
|
-
const globalPkgs = parseNpmGlobalPackages(raw);
|
|
4212
|
-
if (globalPkgs !== null) {
|
|
4213
|
-
onInstallCustom(raw, { globalNpm: globalPkgs });
|
|
4214
|
-
setCmdQuery("");
|
|
4215
|
-
setCmdError("");
|
|
4216
|
-
return;
|
|
4217
|
-
}
|
|
4218
4369
|
if (!isDshCommand(raw)) {
|
|
4219
4370
|
setCmdError(t("dshCmdInvalid"));
|
|
4220
4371
|
return;
|
|
@@ -4223,8 +4374,14 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4223
4374
|
setCmdQuery("");
|
|
4224
4375
|
setCmdError("");
|
|
4225
4376
|
};
|
|
4226
|
-
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"))
|
|
4227
|
-
|
|
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")),
|
|
4228
4385
|
(0, react.createElement)("div", { className: CustomInstallView_module_css_default.installRow }, (0, react.createElement)("input", {
|
|
4229
4386
|
className: npmError ? `${CustomInstallView_module_css_default.installInput} ${CustomInstallView_module_css_default.installInputError}` : CustomInstallView_module_css_default.installInput,
|
|
4230
4387
|
type: "text",
|
|
@@ -4245,7 +4402,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4245
4402
|
onClick: submitNpm
|
|
4246
4403
|
}, t("installCliBtn"))),
|
|
4247
4404
|
npmError ? (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installError }, npmError) : null
|
|
4248
|
-
]), (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 : [
|
|
4249
4412
|
(0, react.createElement)("div", { className: CustomInstallView_module_css_default.installExample }, t("gitInstallExample")),
|
|
4250
4413
|
(0, react.createElement)("div", { className: CustomInstallView_module_css_default.installRow }, (0, react.createElement)("input", {
|
|
4251
4414
|
className: gitError ? `${CustomInstallView_module_css_default.installInput} ${CustomInstallView_module_css_default.installInputError}` : CustomInstallView_module_css_default.installInput,
|
|
@@ -4267,7 +4430,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4267
4430
|
onClick: submitGit
|
|
4268
4431
|
}, t("installCliBtn"))),
|
|
4269
4432
|
gitError ? (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installError }, gitError) : null
|
|
4270
|
-
]), (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 : [
|
|
4271
4440
|
(0, react.createElement)("div", { className: CustomInstallView_module_css_default.installExample }, t("dshCmdExample")),
|
|
4272
4441
|
(0, react.createElement)("div", { className: CustomInstallView_module_css_default.installRow }, (0, react.createElement)("input", {
|
|
4273
4442
|
className: cmdError ? `${CustomInstallView_module_css_default.installInput} ${CustomInstallView_module_css_default.installInputError}` : CustomInstallView_module_css_default.installInput,
|
|
@@ -4289,7 +4458,26 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4289
4458
|
onClick: submitCmd
|
|
4290
4459
|
}, t("installCliBtn"))),
|
|
4291
4460
|
cmdError ? (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installError }, cmdError) : null
|
|
4292
|
-
])))
|
|
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);
|
|
4293
4481
|
}
|
|
4294
4482
|
//#endregion
|
|
4295
4483
|
//#region \0dsh-css:src/client/styles/SettingsView.module.css.mjs
|
|
@@ -4303,26 +4491,26 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4303
4491
|
document.head.appendChild(tag);
|
|
4304
4492
|
}
|
|
4305
4493
|
var SettingsView_module_css_default = {
|
|
4306
|
-
"
|
|
4307
|
-
"
|
|
4494
|
+
"pageTitle": "_506LLG_pageTitle",
|
|
4495
|
+
"settingControl": "_506LLG_settingControl",
|
|
4496
|
+
"settingRowStack": "_506LLG_settingRowStack",
|
|
4497
|
+
"navItem": "_506LLG_navItem",
|
|
4498
|
+
"pageDesc": "_506LLG_pageDesc",
|
|
4499
|
+
"settingControlStack": "_506LLG_settingControlStack",
|
|
4500
|
+
"navIcon": "_506LLG_navIcon",
|
|
4308
4501
|
"resetBtn": "_506LLG_resetBtn",
|
|
4309
|
-
"controlDropdown": "_506LLG_controlDropdown",
|
|
4310
4502
|
"root": "_506LLG_root",
|
|
4311
|
-
"settingRow": "_506LLG_settingRow",
|
|
4312
|
-
"settingControlStack": "_506LLG_settingControlStack",
|
|
4313
4503
|
"sidebar": "_506LLG_sidebar",
|
|
4314
|
-
"
|
|
4504
|
+
"settingLabel": "_506LLG_settingLabel",
|
|
4505
|
+
"card": "_506LLG_card",
|
|
4315
4506
|
"settingDesc": "_506LLG_settingDesc",
|
|
4316
|
-
"
|
|
4317
|
-
"
|
|
4318
|
-
"
|
|
4507
|
+
"textInput": "_506LLG_textInput",
|
|
4508
|
+
"pageHeader": "_506LLG_pageHeader",
|
|
4509
|
+
"settingRow": "_506LLG_settingRow",
|
|
4319
4510
|
"content": "_506LLG_content",
|
|
4320
4511
|
"settingTitle": "_506LLG_settingTitle",
|
|
4321
|
-
"
|
|
4322
|
-
"
|
|
4323
|
-
"pageHeader": "_506LLG_pageHeader",
|
|
4324
|
-
"textInput": "_506LLG_textInput",
|
|
4325
|
-
"navItem": "_506LLG_navItem"
|
|
4512
|
+
"controlDropdown": "_506LLG_controlDropdown",
|
|
4513
|
+
"navItemActive": "_506LLG_navItemActive"
|
|
4326
4514
|
};
|
|
4327
4515
|
//#endregion
|
|
4328
4516
|
//#region \0dsh-css:src/client/styles/Dropdown.module.css.mjs
|
|
@@ -4336,22 +4524,22 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4336
4524
|
document.head.appendChild(tag);
|
|
4337
4525
|
}
|
|
4338
4526
|
var Dropdown_module_css_default = {
|
|
4527
|
+
"dropdownCountActive": "B_Gxsq_dropdownCountActive",
|
|
4528
|
+
"dropdownItem": "B_Gxsq_dropdownItem",
|
|
4339
4529
|
"dropdownCount": "B_Gxsq_dropdownCount",
|
|
4530
|
+
"dropdownItemActive": "B_Gxsq_dropdownItemActive",
|
|
4340
4531
|
"dropdownBtn": "B_Gxsq_dropdownBtn",
|
|
4532
|
+
"dropdownPanel": "B_Gxsq_dropdownPanel",
|
|
4341
4533
|
"dropdownItemLabel": "B_Gxsq_dropdownItemLabel",
|
|
4342
|
-
"
|
|
4343
|
-
"dropdownItemActive": "B_Gxsq_dropdownItemActive",
|
|
4534
|
+
"dropdownArrow": "B_Gxsq_dropdownArrow",
|
|
4344
4535
|
"dropdown": "B_Gxsq_dropdown",
|
|
4345
|
-
"dropdownCountActive": "B_Gxsq_dropdownCountActive",
|
|
4346
|
-
"dropdownLabel": "B_Gxsq_dropdownLabel",
|
|
4347
4536
|
"dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen",
|
|
4348
|
-
"
|
|
4349
|
-
"dropdownPanel": "B_Gxsq_dropdownPanel"
|
|
4537
|
+
"dropdownLabel": "B_Gxsq_dropdownLabel"
|
|
4350
4538
|
};
|
|
4351
4539
|
//#endregion
|
|
4352
4540
|
//#region src/client/components/ui/Dropdown.tsx
|
|
4353
4541
|
/**
|
|
4354
|
-
* DSH
|
|
4542
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
4355
4543
|
* Website: https://dsh-plugin.org
|
|
4356
4544
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
4357
4545
|
*
|
|
@@ -4420,13 +4608,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4420
4608
|
}
|
|
4421
4609
|
var Toggle_module_css_default = {
|
|
4422
4610
|
"toggle": "k-cD4G_toggle",
|
|
4423
|
-
"
|
|
4424
|
-
"
|
|
4611
|
+
"toggleOn": "k-cD4G_toggleOn",
|
|
4612
|
+
"knob": "k-cD4G_knob"
|
|
4425
4613
|
};
|
|
4426
4614
|
//#endregion
|
|
4427
4615
|
//#region src/client/components/ui/Toggle.tsx
|
|
4428
4616
|
/**
|
|
4429
|
-
* DSH
|
|
4617
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
4430
4618
|
* Website: https://dsh-plugin.org
|
|
4431
4619
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
4432
4620
|
*
|
|
@@ -4457,34 +4645,34 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4457
4645
|
document.head.appendChild(tag);
|
|
4458
4646
|
}
|
|
4459
4647
|
var DiagnosticsView_module_css_default = {
|
|
4460
|
-
"envRow": "k9eRya_envRow",
|
|
4461
|
-
"envDesc": "k9eRya_envDesc",
|
|
4462
|
-
"envLabel": "k9eRya_envLabel",
|
|
4463
|
-
"badge": "k9eRya_badge",
|
|
4464
4648
|
"head": "k9eRya_head",
|
|
4465
|
-
"
|
|
4649
|
+
"headHint": "k9eRya_headHint",
|
|
4466
4650
|
"meta": "k9eRya_meta",
|
|
4467
|
-
"
|
|
4468
|
-
"summaryFail": "k9eRya_summaryFail",
|
|
4651
|
+
"summaryOk": "k9eRya_summaryOk",
|
|
4469
4652
|
"envTitle": "k9eRya_envTitle",
|
|
4653
|
+
"summaryFail": "k9eRya_summaryFail",
|
|
4654
|
+
"badgeRunning": "k9eRya_badgeRunning",
|
|
4655
|
+
"badgeIdle": "k9eRya_badgeIdle",
|
|
4656
|
+
"badge": "k9eRya_badge",
|
|
4657
|
+
"panel": "k9eRya_panel",
|
|
4658
|
+
"envLabel": "k9eRya_envLabel",
|
|
4470
4659
|
"display": "k9eRya_display",
|
|
4471
|
-
"summaryRunning": "k9eRya_summaryRunning",
|
|
4472
|
-
"badgeOk": "k9eRya_badgeOk",
|
|
4473
|
-
"diagPulse": "k9eRya_diagPulse",
|
|
4474
|
-
"envCopyBtn": "k9eRya_envCopyBtn",
|
|
4475
4660
|
"summary": "k9eRya_summary",
|
|
4661
|
+
"badgeFail": "k9eRya_badgeFail",
|
|
4662
|
+
"summaryRunning": "k9eRya_summaryRunning",
|
|
4476
4663
|
"runBtn": "k9eRya_runBtn",
|
|
4477
|
-
"badgeRunning": "k9eRya_badgeRunning",
|
|
4478
|
-
"summaryOk": "k9eRya_summaryOk",
|
|
4479
4664
|
"name": "k9eRya_name",
|
|
4480
|
-
"
|
|
4481
|
-
"
|
|
4482
|
-
"
|
|
4665
|
+
"envCopyBtn": "k9eRya_envCopyBtn",
|
|
4666
|
+
"badgeOk": "k9eRya_badgeOk",
|
|
4667
|
+
"envDesc": "k9eRya_envDesc",
|
|
4668
|
+
"row": "k9eRya_row",
|
|
4669
|
+
"diagPulse": "k9eRya_diagPulse",
|
|
4670
|
+
"envRow": "k9eRya_envRow"
|
|
4483
4671
|
};
|
|
4484
4672
|
//#endregion
|
|
4485
4673
|
//#region src/client/components/views/DiagnosticsView.tsx
|
|
4486
4674
|
/**
|
|
4487
|
-
* DSH
|
|
4675
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
4488
4676
|
* Website: https://dsh-plugin.org
|
|
4489
4677
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
4490
4678
|
*
|
|
@@ -4498,7 +4686,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4498
4686
|
/** 系统版本文本:提交 Issue 时粘贴到正文,方便作者复现。 */
|
|
4499
4687
|
function formatEnv(env) {
|
|
4500
4688
|
return [
|
|
4501
|
-
`DSH
|
|
4689
|
+
`DSH Plugin Hub ${PLUGIN_VERSION}`,
|
|
4502
4690
|
`DSH ${env.dshVersion ?? "unknown"}`,
|
|
4503
4691
|
`Node ${env.nodeVersion}`,
|
|
4504
4692
|
`${env.platform} ${env.arch} (${env.release})`,
|
|
@@ -4637,61 +4825,61 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4637
4825
|
document.head.appendChild(tag);
|
|
4638
4826
|
}
|
|
4639
4827
|
var LogsView_module_css_default = {
|
|
4640
|
-
"
|
|
4641
|
-
"
|
|
4642
|
-
"
|
|
4643
|
-
"
|
|
4828
|
+
"pathDialogHint": "_3j77BW_pathDialogHint",
|
|
4829
|
+
"actions": "_3j77BW_actions",
|
|
4830
|
+
"message": "_3j77BW_message",
|
|
4831
|
+
"pathDraft": "_3j77BW_pathDraft",
|
|
4644
4832
|
"pathDialogDesc": "_3j77BW_pathDialogDesc",
|
|
4645
|
-
"
|
|
4646
|
-
"
|
|
4833
|
+
"head": "_3j77BW_head",
|
|
4834
|
+
"filterChip": "_3j77BW_filterChip",
|
|
4647
4835
|
"search": "_3j77BW_search",
|
|
4648
|
-
"foot": "_3j77BW_foot",
|
|
4649
|
-
"pathDialogReset": "_3j77BW_pathDialogReset",
|
|
4650
|
-
"catBadge": "_3j77BW_catBadge",
|
|
4651
|
-
"pathText": "_3j77BW_pathText",
|
|
4652
|
-
"catUpdate": "_3j77BW_catUpdate",
|
|
4653
|
-
"logList": "_3j77BW_logList",
|
|
4654
|
-
"headHint": "_3j77BW_headHint",
|
|
4655
|
-
"pathDialogFoot": "_3j77BW_pathDialogFoot",
|
|
4656
|
-
"badgeDebug": "_3j77BW_badgeDebug",
|
|
4657
4836
|
"more": "_3j77BW_more",
|
|
4658
|
-
"pathDialogRow": "_3j77BW_pathDialogRow",
|
|
4659
|
-
"filterBar": "_3j77BW_filterBar",
|
|
4660
|
-
"footCount": "_3j77BW_footCount",
|
|
4661
|
-
"moreEnd": "_3j77BW_moreEnd",
|
|
4662
4837
|
"badgeError": "_3j77BW_badgeError",
|
|
4663
|
-
"
|
|
4664
|
-
"btn": "_3j77BW_btn",
|
|
4838
|
+
"catInstall": "_3j77BW_catInstall",
|
|
4665
4839
|
"event": "_3j77BW_event",
|
|
4666
|
-
"previewRow": "_3j77BW_previewRow",
|
|
4667
|
-
"message": "_3j77BW_message",
|
|
4668
|
-
"head": "_3j77BW_head",
|
|
4669
|
-
"filterChip": "_3j77BW_filterChip",
|
|
4670
|
-
"footActions": "_3j77BW_footActions",
|
|
4671
|
-
"catDiagnostics": "_3j77BW_catDiagnostics",
|
|
4672
|
-
"pathDialog": "_3j77BW_pathDialog",
|
|
4673
|
-
"panel": "_3j77BW_panel",
|
|
4674
|
-
"pathDialogHint": "_3j77BW_pathDialogHint",
|
|
4675
|
-
"entry": "_3j77BW_entry",
|
|
4676
|
-
"badgeWarn": "_3j77BW_badgeWarn",
|
|
4677
4840
|
"badge": "_3j77BW_badge",
|
|
4678
|
-
"
|
|
4679
|
-
"
|
|
4680
|
-
"
|
|
4681
|
-
"list": "_3j77BW_list",
|
|
4682
|
-
"catUninstall": "_3j77BW_catUninstall",
|
|
4841
|
+
"catUpdate": "_3j77BW_catUpdate",
|
|
4842
|
+
"badgeInfo": "_3j77BW_badgeInfo",
|
|
4843
|
+
"footCount": "_3j77BW_footCount",
|
|
4683
4844
|
"catSystem": "_3j77BW_catSystem",
|
|
4684
|
-
"
|
|
4845
|
+
"time": "_3j77BW_time",
|
|
4846
|
+
"filterBar": "_3j77BW_filterBar",
|
|
4847
|
+
"badgeWarn": "_3j77BW_badgeWarn",
|
|
4848
|
+
"foot": "_3j77BW_foot",
|
|
4849
|
+
"btnPrimary": "_3j77BW_btnPrimary",
|
|
4850
|
+
"footFail": "_3j77BW_footFail",
|
|
4851
|
+
"footActions": "_3j77BW_footActions",
|
|
4852
|
+
"btn": "_3j77BW_btn",
|
|
4853
|
+
"badgeDebug": "_3j77BW_badgeDebug",
|
|
4854
|
+
"linkBtn": "_3j77BW_linkBtn",
|
|
4855
|
+
"pathDialog": "_3j77BW_pathDialog",
|
|
4856
|
+
"footPath": "_3j77BW_footPath",
|
|
4857
|
+
"badgeSuccess": "_3j77BW_badgeSuccess",
|
|
4685
4858
|
"pathLabel": "_3j77BW_pathLabel",
|
|
4859
|
+
"catBadge": "_3j77BW_catBadge",
|
|
4860
|
+
"headHint": "_3j77BW_headHint",
|
|
4861
|
+
"logList": "_3j77BW_logList",
|
|
4686
4862
|
"filterChipActive": "_3j77BW_filterChipActive",
|
|
4687
|
-
"
|
|
4688
|
-
"
|
|
4689
|
-
"
|
|
4863
|
+
"catUninstall": "_3j77BW_catUninstall",
|
|
4864
|
+
"moreEnd": "_3j77BW_moreEnd",
|
|
4865
|
+
"list": "_3j77BW_list",
|
|
4866
|
+
"entry": "_3j77BW_entry",
|
|
4867
|
+
"pathDialogFoot": "_3j77BW_pathDialogFoot",
|
|
4868
|
+
"pathDialogReset": "_3j77BW_pathDialogReset",
|
|
4869
|
+
"pathDialogRow": "_3j77BW_pathDialogRow",
|
|
4870
|
+
"searchInput": "_3j77BW_searchInput",
|
|
4871
|
+
"catSettings": "_3j77BW_catSettings",
|
|
4872
|
+
"panel": "_3j77BW_panel",
|
|
4873
|
+
"pathRow": "_3j77BW_pathRow",
|
|
4874
|
+
"pathText": "_3j77BW_pathText",
|
|
4875
|
+
"catDiagnostics": "_3j77BW_catDiagnostics",
|
|
4876
|
+
"previewRow": "_3j77BW_previewRow",
|
|
4877
|
+
"empty": "_3j77BW_empty"
|
|
4690
4878
|
};
|
|
4691
4879
|
//#endregion
|
|
4692
4880
|
//#region src/client/components/modals/LogsModal.tsx
|
|
4693
4881
|
/**
|
|
4694
|
-
* DSH
|
|
4882
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
4695
4883
|
* Website: https://dsh-plugin.org
|
|
4696
4884
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
4697
4885
|
*
|
|
@@ -4964,7 +5152,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4964
5152
|
//#endregion
|
|
4965
5153
|
//#region src/client/components/modals/LogsPathModal.tsx
|
|
4966
5154
|
/**
|
|
4967
|
-
* DSH
|
|
5155
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
4968
5156
|
* Website: https://dsh-plugin.org
|
|
4969
5157
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
4970
5158
|
*
|
|
@@ -5079,7 +5267,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5079
5267
|
//#endregion
|
|
5080
5268
|
//#region src/client/components/views/LogsView.tsx
|
|
5081
5269
|
/**
|
|
5082
|
-
* DSH
|
|
5270
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
5083
5271
|
* Website: https://dsh-plugin.org
|
|
5084
5272
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
5085
5273
|
*
|
|
@@ -5203,7 +5391,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5203
5391
|
//#endregion
|
|
5204
5392
|
//#region src/client/components/views/SettingsView.tsx
|
|
5205
5393
|
/**
|
|
5206
|
-
* DSH
|
|
5394
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
5207
5395
|
* Website: https://dsh-plugin.org
|
|
5208
5396
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
5209
5397
|
*
|
|
@@ -5419,7 +5607,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5419
5607
|
//#endregion
|
|
5420
5608
|
//#region src/client/components/PluginHubSection.tsx
|
|
5421
5609
|
/**
|
|
5422
|
-
* DSH
|
|
5610
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
5423
5611
|
* Website: https://dsh-plugin.org
|
|
5424
5612
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
5425
5613
|
*
|
|
@@ -5477,6 +5665,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5477
5665
|
const [notifications, setNotifications] = (0, react.useState)(() => loadNotifications());
|
|
5478
5666
|
/** 通知中心弹窗:一级导航「设置」tab 后边的铃铛入口按钮打开 */
|
|
5479
5667
|
const [showNotifications, setShowNotifications] = (0, react.useState)(false);
|
|
5668
|
+
/** 「忽略本次更新」确认弹窗:{ repo, version };null = 关闭 */
|
|
5669
|
+
const [ignoreTarget, setIgnoreTarget] = (0, react.useState)(null);
|
|
5480
5670
|
/** 宿主机器环境快照:提交 bug 的 issue 正文附带;取不到为 null(链接少环境段,不阻塞) */
|
|
5481
5671
|
const [env, setEnv] = (0, react.useState)(null);
|
|
5482
5672
|
(0, react.useEffect)(() => {
|
|
@@ -5545,24 +5735,35 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5545
5735
|
} : null;
|
|
5546
5736
|
}
|
|
5547
5737
|
});
|
|
5548
|
-
|
|
5549
|
-
|
|
5550
|
-
|
|
5551
|
-
|
|
5552
|
-
startupCheckedRef.current = true;
|
|
5553
|
-
if (!hubSettings.checkUpdatesOnStart) return;
|
|
5738
|
+
/** 补齐更新提醒:把「当前有更新但通知中心还没有」的插件补写进通知(repo+version 去重)。
|
|
5739
|
+
* 返回本次实际新增的条数(0 = 无可更新或全部已提示过)。启动检查与打开通知中心共用,
|
|
5740
|
+
* 保证通知中心始终反映可更新状态:同一版本只一条、清空/删除后重开恢复、更新完成后消失。 */
|
|
5741
|
+
const syncUpdateNotices = () => {
|
|
5554
5742
|
const updatable = catalog.installedItems.filter((i) => i.hasUpdate && i.plugin);
|
|
5555
|
-
if (updatable.length === 0) return;
|
|
5556
|
-
|
|
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({
|
|
5557
5749
|
kind: "update",
|
|
5558
5750
|
repo: item.repo,
|
|
5559
5751
|
version: item.catalogVersion ?? void 0
|
|
5560
5752
|
});
|
|
5561
5753
|
setNotifications(loadNotifications());
|
|
5562
|
-
|
|
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({
|
|
5563
5764
|
id: Date.now(),
|
|
5564
5765
|
kind: "updates",
|
|
5565
|
-
n:
|
|
5766
|
+
n: added
|
|
5566
5767
|
});
|
|
5567
5768
|
}, [
|
|
5568
5769
|
settingsReady,
|
|
@@ -5573,7 +5774,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5573
5774
|
queue
|
|
5574
5775
|
]);
|
|
5575
5776
|
(0, react.useEffect)(() => {
|
|
5576
|
-
if (!confirmPlugin && !confirmCustomTarget && !confirmGlobalNpm && !uninstallPlugin && !uninstallItem && !detailItem && !showHubUpdate && !showAbout && !showNotifications) return;
|
|
5777
|
+
if (!confirmPlugin && !confirmCustomTarget && !confirmGlobalNpm && !uninstallPlugin && !uninstallItem && !detailItem && !showHubUpdate && !showAbout && !showNotifications && !ignoreTarget) return;
|
|
5577
5778
|
const onKey = (e) => {
|
|
5578
5779
|
if (e.key === "Escape") {
|
|
5579
5780
|
setConfirmPlugin(null);
|
|
@@ -5586,6 +5787,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5586
5787
|
setShowHubUpdate(false);
|
|
5587
5788
|
setShowAbout(false);
|
|
5588
5789
|
setShowNotifications(false);
|
|
5790
|
+
setIgnoreTarget(null);
|
|
5589
5791
|
}
|
|
5590
5792
|
};
|
|
5591
5793
|
window.addEventListener("keydown", onKey);
|
|
@@ -5598,7 +5800,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5598
5800
|
detailItem,
|
|
5599
5801
|
showHubUpdate,
|
|
5600
5802
|
showAbout,
|
|
5601
|
-
showNotifications
|
|
5803
|
+
showNotifications,
|
|
5804
|
+
ignoreTarget
|
|
5602
5805
|
]);
|
|
5603
5806
|
(0, react.useEffect)(() => {
|
|
5604
5807
|
if (!toast) return;
|
|
@@ -5712,7 +5915,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5712
5915
|
statsVerified,
|
|
5713
5916
|
onToggleLang: toggleLang,
|
|
5714
5917
|
hubUpdate: catalog.hubHasUpdate,
|
|
5715
|
-
onVersionClick: () =>
|
|
5918
|
+
onVersionClick: () => {
|
|
5919
|
+
catalog.refreshHub().then(() => setShowHubUpdate(true));
|
|
5920
|
+
},
|
|
5716
5921
|
onAboutClick: () => setShowAbout(true)
|
|
5717
5922
|
}), (0, react.createElement)("div", { className: Header_module_css_default.tabsRow }, (0, react.createElement)(SectionTabs, {
|
|
5718
5923
|
view,
|
|
@@ -5720,7 +5925,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5720
5925
|
installedCount: catalog.installedItems.length,
|
|
5721
5926
|
t,
|
|
5722
5927
|
noticeCount: notifications.length + queue.queue.length + queue.pendingRestarts.length,
|
|
5723
|
-
onOpenNotifications: () =>
|
|
5928
|
+
onOpenNotifications: () => {
|
|
5929
|
+
if (hubSettings.checkUpdatesOnStart) syncUpdateNotices();
|
|
5930
|
+
setShowNotifications(true);
|
|
5931
|
+
}
|
|
5724
5932
|
})), view === "market" ? (0, react.createElement)(MarketView, {
|
|
5725
5933
|
catalog,
|
|
5726
5934
|
t,
|
|
@@ -5801,7 +6009,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5801
6009
|
});
|
|
5802
6010
|
}
|
|
5803
6011
|
}), showHubUpdate && (0, react.createElement)(HubUpdateModal, {
|
|
5804
|
-
info: catalog.hubUpdateInfo ?? { version: "1.
|
|
6012
|
+
info: catalog.hubUpdateInfo ?? { version: "1.3.0" },
|
|
5805
6013
|
lang,
|
|
5806
6014
|
t,
|
|
5807
6015
|
hasUpdate: catalog.hubHasUpdate,
|
|
@@ -5845,12 +6053,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5845
6053
|
queue.clearModalTask();
|
|
5846
6054
|
setConfirmPlugin(plugin);
|
|
5847
6055
|
},
|
|
6056
|
+
onIgnoreUpdate: (repo, version) => setIgnoreTarget({
|
|
6057
|
+
repo,
|
|
6058
|
+
version
|
|
6059
|
+
}),
|
|
5848
6060
|
cancelTask: queue.cancelTask,
|
|
5849
6061
|
restarting,
|
|
5850
6062
|
onRestart: () => {
|
|
5851
6063
|
requestRestart();
|
|
5852
6064
|
}
|
|
5853
|
-
}),
|
|
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, {
|
|
5854
6092
|
plugin: confirmPlugin,
|
|
5855
6093
|
done: installDone,
|
|
5856
6094
|
task: queue.installModalTask,
|
|
@@ -6008,7 +6246,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
6008
6246
|
}
|
|
6009
6247
|
//#endregion
|
|
6010
6248
|
//#region \0dsh-css:src/client/styles/tokens.module.css.mjs
|
|
6011
|
-
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}";
|
|
6012
6250
|
const tagId = "dsh-plugin/tokens.module.css";
|
|
6013
6251
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
6014
6252
|
const tag = document.createElement("style");
|
|
@@ -6020,7 +6258,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
6020
6258
|
//#endregion
|
|
6021
6259
|
//#region src/client/index.tsx
|
|
6022
6260
|
/**
|
|
6023
|
-
* DSH
|
|
6261
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
6024
6262
|
* Website: https://dsh-plugin.org
|
|
6025
6263
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
6026
6264
|
*
|