dsh-plugin 1.2.1 → 1.3.1
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 +716 -445
- 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 +98 -17
- 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 +31 -14
- package/src/client/components/modals/ProgressView.tsx +1 -1
- package/src/client/components/modals/modals.tsx +1 -1
- package/src/client/components/ui/Dropdown.tsx +1 -1
- package/src/client/components/ui/Toggle.tsx +1 -1
- package/src/client/components/ui/icons.tsx +22 -1
- package/src/client/components/views/CustomInstallView.tsx +133 -44
- package/src/client/components/views/DiagnosticsView.tsx +2 -2
- package/src/client/components/views/InstalledView.tsx +1 -1
- package/src/client/components/views/LogsView.tsx +1 -1
- package/src/client/components/views/MarketView.tsx +1 -1
- package/src/client/components/views/SettingsView.tsx +1 -1
- package/src/client/data/catalog.ts +1 -1
- package/src/client/data/host.ts +1 -1
- package/src/client/data/hub.ts +12 -3
- package/src/client/hooks/useCatalog.ts +19 -6
- package/src/client/hooks/useIncrementalList.ts +1 -1
- package/src/client/hooks/useLanguage.ts +1 -1
- package/src/client/hooks/useSettings.ts +1 -1
- package/src/client/hooks/useTaskQueue.ts +1 -1
- package/src/client/index.tsx +1 -1
- package/src/client/locales.ts +50 -30
- package/src/client/logic/constants.ts +2 -2
- package/src/client/logic/failures.ts +48 -2
- package/src/client/logic/format.ts +1 -1
- package/src/client/logic/install-command.ts +1 -1
- package/src/client/logic/installed.ts +41 -2
- 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
|
-
"taglineLink": "qikqja_taglineLink",
|
|
592
|
-
"tabCount": "qikqja_tabCount",
|
|
593
|
-
"sortGroup": "qikqja_sortGroup",
|
|
594
|
-
"tab": "qikqja_tab",
|
|
595
|
-
"segBtn": "qikqja_segBtn",
|
|
596
|
-
"versionBtn": "qikqja_versionBtn",
|
|
597
|
-
"resultSeg": "qikqja_resultSeg",
|
|
598
|
-
"headerTitleRow": "qikqja_headerTitleRow",
|
|
610
|
+
"root": "qikqja_root",
|
|
599
611
|
"header": "qikqja_header",
|
|
600
|
-
"tabs": "qikqja_tabs",
|
|
601
|
-
"resultCount": "qikqja_resultCount",
|
|
602
|
-
"tabActive": "qikqja_tabActive",
|
|
603
612
|
"adBanner": "qikqja_adBanner",
|
|
613
|
+
"headerTitleRow": "qikqja_headerTitleRow",
|
|
614
|
+
"tabs": "qikqja_tabs",
|
|
615
|
+
"tab": "qikqja_tab",
|
|
604
616
|
"copyIcon": "qikqja_copyIcon",
|
|
605
|
-
"
|
|
606
|
-
"
|
|
617
|
+
"search": "qikqja_search",
|
|
618
|
+
"tabCount": "qikqja_tabCount",
|
|
619
|
+
"segBtnActive": "qikqja_segBtnActive",
|
|
607
620
|
"hubUpdateBadge": "qikqja_hubUpdateBadge",
|
|
608
|
-
"
|
|
609
|
-
"
|
|
621
|
+
"segGroup": "qikqja_segGroup",
|
|
622
|
+
"resultSeg": "qikqja_resultSeg",
|
|
610
623
|
"adText": "qikqja_adText",
|
|
611
|
-
"
|
|
612
|
-
"
|
|
613
|
-
"
|
|
614
|
-
"langBtn": "qikqja_langBtn",
|
|
615
|
-
"logoIcon": "qikqja_logoIcon",
|
|
624
|
+
"resultCount": "qikqja_resultCount",
|
|
625
|
+
"tagline": "qikqja_tagline",
|
|
626
|
+
"segBtn": "qikqja_segBtn",
|
|
616
627
|
"headerRight": "qikqja_headerRight",
|
|
617
|
-
"
|
|
618
|
-
"
|
|
619
|
-
"version": "qikqja_version",
|
|
628
|
+
"logoIcon": "qikqja_logoIcon",
|
|
629
|
+
"githubIcon": "qikqja_githubIcon",
|
|
620
630
|
"aboutBtn": "qikqja_aboutBtn",
|
|
621
|
-
"
|
|
631
|
+
"versionBtn": "qikqja_versionBtn",
|
|
632
|
+
"taglineLink": "qikqja_taglineLink",
|
|
633
|
+
"adArrow": "qikqja_adArrow",
|
|
634
|
+
"adBadge": "qikqja_adBadge",
|
|
635
|
+
"langBtn": "qikqja_langBtn",
|
|
636
|
+
"searchRow": "qikqja_searchRow",
|
|
637
|
+
"tabsRow": "qikqja_tabsRow",
|
|
638
|
+
"controls": "qikqja_controls",
|
|
622
639
|
"githubLink": "qikqja_githubLink",
|
|
640
|
+
"version": "qikqja_version",
|
|
641
|
+
"tabActive": "qikqja_tabActive",
|
|
642
|
+
"title": "qikqja_title",
|
|
623
643
|
"brandTitle": "qikqja_brandTitle",
|
|
624
|
-
"
|
|
625
|
-
"
|
|
644
|
+
"sortGroup": "qikqja_sortGroup",
|
|
645
|
+
"segLabel": "qikqja_segLabel"
|
|
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
|
+
"modalCloseIcon": "BiQ1zG_modalCloseIcon",
|
|
660
|
+
"detailPathText": "BiQ1zG_detailPathText",
|
|
661
|
+
"modalClose": "BiQ1zG_modalClose",
|
|
662
|
+
"modalTitle": "BiQ1zG_modalTitle",
|
|
663
|
+
"queueRowTrack": "BiQ1zG_queueRowTrack",
|
|
664
|
+
"failKindInstall": "BiQ1zG_failKindInstall",
|
|
665
|
+
"queueSection": "BiQ1zG_queueSection",
|
|
666
|
+
"failRepo": "BiQ1zG_failRepo",
|
|
667
|
+
"noticeTextFail": "BiQ1zG_noticeTextFail",
|
|
668
|
+
"noticeVersion": "BiQ1zG_noticeVersion",
|
|
669
|
+
"detailValue": "BiQ1zG_detailValue",
|
|
670
|
+
"queueRowHead": "BiQ1zG_queueRowHead",
|
|
671
|
+
"failClear": "BiQ1zG_failClear",
|
|
672
|
+
"queueSectionTitle": "BiQ1zG_queueSectionTitle",
|
|
673
|
+
"resultDesc": "BiQ1zG_resultDesc",
|
|
674
|
+
"restartNowWarning": "BiQ1zG_restartNowWarning",
|
|
675
|
+
"progress": "BiQ1zG_progress",
|
|
676
|
+
"queueRowBody": "BiQ1zG_queueRowBody",
|
|
677
|
+
"detailPath": "BiQ1zG_detailPath",
|
|
678
|
+
"queueRowPct": "BiQ1zG_queueRowPct",
|
|
679
|
+
"errorTitle": "BiQ1zG_errorTitle",
|
|
680
|
+
"noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
|
|
681
|
+
"pendingRowStatus": "BiQ1zG_pendingRowStatus",
|
|
682
|
+
"modalValue": "BiQ1zG_modalValue",
|
|
683
|
+
"hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
|
|
684
|
+
"failEmpty": "BiQ1zG_failEmpty",
|
|
685
|
+
"modalIn": "BiQ1zG_modalIn",
|
|
686
|
+
"detailStatusRunning": "BiQ1zG_detailStatusRunning",
|
|
687
|
+
"modalActions": "BiQ1zG_modalActions",
|
|
688
|
+
"resultCheckIcon": "BiQ1zG_resultCheckIcon",
|
|
689
|
+
"noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
|
|
690
|
+
"hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
|
|
691
|
+
"modalBody": "BiQ1zG_modalBody",
|
|
692
|
+
"overlayIn": "BiQ1zG_overlayIn",
|
|
693
|
+
"modalInstall": "BiQ1zG_modalInstall",
|
|
694
|
+
"progressHead": "BiQ1zG_progressHead",
|
|
695
|
+
"failList": "BiQ1zG_failList",
|
|
696
|
+
"errorBox": "BiQ1zG_errorBox",
|
|
697
|
+
"noticeTime": "BiQ1zG_noticeTime",
|
|
698
|
+
"queuedHint": "BiQ1zG_queuedHint",
|
|
699
|
+
"modalRow": "BiQ1zG_modalRow",
|
|
700
|
+
"modalCancel": "BiQ1zG_modalCancel",
|
|
701
|
+
"modalWide": "BiQ1zG_modalWide",
|
|
702
|
+
"detailPathBtn": "BiQ1zG_detailPathBtn",
|
|
703
|
+
"modalTitleBusy": "BiQ1zG_modalTitleBusy",
|
|
704
|
+
"failKindUninstall": "BiQ1zG_failKindUninstall",
|
|
705
|
+
"errorHint": "BiQ1zG_errorHint",
|
|
706
|
+
"modalCopy": "BiQ1zG_modalCopy",
|
|
707
|
+
"modalDesc": "BiQ1zG_modalDesc",
|
|
708
|
+
"detailArrow": "BiQ1zG_detailArrow",
|
|
709
|
+
"restartLater": "BiQ1zG_restartLater",
|
|
710
|
+
"failCopy": "BiQ1zG_failCopy",
|
|
711
|
+
"queueRow": "BiQ1zG_queueRow",
|
|
712
|
+
"detailGrid": "BiQ1zG_detailGrid",
|
|
713
|
+
"detailUpdateHint": "BiQ1zG_detailUpdateHint",
|
|
714
|
+
"aboutMeta": "BiQ1zG_aboutMeta",
|
|
715
|
+
"queueRowTarget": "BiQ1zG_queueRowTarget",
|
|
716
|
+
"modalCmdCopy": "BiQ1zG_modalCmdCopy",
|
|
717
|
+
"progressTrack": "BiQ1zG_progressTrack",
|
|
718
|
+
"resultCheck": "BiQ1zG_resultCheck",
|
|
719
|
+
"trustHint": "BiQ1zG_trustHint",
|
|
720
|
+
"detailLabel": "BiQ1zG_detailLabel",
|
|
721
|
+
"pendingRowActions": "BiQ1zG_pendingRowActions",
|
|
722
|
+
"errorCopySoft": "BiQ1zG_errorCopySoft",
|
|
723
|
+
"noticeRowMain": "BiQ1zG_noticeRowMain",
|
|
724
|
+
"noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
|
|
725
|
+
"noticeRowOk": "BiQ1zG_noticeRowOk",
|
|
726
|
+
"aboutContent": "BiQ1zG_aboutContent",
|
|
727
|
+
"modalHead": "BiQ1zG_modalHead",
|
|
728
|
+
"noticeIgnore": "BiQ1zG_noticeIgnore",
|
|
729
|
+
"detailLink": "BiQ1zG_detailLink",
|
|
730
|
+
"modalCmd": "BiQ1zG_modalCmd",
|
|
731
|
+
"modalLabel": "BiQ1zG_modalLabel",
|
|
732
|
+
"aboutModal": "BiQ1zG_aboutModal",
|
|
733
|
+
"helpModal": "BiQ1zG_helpModal",
|
|
734
|
+
"noticeList": "BiQ1zG_noticeList",
|
|
735
|
+
"noticeHead": "BiQ1zG_noticeHead",
|
|
736
|
+
"modalTitleQueued": "BiQ1zG_modalTitleQueued",
|
|
737
|
+
"noticeTextOk": "BiQ1zG_noticeTextOk",
|
|
738
|
+
"failRow": "BiQ1zG_failRow",
|
|
739
|
+
"result": "BiQ1zG_result",
|
|
740
|
+
"restartNow": "BiQ1zG_restartNow",
|
|
741
|
+
"cliOnlyHint": "BiQ1zG_cliOnlyHint",
|
|
742
|
+
"overlay": "BiQ1zG_overlay",
|
|
743
|
+
"modal": "BiQ1zG_modal",
|
|
744
|
+
"noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
|
|
745
|
+
"errorModal": "BiQ1zG_errorModal",
|
|
746
|
+
"failBigIssue": "BiQ1zG_failBigIssue",
|
|
747
|
+
"detailMono": "BiQ1zG_detailMono",
|
|
748
|
+
"hubUpdateModal": "BiQ1zG_hubUpdateModal",
|
|
749
|
+
"queueRowDesc": "BiQ1zG_queueRowDesc",
|
|
750
|
+
"queueRowStatus": "BiQ1zG_queueRowStatus",
|
|
751
|
+
"noticeFoot": "BiQ1zG_noticeFoot",
|
|
752
|
+
"failPrepareHint": "BiQ1zG_failPrepareHint",
|
|
753
|
+
"stripCancel": "BiQ1zG_stripCancel",
|
|
754
|
+
"progressFillFail": "BiQ1zG_progressFillFail",
|
|
755
|
+
"modalLink": "BiQ1zG_modalLink",
|
|
756
|
+
"toast": "BiQ1zG_toast",
|
|
757
|
+
"noticeRemove": "BiQ1zG_noticeRemove",
|
|
758
|
+
"failKind": "BiQ1zG_failKind",
|
|
759
|
+
"detailStatusPending": "BiQ1zG_detailStatusPending",
|
|
760
|
+
"linkIcon": "BiQ1zG_linkIcon",
|
|
761
|
+
"modalCmdText": "BiQ1zG_modalCmdText",
|
|
762
|
+
"detailStatusText": "BiQ1zG_detailStatusText",
|
|
763
|
+
"noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
|
|
764
|
+
"progressFill": "BiQ1zG_progressFill",
|
|
765
|
+
"failedCopyHint": "BiQ1zG_failedCopyHint",
|
|
766
|
+
"failHead": "BiQ1zG_failHead",
|
|
767
|
+
"detailModal": "BiQ1zG_detailModal",
|
|
768
|
+
"detailPathActions": "BiQ1zG_detailPathActions",
|
|
769
|
+
"progressText": "BiQ1zG_progressText",
|
|
770
|
+
"resultRestarting": "BiQ1zG_resultRestarting",
|
|
771
|
+
"detailRow": "BiQ1zG_detailRow",
|
|
772
|
+
"toastFail": "BiQ1zG_toastFail",
|
|
773
|
+
"logModal": "BiQ1zG_logModal",
|
|
774
|
+
"uninstallConfirm": "BiQ1zG_uninstallConfirm",
|
|
775
|
+
"noticeMain": "BiQ1zG_noticeMain",
|
|
776
|
+
"detailDim": "BiQ1zG_detailDim",
|
|
777
|
+
"hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
|
|
778
|
+
"noticeRow": "BiQ1zG_noticeRow",
|
|
779
|
+
"resultTitle": "BiQ1zG_resultTitle",
|
|
780
|
+
"detailStars": "BiQ1zG_detailStars",
|
|
781
|
+
"toastIn": "BiQ1zG_toastIn"
|
|
626
782
|
};
|
|
627
783
|
//#endregion
|
|
628
784
|
//#region src/client/logic/install-command.ts
|
|
@@ -688,11 +844,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
688
844
|
/** 接口中心「关注我们」内容(静态 JSON,由 api-center 的 about.md 构建生成,Markdown)。 */
|
|
689
845
|
const HUB_ABOUT_URL = "https://api.dsh-plugin.org/about.json";
|
|
690
846
|
/**
|
|
691
|
-
* 插件当前版本号,供头部标题展示「DSH
|
|
847
|
+
* 插件当前版本号,供头部标题展示「DSH Plugin Hub v0.1.1」。
|
|
692
848
|
* tsdown 构建时用 define 把 __PLUGIN_VERSION__ 替换成 package.json 的版本号;
|
|
693
849
|
* node --test 直接 import 本模块时该标识符不存在,typeof 守卫兜底为空串。
|
|
694
850
|
*/
|
|
695
|
-
const PLUGIN_VERSION = "1.
|
|
851
|
+
const PLUGIN_VERSION = "1.3.1";
|
|
696
852
|
const CATEGORY_ORDER = [
|
|
697
853
|
"interface",
|
|
698
854
|
"session",
|
|
@@ -939,10 +1095,17 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
939
1095
|
}
|
|
940
1096
|
//#endregion
|
|
941
1097
|
//#region src/client/data/hub.ts
|
|
1098
|
+
/** 版本接口是 Pages 静态文件,默认带 CDN 缓存(Cache-Control: public, max-age=43200,
|
|
1099
|
+
* 即 12 小时),客户端 no-store 管不到 CDN 边缘,会拿到旧公告。
|
|
1100
|
+
* 静态资产请求免费且无限,因此所有版本检查一律带时间戳 query:URL 每次不同 →
|
|
1101
|
+
* CDN 缓存 key 不同 → 强制回源拉到最新公告,无任何配额顾虑。 */
|
|
1102
|
+
function busted(url) {
|
|
1103
|
+
return `${url}${url.includes("?") ? "&" : "?"}_t=${Date.now()}`;
|
|
1104
|
+
}
|
|
942
1105
|
/** Worker 版本控制中心:最新版本 + Markdown 变更记录;不可用返回 null。 */
|
|
943
1106
|
async function fetchHubUpdate() {
|
|
944
1107
|
try {
|
|
945
|
-
const res = await fetch(HUB_UPDATE_URL, { cache: "no-store" });
|
|
1108
|
+
const res = await fetch(busted(HUB_UPDATE_URL), { cache: "no-store" });
|
|
946
1109
|
if (!res.ok) return null;
|
|
947
1110
|
const data = await res.json();
|
|
948
1111
|
if (!data) return null;
|
|
@@ -960,7 +1123,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
960
1123
|
/** Worker「关注我们」内容(平台介绍 + 反馈群二维码,Markdown);未推送返回 null。 */
|
|
961
1124
|
async function fetchHubAbout() {
|
|
962
1125
|
try {
|
|
963
|
-
const res = await fetch(HUB_ABOUT_URL, { cache: "no-store" });
|
|
1126
|
+
const res = await fetch(busted(HUB_ABOUT_URL), { cache: "no-store" });
|
|
964
1127
|
if (!res.ok) return null;
|
|
965
1128
|
const data = await res.json();
|
|
966
1129
|
if (!data || data.content === null || data.content === void 0) return null;
|
|
@@ -1019,6 +1182,33 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1019
1182
|
function isRepoLike(value) {
|
|
1020
1183
|
return /^[A-Za-z0-9._-]+\/[A-Za-z0-9._-]+$/.test(value);
|
|
1021
1184
|
}
|
|
1185
|
+
/**
|
|
1186
|
+
* 提 Issue 的仓库身份解析:失败目标可能是 owner/repo 也可能是 npm 包名(含 @scope/pkg、
|
|
1187
|
+
* 可带 @version,如 dsh-plugin、@scope/pkg@1.2.3)。
|
|
1188
|
+
* - 目标本身就能解析出 owner/repo → 直接用;
|
|
1189
|
+
* - npm 包名 → 反查仓库身份:先查已安装表(该包名的条目若带仓库身份即命中),再查目录插件
|
|
1190
|
+
* (source.npmPackage 与包名一致,取目录收录的仓库身份)。
|
|
1191
|
+
* 反查到才返回,查不到返回 null —— 调用方据此不显示「一键提 Issue」按钮,避免把 Issue
|
|
1192
|
+
* 提到错误的地址(别人发的 npm 包名不是 GitHub 仓库,直接拼 github.com/<包名> 是打不开的)。
|
|
1193
|
+
*/
|
|
1194
|
+
function issueRepoOf(target, installedItems, plugins) {
|
|
1195
|
+
const input = target.trim();
|
|
1196
|
+
if (!input) return null;
|
|
1197
|
+
const parsed = repoFromInstallTarget(input);
|
|
1198
|
+
if (isRepoLike(parsed)) return parsed;
|
|
1199
|
+
const pkg = parsed.replace(/@[^@]*$/, "").toLowerCase();
|
|
1200
|
+
for (const item of installedItems) {
|
|
1201
|
+
if (item.name.toLowerCase() !== pkg) continue;
|
|
1202
|
+
if (item.repo) return item.repo;
|
|
1203
|
+
const repo = repoFromInstallTarget(item.spec);
|
|
1204
|
+
if (isRepoLike(repo)) return repo;
|
|
1205
|
+
}
|
|
1206
|
+
for (const p of plugins ?? []) {
|
|
1207
|
+
const pkgName = (p.source?.npmPackage ?? "").trim();
|
|
1208
|
+
if (pkgName !== "" && pkgName.toLowerCase() === pkg && p.source?.repo) return p.source.repo;
|
|
1209
|
+
}
|
|
1210
|
+
return null;
|
|
1211
|
+
}
|
|
1022
1212
|
/** 已安装项 → 弹窗可用的伪插件对象:卸载确认弹窗只读名称/来源行,
|
|
1023
1213
|
* 自定义安装(目录外)没有完整目录数据,用它把 InstalledItem 适配成 HubPlugin。 */
|
|
1024
1214
|
function pluginOfItem(item) {
|
|
@@ -1041,7 +1231,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1041
1231
|
if (name !== "dsh-plugin") return false;
|
|
1042
1232
|
if (spec.startsWith("file:") || spec.startsWith("link:")) return true;
|
|
1043
1233
|
const repo = repoFromInstallTarget(spec);
|
|
1044
|
-
|
|
1234
|
+
if (isRepoLike(repo) && repo.toLowerCase() === "dshplugin/dsh-plugin-hub".toLowerCase()) return true;
|
|
1235
|
+
return !isRepoLike(repo);
|
|
1045
1236
|
}
|
|
1046
1237
|
/**
|
|
1047
1238
|
* 构建已安装项列表:目录插件按命中关系合并(拥有完整元数据),
|
|
@@ -1095,7 +1286,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1095
1286
|
//#endregion
|
|
1096
1287
|
//#region src/client/hooks/useCatalog.ts
|
|
1097
1288
|
/**
|
|
1098
|
-
* DSH
|
|
1289
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
1099
1290
|
* Website: https://dsh-plugin.org
|
|
1100
1291
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
1101
1292
|
*
|
|
@@ -1105,7 +1296,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1105
1296
|
* installed-plugin table, and the filter/search/sort/install-status view
|
|
1106
1297
|
* state, exposing the derived visible list and per-category counts.
|
|
1107
1298
|
*/
|
|
1108
|
-
/** 插件市场自身仓库:DSH
|
|
1299
|
+
/** 插件市场自身仓库:DSH Plugin Hub 不显示在目录里(自己不进自己的插件列表) */
|
|
1109
1300
|
const SELF_REPO = "dshplugin/dsh-plugin-hub";
|
|
1110
1301
|
/** 市场各排序的默认方向:全部按倒序(Star/Fork 多、更新/收录近的在前) */
|
|
1111
1302
|
const SORT_DEFAULT_DIR$1 = {
|
|
@@ -1137,6 +1328,17 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1137
1328
|
setSortDir(SORT_DEFAULT_DIR$1[key]);
|
|
1138
1329
|
}
|
|
1139
1330
|
}
|
|
1331
|
+
/**
|
|
1332
|
+
* 强制刷新 Hub 版本与「关注我们」信息:点击头部版本号/徽标时触发。
|
|
1333
|
+
* 挂载期的 useEffect 只在进入/reload 时拉一次,发版后已打开的界面点版本号
|
|
1334
|
+
* 仍显示旧数据;此处重新拉接口中心,最新版本与变更记录点击即见。
|
|
1335
|
+
* 失败静默为 null(弹窗兜底展示当前版本号),与挂载期拉取口径一致。
|
|
1336
|
+
*/
|
|
1337
|
+
const refreshHub = async () => {
|
|
1338
|
+
const [info, about] = await Promise.all([fetchHubUpdate(), fetchHubAbout()]);
|
|
1339
|
+
setHubUpdateInfo(info);
|
|
1340
|
+
setHubAboutInfo(about);
|
|
1341
|
+
};
|
|
1140
1342
|
/** 当前 profile 已安装插件:npm 包名 -> manifest spec(来自宿主本地路由) */
|
|
1141
1343
|
const [installed, setInstalled] = (0, react.useState)({});
|
|
1142
1344
|
/** 安装时记录的目录信号:repo(小写) -> { version, updatedAt }(来自宿主本地路由);
|
|
@@ -1236,7 +1438,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1236
1438
|
*/
|
|
1237
1439
|
const hubHasUpdate = (() => {
|
|
1238
1440
|
if (!hubUpdateInfo) return false;
|
|
1239
|
-
return hubUpdateInfo.version !== "1.
|
|
1441
|
+
return hubUpdateInfo.version !== "1.3.1";
|
|
1240
1442
|
})();
|
|
1241
1443
|
(0, react.useMemo)(() => {
|
|
1242
1444
|
if (!plugins) return [];
|
|
@@ -1286,6 +1488,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1286
1488
|
hubHasUpdate,
|
|
1287
1489
|
hubUpdateInfo,
|
|
1288
1490
|
hubAboutInfo,
|
|
1491
|
+
refreshHub,
|
|
1289
1492
|
refreshInstalled,
|
|
1290
1493
|
category,
|
|
1291
1494
|
setCategory,
|
|
@@ -1355,14 +1558,50 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1355
1558
|
message: ""
|
|
1356
1559
|
});
|
|
1357
1560
|
}
|
|
1358
|
-
/** 记录一条「发现新版本」更新提醒:成功类轻量记录,携带目录新版本号供通知中心展示。
|
|
1561
|
+
/** 记录一条「发现新版本」更新提醒:成功类轻量记录,携带目录新版本号供通知中心展示。
|
|
1562
|
+
* 同一插件同一新版本已在通知中心时跳过:宿主重载会重新触发启动检查,不更新时
|
|
1563
|
+
* 通知里已有的提醒保持单条,不重复追加。 */
|
|
1359
1564
|
function addUpdateNotice(record) {
|
|
1565
|
+
const prev = loadNotifications();
|
|
1566
|
+
if (prev.some((r) => r.kind === "update" && r.repo === record.repo && (r.version ?? void 0) === (record.version ?? void 0))) return prev;
|
|
1360
1567
|
return addNotification({
|
|
1361
1568
|
...record,
|
|
1362
1569
|
ok: true,
|
|
1363
1570
|
message: ""
|
|
1364
1571
|
});
|
|
1365
1572
|
}
|
|
1573
|
+
/** 已忽略的更新提醒持久化 key:`owner/repo@version` 字符串数组。 */
|
|
1574
|
+
const IGNORE_KEY = "gro.ngilp-hsd.ignored-updates";
|
|
1575
|
+
/** 读取已忽略的更新提醒(`owner/repo@version` 字符串集合);损坏/不可用时返回空集合。 */
|
|
1576
|
+
function loadIgnoredUpdates() {
|
|
1577
|
+
try {
|
|
1578
|
+
const raw = storage()?.getItem(IGNORE_KEY);
|
|
1579
|
+
if (!raw) return /* @__PURE__ */ new Set();
|
|
1580
|
+
const list = JSON.parse(raw);
|
|
1581
|
+
if (!Array.isArray(list)) return /* @__PURE__ */ new Set();
|
|
1582
|
+
return new Set(list.filter((x) => typeof x === "string"));
|
|
1583
|
+
} catch {
|
|
1584
|
+
return /* @__PURE__ */ new Set();
|
|
1585
|
+
}
|
|
1586
|
+
}
|
|
1587
|
+
function saveIgnoredUpdates(ignored) {
|
|
1588
|
+
try {
|
|
1589
|
+
storage()?.setItem(IGNORE_KEY, JSON.stringify([...ignored]));
|
|
1590
|
+
} catch {}
|
|
1591
|
+
}
|
|
1592
|
+
/** 忽略某插件本次更新(repo+version 持久化入忽略集):本次版本不再提醒,直到下一个新版本发布。 */
|
|
1593
|
+
function ignoreUpdate(repo, version) {
|
|
1594
|
+
const next = loadIgnoredUpdates();
|
|
1595
|
+
next.add(`${repo}@${version ?? ""}`);
|
|
1596
|
+
saveIgnoredUpdates(next);
|
|
1597
|
+
return next;
|
|
1598
|
+
}
|
|
1599
|
+
/** 移除某插件某版本的更新提醒记录(忽略本次更新时一并清理通知),返回更新后的列表。 */
|
|
1600
|
+
function removeUpdateNotice(repo, version) {
|
|
1601
|
+
const next = loadNotifications().filter((r) => !(r.kind === "update" && r.repo === repo && (r.version ?? void 0) === (version ?? void 0)));
|
|
1602
|
+
save(next);
|
|
1603
|
+
return next;
|
|
1604
|
+
}
|
|
1366
1605
|
/** 清空全部通知记录,返回空列表。 */
|
|
1367
1606
|
function clearNotifications() {
|
|
1368
1607
|
save([]);
|
|
@@ -1483,7 +1722,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1483
1722
|
`- Cause: ${reason}`,
|
|
1484
1723
|
...code ? [`- Key error: \`${code}\``] : [],
|
|
1485
1724
|
"",
|
|
1486
|
-
`## [DSH
|
|
1725
|
+
`## [DSH Plugin 插件中心](${SITE_URL}) · 安装 Plugin 失败错误信息`,
|
|
1487
1726
|
`本错误信息由 [dsh-plugin-hub](${GITHUB_URL}) 插件中心的安装程序自动生成,随本次安装失败一并提交。`,
|
|
1488
1727
|
`- 实际执行的安装命令:\`${command ?? `dsh plugin${env?.profile ? ` --profile ${env.profile}` : ""} add git+https://github.com/${repo}.git`}\``,
|
|
1489
1728
|
`- 执行结果:安装失败,未能安装该插件。`,
|
|
@@ -1538,7 +1777,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1538
1777
|
//#endregion
|
|
1539
1778
|
//#region src/client/hooks/useLanguage.ts
|
|
1540
1779
|
/**
|
|
1541
|
-
* DSH
|
|
1780
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
1542
1781
|
* Website: https://dsh-plugin.org
|
|
1543
1782
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
1544
1783
|
*
|
|
@@ -1569,7 +1808,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1569
1808
|
//#endregion
|
|
1570
1809
|
//#region src/client/hooks/useSettings.ts
|
|
1571
1810
|
/**
|
|
1572
|
-
* DSH
|
|
1811
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
1573
1812
|
* Website: https://dsh-plugin.org
|
|
1574
1813
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
1575
1814
|
*
|
|
@@ -1645,7 +1884,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1645
1884
|
//#endregion
|
|
1646
1885
|
//#region src/client/hooks/useTaskQueue.ts
|
|
1647
1886
|
/**
|
|
1648
|
-
* DSH
|
|
1887
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
1649
1888
|
* Website: https://dsh-plugin.org
|
|
1650
1889
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
1651
1890
|
*
|
|
@@ -2144,143 +2383,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2144
2383
|
};
|
|
2145
2384
|
}
|
|
2146
2385
|
//#endregion
|
|
2147
|
-
//#region \0dsh-css:src/client/styles/Modal.module.css.mjs
|
|
2148
|
-
const css$10 = ".BiQ1zG_overlay{z-index:998;-webkit-user-select:none;user-select:none;background:#00000061;justify-content:center;align-items:center;animation:.16s ease-out BiQ1zG_overlayIn;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.BiQ1zG_modal,.BiQ1zG_errorModal{background:var(--hub-bg-1);border:1px solid var(--hub-border-2);border-radius:10px;flex-direction:column;gap:10px;width:420px;max-width:calc(100vw - 32px);max-height:calc(100vh - 64px);padding:14px 16px;animation:.18s ease-out BiQ1zG_modalIn;display:flex;box-shadow:0 12px 40px #0000003d}.BiQ1zG_errorModal{width:640px;max-width:calc(100vw - 48px)}.BiQ1zG_modalWide{width:560px;max-width:calc(100vw - 48px)}.BiQ1zG_logModal{width:780px;max-width:calc(100vw - 48px);height:min(540px,100vh - 64px)}.BiQ1zG_modalHead{flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;display:flex}.BiQ1zG_modalTitle{color:var(--hub-text-primary);font-size:14px;font-weight:600;line-height:20px}.BiQ1zG_modalTitleBusy{color:var(--hub-brand)}.BiQ1zG_modalTitleQueued{color:var(--hub-warning)}.BiQ1zG_modalClose{width:24px;height:24px;color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;font-size:16px;line-height:1;display:inline-flex}.BiQ1zG_modalClose:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}.BiQ1zG_modalCloseIcon{flex-shrink:0;width:14px;height:14px}.BiQ1zG_modalDesc{color:var(--hub-text-secondary);font-size:12px;line-height:18px}.BiQ1zG_trustHint{color:var(--hub-danger-text);background:var(--hub-danger-tint);border:1px solid var(--hub-danger-border-soft);border-radius:6px;padding:6px 10px;font-size:12px;font-weight:500;line-height:18px}.BiQ1zG_cliOnlyHint{color:var(--hub-text-secondary);background:var(--hub-bg-hover);border-radius:6px;padding:6px 10px;font-size:12px;line-height:18px}.BiQ1zG_failedCopyHint{color:var(--hub-danger-text);background:var(--hub-danger-tint);border:1px solid var(--hub-danger-border-soft);border-radius:6px;padding:6px 10px;font-size:12px;font-weight:500;line-height:18px}.BiQ1zG_modalRow{align-items:baseline;gap:8px;min-width:0;font-size:12px;line-height:18px;display:flex}.BiQ1zG_modalLabel{min-width:64px;color:var(--hub-text-tertiary);flex-shrink:0}.BiQ1zG_modalValue{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-text-primary);font-weight:500;overflow:hidden}.BiQ1zG_modalLink{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;font-weight:500;text-decoration:none;transition:color .12s;display:inline-flex;overflow:hidden}.BiQ1zG_modalLink:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_linkIcon{flex-shrink:0}.BiQ1zG_modalCmd{color:var(--hub-text-primary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:6px 6px 6px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:18px;transition:border-color .12s,background .12s;display:flex}.BiQ1zG_modalCmd:hover{border-color:var(--hub-border-ghost);background:var(--hub-bg-3)}.BiQ1zG_modalCmdText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.BiQ1zG_modalCmdCopy{color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:4px;flex-shrink:0;align-items:center;gap:3px;padding:1px 7px;font-family:inherit;font-size:11px;line-height:16px;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_modalCmdCopy:hover{color:var(--hub-brand-hover);background:var(--hub-bg-2)}.BiQ1zG_modalActions{justify-content:flex-end;align-items:center;gap:8px;margin-top:2px;display:flex}.BiQ1zG_modalBody{flex-direction:column;flex:auto;gap:10px;min-height:0;display:flex;overflow-y:auto}.BiQ1zG_toast{z-index:1000;background:var(--hub-btn-fill);color:var(--hub-text-on-fill);pointer-events:none;white-space:nowrap;border:none;border-radius:8px;padding:10px 16px;font-size:12px;font-weight:500;line-height:18px;animation:.22s ease-out BiQ1zG_toastIn;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 6px 24px #00000047}@keyframes BiQ1zG_toastIn{0%{opacity:0;transform:translate(-50%,-44%)}to{opacity:1;transform:translate(-50%,-50%)}}.BiQ1zG_toastFail{background:var(--hub-danger);color:#fff;border-color:#ffffff3d}.BiQ1zG_queueSection{flex-direction:column;gap:6px;display:flex}.BiQ1zG_queueSectionTitle{color:var(--hub-text-secondary);padding:4px 2px 0;font-size:12px;font-weight:600;line-height:18px}.BiQ1zG_pendingRowStatus{color:var(--hub-warn);flex-shrink:0;font-weight:500}.BiQ1zG_pendingRowActions{flex-shrink:0;gap:8px;margin-left:auto;display:flex}.BiQ1zG_queueRow{border:1px solid var(--hub-border-2);background:var(--hub-bg-2);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;flex-direction:column;gap:5px;padding:8px 10px;font-size:12px;line-height:18px;transition:background .12s;display:flex}.BiQ1zG_queueRow:hover{background:var(--hub-brand-tint)}.BiQ1zG_queueRowHead{align-items:center;gap:10px;display:flex}.BiQ1zG_queueRowTarget{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-text-primary);flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow:hidden}.BiQ1zG_queueRowDesc{color:var(--hub-text-tertiary);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.BiQ1zG_queueRowBody{align-items:center;gap:8px;display:flex}.BiQ1zG_queueRowStatus{color:var(--hub-brand);flex-shrink:0;font-weight:500}.BiQ1zG_queueRowTrack{flex:1;min-width:0}.BiQ1zG_queueRowPct{color:var(--hub-text-tertiary);font-variant-numeric:tabular-nums;flex-shrink:0}.BiQ1zG_stripCancel{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;flex-shrink:0;padding:2px 10px;font-size:12px;line-height:18px;transition:background .12s,color .12s}.BiQ1zG_stripCancel:hover{background:var(--hub-danger-tint);color:var(--hub-danger-text)}.BiQ1zG_stripCancel:disabled{opacity:.45;cursor:default}.BiQ1zG_queuedHint{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft);border-radius:6px;padding:5px 10px;font-size:12px;line-height:18px}.BiQ1zG_errorTitle{color:var(--hub-danger-text);font-size:14px;font-weight:600;line-height:20px}.BiQ1zG_errorBox{border:1px solid var(--hub-danger-border);background:var(--hub-danger-tint-weak);max-height:240px;color:var(--hub-text-primary);white-space:pre-wrap;word-break:break-word;-webkit-user-select:none;user-select:none;border-radius:6px;margin:0;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:17px;overflow:auto}.BiQ1zG_errorCopySoft{color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:4px;flex-shrink:0;align-items:center;padding:2px 8px;font-size:11px;line-height:16px;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_errorCopySoft:hover{color:var(--hub-text-secondary);background:var(--hub-bg-2)}.BiQ1zG_errorHint{color:var(--hub-text-tertiary);font-size:12px;line-height:18px}.BiQ1zG_modalCancel,.BiQ1zG_modalCopy{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;padding:5px 14px;font-size:12px;line-height:18px;transition:color .12s,background .12s}.BiQ1zG_modalCancel:hover,.BiQ1zG_modalCopy:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}.BiQ1zG_modalInstall{color:var(--hub-text-on-fill);background:var(--hub-btn-fill);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_modalInstall:hover{background:var(--hub-btn-hover)}.BiQ1zG_modalCopy:disabled,.BiQ1zG_modalInstall:disabled,.BiQ1zG_modalCancel:disabled,.BiQ1zG_modalClose:disabled,.BiQ1zG_uninstallConfirm:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.BiQ1zG_uninstallConfirm{color:#fff;background:var(--hub-danger);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_uninstallConfirm:hover{background:var(--hub-danger-hover)}.BiQ1zG_result{text-align:center;flex-direction:column;align-items:center;gap:5px;padding:10px 0 2px;display:flex}.BiQ1zG_resultCheck{background:var(--hub-success-tint);width:40px;height:40px;color:var(--hub-success);border-radius:50%;justify-content:center;align-items:center;margin-bottom:3px;display:inline-flex}.BiQ1zG_resultCheckIcon{flex-shrink:0;width:20px;height:20px}.BiQ1zG_resultTitle{color:var(--hub-text-primary);font-size:13px;font-weight:600;line-height:20px}.BiQ1zG_resultDesc{color:var(--hub-text-secondary);font-size:12px;line-height:18px}.BiQ1zG_resultRestarting{color:var(--hub-text-tertiary);padding:12px 0 6px;font-size:12px;line-height:18px}.BiQ1zG_restartLater{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;padding:5px 14px;font-size:12px;line-height:18px;transition:color .12s,background .12s}.BiQ1zG_restartLater:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}.BiQ1zG_restartNow{color:var(--hub-text-on-fill);background:var(--hub-btn-fill);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_restartNow:hover{background:var(--hub-btn-hover)}.BiQ1zG_restartNow:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.BiQ1zG_restartNowWarning{color:#fff;background:var(--hub-warning);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;line-height:18px;transition:background .12s}.BiQ1zG_restartNowWarning:hover{background:var(--hub-warning-hover)}.BiQ1zG_restartNowWarning:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.BiQ1zG_result .BiQ1zG_modalActions{justify-content:center;gap:10px;margin-top:0;padding:6px 0 2px}.BiQ1zG_result .BiQ1zG_modalActions .BiQ1zG_restartLater,.BiQ1zG_result .BiQ1zG_modalActions .BiQ1zG_restartNow,.BiQ1zG_result .BiQ1zG_modalActions .BiQ1zG_restartNowWarning{min-width:100px}.BiQ1zG_progress{margin:10px 0 2px}.BiQ1zG_progressHead{justify-content:flex-end;align-items:center;margin-bottom:3px;display:flex}.BiQ1zG_progressText{color:var(--hub-text-secondary);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:14px}.BiQ1zG_progressTrack{background:var(--hub-border-2);border-radius:2px;height:4px;overflow:hidden}.BiQ1zG_progressFill{background:var(--hub-brand);border-radius:2px;height:100%;transition:width .32s}.BiQ1zG_progressFillFail{background:var(--hub-danger)}@keyframes BiQ1zG_overlayIn{0%{opacity:0}to{opacity:1}}@keyframes BiQ1zG_modalIn{0%{opacity:0;transform:translateY(6px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.BiQ1zG_failList{flex-direction:column;gap:12px;padding-right:2px;display:flex}.BiQ1zG_failRow{border:1px solid var(--hub-border-2);background:var(--hub-bg-2);border-radius:8px;flex-direction:column;gap:8px;padding:10px 12px;display:flex}.BiQ1zG_failHead{align-items:center;gap:8px;min-width:0;display:flex}.BiQ1zG_noticeList{flex-direction:column;gap:10px;padding-right:2px;display:flex}.BiQ1zG_noticeRow{border:1px solid var(--hub-border-2);background:var(--hub-bg-2);border-radius:8px;flex-direction:column;align-items:stretch;gap:6px;padding:10px 12px;display:flex}.BiQ1zG_noticeRowMain{align-items:center;gap:10px;width:100%;min-width:0;display:flex}.BiQ1zG_noticeBadgeOk,.BiQ1zG_noticeBadgeFail{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex;box-shadow:0 2px 6px #0000002e}.BiQ1zG_noticeBadgeOk{background:var(--hub-success)}.BiQ1zG_noticeBadgeFail{background:var(--hub-danger)}.BiQ1zG_noticeBadgeIcon{flex-shrink:0;width:12px;height:12px}.BiQ1zG_noticeMain{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.BiQ1zG_noticeHead{align-items:center;gap:8px;min-width:0;display:flex}.BiQ1zG_noticeTextOk{color:var(--hub-success);flex-shrink:0;font-size:12px;font-weight:600;line-height:18px}.BiQ1zG_noticeTextFail{color:var(--hub-danger-text);flex-shrink:0;font-size:12px;font-weight:600;line-height:18px}.BiQ1zG_noticeFoot{justify-content:flex-end;align-items:center;display:flex}.BiQ1zG_noticeTime{color:var(--hub-text-tertiary);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:11px;line-height:16px}.BiQ1zG_noticeRemove{width:22px;height:22px;color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_noticeRemove:hover{color:var(--hub-danger-text);background:var(--hub-danger-tint)}.BiQ1zG_noticeRowOk .BiQ1zG_noticeRemove{margin-left:0}.BiQ1zG_noticeRowOk .BiQ1zG_noticeTime{margin-left:auto}.BiQ1zG_noticeRowUpdate{cursor:pointer;transition:border-color .12s,background .12s}.BiQ1zG_noticeRowUpdate:hover{border-color:var(--hub-brand);background:var(--hub-brand-tint)}.BiQ1zG_noticeVersion{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border);font-variant-numeric:tabular-nums;border-radius:5px;flex-shrink:0;padding:0 6px;font-size:11px;font-weight:600;line-height:18px}.BiQ1zG_noticeUpdateGo{color:#fff;background:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:5px;flex-shrink:0;margin-left:2px;padding:2px 8px;font-size:11px;font-weight:600;line-height:16px;transition:background .12s}.BiQ1zG_noticeUpdateGo:hover{background:var(--hub-brand-hover)}.BiQ1zG_failKind{border:1px solid #0000;border-radius:4px;flex-shrink:0;padding:0 6px;font-size:10px;font-weight:500;line-height:16px}.BiQ1zG_failKindInstall{color:var(--hub-danger-text);border-color:var(--hub-danger-border);background:var(--hub-danger-tint)}.BiQ1zG_failKindUninstall{color:var(--hub-warn);border-color:var(--hub-warn-border);background:var(--hub-warn-tint)}.BiQ1zG_failRepo{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:18px;text-decoration:none;overflow:hidden}.BiQ1zG_failRepo:hover{text-decoration:underline}.BiQ1zG_failCopy{color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:4px;flex-shrink:0;align-items:center;padding:2px 8px;font-size:11px;line-height:16px;transition:color .12s,background .12s;display:inline-flex}.BiQ1zG_failCopy:hover{color:var(--hub-text-secondary);background:var(--hub-bg-2)}.BiQ1zG_failEmpty{text-align:center;color:var(--hub-text-tertiary);padding:24px 0;font-size:12px;line-height:18px}.BiQ1zG_failClear{color:var(--hub-danger);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;padding:5px 14px;font-size:12px;line-height:18px;transition:color .12s,background .12s}.BiQ1zG_failClear:hover{color:#fff;background:var(--hub-danger)}.BiQ1zG_failBigIssue{box-sizing:border-box;text-align:center;color:#fff;background:var(--hub-danger);border:1px solid var(--hub-danger);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;width:100%;margin-top:4px;padding:3px 16px;font-size:13px;font-weight:600;line-height:18px;text-decoration:none;transition:background .12s,border-color .12s,box-shadow .12s;display:block}.BiQ1zG_failBigIssue:hover{background:var(--hub-danger-hover);border-color:var(--hub-danger-hover);box-shadow:0 3px 10px #d1242f59}.BiQ1zG_failPrepareHint{color:var(--hub-warning);background:var(--hub-warning-tint);border:1px solid var(--hub-warning-border);border-radius:6px;margin-top:6px;padding:8px 12px;font-size:12px;line-height:18px}.BiQ1zG_aboutModal{width:460px;max-width:calc(100vw - 48px)}.BiQ1zG_aboutContent{min-height:0;max-height:340px;color:var(--hub-text-secondary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);border-radius:8px;flex:auto;padding:10px 12px;font-size:12px;line-height:18px;overflow-y:auto}.BiQ1zG_aboutContent>:first-child{margin-top:0}.BiQ1zG_aboutContent>:last-child{margin-bottom:0}.BiQ1zG_aboutContent h2,.BiQ1zG_aboutContent h3,.BiQ1zG_aboutContent h4,.BiQ1zG_aboutContent h5{color:var(--hub-text-primary);margin:10px 0 4px;font-size:13px;font-weight:600;line-height:20px}.BiQ1zG_aboutContent h2{font-size:14px}.BiQ1zG_aboutContent p{margin:4px 0}.BiQ1zG_aboutContent ul,.BiQ1zG_aboutContent ol{margin:4px 0;padding-left:18px}.BiQ1zG_aboutContent li{margin:2px 0}.BiQ1zG_aboutContent code{background:var(--hub-bg-hover);color:var(--hub-text-primary);border-radius:4px;padding:1px 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.BiQ1zG_aboutContent pre{background:var(--hub-bg-1);border:1px solid var(--hub-border-2);border-radius:6px;margin:6px 0;padding:8px 10px;overflow-x:auto}.BiQ1zG_aboutContent pre code{background:0 0;border-radius:0;padding:0}.BiQ1zG_aboutContent blockquote{border-left:3px solid var(--hub-brand);background:var(--hub-bg-hover);color:var(--hub-text-tertiary);border-radius:0 6px 6px 0;margin:6px 0;padding:2px 10px}.BiQ1zG_aboutContent a{color:var(--hub-brand);text-decoration:none}.BiQ1zG_aboutContent a:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_aboutContent img{border-radius:8px;max-width:100%;max-height:220px;margin:8px auto;display:block;box-shadow:0 2px 8px #0000001f}.BiQ1zG_aboutMeta{color:var(--hub-text-tertiary);font-size:11px;line-height:16px}.BiQ1zG_hubUpdateModal{width:520px;max-width:calc(100vw - 48px)}.BiQ1zG_hubUpdateMeta{flex-wrap:wrap;align-items:center;gap:4px 14px;font-size:12px;line-height:18px;display:flex}.BiQ1zG_hubUpdateMetaItem{color:var(--hub-text-tertiary)}.BiQ1zG_hubUpdateNotes{min-height:0;max-height:300px;color:var(--hub-text-secondary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);border-radius:8px;flex:auto;padding:10px 12px;font-size:12px;line-height:18px;overflow-y:auto}.BiQ1zG_hubUpdateNotes>:first-child{margin-top:0}.BiQ1zG_hubUpdateNotes>:last-child{margin-bottom:0}.BiQ1zG_hubUpdateNotes h2,.BiQ1zG_hubUpdateNotes h3,.BiQ1zG_hubUpdateNotes h4,.BiQ1zG_hubUpdateNotes h5{color:var(--hub-text-primary);margin:10px 0 4px;font-size:13px;font-weight:600;line-height:20px}.BiQ1zG_hubUpdateNotes h2{font-size:14px}.BiQ1zG_hubUpdateNotes p{margin:4px 0}.BiQ1zG_hubUpdateNotes ul,.BiQ1zG_hubUpdateNotes ol{margin:4px 0;padding-left:18px}.BiQ1zG_hubUpdateNotes li{margin:2px 0}.BiQ1zG_hubUpdateNotes code{background:var(--hub-bg-hover);color:var(--hub-text-primary);border-radius:4px;padding:1px 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.BiQ1zG_hubUpdateNotes pre{background:var(--hub-bg-1);border:1px solid var(--hub-border-2);border-radius:6px;margin:6px 0;padding:8px 10px;overflow-x:auto}.BiQ1zG_hubUpdateNotes pre code{background:0 0;border-radius:0;padding:0}.BiQ1zG_hubUpdateNotes blockquote{border-left:3px solid var(--hub-brand);background:var(--hub-bg-hover);color:var(--hub-text-tertiary);border-radius:0 6px 6px 0;margin:6px 0;padding:2px 10px}.BiQ1zG_hubUpdateNotes a{color:var(--hub-brand);text-decoration:none}.BiQ1zG_hubUpdateNotes a:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_detailModal{width:480px;max-width:calc(100vw - 48px)}.BiQ1zG_detailUpdateHint{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft);border-radius:6px;padding:6px 10px;font-size:12px;line-height:18px}.BiQ1zG_detailGrid{flex-direction:column;gap:6px;display:flex}.BiQ1zG_detailRow{align-items:baseline;gap:10px;min-width:0;font-size:12px;line-height:20px;display:flex}.BiQ1zG_detailLabel{text-align:right;width:76px;color:var(--hub-text-tertiary);flex-shrink:0}.BiQ1zG_detailValue{min-width:0;color:var(--hub-text-primary);flex-wrap:wrap;flex:auto;align-items:baseline;gap:4px 6px;font-weight:500;display:flex}.BiQ1zG_detailMono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;font-weight:500}.BiQ1zG_detailArrow{color:var(--hub-text-tertiary);align-items:baseline;gap:4px;display:inline-flex}.BiQ1zG_detailDim{color:var(--hub-text-tertiary);font-size:11px;font-weight:400}.BiQ1zG_detailLink{min-width:0;color:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;font-weight:500;text-decoration:none;transition:color .12s;display:inline-flex}.BiQ1zG_detailLink:hover{color:var(--hub-brand-hover);text-decoration:underline}.BiQ1zG_detailStars{color:#b45309;font-weight:600}.BiQ1zG_detailPath{min-width:0;color:var(--hub-text-primary);background:var(--hub-bg-2);border:1px solid var(--hub-border-2);border-radius:6px;flex:auto;justify-content:space-between;align-items:center;gap:6px;padding:3px 3px 3px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:18px;transition:border-color .12s,background .12s;display:flex}.BiQ1zG_detailPath:hover{border-color:var(--hub-border-ghost);background:var(--hub-bg-3)}.BiQ1zG_detailPathText{text-overflow:ellipsis;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;min-width:0;overflow:hidden}.BiQ1zG_detailPathActions{flex-shrink:0;align-items:center;gap:4px;display:inline-flex}.BiQ1zG_detailPathBtn{width:28px;height:28px;color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;justify-content:center;align-items:center;transition:color .12s,background .12s,border-color .12s;display:inline-flex}.BiQ1zG_detailPathBtn svg{width:15px;height:15px}.BiQ1zG_detailPathBtn:hover{color:#fff;background:var(--hub-brand);border-color:var(--hub-brand)}.BiQ1zG_detailStatusRunning,.BiQ1zG_detailStatusPending{border-radius:50%;flex-shrink:0;align-self:center;width:8px;height:8px}.BiQ1zG_detailStatusRunning{background:var(--hub-success)}.BiQ1zG_detailStatusPending{background:var(--hub-warning)}.BiQ1zG_detailStatusText{font-weight:500}";
|
|
2149
|
-
const tagId$10 = "dsh-plugin/Modal.module.css";
|
|
2150
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$10) + "]") === null) {
|
|
2151
|
-
const tag = document.createElement("style");
|
|
2152
|
-
tag.dataset.plugin = "dsh-plugin";
|
|
2153
|
-
tag.dataset.pluginCss = tagId$10;
|
|
2154
|
-
tag.textContent = css$10;
|
|
2155
|
-
document.head.appendChild(tag);
|
|
2156
|
-
}
|
|
2157
|
-
var Modal_module_css_default = {
|
|
2158
|
-
"modal": "BiQ1zG_modal",
|
|
2159
|
-
"queueSectionTitle": "BiQ1zG_queueSectionTitle",
|
|
2160
|
-
"detailModal": "BiQ1zG_detailModal",
|
|
2161
|
-
"cliOnlyHint": "BiQ1zG_cliOnlyHint",
|
|
2162
|
-
"pendingRowActions": "BiQ1zG_pendingRowActions",
|
|
2163
|
-
"queueRowStatus": "BiQ1zG_queueRowStatus",
|
|
2164
|
-
"modalCopy": "BiQ1zG_modalCopy",
|
|
2165
|
-
"modalInstall": "BiQ1zG_modalInstall",
|
|
2166
|
-
"modalWide": "BiQ1zG_modalWide",
|
|
2167
|
-
"hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
|
|
2168
|
-
"errorTitle": "BiQ1zG_errorTitle",
|
|
2169
|
-
"noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
|
|
2170
|
-
"modalCmd": "BiQ1zG_modalCmd",
|
|
2171
|
-
"noticeVersion": "BiQ1zG_noticeVersion",
|
|
2172
|
-
"failKind": "BiQ1zG_failKind",
|
|
2173
|
-
"detailValue": "BiQ1zG_detailValue",
|
|
2174
|
-
"noticeList": "BiQ1zG_noticeList",
|
|
2175
|
-
"modalValue": "BiQ1zG_modalValue",
|
|
2176
|
-
"detailMono": "BiQ1zG_detailMono",
|
|
2177
|
-
"overlayIn": "BiQ1zG_overlayIn",
|
|
2178
|
-
"noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
|
|
2179
|
-
"resultCheck": "BiQ1zG_resultCheck",
|
|
2180
|
-
"failKindUninstall": "BiQ1zG_failKindUninstall",
|
|
2181
|
-
"detailPath": "BiQ1zG_detailPath",
|
|
2182
|
-
"restartNowWarning": "BiQ1zG_restartNowWarning",
|
|
2183
|
-
"queueRowTarget": "BiQ1zG_queueRowTarget",
|
|
2184
|
-
"modalTitle": "BiQ1zG_modalTitle",
|
|
2185
|
-
"toast": "BiQ1zG_toast",
|
|
2186
|
-
"progressTrack": "BiQ1zG_progressTrack",
|
|
2187
|
-
"errorHint": "BiQ1zG_errorHint",
|
|
2188
|
-
"detailUpdateHint": "BiQ1zG_detailUpdateHint",
|
|
2189
|
-
"detailPathActions": "BiQ1zG_detailPathActions",
|
|
2190
|
-
"aboutModal": "BiQ1zG_aboutModal",
|
|
2191
|
-
"noticeFoot": "BiQ1zG_noticeFoot",
|
|
2192
|
-
"result": "BiQ1zG_result",
|
|
2193
|
-
"noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
|
|
2194
|
-
"modalIn": "BiQ1zG_modalIn",
|
|
2195
|
-
"modalCloseIcon": "BiQ1zG_modalCloseIcon",
|
|
2196
|
-
"modalActions": "BiQ1zG_modalActions",
|
|
2197
|
-
"errorCopySoft": "BiQ1zG_errorCopySoft",
|
|
2198
|
-
"modalCancel": "BiQ1zG_modalCancel",
|
|
2199
|
-
"modalDesc": "BiQ1zG_modalDesc",
|
|
2200
|
-
"resultCheckIcon": "BiQ1zG_resultCheckIcon",
|
|
2201
|
-
"modalTitleQueued": "BiQ1zG_modalTitleQueued",
|
|
2202
|
-
"trustHint": "BiQ1zG_trustHint",
|
|
2203
|
-
"detailArrow": "BiQ1zG_detailArrow",
|
|
2204
|
-
"overlay": "BiQ1zG_overlay",
|
|
2205
|
-
"progressFillFail": "BiQ1zG_progressFillFail",
|
|
2206
|
-
"noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
|
|
2207
|
-
"errorBox": "BiQ1zG_errorBox",
|
|
2208
|
-
"queuedHint": "BiQ1zG_queuedHint",
|
|
2209
|
-
"restartLater": "BiQ1zG_restartLater",
|
|
2210
|
-
"failHead": "BiQ1zG_failHead",
|
|
2211
|
-
"failBigIssue": "BiQ1zG_failBigIssue",
|
|
2212
|
-
"detailGrid": "BiQ1zG_detailGrid",
|
|
2213
|
-
"detailRow": "BiQ1zG_detailRow",
|
|
2214
|
-
"progressHead": "BiQ1zG_progressHead",
|
|
2215
|
-
"detailStatusRunning": "BiQ1zG_detailStatusRunning",
|
|
2216
|
-
"hubUpdateModal": "BiQ1zG_hubUpdateModal",
|
|
2217
|
-
"queueRowDesc": "BiQ1zG_queueRowDesc",
|
|
2218
|
-
"noticeTime": "BiQ1zG_noticeTime",
|
|
2219
|
-
"detailPathText": "BiQ1zG_detailPathText",
|
|
2220
|
-
"failEmpty": "BiQ1zG_failEmpty",
|
|
2221
|
-
"progress": "BiQ1zG_progress",
|
|
2222
|
-
"failRepo": "BiQ1zG_failRepo",
|
|
2223
|
-
"aboutMeta": "BiQ1zG_aboutMeta",
|
|
2224
|
-
"queueRowTrack": "BiQ1zG_queueRowTrack",
|
|
2225
|
-
"noticeMain": "BiQ1zG_noticeMain",
|
|
2226
|
-
"detailDim": "BiQ1zG_detailDim",
|
|
2227
|
-
"stripCancel": "BiQ1zG_stripCancel",
|
|
2228
|
-
"resultTitle": "BiQ1zG_resultTitle",
|
|
2229
|
-
"detailLabel": "BiQ1zG_detailLabel",
|
|
2230
|
-
"noticeHead": "BiQ1zG_noticeHead",
|
|
2231
|
-
"noticeRemove": "BiQ1zG_noticeRemove",
|
|
2232
|
-
"failList": "BiQ1zG_failList",
|
|
2233
|
-
"queueRow": "BiQ1zG_queueRow",
|
|
2234
|
-
"modalCmdCopy": "BiQ1zG_modalCmdCopy",
|
|
2235
|
-
"detailStars": "BiQ1zG_detailStars",
|
|
2236
|
-
"failKindInstall": "BiQ1zG_failKindInstall",
|
|
2237
|
-
"noticeRow": "BiQ1zG_noticeRow",
|
|
2238
|
-
"noticeTextFail": "BiQ1zG_noticeTextFail",
|
|
2239
|
-
"pendingRowStatus": "BiQ1zG_pendingRowStatus",
|
|
2240
|
-
"logModal": "BiQ1zG_logModal",
|
|
2241
|
-
"hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
|
|
2242
|
-
"modalLink": "BiQ1zG_modalLink",
|
|
2243
|
-
"queueSection": "BiQ1zG_queueSection",
|
|
2244
|
-
"uninstallConfirm": "BiQ1zG_uninstallConfirm",
|
|
2245
|
-
"modalRow": "BiQ1zG_modalRow",
|
|
2246
|
-
"detailStatusText": "BiQ1zG_detailStatusText",
|
|
2247
|
-
"modalBody": "BiQ1zG_modalBody",
|
|
2248
|
-
"progressText": "BiQ1zG_progressText",
|
|
2249
|
-
"resultDesc": "BiQ1zG_resultDesc",
|
|
2250
|
-
"noticeRowMain": "BiQ1zG_noticeRowMain",
|
|
2251
|
-
"modalCmdText": "BiQ1zG_modalCmdText",
|
|
2252
|
-
"modalLabel": "BiQ1zG_modalLabel",
|
|
2253
|
-
"hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
|
|
2254
|
-
"modalClose": "BiQ1zG_modalClose",
|
|
2255
|
-
"resultRestarting": "BiQ1zG_resultRestarting",
|
|
2256
|
-
"modalHead": "BiQ1zG_modalHead",
|
|
2257
|
-
"linkIcon": "BiQ1zG_linkIcon",
|
|
2258
|
-
"toastFail": "BiQ1zG_toastFail",
|
|
2259
|
-
"queueRowPct": "BiQ1zG_queueRowPct",
|
|
2260
|
-
"progressFill": "BiQ1zG_progressFill",
|
|
2261
|
-
"failRow": "BiQ1zG_failRow",
|
|
2262
|
-
"failPrepareHint": "BiQ1zG_failPrepareHint",
|
|
2263
|
-
"aboutContent": "BiQ1zG_aboutContent",
|
|
2264
|
-
"noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
|
|
2265
|
-
"noticeTextOk": "BiQ1zG_noticeTextOk",
|
|
2266
|
-
"errorModal": "BiQ1zG_errorModal",
|
|
2267
|
-
"toastIn": "BiQ1zG_toastIn",
|
|
2268
|
-
"detailPathBtn": "BiQ1zG_detailPathBtn",
|
|
2269
|
-
"noticeRowOk": "BiQ1zG_noticeRowOk",
|
|
2270
|
-
"restartNow": "BiQ1zG_restartNow",
|
|
2271
|
-
"modalTitleBusy": "BiQ1zG_modalTitleBusy",
|
|
2272
|
-
"failedCopyHint": "BiQ1zG_failedCopyHint",
|
|
2273
|
-
"detailStatusPending": "BiQ1zG_detailStatusPending",
|
|
2274
|
-
"failCopy": "BiQ1zG_failCopy",
|
|
2275
|
-
"detailLink": "BiQ1zG_detailLink",
|
|
2276
|
-
"failClear": "BiQ1zG_failClear",
|
|
2277
|
-
"queueRowHead": "BiQ1zG_queueRowHead",
|
|
2278
|
-
"queueRowBody": "BiQ1zG_queueRowBody"
|
|
2279
|
-
};
|
|
2280
|
-
//#endregion
|
|
2281
2386
|
//#region src/client/components/ui/icons.tsx
|
|
2282
2387
|
/**
|
|
2283
|
-
* DSH
|
|
2388
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2284
2389
|
* Website: https://dsh-plugin.org
|
|
2285
2390
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2286
2391
|
*
|
|
@@ -2326,6 +2431,32 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2326
2431
|
strokeLinejoin: "round"
|
|
2327
2432
|
}));
|
|
2328
2433
|
}
|
|
2434
|
+
/** 帮助图标:圆圈 + 问号(stroke 继承 currentColor),自定义安装卡片标题旁的「帮助」按钮用。 */
|
|
2435
|
+
function HelpIcon() {
|
|
2436
|
+
return (0, react.createElement)("svg", {
|
|
2437
|
+
viewBox: "0 0 16 16",
|
|
2438
|
+
width: 13,
|
|
2439
|
+
height: 13,
|
|
2440
|
+
fill: "none",
|
|
2441
|
+
"aria-hidden": "true"
|
|
2442
|
+
}, (0, react.createElement)("circle", {
|
|
2443
|
+
cx: 8,
|
|
2444
|
+
cy: 8,
|
|
2445
|
+
r: 6.3,
|
|
2446
|
+
stroke: "currentColor",
|
|
2447
|
+
strokeWidth: 1.4
|
|
2448
|
+
}), (0, react.createElement)("path", {
|
|
2449
|
+
d: "M6.3 6.5a1.9 1.9 0 1 1 2.7 1.7c-.7.3-1 .8-1 1.4",
|
|
2450
|
+
stroke: "currentColor",
|
|
2451
|
+
strokeWidth: 1.4,
|
|
2452
|
+
strokeLinecap: "round"
|
|
2453
|
+
}), (0, react.createElement)("circle", {
|
|
2454
|
+
cx: 8,
|
|
2455
|
+
cy: 11.6,
|
|
2456
|
+
r: .95,
|
|
2457
|
+
fill: "currentColor"
|
|
2458
|
+
}));
|
|
2459
|
+
}
|
|
2329
2460
|
/** 品牌 logo 图标:蓝紫渐变圆角方块 + 白色拼图块(2x2 错落),标题左侧的品牌标识。 */
|
|
2330
2461
|
function LogoIcon() {
|
|
2331
2462
|
return (0, react.createElement)("svg", {
|
|
@@ -2667,7 +2798,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2667
2798
|
//#endregion
|
|
2668
2799
|
//#region src/client/components/modals/ProgressView.tsx
|
|
2669
2800
|
/**
|
|
2670
|
-
* DSH
|
|
2801
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2671
2802
|
* Website: https://dsh-plugin.org
|
|
2672
2803
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2673
2804
|
*
|
|
@@ -2685,7 +2816,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2685
2816
|
//#endregion
|
|
2686
2817
|
//#region src/client/components/modals/modals.tsx
|
|
2687
2818
|
/**
|
|
2688
|
-
* DSH
|
|
2819
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2689
2820
|
* Website: https://dsh-plugin.org
|
|
2690
2821
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2691
2822
|
*
|
|
@@ -2923,7 +3054,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2923
3054
|
//#endregion
|
|
2924
3055
|
//#region src/client/logic/renderMarkdown.ts
|
|
2925
3056
|
/**
|
|
2926
|
-
* DSH
|
|
3057
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2927
3058
|
* Website: https://dsh-plugin.org
|
|
2928
3059
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2929
3060
|
*
|
|
@@ -3014,11 +3145,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3014
3145
|
//#endregion
|
|
3015
3146
|
//#region src/client/components/modals/AboutModal.tsx
|
|
3016
3147
|
/**
|
|
3017
|
-
* DSH
|
|
3148
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3018
3149
|
* Website: https://dsh-plugin.org
|
|
3019
3150
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3020
3151
|
*
|
|
3021
|
-
* 头部「关注我们」弹窗:介绍 DSH
|
|
3152
|
+
* 头部「关注我们」弹窗:介绍 DSH Plugin Hub 的功能定位 + 用户反馈群二维码。
|
|
3022
3153
|
* 内容以 Markdown 形式由 dsh-update Worker 的 /about 接口下发(key = hub:about),
|
|
3023
3154
|
* 客户端按接口返回渲染,不内置固定文案。
|
|
3024
3155
|
* 图片(反馈群二维码)经 renderMarkdown 的  语法嵌入,居中、最大高度受控。
|
|
@@ -3055,7 +3186,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3055
3186
|
//#endregion
|
|
3056
3187
|
//#region src/client/components/modals/HubUpdateModal.tsx
|
|
3057
3188
|
/**
|
|
3058
|
-
* DSH
|
|
3189
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3059
3190
|
* Website: https://dsh-plugin.org
|
|
3060
3191
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3061
3192
|
*
|
|
@@ -3122,7 +3253,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3122
3253
|
//#endregion
|
|
3123
3254
|
//#region src/client/components/modals/InstalledDetailModal.tsx
|
|
3124
3255
|
/**
|
|
3125
|
-
* DSH
|
|
3256
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3126
3257
|
* Website: https://dsh-plugin.org
|
|
3127
3258
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3128
3259
|
*
|
|
@@ -3204,7 +3335,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3204
3335
|
//#endregion
|
|
3205
3336
|
//#region src/client/components/modals/NotificationsModal.tsx
|
|
3206
3337
|
/**
|
|
3207
|
-
* DSH
|
|
3338
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3208
3339
|
* Website: https://dsh-plugin.org
|
|
3209
3340
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3210
3341
|
*
|
|
@@ -3246,7 +3377,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3246
3377
|
strokeLinecap: "round"
|
|
3247
3378
|
}));
|
|
3248
3379
|
}
|
|
3249
|
-
function NotificationsModal({ records, tasks, pendingRestarts, t, env, onClose, onCopy, onClear, onRemove, onUpdate, cancelTask, restarting, onRestart }) {
|
|
3380
|
+
function NotificationsModal({ records, tasks, pendingRestarts, t, env, onClose, onCopy, onClear, onRemove, onUpdate, onIgnoreUpdate, cancelTask, restarting, onRestart, resolveRepo }) {
|
|
3250
3381
|
return (0, react.createElement)("div", {
|
|
3251
3382
|
className: Modal_module_css_default.overlay,
|
|
3252
3383
|
onClick: (e) => {
|
|
@@ -3298,6 +3429,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3298
3429
|
style: { width: `${q.progress}%` }
|
|
3299
3430
|
})), (0, react.createElement)("span", { className: Modal_module_css_default.queueRowPct }, `${q.progress}%`))))) : null]) : null, records.length === 0 ? (0, react.createElement)("div", { className: Modal_module_css_default.failEmpty }, t("notificationsEmpty")) : (0, react.createElement)("div", { className: Modal_module_css_default.noticeList }, records.map((r) => {
|
|
3300
3431
|
const isUpdate = r.kind === "update";
|
|
3432
|
+
const shownRepo = resolveRepo ? resolveRepo(r.repo) ?? "" : r.repo;
|
|
3301
3433
|
return (0, react.createElement)("div", {
|
|
3302
3434
|
key: r.id,
|
|
3303
3435
|
className: r.ok ? `${Modal_module_css_default.noticeRow} ${Modal_module_css_default.noticeRowOk}${isUpdate ? ` ${Modal_module_css_default.noticeRowUpdate}` : ""}` : Modal_module_css_default.noticeRow,
|
|
@@ -3311,13 +3443,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3311
3443
|
}, `v${r.version}`) : null, r.repo ? isUpdate ? (0, react.createElement)("span", {
|
|
3312
3444
|
className: Modal_module_css_default.failRepo,
|
|
3313
3445
|
title: r.repo
|
|
3314
|
-
}, r.repo) : (0, react.createElement)("a", {
|
|
3446
|
+
}, r.repo) : shownRepo ? (0, react.createElement)("a", {
|
|
3315
3447
|
className: Modal_module_css_default.failRepo,
|
|
3316
|
-
href: pluginSiteUrl(
|
|
3448
|
+
href: pluginSiteUrl(shownRepo),
|
|
3317
3449
|
target: "_blank",
|
|
3318
3450
|
rel: "noopener noreferrer",
|
|
3319
|
-
title:
|
|
3320
|
-
},
|
|
3451
|
+
title: shownRepo
|
|
3452
|
+
}, shownRepo) : null : null, !r.ok && (0, react.createElement)("button", {
|
|
3321
3453
|
className: Modal_module_css_default.failCopy,
|
|
3322
3454
|
onClick: () => onCopy(r.message)
|
|
3323
3455
|
}, t("failCopy")), r.ok ? (0, react.createElement)("span", {
|
|
@@ -3329,7 +3461,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3329
3461
|
e.stopPropagation();
|
|
3330
3462
|
onUpdate(r.repo);
|
|
3331
3463
|
}
|
|
3332
|
-
}, t("updateNoticeGo")) : null, (0, react.createElement)("button", {
|
|
3464
|
+
}, t("updateNoticeGo")) : null, isUpdate ? (0, react.createElement)("button", {
|
|
3465
|
+
className: Modal_module_css_default.noticeIgnore,
|
|
3466
|
+
onClick: (e) => {
|
|
3467
|
+
e.stopPropagation();
|
|
3468
|
+
onIgnoreUpdate(r.repo, r.version);
|
|
3469
|
+
}
|
|
3470
|
+
}, t("ignoreUpdateRun")) : null, (0, react.createElement)("button", {
|
|
3333
3471
|
className: Modal_module_css_default.noticeRemove,
|
|
3334
3472
|
"aria-label": t("removeNotification"),
|
|
3335
3473
|
title: t("removeNotification"),
|
|
@@ -3343,16 +3481,16 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3343
3481
|
const v = npmTooLowVersion(r.message);
|
|
3344
3482
|
return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t(v ? "failNpmTooLowV" : "failNpmTooLow", v ? { v } : void 0));
|
|
3345
3483
|
}
|
|
3346
|
-
if (kind === "pluginPrepare" || kind === "pnpmIgnoredBuild") return (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, kind === "pnpmIgnoredBuild" ? t("failIgnoredBuild") : /\[packaging\]/i.test(r.message) ? t("failPackagingHint") : t("failPrepareHint")), r.repo ? (0, react.createElement)("a", {
|
|
3484
|
+
if (kind === "pluginPrepare" || kind === "pnpmIgnoredBuild") return (0, react.createElement)("div", null, [(0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, kind === "pnpmIgnoredBuild" ? t("failIgnoredBuild") : /\[packaging\]/i.test(r.message) ? t("failPackagingHint") : t("failPrepareHint")), r.repo && shownRepo ? (0, react.createElement)("a", {
|
|
3347
3485
|
className: Modal_module_css_default.failBigIssue,
|
|
3348
|
-
href: pluginIssueUrl(
|
|
3486
|
+
href: pluginIssueUrl(shownRepo, r.message, env, r.command, r.attempts),
|
|
3349
3487
|
target: "_blank",
|
|
3350
3488
|
rel: "noopener noreferrer",
|
|
3351
3489
|
title: t("failIssueHint")
|
|
3352
3490
|
}, t("failIssueBig")) : null]);
|
|
3353
|
-
return r.repo ? (0, react.createElement)("a", {
|
|
3491
|
+
return r.repo && shownRepo ? (0, react.createElement)("a", {
|
|
3354
3492
|
className: Modal_module_css_default.failBigIssue,
|
|
3355
|
-
href: pluginIssueUrl(
|
|
3493
|
+
href: pluginIssueUrl(shownRepo, r.message, env, r.command, r.attempts),
|
|
3356
3494
|
target: "_blank",
|
|
3357
3495
|
rel: "noopener noreferrer",
|
|
3358
3496
|
title: t("failIssueHint")
|
|
@@ -3372,7 +3510,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3372
3510
|
//#endregion
|
|
3373
3511
|
//#region src/client/components/layout/CatalogHeader.tsx
|
|
3374
3512
|
/**
|
|
3375
|
-
* DSH
|
|
3513
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3376
3514
|
* Website: https://dsh-plugin.org
|
|
3377
3515
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3378
3516
|
*
|
|
@@ -3434,7 +3572,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3434
3572
|
//#endregion
|
|
3435
3573
|
//#region src/client/components/layout/CategoryTabs.tsx
|
|
3436
3574
|
/**
|
|
3437
|
-
* DSH
|
|
3575
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3438
3576
|
* Website: https://dsh-plugin.org
|
|
3439
3577
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3440
3578
|
*
|
|
@@ -3456,7 +3594,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3456
3594
|
//#endregion
|
|
3457
3595
|
//#region src/client/components/layout/CatalogControls.tsx
|
|
3458
3596
|
/**
|
|
3459
|
-
* DSH
|
|
3597
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3460
3598
|
* Website: https://dsh-plugin.org
|
|
3461
3599
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3462
3600
|
*
|
|
@@ -3500,7 +3638,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3500
3638
|
}
|
|
3501
3639
|
//#endregion
|
|
3502
3640
|
//#region \0dsh-css:src/client/styles/List.module.css.mjs
|
|
3503
|
-
const css$9 = "._3XaZHa_body{flex-direction:column;flex:1;min-height:0;display:flex}._3XaZHa_list{flex-direction:column;flex:1;gap:6px;min-height:0;padding:2px 4px 4px 2px;display:flex;overflow-y:auto}._3XaZHa_moreSentinel{flex-shrink:0;height:1px}._3XaZHa_card{border:1px solid var(--hub-border-2);background:var(--hub-bg-1);border-radius:8px;justify-content:space-between;align-items:stretch;gap:12px;padding:9px 12px;transition:border-color .12s,background .12s;display:flex}._3XaZHa_card:hover{border-color:var(--hub-brand);background:var(--hub-bg-2)}._3XaZHa_cardMain{flex-direction:column;gap:4px;min-width:0;display:flex}._3XaZHa_cardHead{align-items:center;gap:6px;min-width:0;display:flex}._3XaZHa_cardTitle{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;line-height:18px;overflow:hidden}._3XaZHa_categoryBadge,._3XaZHa_verified,._3XaZHa_versionBadge,._3XaZHa_updateBadge{border:1px solid #0000;border-radius:4px;flex-shrink:0;padding:0 6px;font-size:10px;line-height:16px}._3XaZHa_categoryBadge{color:var(--hub-brand);border-color:var(--hub-border-ghost)}._3XaZHa_verified{color:var(--hub-success);border-color:var(--hub-success-border)}._3XaZHa_versionBadge{color:var(--hub-text-secondary);border-color:var(--hub-border-input)}._3XaZHa_updateBadge{color:var(--hub-warn);border-color:var(--hub-warn-border);background:var(--hub-warn-tint)}._3XaZHa_desc{color:var(--hub-text-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:12px;line-height:18px;display:-webkit-box;overflow:hidden}._3XaZHa_topics{flex-wrap:wrap;align-items:center;gap:4px;min-width:0;display:flex}._3XaZHa_topic{color:var(--hub-text-tertiary);background:var(--hub-bg-3);white-space:nowrap;border-radius:4px;flex-shrink:0;padding:0 6px;font-size:10px;line-height:16px}._3XaZHa_cardSide{flex-direction:column;flex-shrink:0;justify-content:space-between;align-items:flex-end;gap:6px;display:flex}._3XaZHa_stats{flex-direction:column;align-items:flex-end;gap:1px;display:flex}._3XaZHa_star{color:var(--hub-warn);white-space:nowrap;font-size:11px;line-height:16px}._3XaZHa_fork{color:var(--hub-text-tertiary);white-space:nowrap;font-size:11px;line-height:16px}._3XaZHa_date{color:var(--hub-text-tertiary);white-space:nowrap;font-size:10px;line-height:14px}._3XaZHa_installBtn,._3XaZHa_installBtnCopied,._3XaZHa_installBtnInstalled,._3XaZHa_installBtnUpdate,._3XaZHa_uninstallBtn,._3XaZHa_detailBtn{cursor:pointer;border-radius:6px;padding:2px 10px;font-size:11px;line-height:18px;transition:color .12s,border-color .12s,background .12s}._3XaZHa_installBtnInstalled{color:var(--hub-success);background:var(--hub-success-tint);cursor:default;-webkit-user-select:none;user-select:none;border:none}._3XaZHa_installBtnUpdate{color:#fff;background:var(--hub-warn);-webkit-user-select:none;user-select:none;border:none;font-weight:500}._3XaZHa_installBtnUpdate:hover{background:var(--hub-warn-strong)}._3XaZHa_uninstallBtn{color:var(--hub-danger);background:var(--hub-danger-tint);-webkit-user-select:none;user-select:none;border:none}._3XaZHa_uninstallBtn:hover{color:#fff;background:var(--hub-danger-hover)}._3XaZHa_installBtn{color:var(--hub-text-on-fill);background:var(--hub-btn-fill);-webkit-user-select:none;user-select:none;border:none;font-weight:500}._3XaZHa_installBtn:hover{background:var(--hub-btn-hover)}._3XaZHa_detailBtn{color:var(--hub-text-secondary);-webkit-user-select:none;user-select:none;background:0 0;border:none;align-items:center;text-decoration:none;display:inline-flex}._3XaZHa_detailBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._3XaZHa_actions{align-items:center;gap:6px;display:flex}._3XaZHa_installBtnCopied{color:var(--hub-success);background:var(--hub-success-tint);-webkit-user-select:none;user-select:none;border:none}._3XaZHa_state{text-align:center;min-height:160px;color:var(--hub-text-tertiary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:24px;font-size:12px;line-height:18px;display:flex}._3XaZHa_stateTitle{color:var(--hub-text-primary);font-size:13px;font-weight:600}._3XaZHa_stateDesc{max-width:420px}._3XaZHa_retryBtn{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;margin-top:4px;padding:4px 12px;font-size:12px;line-height:18px}._3XaZHa_retryBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._3XaZHa_footer{border-top:1px solid var(--hub-border-1);flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;padding:6px 4px 0;display:flex}._3XaZHa_footLink{color:var(--hub-brand);white-space:nowrap;-webkit-user-select:none;user-select:none;font-size:11px;line-height:16px;text-decoration:none}._3XaZHa_footLink:hover{text-decoration:underline}";
|
|
3641
|
+
const css$9 = "._3XaZHa_body{flex-direction:column;flex:1;min-height:0;display:flex}._3XaZHa_list{flex-direction:column;flex:1;gap:6px;min-height:0;padding:2px 4px 4px 2px;display:flex;overflow-y:auto}._3XaZHa_moreSentinel{flex-shrink:0;height:1px}._3XaZHa_card{border:1px solid var(--hub-border-2);background:var(--hub-bg-1);border-radius:8px;justify-content:space-between;align-items:stretch;gap:12px;padding:9px 12px;transition:border-color .12s,background .12s;display:flex}._3XaZHa_card:hover{border-color:var(--hub-brand);background:var(--hub-bg-2)}._3XaZHa_cardMain{flex-direction:column;gap:4px;min-width:0;display:flex}._3XaZHa_cardHead{align-items:center;gap:6px;min-width:0;display:flex}._3XaZHa_cardTitle{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;line-height:18px;overflow:hidden}._3XaZHa_categoryBadge,._3XaZHa_verified,._3XaZHa_versionBadge,._3XaZHa_updateBadge{border:1px solid #0000;border-radius:4px;flex-shrink:0;padding:0 6px;font-size:10px;line-height:16px}._3XaZHa_categoryBadge{color:var(--hub-brand);border-color:var(--hub-border-ghost)}._3XaZHa_verified{color:var(--hub-success);border-color:var(--hub-success-border)}._3XaZHa_versionBadge{color:var(--hub-text-secondary);border-color:var(--hub-border-input)}._3XaZHa_updateBadge{color:var(--hub-warn);border-color:var(--hub-warn-border);background:var(--hub-warn-tint)}._3XaZHa_desc{color:var(--hub-text-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:12px;line-height:18px;display:-webkit-box;overflow:hidden}._3XaZHa_topics{flex-wrap:wrap;align-items:center;gap:4px;min-width:0;display:flex}._3XaZHa_topic{color:var(--hub-text-tertiary);background:var(--hub-bg-3);white-space:nowrap;border-radius:4px;flex-shrink:0;padding:0 6px;font-size:10px;line-height:16px}._3XaZHa_cardSide{flex-direction:column;flex-shrink:0;justify-content:space-between;align-items:flex-end;gap:6px;display:flex}._3XaZHa_stats{flex-direction:column;align-items:flex-end;gap:1px;display:flex}._3XaZHa_star{color:var(--hub-warn);white-space:nowrap;font-size:11px;line-height:16px}._3XaZHa_fork{color:var(--hub-text-tertiary);white-space:nowrap;font-size:11px;line-height:16px}._3XaZHa_date{color:var(--hub-text-tertiary);white-space:nowrap;font-size:10px;line-height:14px}._3XaZHa_installBtn,._3XaZHa_installBtnCopied,._3XaZHa_installBtnInstalled,._3XaZHa_installBtnUpdate,._3XaZHa_uninstallBtn,._3XaZHa_detailBtn{cursor:pointer;border-radius:6px;padding:2px 10px;font-size:11px;line-height:18px;transition:color .12s,border-color .12s,background .12s}._3XaZHa_installBtnInstalled{color:var(--hub-success);background:var(--hub-success-tint);cursor:default;-webkit-user-select:none;user-select:none;border:none}._3XaZHa_installBtnUpdate{color:#fff;background:var(--hub-warn);-webkit-user-select:none;user-select:none;border:none;font-weight:500}._3XaZHa_installBtnUpdate:hover{background:var(--hub-warn-strong)}._3XaZHa_uninstallBtn{color:var(--hub-danger);background:var(--hub-danger-tint);-webkit-user-select:none;user-select:none;border:none}._3XaZHa_uninstallBtn:hover{color:#fff;background:var(--hub-danger-hover)}body[data-ds-dark-theme] ._3XaZHa_uninstallBtn{color:#fff;background:var(--hub-danger)}body[data-ds-dark-theme] ._3XaZHa_uninstallBtn:hover{background:var(--hub-danger-hover)}._3XaZHa_installBtn{color:var(--hub-text-on-fill);background:var(--hub-btn-fill);-webkit-user-select:none;user-select:none;border:none;font-weight:500}._3XaZHa_installBtn:hover{background:var(--hub-btn-hover)}._3XaZHa_detailBtn{color:var(--hub-text-secondary);-webkit-user-select:none;user-select:none;background:0 0;border:none;align-items:center;text-decoration:none;display:inline-flex}._3XaZHa_detailBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._3XaZHa_actions{align-items:center;gap:6px;display:flex}._3XaZHa_installBtnCopied{color:var(--hub-success);background:var(--hub-success-tint);-webkit-user-select:none;user-select:none;border:none}._3XaZHa_state{text-align:center;min-height:160px;color:var(--hub-text-tertiary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:24px;font-size:12px;line-height:18px;display:flex}._3XaZHa_stateTitle{color:var(--hub-text-primary);font-size:13px;font-weight:600}._3XaZHa_stateDesc{max-width:420px}._3XaZHa_retryBtn{color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;margin-top:4px;padding:4px 12px;font-size:12px;line-height:18px}._3XaZHa_retryBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._3XaZHa_footer{border-top:1px solid var(--hub-border-1);flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;padding:6px 4px 0;display:flex}._3XaZHa_footLink{color:var(--hub-brand);white-space:nowrap;-webkit-user-select:none;user-select:none;font-size:11px;line-height:16px;text-decoration:none}._3XaZHa_footLink:hover{text-decoration:underline}";
|
|
3504
3642
|
const tagId$9 = "dsh-plugin/List.module.css";
|
|
3505
3643
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$9) + "]") === null) {
|
|
3506
3644
|
const tag = document.createElement("style");
|
|
@@ -3510,43 +3648,43 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3510
3648
|
document.head.appendChild(tag);
|
|
3511
3649
|
}
|
|
3512
3650
|
var List_module_css_default = {
|
|
3513
|
-
"
|
|
3514
|
-
"date": "_3XaZHa_date",
|
|
3515
|
-
"state": "_3XaZHa_state",
|
|
3651
|
+
"installBtnUpdate": "_3XaZHa_installBtnUpdate",
|
|
3516
3652
|
"fork": "_3XaZHa_fork",
|
|
3517
|
-
"
|
|
3518
|
-
"
|
|
3653
|
+
"body": "_3XaZHa_body",
|
|
3654
|
+
"categoryBadge": "_3XaZHa_categoryBadge",
|
|
3519
3655
|
"desc": "_3XaZHa_desc",
|
|
3520
|
-
"
|
|
3656
|
+
"stateTitle": "_3XaZHa_stateTitle",
|
|
3521
3657
|
"list": "_3XaZHa_list",
|
|
3522
|
-
"body": "_3XaZHa_body",
|
|
3523
|
-
"card": "_3XaZHa_card",
|
|
3524
|
-
"cardTitle": "_3XaZHa_cardTitle",
|
|
3525
|
-
"verified": "_3XaZHa_verified",
|
|
3526
|
-
"detailBtn": "_3XaZHa_detailBtn",
|
|
3527
|
-
"retryBtn": "_3XaZHa_retryBtn",
|
|
3528
|
-
"uninstallBtn": "_3XaZHa_uninstallBtn",
|
|
3529
|
-
"stateDesc": "_3XaZHa_stateDesc",
|
|
3530
|
-
"installBtnUpdate": "_3XaZHa_installBtnUpdate",
|
|
3531
3658
|
"topic": "_3XaZHa_topic",
|
|
3659
|
+
"footLink": "_3XaZHa_footLink",
|
|
3660
|
+
"state": "_3XaZHa_state",
|
|
3661
|
+
"installBtn": "_3XaZHa_installBtn",
|
|
3662
|
+
"moreSentinel": "_3XaZHa_moreSentinel",
|
|
3663
|
+
"stats": "_3XaZHa_stats",
|
|
3532
3664
|
"actions": "_3XaZHa_actions",
|
|
3665
|
+
"date": "_3XaZHa_date",
|
|
3666
|
+
"installBtnInstalled": "_3XaZHa_installBtnInstalled",
|
|
3667
|
+
"cardTitle": "_3XaZHa_cardTitle",
|
|
3668
|
+
"stateDesc": "_3XaZHa_stateDesc",
|
|
3533
3669
|
"cardSide": "_3XaZHa_cardSide",
|
|
3534
|
-
"
|
|
3670
|
+
"footer": "_3XaZHa_footer",
|
|
3671
|
+
"detailBtn": "_3XaZHa_detailBtn",
|
|
3535
3672
|
"versionBadge": "_3XaZHa_versionBadge",
|
|
3536
|
-
"star": "_3XaZHa_star",
|
|
3537
|
-
"footLink": "_3XaZHa_footLink",
|
|
3538
|
-
"stateTitle": "_3XaZHa_stateTitle",
|
|
3539
3673
|
"cardMain": "_3XaZHa_cardMain",
|
|
3540
3674
|
"topics": "_3XaZHa_topics",
|
|
3541
|
-
"
|
|
3542
|
-
"
|
|
3543
|
-
"
|
|
3544
|
-
"updateBadge": "_3XaZHa_updateBadge"
|
|
3675
|
+
"verified": "_3XaZHa_verified",
|
|
3676
|
+
"installBtnCopied": "_3XaZHa_installBtnCopied",
|
|
3677
|
+
"cardHead": "_3XaZHa_cardHead",
|
|
3678
|
+
"updateBadge": "_3XaZHa_updateBadge",
|
|
3679
|
+
"retryBtn": "_3XaZHa_retryBtn",
|
|
3680
|
+
"card": "_3XaZHa_card",
|
|
3681
|
+
"star": "_3XaZHa_star",
|
|
3682
|
+
"uninstallBtn": "_3XaZHa_uninstallBtn"
|
|
3545
3683
|
};
|
|
3546
3684
|
//#endregion
|
|
3547
3685
|
//#region src/client/hooks/useIncrementalList.ts
|
|
3548
3686
|
/**
|
|
3549
|
-
* DSH
|
|
3687
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3550
3688
|
* Website: https://dsh-plugin.org
|
|
3551
3689
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3552
3690
|
*
|
|
@@ -3584,7 +3722,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3584
3722
|
//#endregion
|
|
3585
3723
|
//#region src/client/components/catalog/PluginCard.tsx
|
|
3586
3724
|
/**
|
|
3587
|
-
* DSH
|
|
3725
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3588
3726
|
* Website: https://dsh-plugin.org
|
|
3589
3727
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3590
3728
|
*
|
|
@@ -3635,7 +3773,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3635
3773
|
//#endregion
|
|
3636
3774
|
//#region src/client/components/catalog/CatalogList.tsx
|
|
3637
3775
|
/**
|
|
3638
|
-
* DSH
|
|
3776
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3639
3777
|
* Website: https://dsh-plugin.org
|
|
3640
3778
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3641
3779
|
*
|
|
@@ -3684,7 +3822,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3684
3822
|
//#endregion
|
|
3685
3823
|
//#region src/client/components/views/MarketView.tsx
|
|
3686
3824
|
/**
|
|
3687
|
-
* DSH
|
|
3825
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3688
3826
|
* Website: https://dsh-plugin.org
|
|
3689
3827
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3690
3828
|
*
|
|
@@ -3738,20 +3876,20 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3738
3876
|
document.head.appendChild(tag);
|
|
3739
3877
|
}
|
|
3740
3878
|
var SectionTabs_module_css_default = {
|
|
3879
|
+
"noticeIcon": "_7tvizq_noticeIcon",
|
|
3880
|
+
"tabIcon": "_7tvizq_tabIcon",
|
|
3881
|
+
"tab": "_7tvizq_tab",
|
|
3741
3882
|
"tabActive": "_7tvizq_tabActive",
|
|
3742
|
-
"tabCount": "_7tvizq_tabCount",
|
|
3743
|
-
"noticeBtn": "_7tvizq_noticeBtn",
|
|
3744
3883
|
"noticeCount": "_7tvizq_noticeCount",
|
|
3745
|
-
"root": "_7tvizq_root",
|
|
3746
3884
|
"tabCountActive": "_7tvizq_tabCountActive",
|
|
3747
|
-
"
|
|
3748
|
-
"
|
|
3749
|
-
"
|
|
3885
|
+
"tabCount": "_7tvizq_tabCount",
|
|
3886
|
+
"root": "_7tvizq_root",
|
|
3887
|
+
"noticeBtn": "_7tvizq_noticeBtn"
|
|
3750
3888
|
};
|
|
3751
3889
|
//#endregion
|
|
3752
3890
|
//#region src/client/components/layout/SectionTabs.tsx
|
|
3753
3891
|
/**
|
|
3754
|
-
* DSH
|
|
3892
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3755
3893
|
* Website: https://dsh-plugin.org
|
|
3756
3894
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3757
3895
|
*
|
|
@@ -3808,7 +3946,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3808
3946
|
}
|
|
3809
3947
|
//#endregion
|
|
3810
3948
|
//#region \0dsh-css:src/client/styles/InstalledView.module.css.mjs
|
|
3811
|
-
const css$7 = "._1nXeGW_root{flex-direction:column;gap:8px;min-width:0;display:flex}._1nXeGW_toolbar{border-bottom:1px solid var(--hub-border-1);flex-direction:column;flex-shrink:0;gap:8px;padding:0 2px 10px;display:flex}._1nXeGW_searchWrap{width:100%;min-width:0;height:28px}._1nXeGW_searchInput{width:100%;height:28px;color:var(--hub-text-primary);border:1px solid var(--hub-border-2);background:0 0;border-radius:6px;outline:none;padding:0 9px;font-size:12px;line-height:26px;transition:border-color .12s}._1nXeGW_searchInput::placeholder{color:var(--hub-text-tertiary)}._1nXeGW_searchInput:focus{border-color:var(--hub-brand)}._1nXeGW_segRow{align-items:center;gap:8px;min-width:0;display:flex}._1nXeGW_segLabel{color:var(--hub-text-tertiary);flex-shrink:0;font-size:11px;line-height:16px}._1nXeGW_segGroup{border:1px solid var(--hub-border-2);border-radius:6px;flex-shrink:0;align-items:center;display:inline-flex;overflow:hidden}._1nXeGW_segBtn{height:24px;color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;background:0 0;border:none;justify-content:center;align-items:center;gap:4px;padding:0 10px;font-family:inherit;font-size:12px;line-height:24px;transition:color .12s,background .12s;display:inline-flex}._1nXeGW_segBtn svg{flex-shrink:0;display:block}._1nXeGW_segBtn+._1nXeGW_segBtn{border-left:1px solid var(--hub-border-2)}._1nXeGW_segBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._1nXeGW_segBtnActive,._1nXeGW_segBtnActive:hover{color:#fff;background:var(--hub-brand)}._1nXeGW_empty{color:var(--hub-text-tertiary);text-align:center;border:1px dashed var(--hub-border-2);border-radius:8px;flex-direction:column;align-items:center;gap:4px;padding:36px 12px;font-size:12px;line-height:18px;display:flex}._1nXeGW_emptyTitle{color:var(--hub-text-secondary);font-size:13px;font-weight:600}._1nXeGW_emptyDesc{color:var(--hub-text-tertiary)}._1nXeGW_list{border:1px solid var(--hub-border-1);border-radius:8px;flex-direction:column;margin:0;padding:0;list-style:none;display:flex;overflow:hidden}._1nXeGW_row{background:var(--hub-bg-1);cursor:pointer;-webkit-user-select:none;user-select:none;flex-direction:column;gap:4px;padding:8px 10px;transition:background .12s;display:flex}._1nXeGW_row+._1nXeGW_row{border-top:1px solid var(--hub-border-1)}._1nXeGW_row:hover{background:var(--hub-bg-2)}._1nXeGW_rowTitleLine{align-items:center;gap:8px;min-width:0;display:flex}._1nXeGW_rowDesc{color:var(--hub-text-tertiary);white-space:nowrap;text-overflow:ellipsis;min-width:0;padding-left:16px;font-size:11px;line-height:16px;overflow:hidden}._1nXeGW_statusDot{background:var(--hub-success);border-radius:50%;flex-shrink:0;width:8px;height:8px}._1nXeGW_statusDot._1nXeGW_statusPending{background:var(--hub-warning)}._1nXeGW_statusDot._1nXeGW_statusInactive{background:var(--hub-text-tertiary)}._1nXeGW_rowMain{flex:auto;align-items:baseline;gap:6px;min-width:0;display:flex}._1nXeGW_rowTitle{color:var(--hub-text-primary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:12px;font-weight:600;line-height:18px;overflow:hidden}._1nXeGW_versionBadge{color:var(--hub-text-tertiary);background:var(--hub-bg-hover);border-radius:4px;flex-shrink:0;padding:0 5px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:16px}._1nXeGW_updateBadge{color:var(--hub-
|
|
3949
|
+
const css$7 = "._1nXeGW_root{flex-direction:column;gap:8px;min-width:0;display:flex}._1nXeGW_toolbar{border-bottom:1px solid var(--hub-border-1);flex-direction:column;flex-shrink:0;gap:8px;padding:0 2px 10px;display:flex}._1nXeGW_searchWrap{width:100%;min-width:0;height:28px}._1nXeGW_searchInput{width:100%;height:28px;color:var(--hub-text-primary);border:1px solid var(--hub-border-2);background:0 0;border-radius:6px;outline:none;padding:0 9px;font-size:12px;line-height:26px;transition:border-color .12s}._1nXeGW_searchInput::placeholder{color:var(--hub-text-tertiary)}._1nXeGW_searchInput:focus{border-color:var(--hub-brand)}._1nXeGW_segRow{align-items:center;gap:8px;min-width:0;display:flex}._1nXeGW_segLabel{color:var(--hub-text-tertiary);flex-shrink:0;font-size:11px;line-height:16px}._1nXeGW_segGroup{border:1px solid var(--hub-border-2);border-radius:6px;flex-shrink:0;align-items:center;display:inline-flex;overflow:hidden}._1nXeGW_segBtn{height:24px;color:var(--hub-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;background:0 0;border:none;justify-content:center;align-items:center;gap:4px;padding:0 10px;font-family:inherit;font-size:12px;line-height:24px;transition:color .12s,background .12s;display:inline-flex}._1nXeGW_segBtn svg{flex-shrink:0;display:block}._1nXeGW_segBtn+._1nXeGW_segBtn{border-left:1px solid var(--hub-border-2)}._1nXeGW_segBtn:hover{color:var(--hub-text-primary);background:var(--hub-bg-hover)}._1nXeGW_segBtnActive,._1nXeGW_segBtnActive:hover{color:#fff;background:var(--hub-brand)}._1nXeGW_empty{color:var(--hub-text-tertiary);text-align:center;border:1px dashed var(--hub-border-2);border-radius:8px;flex-direction:column;align-items:center;gap:4px;padding:36px 12px;font-size:12px;line-height:18px;display:flex}._1nXeGW_emptyTitle{color:var(--hub-text-secondary);font-size:13px;font-weight:600}._1nXeGW_emptyDesc{color:var(--hub-text-tertiary)}._1nXeGW_list{border:1px solid var(--hub-border-1);border-radius:8px;flex-direction:column;margin:0;padding:0;list-style:none;display:flex;overflow:hidden}._1nXeGW_row{background:var(--hub-bg-1);cursor:pointer;-webkit-user-select:none;user-select:none;flex-direction:column;gap:4px;padding:8px 10px;transition:background .12s;display:flex}._1nXeGW_row+._1nXeGW_row{border-top:1px solid var(--hub-border-1)}._1nXeGW_row:hover{background:var(--hub-bg-2)}._1nXeGW_rowTitleLine{align-items:center;gap:8px;min-width:0;display:flex}._1nXeGW_rowDesc{color:var(--hub-text-tertiary);white-space:nowrap;text-overflow:ellipsis;min-width:0;padding-left:16px;font-size:11px;line-height:16px;overflow:hidden}._1nXeGW_statusDot{background:var(--hub-success);border-radius:50%;flex-shrink:0;width:8px;height:8px}._1nXeGW_statusDot._1nXeGW_statusPending{background:var(--hub-warning)}._1nXeGW_statusDot._1nXeGW_statusInactive{background:var(--hub-text-tertiary)}._1nXeGW_rowMain{flex:auto;align-items:baseline;gap:6px;min-width:0;display:flex}._1nXeGW_rowTitle{color:var(--hub-text-primary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:12px;font-weight:600;line-height:18px;overflow:hidden}._1nXeGW_versionBadge{color:var(--hub-text-tertiary);background:var(--hub-bg-hover);border-radius:4px;flex-shrink:0;padding:0 5px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:16px}._1nXeGW_updateBadge{color:var(--hub-warn);background:var(--hub-warn-tint);border:1px solid var(--hub-warn-border);border-radius:4px;flex-shrink:0;padding:0 5px;font-size:11px;font-weight:500;line-height:16px}._1nXeGW_rowSourceTag{box-sizing:border-box;text-align:center;white-space:nowrap;text-overflow:ellipsis;border-radius:4px;flex-shrink:0;width:60px;padding:0 4px;font-size:11px;font-weight:500;line-height:16px;overflow:hidden}._1nXeGW_rowSourceTagHub{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft)}._1nXeGW_rowSourceTagManual{color:var(--hub-warning);background:var(--hub-warning-tint);border:1px solid var(--hub-warning-border)}._1nXeGW_exampleBadge{color:var(--hub-brand);background:var(--hub-brand-tint);border:1px solid var(--hub-brand-border-soft);border-radius:4px;flex-shrink:0;padding:0 5px;font-size:11px;font-weight:500;line-height:16px}._1nXeGW_exampleRow{align-items:center;min-width:0;padding-left:16px;display:flex}._1nXeGW_rowMeta{align-items:center;gap:8px;min-width:0;padding-left:16px;display:flex;overflow:hidden}._1nXeGW_rowRepo{color:var(--hub-text-tertiary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:16px;overflow:hidden}._1nXeGW_rowCategory{color:var(--hub-text-tertiary);background:var(--hub-bg-hover);border-radius:4px;flex-shrink:0;padding:0 6px;font-size:11px;line-height:16px}._1nXeGW_rowActions{flex-shrink:0;align-items:center;gap:4px;display:flex}._1nXeGW_rowDetail{color:var(--hub-text-secondary);border:1px solid var(--hub-border-2);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border-radius:6px;padding:2px 10px;font-family:inherit;font-size:12px;line-height:18px;transition:color .12s,background .12s,border-color .12s}._1nXeGW_rowDetail:hover{color:var(--hub-text-primary);border-color:var(--hub-border-ghost);background:var(--hub-bg-hover)}._1nXeGW_rowRestart{color:var(--hub-warning);background:var(--hub-warning-tint);border:1px solid var(--hub-warning-border);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;padding:2px 10px;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;transition:color .12s,background .12s,border-color .12s}._1nXeGW_rowRestart:hover{color:#fff;background:var(--hub-warning);border-color:var(--hub-warning)}._1nXeGW_rowUpdate{color:#fff;background:var(--hub-warn);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;padding:3px 10px;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;transition:background .12s}._1nXeGW_rowUpdate:hover{background:var(--hub-warn-strong)}._1nXeGW_rowUninstall{color:var(--hub-danger);border:1px solid var(--hub-danger-border-soft);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border-radius:6px;padding:2px 10px;font-family:inherit;font-size:12px;line-height:18px;transition:color .12s,background .12s,border-color .12s}._1nXeGW_rowUninstall:hover,body[data-ds-dark-theme] ._1nXeGW_rowUninstall{color:#fff;background:var(--hub-danger);border-color:var(--hub-danger)}body[data-ds-dark-theme] ._1nXeGW_rowUninstall:hover{background:var(--hub-danger-hover);border-color:var(--hub-danger-hover)}";
|
|
3812
3950
|
const tagId$7 = "dsh-plugin/InstalledView.module.css";
|
|
3813
3951
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$7) + "]") === null) {
|
|
3814
3952
|
const tag = document.createElement("style");
|
|
@@ -3818,47 +3956,47 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
3818
3956
|
document.head.appendChild(tag);
|
|
3819
3957
|
}
|
|
3820
3958
|
var InstalledView_module_css_default = {
|
|
3821
|
-
"
|
|
3959
|
+
"statusDot": "_1nXeGW_statusDot",
|
|
3960
|
+
"emptyTitle": "_1nXeGW_emptyTitle",
|
|
3961
|
+
"rowTitleLine": "_1nXeGW_rowTitleLine",
|
|
3962
|
+
"rowMain": "_1nXeGW_rowMain",
|
|
3963
|
+
"rowCategory": "_1nXeGW_rowCategory",
|
|
3822
3964
|
"rowUpdate": "_1nXeGW_rowUpdate",
|
|
3965
|
+
"rowMeta": "_1nXeGW_rowMeta",
|
|
3966
|
+
"versionBadge": "_1nXeGW_versionBadge",
|
|
3967
|
+
"segLabel": "_1nXeGW_segLabel",
|
|
3968
|
+
"toolbar": "_1nXeGW_toolbar",
|
|
3969
|
+
"segBtn": "_1nXeGW_segBtn",
|
|
3970
|
+
"row": "_1nXeGW_row",
|
|
3971
|
+
"rowSourceTag": "_1nXeGW_rowSourceTag",
|
|
3972
|
+
"rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
|
|
3973
|
+
"list": "_1nXeGW_list",
|
|
3974
|
+
"rowUninstall": "_1nXeGW_rowUninstall",
|
|
3975
|
+
"searchWrap": "_1nXeGW_searchWrap",
|
|
3976
|
+
"segGroup": "_1nXeGW_segGroup",
|
|
3977
|
+
"emptyDesc": "_1nXeGW_emptyDesc",
|
|
3823
3978
|
"rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
|
|
3824
|
-
"
|
|
3825
|
-
"statusPending": "_1nXeGW_statusPending",
|
|
3826
|
-
"versionBadge": "_1nXeGW_versionBadge",
|
|
3827
|
-
"searchInput": "_1nXeGW_searchInput",
|
|
3828
|
-
"rowRepo": "_1nXeGW_rowRepo",
|
|
3979
|
+
"exampleBadge": "_1nXeGW_exampleBadge",
|
|
3829
3980
|
"rowActions": "_1nXeGW_rowActions",
|
|
3981
|
+
"statusPending": "_1nXeGW_statusPending",
|
|
3982
|
+
"statusInactive": "_1nXeGW_statusInactive",
|
|
3830
3983
|
"segRow": "_1nXeGW_segRow",
|
|
3831
3984
|
"updateBadge": "_1nXeGW_updateBadge",
|
|
3832
|
-
"
|
|
3833
|
-
"
|
|
3834
|
-
"rowDesc": "_1nXeGW_rowDesc",
|
|
3835
|
-
"rowRestart": "_1nXeGW_rowRestart",
|
|
3985
|
+
"rowRepo": "_1nXeGW_rowRepo",
|
|
3986
|
+
"searchInput": "_1nXeGW_searchInput",
|
|
3836
3987
|
"rowDetail": "_1nXeGW_rowDetail",
|
|
3837
|
-
"emptyTitle": "_1nXeGW_emptyTitle",
|
|
3838
|
-
"empty": "_1nXeGW_empty",
|
|
3839
|
-
"rowMeta": "_1nXeGW_rowMeta",
|
|
3840
|
-
"segGroup": "_1nXeGW_segGroup",
|
|
3841
3988
|
"rowTitle": "_1nXeGW_rowTitle",
|
|
3842
|
-
"
|
|
3843
|
-
"rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
|
|
3844
|
-
"statusDot": "_1nXeGW_statusDot",
|
|
3845
|
-
"row": "_1nXeGW_row",
|
|
3846
|
-
"searchWrap": "_1nXeGW_searchWrap",
|
|
3847
|
-
"root": "_1nXeGW_root",
|
|
3848
|
-
"statusInactive": "_1nXeGW_statusInactive",
|
|
3849
|
-
"rowMain": "_1nXeGW_rowMain",
|
|
3850
|
-
"rowSourceTag": "_1nXeGW_rowSourceTag",
|
|
3989
|
+
"empty": "_1nXeGW_empty",
|
|
3851
3990
|
"exampleRow": "_1nXeGW_exampleRow",
|
|
3852
|
-
"
|
|
3853
|
-
"
|
|
3854
|
-
"
|
|
3855
|
-
"
|
|
3856
|
-
"segBtn": "_1nXeGW_segBtn"
|
|
3991
|
+
"rowDesc": "_1nXeGW_rowDesc",
|
|
3992
|
+
"root": "_1nXeGW_root",
|
|
3993
|
+
"rowRestart": "_1nXeGW_rowRestart",
|
|
3994
|
+
"segBtnActive": "_1nXeGW_segBtnActive"
|
|
3857
3995
|
};
|
|
3858
3996
|
//#endregion
|
|
3859
3997
|
//#region src/client/components/views/InstalledView.tsx
|
|
3860
3998
|
/**
|
|
3861
|
-
* DSH
|
|
3999
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3862
4000
|
* Website: https://dsh-plugin.org
|
|
3863
4001
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3864
4002
|
*
|
|
@@ -4084,7 +4222,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4084
4222
|
}
|
|
4085
4223
|
//#endregion
|
|
4086
4224
|
//#region \0dsh-css:src/client/styles/CustomInstallView.module.css.mjs
|
|
4087
|
-
const css$6 = ".zISxCG_root{flex-direction:column;gap:10px;min-width:0;max-width:560px;display:flex}.zISxCG_desc{color:var(--hub-text-tertiary);margin:0;font-size:12px;line-height:18px}.zISxCG_installCards{flex-direction:column;flex-shrink:0;gap:10px;min-width:0;display:flex}.zISxCG_installCard{background:var(--hub-bg-1);border:1px solid var(--hub-border-1);border-radius:8px;flex-direction:column;gap:8px;min-width:0;padding:10px 12px;display:flex}.zISxCG_installCardHead{align-items:center;min-width:0;display:flex}.zISxCG_installLabel{color:var(--hub-text-primary);font-size:12px;font-weight:600;line-height:18px}.zISxCG_installExample{color:var(--hub-text-tertiary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:11px;line-height:16px;overflow:hidden}.zISxCG_installRow{align-items:center;gap:8px;min-width:0;display:flex}.zISxCG_installInput{min-width:0;height:28px;color:var(--hub-text-primary);border:1px solid var(--hub-border-2);background:0 0;border-radius:6px;outline:none;flex:auto;padding:0 9px;font-size:12px;line-height:26px;transition:border-color .12s}.zISxCG_installInput::placeholder{color:var(--hub-text-tertiary)}.zISxCG_installInput:focus{border-color:var(--hub-brand)}.zISxCG_installInputError,.zISxCG_installInputError:focus{border-color:var(--hub-danger-text)}.zISxCG_installBtn{color:#fff;background:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;flex-shrink:0;padding:5px 14px;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;transition:background .12s,opacity .12s}.zISxCG_installBtn:hover{background:var(--hub-brand-hover)}.zISxCG_installBtn:disabled{opacity:.45;cursor:default}.zISxCG_installCardDisabled{opacity:.8}.zISxCG_channelOff{min-width:0;color:var(--hub-warn);background:var(--hub-warn-tint);border:1px solid var(--hub-warn-border);border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:6px 9px;font-size:12px;line-height:16px;display:flex}.zISxCG_channelOffText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.zISxCG_channelOffBtn{color:var(--hub-warn-strong);border:1px solid var(--hub-warn-border);cursor:pointer;white-space:nowrap;background:0 0;border-radius:6px;flex-shrink:0;padding:3px 10px;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;transition:background .12s,color .12s}.zISxCG_channelOffBtn:hover{background:var(--hub-warn-tint);color:var(--hub-warn)}.zISxCG_installError{color:var(--hub-danger-text);background:var(--hub-danger-tint);border:1px solid var(--hub-danger-border);border-radius:6px;padding:5px 8px;font-size:12px;line-height:16px}";
|
|
4225
|
+
const css$6 = ".zISxCG_root{flex-direction:column;gap:10px;min-width:0;max-width:560px;display:flex}.zISxCG_desc{color:var(--hub-text-tertiary);margin:0;font-size:12px;line-height:18px}.zISxCG_installCards{flex-direction:column;flex-shrink:0;gap:10px;min-width:0;display:flex}.zISxCG_installCard{background:var(--hub-bg-1);border:1px solid var(--hub-border-1);border-radius:8px;flex-direction:column;gap:8px;min-width:0;padding:10px 12px;display:flex}.zISxCG_installCardHead{align-items:center;min-width:0;display:flex}.zISxCG_installLabel{color:var(--hub-text-primary);font-size:12px;font-weight:600;line-height:18px}.zISxCG_installHelpBtn{width:18px;height:18px;color:var(--hub-text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:1px solid #0000;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-left:6px;padding:0;transition:color .12s,background .12s,border-color .12s;display:inline-flex}.zISxCG_installHelpBtn:hover{color:var(--hub-brand);background:var(--hub-brand-tint);border-color:var(--hub-brand-border-soft)}.zISxCG_installExample{color:var(--hub-text-tertiary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:11px;line-height:16px;overflow:hidden}.zISxCG_installRow{align-items:center;gap:8px;min-width:0;display:flex}.zISxCG_installInput{min-width:0;height:28px;color:var(--hub-text-primary);border:1px solid var(--hub-border-2);background:0 0;border-radius:6px;outline:none;flex:auto;padding:0 9px;font-size:12px;line-height:26px;transition:border-color .12s}.zISxCG_installInput::placeholder{color:var(--hub-text-tertiary)}.zISxCG_installInput:focus{border-color:var(--hub-brand)}.zISxCG_installInputError,.zISxCG_installInputError:focus{border-color:var(--hub-danger-text)}.zISxCG_installBtn{color:#fff;background:var(--hub-brand);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:6px;flex-shrink:0;padding:5px 14px;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;transition:background .12s,opacity .12s}.zISxCG_installBtn:hover{background:var(--hub-brand-hover)}.zISxCG_installBtn:disabled{opacity:.45;cursor:default}.zISxCG_installCardDisabled{opacity:.8}.zISxCG_channelOff{min-width:0;color:var(--hub-warn);background:var(--hub-warn-tint);border:1px solid var(--hub-warn-border);border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:6px 9px;font-size:12px;line-height:16px;display:flex}.zISxCG_channelOffText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.zISxCG_channelOffBtn{color:var(--hub-warn-strong);border:1px solid var(--hub-warn-border);cursor:pointer;white-space:nowrap;background:0 0;border-radius:6px;flex-shrink:0;padding:3px 10px;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;transition:background .12s,color .12s}.zISxCG_channelOffBtn:hover{background:var(--hub-warn-tint);color:var(--hub-warn)}.zISxCG_installError{color:var(--hub-danger-text);background:var(--hub-danger-tint);border:1px solid var(--hub-danger-border);border-radius:6px;padding:5px 8px;font-size:12px;line-height:16px}.zISxCG_helpBody{flex-direction:column;gap:7px;padding:4px 2px;display:flex}.zISxCG_helpLine{align-items:baseline;gap:12px;min-width:0;font-size:12px;line-height:20px;display:flex}.zISxCG_helpCmd{color:var(--hub-text-primary);white-space:nowrap;flex-shrink:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.zISxCG_helpNote{min-width:0;color:var(--hub-text-tertiary);font-size:11px}";
|
|
4088
4226
|
const tagId$6 = "dsh-plugin/CustomInstallView.module.css";
|
|
4089
4227
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$6) + "]") === null) {
|
|
4090
4228
|
const tag = document.createElement("style");
|
|
@@ -4094,38 +4232,43 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4094
4232
|
document.head.appendChild(tag);
|
|
4095
4233
|
}
|
|
4096
4234
|
var CustomInstallView_module_css_default = {
|
|
4097
|
-
"
|
|
4098
|
-
"
|
|
4099
|
-
"
|
|
4235
|
+
"installCardHead": "zISxCG_installCardHead",
|
|
4236
|
+
"installError": "zISxCG_installError",
|
|
4237
|
+
"helpBody": "zISxCG_helpBody",
|
|
4238
|
+
"helpLine": "zISxCG_helpLine",
|
|
4239
|
+
"root": "zISxCG_root",
|
|
4100
4240
|
"installExample": "zISxCG_installExample",
|
|
4101
|
-
"channelOff": "zISxCG_channelOff",
|
|
4102
|
-
"desc": "zISxCG_desc",
|
|
4103
|
-
"channelOffText": "zISxCG_channelOffText",
|
|
4104
4241
|
"installInput": "zISxCG_installInput",
|
|
4105
|
-
"
|
|
4106
|
-
"
|
|
4107
|
-
"
|
|
4242
|
+
"channelOffBtn": "zISxCG_channelOffBtn",
|
|
4243
|
+
"helpCmd": "zISxCG_helpCmd",
|
|
4244
|
+
"installHelpBtn": "zISxCG_installHelpBtn",
|
|
4245
|
+
"desc": "zISxCG_desc",
|
|
4246
|
+
"channelOff": "zISxCG_channelOff",
|
|
4247
|
+
"helpNote": "zISxCG_helpNote",
|
|
4248
|
+
"installLabel": "zISxCG_installLabel",
|
|
4249
|
+
"installCardDisabled": "zISxCG_installCardDisabled",
|
|
4250
|
+
"installCard": "zISxCG_installCard",
|
|
4108
4251
|
"installBtn": "zISxCG_installBtn",
|
|
4109
|
-
"
|
|
4252
|
+
"installRow": "zISxCG_installRow",
|
|
4253
|
+
"channelOffText": "zISxCG_channelOffText",
|
|
4110
4254
|
"installInputError": "zISxCG_installInputError",
|
|
4111
|
-
"
|
|
4112
|
-
"installError": "zISxCG_installError"
|
|
4255
|
+
"installCards": "zISxCG_installCards"
|
|
4113
4256
|
};
|
|
4114
4257
|
//#endregion
|
|
4115
4258
|
//#region src/client/components/views/CustomInstallView.tsx
|
|
4116
4259
|
/**
|
|
4117
|
-
* DSH
|
|
4260
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
4118
4261
|
* Website: https://dsh-plugin.org
|
|
4119
4262
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
4120
4263
|
*
|
|
4121
4264
|
* Custom install view: a standalone top-level section for manually
|
|
4122
4265
|
* installing npm packages or GitHub sources outside the catalog. Three
|
|
4123
|
-
* installer cards, one per channel — npm package
|
|
4124
|
-
* install command
|
|
4125
|
-
*
|
|
4126
|
-
* input and its own format check.
|
|
4127
|
-
* has to guess which format goes
|
|
4128
|
-
* Installed view, marked as custom.
|
|
4266
|
+
* installer cards, one per channel — npm package (bare name or a full
|
|
4267
|
+
* npm/pnpm install command, including the official global `npm install -g`),
|
|
4268
|
+
* GitHub source and the official `dsh plugin ... add <target>` command —
|
|
4269
|
+
* each with a placeholder example above the input and its own format check.
|
|
4270
|
+
* The cards stay separate so a user never has to guess which format goes
|
|
4271
|
+
* where. Finished installs surface in the Installed view, marked as custom.
|
|
4129
4272
|
*
|
|
4130
4273
|
* Pure presentational: owns only the three local input/error states; the
|
|
4131
4274
|
* actual install (custom source, gated by the security toggles) bubbles up
|
|
@@ -4137,35 +4280,76 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4137
4280
|
const GITHUB_BARE_RE = /^[A-Za-z0-9._-]+\/[A-Za-z0-9._-]+$/;
|
|
4138
4281
|
/** npm 包名(含 @scope/pkg) */
|
|
4139
4282
|
const NPM_PACKAGE_RE = /^(?:@[a-z0-9._-]+\/)?[a-z0-9._-]+$/;
|
|
4140
|
-
/** DSH
|
|
4141
|
-
*
|
|
4142
|
-
|
|
4283
|
+
/** DSH 命令行前缀(官方唯一形式 `dsh plugin --profile <name> add <target>`)—— 提取其中的安装目标。
|
|
4284
|
+
* 官方 CLI(apps/cli/src/args.ts,commander):--profile 为必填长选项(无 -p 简写,省略即报错),
|
|
4285
|
+
* 支持 `--profile=<name>` 等号形式;命令大小写不敏感。与 server 端 installTargetOf 口径一致。 */
|
|
4286
|
+
const DSH_PLUGIN_CMD_RE = /^dsh\s+plugin\s+--profile(?:\s+|=)\S+\s+add\s+(.+)$/i;
|
|
4143
4287
|
/** npm 全局安装命令(官方 README 格式,如 `npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tui`)——
|
|
4144
4288
|
* 提取 -g 之后的包列表;任一包名非法返回 null(交给格式错误提示)。与 server 端 globalNpmPackagesOf 口径一致。 */
|
|
4145
4289
|
const NPM_GLOBAL_CMD_RE = /^npm\s+(?:install|i)\s+(?:-g|--global)\s+(.+)$/i;
|
|
4290
|
+
/** 常规 npm/pnpm 安装命令(装进当前 profile,如 `npm install lodash`、`pnpm add @scope/pkg`)——
|
|
4291
|
+
* 提取命令后的包列表;包列表在 splitPackages 里逐个校验。 */
|
|
4292
|
+
const NPM_INSTALL_CMD_RE = /^(?:npm\s+(?:install|i)|pnpm\s+(?:add|i|install))\s+(.+)$/i;
|
|
4146
4293
|
function installTargetOf(raw) {
|
|
4147
4294
|
const input = raw.trim();
|
|
4148
4295
|
const match = DSH_PLUGIN_CMD_RE.exec(input);
|
|
4149
4296
|
return match !== null ? match[1].trim() : input;
|
|
4150
4297
|
}
|
|
4151
|
-
|
|
4152
|
-
|
|
4153
|
-
|
|
4154
|
-
|
|
4155
|
-
const packages = match[1].trim().split(/\s+/).filter((p) => p !== "");
|
|
4298
|
+
/** 空格分隔的包列表:逐个按 npm 包名语法校验 + 拒绝以 - 开头的 token(npm 会把 --xxx 当参数而非包名),
|
|
4299
|
+
* 任一非法返回 null(交给格式错误提示)。与 server 端 globalNpmPackagesOf 同口径。 */
|
|
4300
|
+
function splitPackages(raw) {
|
|
4301
|
+
const packages = raw.trim().split(/\s+/).filter((p) => p !== "");
|
|
4156
4302
|
if (packages.length === 0 || packages.some((p) => !NPM_PACKAGE_RE.test(p) || p.startsWith("-"))) return null;
|
|
4157
4303
|
return packages;
|
|
4158
4304
|
}
|
|
4305
|
+
function parseNpmInput(raw) {
|
|
4306
|
+
const input = raw.trim();
|
|
4307
|
+
if (NPM_PACKAGE_RE.test(input)) return {
|
|
4308
|
+
kind: "pkg",
|
|
4309
|
+
target: input
|
|
4310
|
+
};
|
|
4311
|
+
const global = NPM_GLOBAL_CMD_RE.exec(input);
|
|
4312
|
+
if (global !== null) {
|
|
4313
|
+
const pkgs = splitPackages(global[1]);
|
|
4314
|
+
if (pkgs !== null) return {
|
|
4315
|
+
kind: "global",
|
|
4316
|
+
pkgs
|
|
4317
|
+
};
|
|
4318
|
+
return null;
|
|
4319
|
+
}
|
|
4320
|
+
const install = NPM_INSTALL_CMD_RE.exec(input);
|
|
4321
|
+
if (install !== null) {
|
|
4322
|
+
const pkgs = splitPackages(install[1]);
|
|
4323
|
+
if (pkgs !== null && pkgs.length === 1) return {
|
|
4324
|
+
kind: "pkg",
|
|
4325
|
+
target: pkgs[0]
|
|
4326
|
+
};
|
|
4327
|
+
return null;
|
|
4328
|
+
}
|
|
4329
|
+
return null;
|
|
4330
|
+
}
|
|
4159
4331
|
function isGitHubInput(raw) {
|
|
4160
4332
|
const input = raw.trim();
|
|
4161
4333
|
return GITHUB_URL_RE.test(input) || GITHUB_BARE_RE.test(input);
|
|
4162
4334
|
}
|
|
4163
|
-
function isNpmInput(raw) {
|
|
4164
|
-
return NPM_PACKAGE_RE.test(raw.trim());
|
|
4165
|
-
}
|
|
4166
4335
|
function isDshCommand(raw) {
|
|
4167
4336
|
return DSH_PLUGIN_CMD_RE.test(raw.trim());
|
|
4168
4337
|
}
|
|
4338
|
+
/** 卡片标题旁的「帮助」弹窗:三块卡片各自的标题与格式清单语言包 key。 */
|
|
4339
|
+
const HELP_CARDS = {
|
|
4340
|
+
npm: {
|
|
4341
|
+
titleKey: "npmInstallLabel",
|
|
4342
|
+
contentKey: "npmInstallHelp"
|
|
4343
|
+
},
|
|
4344
|
+
git: {
|
|
4345
|
+
titleKey: "gitInstallLabel",
|
|
4346
|
+
contentKey: "gitInstallHelp"
|
|
4347
|
+
},
|
|
4348
|
+
cmd: {
|
|
4349
|
+
titleKey: "dshCmdLabel",
|
|
4350
|
+
contentKey: "dshCmdHelp"
|
|
4351
|
+
}
|
|
4352
|
+
};
|
|
4169
4353
|
function CustomInstallView({ t, onInstallCustom, enableNpm, enableGit, enableDsh, onOpenSettings }) {
|
|
4170
4354
|
/** 自定义安装:NPM 包输入与格式错误('' = 无错误) */
|
|
4171
4355
|
const [npmQuery, setNpmQuery] = (0, react.useState)("");
|
|
@@ -4176,6 +4360,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4176
4360
|
/** 自定义安装:DSH 命令输入与格式错误('' = 无错误) */
|
|
4177
4361
|
const [cmdQuery, setCmdQuery] = (0, react.useState)("");
|
|
4178
4362
|
const [cmdError, setCmdError] = (0, react.useState)("");
|
|
4363
|
+
/** 卡片标题旁「帮助」弹窗:null = 未打开;'npm' | 'git' | 'cmd' = 打开对应卡片的格式清单 */
|
|
4364
|
+
const [helpFor, setHelpFor] = (0, react.useState)(null);
|
|
4179
4365
|
/** 通道关闭提示行:开关关掉后替代示例与输入行,引导去设置打开 */
|
|
4180
4366
|
const channelOffRow = (0, react.createElement)("div", { className: CustomInstallView_module_css_default.channelOff }, (0, react.createElement)("span", { className: CustomInstallView_module_css_default.channelOffText }, t("channelDisabledHint")), (0, react.createElement)("button", {
|
|
4181
4367
|
type: "button",
|
|
@@ -4183,13 +4369,15 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4183
4369
|
onClick: onOpenSettings
|
|
4184
4370
|
}, t("goToSettings")));
|
|
4185
4371
|
const submitNpm = () => {
|
|
4186
|
-
const
|
|
4187
|
-
if (!
|
|
4188
|
-
|
|
4372
|
+
const raw = npmQuery.trim();
|
|
4373
|
+
if (!raw) return;
|
|
4374
|
+
const parsed = parseNpmInput(raw);
|
|
4375
|
+
if (parsed === null) {
|
|
4189
4376
|
setNpmError(t("npmInstallInvalid"));
|
|
4190
4377
|
return;
|
|
4191
4378
|
}
|
|
4192
|
-
onInstallCustom(
|
|
4379
|
+
if (parsed.kind === "global") onInstallCustom(raw, { globalNpm: parsed.pkgs });
|
|
4380
|
+
else onInstallCustom(parsed.target);
|
|
4193
4381
|
setNpmQuery("");
|
|
4194
4382
|
setNpmError("");
|
|
4195
4383
|
};
|
|
@@ -4207,13 +4395,6 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4207
4395
|
const submitCmd = () => {
|
|
4208
4396
|
const raw = cmdQuery.trim();
|
|
4209
4397
|
if (!raw) return;
|
|
4210
|
-
const globalPkgs = parseNpmGlobalPackages(raw);
|
|
4211
|
-
if (globalPkgs !== null) {
|
|
4212
|
-
onInstallCustom(raw, { globalNpm: globalPkgs });
|
|
4213
|
-
setCmdQuery("");
|
|
4214
|
-
setCmdError("");
|
|
4215
|
-
return;
|
|
4216
|
-
}
|
|
4217
4398
|
if (!isDshCommand(raw)) {
|
|
4218
4399
|
setCmdError(t("dshCmdInvalid"));
|
|
4219
4400
|
return;
|
|
@@ -4222,8 +4403,14 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4222
4403
|
setCmdQuery("");
|
|
4223
4404
|
setCmdError("");
|
|
4224
4405
|
};
|
|
4225
|
-
return (0, react.createElement)("div", { className: CustomInstallView_module_css_default.root }, (0, react.createElement)("p", { className: CustomInstallView_module_css_default.desc }, t("customViewDesc")), (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installCards }, (0, react.createElement)("div", { className: enableNpm ? CustomInstallView_module_css_default.installCard : `${CustomInstallView_module_css_default.installCard} ${CustomInstallView_module_css_default.installCardDisabled}` }, (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installCardHead }, (0, react.createElement)("span", { className: CustomInstallView_module_css_default.installLabel }, t("npmInstallLabel"))
|
|
4226
|
-
|
|
4406
|
+
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", {
|
|
4407
|
+
type: "button",
|
|
4408
|
+
className: CustomInstallView_module_css_default.installHelpBtn,
|
|
4409
|
+
title: t("installHelp"),
|
|
4410
|
+
"aria-label": t("installHelp"),
|
|
4411
|
+
onClick: () => setHelpFor("npm")
|
|
4412
|
+
}, (0, react.createElement)(HelpIcon))), !enableNpm ? channelOffRow : [
|
|
4413
|
+
(0, react.createElement)("div", { className: CustomInstallView_module_css_default.installExample }, t("npmInstallExample"), (0, react.createElement)("br"), t("npmInstallExample2")),
|
|
4227
4414
|
(0, react.createElement)("div", { className: CustomInstallView_module_css_default.installRow }, (0, react.createElement)("input", {
|
|
4228
4415
|
className: npmError ? `${CustomInstallView_module_css_default.installInput} ${CustomInstallView_module_css_default.installInputError}` : CustomInstallView_module_css_default.installInput,
|
|
4229
4416
|
type: "text",
|
|
@@ -4244,7 +4431,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4244
4431
|
onClick: submitNpm
|
|
4245
4432
|
}, t("installCliBtn"))),
|
|
4246
4433
|
npmError ? (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installError }, npmError) : null
|
|
4247
|
-
]), (0, react.createElement)("div", { className: enableGit ? CustomInstallView_module_css_default.installCard : `${CustomInstallView_module_css_default.installCard} ${CustomInstallView_module_css_default.installCardDisabled}` }, (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installCardHead }, (0, react.createElement)("span", { className: CustomInstallView_module_css_default.installLabel }, t("gitInstallLabel"))
|
|
4434
|
+
]), (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", {
|
|
4435
|
+
type: "button",
|
|
4436
|
+
className: CustomInstallView_module_css_default.installHelpBtn,
|
|
4437
|
+
title: t("installHelp"),
|
|
4438
|
+
"aria-label": t("installHelp"),
|
|
4439
|
+
onClick: () => setHelpFor("git")
|
|
4440
|
+
}, (0, react.createElement)(HelpIcon))), !enableGit ? channelOffRow : [
|
|
4248
4441
|
(0, react.createElement)("div", { className: CustomInstallView_module_css_default.installExample }, t("gitInstallExample")),
|
|
4249
4442
|
(0, react.createElement)("div", { className: CustomInstallView_module_css_default.installRow }, (0, react.createElement)("input", {
|
|
4250
4443
|
className: gitError ? `${CustomInstallView_module_css_default.installInput} ${CustomInstallView_module_css_default.installInputError}` : CustomInstallView_module_css_default.installInput,
|
|
@@ -4266,7 +4459,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4266
4459
|
onClick: submitGit
|
|
4267
4460
|
}, t("installCliBtn"))),
|
|
4268
4461
|
gitError ? (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installError }, gitError) : null
|
|
4269
|
-
]), (0, react.createElement)("div", { className: enableDsh ? CustomInstallView_module_css_default.installCard : `${CustomInstallView_module_css_default.installCard} ${CustomInstallView_module_css_default.installCardDisabled}` }, (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installCardHead }, (0, react.createElement)("span", { className: CustomInstallView_module_css_default.installLabel }, t("dshCmdLabel"))
|
|
4462
|
+
]), (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", {
|
|
4463
|
+
type: "button",
|
|
4464
|
+
className: CustomInstallView_module_css_default.installHelpBtn,
|
|
4465
|
+
title: t("installHelp"),
|
|
4466
|
+
"aria-label": t("installHelp"),
|
|
4467
|
+
onClick: () => setHelpFor("cmd")
|
|
4468
|
+
}, (0, react.createElement)(HelpIcon))), !enableDsh ? channelOffRow : [
|
|
4270
4469
|
(0, react.createElement)("div", { className: CustomInstallView_module_css_default.installExample }, t("dshCmdExample")),
|
|
4271
4470
|
(0, react.createElement)("div", { className: CustomInstallView_module_css_default.installRow }, (0, react.createElement)("input", {
|
|
4272
4471
|
className: cmdError ? `${CustomInstallView_module_css_default.installInput} ${CustomInstallView_module_css_default.installInputError}` : CustomInstallView_module_css_default.installInput,
|
|
@@ -4288,7 +4487,26 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4288
4487
|
onClick: submitCmd
|
|
4289
4488
|
}, t("installCliBtn"))),
|
|
4290
4489
|
cmdError ? (0, react.createElement)("div", { className: CustomInstallView_module_css_default.installError }, cmdError) : null
|
|
4291
|
-
])))
|
|
4490
|
+
])), helpFor !== null ? (0, react.createElement)("div", {
|
|
4491
|
+
className: Modal_module_css_default.overlay,
|
|
4492
|
+
onClick: (e) => {
|
|
4493
|
+
if (e.target === e.currentTarget) setHelpFor(null);
|
|
4494
|
+
}
|
|
4495
|
+
}, (0, react.createElement)("div", {
|
|
4496
|
+
className: `${Modal_module_css_default.errorModal} ${Modal_module_css_default.helpModal}`,
|
|
4497
|
+
role: "dialog",
|
|
4498
|
+
"aria-modal": "true"
|
|
4499
|
+
}, (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", {
|
|
4500
|
+
className: Modal_module_css_default.modalClose,
|
|
4501
|
+
"aria-label": t("errorClose"),
|
|
4502
|
+
onClick: () => setHelpFor(null)
|
|
4503
|
+
}, (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) => {
|
|
4504
|
+
const [cmd, note] = line.split(" ");
|
|
4505
|
+
return (0, react.createElement)("div", {
|
|
4506
|
+
key: i,
|
|
4507
|
+
className: CustomInstallView_module_css_default.helpLine
|
|
4508
|
+
}, 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);
|
|
4509
|
+
}))))) : null);
|
|
4292
4510
|
}
|
|
4293
4511
|
//#endregion
|
|
4294
4512
|
//#region \0dsh-css:src/client/styles/SettingsView.module.css.mjs
|
|
@@ -4302,26 +4520,26 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4302
4520
|
document.head.appendChild(tag);
|
|
4303
4521
|
}
|
|
4304
4522
|
var SettingsView_module_css_default = {
|
|
4305
|
-
"
|
|
4306
|
-
"
|
|
4307
|
-
"
|
|
4523
|
+
"settingRow": "_506LLG_settingRow",
|
|
4524
|
+
"textInput": "_506LLG_textInput",
|
|
4525
|
+
"content": "_506LLG_content",
|
|
4308
4526
|
"navItem": "_506LLG_navItem",
|
|
4527
|
+
"settingControlStack": "_506LLG_settingControlStack",
|
|
4528
|
+
"sidebar": "_506LLG_sidebar",
|
|
4529
|
+
"controlDropdown": "_506LLG_controlDropdown",
|
|
4309
4530
|
"settingTitle": "_506LLG_settingTitle",
|
|
4310
4531
|
"settingLabel": "_506LLG_settingLabel",
|
|
4311
4532
|
"card": "_506LLG_card",
|
|
4312
|
-
"
|
|
4313
|
-
"navItemActive": "_506LLG_navItemActive",
|
|
4314
|
-
"settingControl": "_506LLG_settingControl",
|
|
4315
|
-
"settingRowStack": "_506LLG_settingRowStack",
|
|
4533
|
+
"root": "_506LLG_root",
|
|
4316
4534
|
"pageTitle": "_506LLG_pageTitle",
|
|
4317
|
-
"
|
|
4535
|
+
"pageDesc": "_506LLG_pageDesc",
|
|
4536
|
+
"navItemActive": "_506LLG_navItemActive",
|
|
4318
4537
|
"resetBtn": "_506LLG_resetBtn",
|
|
4319
|
-
"
|
|
4320
|
-
"settingRow": "_506LLG_settingRow",
|
|
4321
|
-
"controlDropdown": "_506LLG_controlDropdown",
|
|
4322
|
-
"root": "_506LLG_root",
|
|
4538
|
+
"settingControl": "_506LLG_settingControl",
|
|
4323
4539
|
"pageHeader": "_506LLG_pageHeader",
|
|
4324
|
-
"settingDesc": "_506LLG_settingDesc"
|
|
4540
|
+
"settingDesc": "_506LLG_settingDesc",
|
|
4541
|
+
"navIcon": "_506LLG_navIcon",
|
|
4542
|
+
"settingRowStack": "_506LLG_settingRowStack"
|
|
4325
4543
|
};
|
|
4326
4544
|
//#endregion
|
|
4327
4545
|
//#region \0dsh-css:src/client/styles/Dropdown.module.css.mjs
|
|
@@ -4335,22 +4553,22 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4335
4553
|
document.head.appendChild(tag);
|
|
4336
4554
|
}
|
|
4337
4555
|
var Dropdown_module_css_default = {
|
|
4338
|
-
"
|
|
4556
|
+
"dropdownItemLabel": "B_Gxsq_dropdownItemLabel",
|
|
4339
4557
|
"dropdownLabel": "B_Gxsq_dropdownLabel",
|
|
4558
|
+
"dropdownBtn": "B_Gxsq_dropdownBtn",
|
|
4559
|
+
"dropdownPanel": "B_Gxsq_dropdownPanel",
|
|
4560
|
+
"dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen",
|
|
4561
|
+
"dropdownArrow": "B_Gxsq_dropdownArrow",
|
|
4340
4562
|
"dropdownItemActive": "B_Gxsq_dropdownItemActive",
|
|
4563
|
+
"dropdownCountActive": "B_Gxsq_dropdownCountActive",
|
|
4341
4564
|
"dropdownCount": "B_Gxsq_dropdownCount",
|
|
4342
|
-
"dropdownPanel": "B_Gxsq_dropdownPanel",
|
|
4343
4565
|
"dropdown": "B_Gxsq_dropdown",
|
|
4344
|
-
"
|
|
4345
|
-
"dropdownCountActive": "B_Gxsq_dropdownCountActive",
|
|
4346
|
-
"dropdownArrow": "B_Gxsq_dropdownArrow",
|
|
4347
|
-
"dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen",
|
|
4348
|
-
"dropdownBtn": "B_Gxsq_dropdownBtn"
|
|
4566
|
+
"dropdownItem": "B_Gxsq_dropdownItem"
|
|
4349
4567
|
};
|
|
4350
4568
|
//#endregion
|
|
4351
4569
|
//#region src/client/components/ui/Dropdown.tsx
|
|
4352
4570
|
/**
|
|
4353
|
-
* DSH
|
|
4571
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
4354
4572
|
* Website: https://dsh-plugin.org
|
|
4355
4573
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
4356
4574
|
*
|
|
@@ -4418,14 +4636,14 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4418
4636
|
document.head.appendChild(tag);
|
|
4419
4637
|
}
|
|
4420
4638
|
var Toggle_module_css_default = {
|
|
4639
|
+
"toggle": "k-cD4G_toggle",
|
|
4421
4640
|
"toggleOn": "k-cD4G_toggleOn",
|
|
4422
|
-
"knob": "k-cD4G_knob"
|
|
4423
|
-
"toggle": "k-cD4G_toggle"
|
|
4641
|
+
"knob": "k-cD4G_knob"
|
|
4424
4642
|
};
|
|
4425
4643
|
//#endregion
|
|
4426
4644
|
//#region src/client/components/ui/Toggle.tsx
|
|
4427
4645
|
/**
|
|
4428
|
-
* DSH
|
|
4646
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
4429
4647
|
* Website: https://dsh-plugin.org
|
|
4430
4648
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
4431
4649
|
*
|
|
@@ -4456,34 +4674,34 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4456
4674
|
document.head.appendChild(tag);
|
|
4457
4675
|
}
|
|
4458
4676
|
var DiagnosticsView_module_css_default = {
|
|
4459
|
-
"
|
|
4677
|
+
"badgeRunning": "k9eRya_badgeRunning",
|
|
4460
4678
|
"meta": "k9eRya_meta",
|
|
4461
|
-
"summaryRunning": "k9eRya_summaryRunning",
|
|
4462
4679
|
"envLabel": "k9eRya_envLabel",
|
|
4463
|
-
"
|
|
4464
|
-
"headHint": "k9eRya_headHint",
|
|
4465
|
-
"display": "k9eRya_display",
|
|
4466
|
-
"head": "k9eRya_head",
|
|
4680
|
+
"summaryOk": "k9eRya_summaryOk",
|
|
4467
4681
|
"runBtn": "k9eRya_runBtn",
|
|
4682
|
+
"head": "k9eRya_head",
|
|
4468
4683
|
"badge": "k9eRya_badge",
|
|
4469
|
-
"
|
|
4470
|
-
"
|
|
4684
|
+
"badgeOk": "k9eRya_badgeOk",
|
|
4685
|
+
"badgeFail": "k9eRya_badgeFail",
|
|
4471
4686
|
"panel": "k9eRya_panel",
|
|
4687
|
+
"display": "k9eRya_display",
|
|
4688
|
+
"envCopyBtn": "k9eRya_envCopyBtn",
|
|
4689
|
+
"summaryFail": "k9eRya_summaryFail",
|
|
4472
4690
|
"row": "k9eRya_row",
|
|
4473
|
-
"
|
|
4474
|
-
"summaryOk": "k9eRya_summaryOk",
|
|
4475
|
-
"diagPulse": "k9eRya_diagPulse",
|
|
4476
|
-
"badgeRunning": "k9eRya_badgeRunning",
|
|
4691
|
+
"badgeIdle": "k9eRya_badgeIdle",
|
|
4477
4692
|
"envRow": "k9eRya_envRow",
|
|
4693
|
+
"envTitle": "k9eRya_envTitle",
|
|
4694
|
+
"diagPulse": "k9eRya_diagPulse",
|
|
4695
|
+
"summary": "k9eRya_summary",
|
|
4696
|
+
"summaryRunning": "k9eRya_summaryRunning",
|
|
4478
4697
|
"envDesc": "k9eRya_envDesc",
|
|
4479
|
-
"
|
|
4480
|
-
"
|
|
4481
|
-
"envTitle": "k9eRya_envTitle"
|
|
4698
|
+
"headHint": "k9eRya_headHint",
|
|
4699
|
+
"name": "k9eRya_name"
|
|
4482
4700
|
};
|
|
4483
4701
|
//#endregion
|
|
4484
4702
|
//#region src/client/components/views/DiagnosticsView.tsx
|
|
4485
4703
|
/**
|
|
4486
|
-
* DSH
|
|
4704
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
4487
4705
|
* Website: https://dsh-plugin.org
|
|
4488
4706
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
4489
4707
|
*
|
|
@@ -4497,7 +4715,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4497
4715
|
/** 系统版本文本:提交 Issue 时粘贴到正文,方便作者复现。 */
|
|
4498
4716
|
function formatEnv(env) {
|
|
4499
4717
|
return [
|
|
4500
|
-
`DSH
|
|
4718
|
+
`DSH Plugin Hub ${PLUGIN_VERSION}`,
|
|
4501
4719
|
`DSH ${env.dshVersion ?? "unknown"}`,
|
|
4502
4720
|
`Node ${env.nodeVersion}`,
|
|
4503
4721
|
`${env.platform} ${env.arch} (${env.release})`,
|
|
@@ -4636,61 +4854,61 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4636
4854
|
document.head.appendChild(tag);
|
|
4637
4855
|
}
|
|
4638
4856
|
var LogsView_module_css_default = {
|
|
4639
|
-
"
|
|
4640
|
-
"
|
|
4641
|
-
"
|
|
4642
|
-
"
|
|
4857
|
+
"filterBar": "_3j77BW_filterBar",
|
|
4858
|
+
"pathDialog": "_3j77BW_pathDialog",
|
|
4859
|
+
"search": "_3j77BW_search",
|
|
4860
|
+
"logList": "_3j77BW_logList",
|
|
4861
|
+
"badgeError": "_3j77BW_badgeError",
|
|
4862
|
+
"pathLabel": "_3j77BW_pathLabel",
|
|
4863
|
+
"btnPrimary": "_3j77BW_btnPrimary",
|
|
4864
|
+
"head": "_3j77BW_head",
|
|
4643
4865
|
"badgeDebug": "_3j77BW_badgeDebug",
|
|
4644
|
-
"empty": "_3j77BW_empty",
|
|
4645
|
-
"pathDialogDesc": "_3j77BW_pathDialogDesc",
|
|
4646
|
-
"catUninstall": "_3j77BW_catUninstall",
|
|
4647
4866
|
"message": "_3j77BW_message",
|
|
4648
|
-
"
|
|
4649
|
-
"
|
|
4650
|
-
"
|
|
4867
|
+
"filterChip": "_3j77BW_filterChip",
|
|
4868
|
+
"pathText": "_3j77BW_pathText",
|
|
4869
|
+
"pathDialogDesc": "_3j77BW_pathDialogDesc",
|
|
4870
|
+
"pathDialogFoot": "_3j77BW_pathDialogFoot",
|
|
4871
|
+
"linkBtn": "_3j77BW_linkBtn",
|
|
4651
4872
|
"searchInput": "_3j77BW_searchInput",
|
|
4652
|
-
"
|
|
4873
|
+
"footCount": "_3j77BW_footCount",
|
|
4874
|
+
"catBadge": "_3j77BW_catBadge",
|
|
4875
|
+
"catInstall": "_3j77BW_catInstall",
|
|
4876
|
+
"catUninstall": "_3j77BW_catUninstall",
|
|
4653
4877
|
"catDiagnostics": "_3j77BW_catDiagnostics",
|
|
4654
|
-
"
|
|
4655
|
-
"
|
|
4656
|
-
"pathDialogHint": "_3j77BW_pathDialogHint",
|
|
4657
|
-
"time": "_3j77BW_time",
|
|
4658
|
-
"event": "_3j77BW_event",
|
|
4659
|
-
"pathDialogReset": "_3j77BW_pathDialogReset",
|
|
4660
|
-
"moreEnd": "_3j77BW_moreEnd",
|
|
4661
|
-
"foot": "_3j77BW_foot",
|
|
4878
|
+
"footPath": "_3j77BW_footPath",
|
|
4879
|
+
"footFail": "_3j77BW_footFail",
|
|
4662
4880
|
"badgeSuccess": "_3j77BW_badgeSuccess",
|
|
4663
|
-
"catBadge": "_3j77BW_catBadge",
|
|
4664
4881
|
"footActions": "_3j77BW_footActions",
|
|
4665
|
-
"
|
|
4666
|
-
"
|
|
4667
|
-
"filterChip": "_3j77BW_filterChip",
|
|
4668
|
-
"headHint": "_3j77BW_headHint",
|
|
4669
|
-
"catInstall": "_3j77BW_catInstall",
|
|
4670
|
-
"panel": "_3j77BW_panel",
|
|
4671
|
-
"catSettings": "_3j77BW_catSettings",
|
|
4672
|
-
"badgeInfo": "_3j77BW_badgeInfo",
|
|
4673
|
-
"badgeError": "_3j77BW_badgeError",
|
|
4674
|
-
"pathDraft": "_3j77BW_pathDraft",
|
|
4675
|
-
"filterBar": "_3j77BW_filterBar",
|
|
4882
|
+
"entry": "_3j77BW_entry",
|
|
4883
|
+
"more": "_3j77BW_more",
|
|
4676
4884
|
"list": "_3j77BW_list",
|
|
4677
|
-
"
|
|
4885
|
+
"pathRow": "_3j77BW_pathRow",
|
|
4886
|
+
"time": "_3j77BW_time",
|
|
4678
4887
|
"pathDialogRow": "_3j77BW_pathDialogRow",
|
|
4888
|
+
"pathDialogHint": "_3j77BW_pathDialogHint",
|
|
4889
|
+
"foot": "_3j77BW_foot",
|
|
4890
|
+
"badge": "_3j77BW_badge",
|
|
4891
|
+
"btn": "_3j77BW_btn",
|
|
4892
|
+
"badgeWarn": "_3j77BW_badgeWarn",
|
|
4679
4893
|
"catUpdate": "_3j77BW_catUpdate",
|
|
4680
|
-
"pathDialog": "_3j77BW_pathDialog",
|
|
4681
|
-
"previewRow": "_3j77BW_previewRow",
|
|
4682
|
-
"pathRow": "_3j77BW_pathRow",
|
|
4683
|
-
"linkBtn": "_3j77BW_linkBtn",
|
|
4684
|
-
"footPath": "_3j77BW_footPath",
|
|
4685
|
-
"pathLabel": "_3j77BW_pathLabel",
|
|
4686
|
-
"footCount": "_3j77BW_footCount",
|
|
4687
4894
|
"catSystem": "_3j77BW_catSystem",
|
|
4688
|
-
"
|
|
4895
|
+
"empty": "_3j77BW_empty",
|
|
4896
|
+
"pathDialogReset": "_3j77BW_pathDialogReset",
|
|
4897
|
+
"actions": "_3j77BW_actions",
|
|
4898
|
+
"panel": "_3j77BW_panel",
|
|
4899
|
+
"previewRow": "_3j77BW_previewRow",
|
|
4900
|
+
"event": "_3j77BW_event",
|
|
4901
|
+
"pathDraft": "_3j77BW_pathDraft",
|
|
4902
|
+
"badgeInfo": "_3j77BW_badgeInfo",
|
|
4903
|
+
"headHint": "_3j77BW_headHint",
|
|
4904
|
+
"filterChipActive": "_3j77BW_filterChipActive",
|
|
4905
|
+
"moreEnd": "_3j77BW_moreEnd",
|
|
4906
|
+
"catSettings": "_3j77BW_catSettings"
|
|
4689
4907
|
};
|
|
4690
4908
|
//#endregion
|
|
4691
4909
|
//#region src/client/components/modals/LogsModal.tsx
|
|
4692
4910
|
/**
|
|
4693
|
-
* DSH
|
|
4911
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
4694
4912
|
* Website: https://dsh-plugin.org
|
|
4695
4913
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
4696
4914
|
*
|
|
@@ -4963,7 +5181,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
4963
5181
|
//#endregion
|
|
4964
5182
|
//#region src/client/components/modals/LogsPathModal.tsx
|
|
4965
5183
|
/**
|
|
4966
|
-
* DSH
|
|
5184
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
4967
5185
|
* Website: https://dsh-plugin.org
|
|
4968
5186
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
4969
5187
|
*
|
|
@@ -5078,7 +5296,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5078
5296
|
//#endregion
|
|
5079
5297
|
//#region src/client/components/views/LogsView.tsx
|
|
5080
5298
|
/**
|
|
5081
|
-
* DSH
|
|
5299
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
5082
5300
|
* Website: https://dsh-plugin.org
|
|
5083
5301
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
5084
5302
|
*
|
|
@@ -5202,7 +5420,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5202
5420
|
//#endregion
|
|
5203
5421
|
//#region src/client/components/views/SettingsView.tsx
|
|
5204
5422
|
/**
|
|
5205
|
-
* DSH
|
|
5423
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
5206
5424
|
* Website: https://dsh-plugin.org
|
|
5207
5425
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
5208
5426
|
*
|
|
@@ -5418,7 +5636,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5418
5636
|
//#endregion
|
|
5419
5637
|
//#region src/client/components/PluginHubSection.tsx
|
|
5420
5638
|
/**
|
|
5421
|
-
* DSH
|
|
5639
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
5422
5640
|
* Website: https://dsh-plugin.org
|
|
5423
5641
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
5424
5642
|
*
|
|
@@ -5476,6 +5694,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5476
5694
|
const [notifications, setNotifications] = (0, react.useState)(() => loadNotifications());
|
|
5477
5695
|
/** 通知中心弹窗:一级导航「设置」tab 后边的铃铛入口按钮打开 */
|
|
5478
5696
|
const [showNotifications, setShowNotifications] = (0, react.useState)(false);
|
|
5697
|
+
/** 「忽略本次更新」确认弹窗:{ repo, version };null = 关闭 */
|
|
5698
|
+
const [ignoreTarget, setIgnoreTarget] = (0, react.useState)(null);
|
|
5479
5699
|
/** 宿主机器环境快照:提交 bug 的 issue 正文附带;取不到为 null(链接少环境段,不阻塞) */
|
|
5480
5700
|
const [env, setEnv] = (0, react.useState)(null);
|
|
5481
5701
|
(0, react.useEffect)(() => {
|
|
@@ -5515,16 +5735,17 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5515
5735
|
}));
|
|
5516
5736
|
},
|
|
5517
5737
|
onError: (message, repo, kind, command, attempts) => {
|
|
5738
|
+
const issueRepo = issueRepoOf(repo ?? "", catalog.installedItems, catalog.plugins);
|
|
5518
5739
|
setErrorMsg({
|
|
5519
5740
|
message,
|
|
5520
|
-
repo,
|
|
5741
|
+
repo: issueRepo,
|
|
5521
5742
|
kind,
|
|
5522
5743
|
command,
|
|
5523
5744
|
attempts
|
|
5524
5745
|
});
|
|
5525
5746
|
setNotifications(addFailure({
|
|
5526
5747
|
kind,
|
|
5527
|
-
repo:
|
|
5748
|
+
repo: issueRepo ?? "",
|
|
5528
5749
|
message,
|
|
5529
5750
|
command,
|
|
5530
5751
|
attempts
|
|
@@ -5544,24 +5765,35 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5544
5765
|
} : null;
|
|
5545
5766
|
}
|
|
5546
5767
|
});
|
|
5547
|
-
|
|
5548
|
-
|
|
5549
|
-
|
|
5550
|
-
|
|
5551
|
-
startupCheckedRef.current = true;
|
|
5552
|
-
if (!hubSettings.checkUpdatesOnStart) return;
|
|
5768
|
+
/** 补齐更新提醒:把「当前有更新但通知中心还没有」的插件补写进通知(repo+version 去重)。
|
|
5769
|
+
* 返回本次实际新增的条数(0 = 无可更新或全部已提示过)。启动检查与打开通知中心共用,
|
|
5770
|
+
* 保证通知中心始终反映可更新状态:同一版本只一条、清空/删除后重开恢复、更新完成后消失。 */
|
|
5771
|
+
const syncUpdateNotices = () => {
|
|
5553
5772
|
const updatable = catalog.installedItems.filter((i) => i.hasUpdate && i.plugin);
|
|
5554
|
-
if (updatable.length === 0) return;
|
|
5555
|
-
|
|
5773
|
+
if (updatable.length === 0) return 0;
|
|
5774
|
+
const known = new Set(loadIgnoredUpdates());
|
|
5775
|
+
for (const r of loadNotifications()) if (r.kind === "update") known.add(`${r.repo}@${r.version ?? ""}`);
|
|
5776
|
+
const fresh = updatable.filter((item) => item.repo !== null && !known.has(`${item.repo}@${item.catalogVersion ?? ""}`));
|
|
5777
|
+
if (fresh.length === 0) return 0;
|
|
5778
|
+
for (const item of fresh) if (item.repo) addUpdateNotice({
|
|
5556
5779
|
kind: "update",
|
|
5557
5780
|
repo: item.repo,
|
|
5558
5781
|
version: item.catalogVersion ?? void 0
|
|
5559
5782
|
});
|
|
5560
5783
|
setNotifications(loadNotifications());
|
|
5561
|
-
|
|
5784
|
+
return fresh.length;
|
|
5785
|
+
};
|
|
5786
|
+
const startupCheckedRef = (0, react.useRef)(false);
|
|
5787
|
+
(0, react.useEffect)(() => {
|
|
5788
|
+
if (startupCheckedRef.current) return;
|
|
5789
|
+
if (!settingsReady || catalog.plugins === null || catalog.failed) return;
|
|
5790
|
+
startupCheckedRef.current = true;
|
|
5791
|
+
if (!hubSettings.checkUpdatesOnStart) return;
|
|
5792
|
+
const added = syncUpdateNotices();
|
|
5793
|
+
if (added > 0) setToast({
|
|
5562
5794
|
id: Date.now(),
|
|
5563
5795
|
kind: "updates",
|
|
5564
|
-
n:
|
|
5796
|
+
n: added
|
|
5565
5797
|
});
|
|
5566
5798
|
}, [
|
|
5567
5799
|
settingsReady,
|
|
@@ -5572,7 +5804,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5572
5804
|
queue
|
|
5573
5805
|
]);
|
|
5574
5806
|
(0, react.useEffect)(() => {
|
|
5575
|
-
if (!confirmPlugin && !confirmCustomTarget && !confirmGlobalNpm && !uninstallPlugin && !uninstallItem && !detailItem && !showHubUpdate && !showAbout && !showNotifications) return;
|
|
5807
|
+
if (!confirmPlugin && !confirmCustomTarget && !confirmGlobalNpm && !uninstallPlugin && !uninstallItem && !detailItem && !showHubUpdate && !showAbout && !showNotifications && !ignoreTarget) return;
|
|
5576
5808
|
const onKey = (e) => {
|
|
5577
5809
|
if (e.key === "Escape") {
|
|
5578
5810
|
setConfirmPlugin(null);
|
|
@@ -5585,6 +5817,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5585
5817
|
setShowHubUpdate(false);
|
|
5586
5818
|
setShowAbout(false);
|
|
5587
5819
|
setShowNotifications(false);
|
|
5820
|
+
setIgnoreTarget(null);
|
|
5588
5821
|
}
|
|
5589
5822
|
};
|
|
5590
5823
|
window.addEventListener("keydown", onKey);
|
|
@@ -5597,7 +5830,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5597
5830
|
detailItem,
|
|
5598
5831
|
showHubUpdate,
|
|
5599
5832
|
showAbout,
|
|
5600
|
-
showNotifications
|
|
5833
|
+
showNotifications,
|
|
5834
|
+
ignoreTarget
|
|
5601
5835
|
]);
|
|
5602
5836
|
(0, react.useEffect)(() => {
|
|
5603
5837
|
if (!toast) return;
|
|
@@ -5637,7 +5871,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5637
5871
|
const needle = repo.toLowerCase();
|
|
5638
5872
|
return catalog.installedItems.some((i) => i.repo !== null && i.repo.toLowerCase() === needle || repoFromInstallTarget(i.spec).toLowerCase() === needle);
|
|
5639
5873
|
}
|
|
5640
|
-
|
|
5874
|
+
const pkg = repo.replace(/@[^@]*$/, "").toLowerCase();
|
|
5875
|
+
return catalog.installedItems.some((i) => i.name.toLowerCase() === pkg) || Object.keys(catalog.installed).some((k) => k.toLowerCase() === pkg);
|
|
5641
5876
|
};
|
|
5642
5877
|
/** 弹窗动作一:复制安装命令到剪贴板,引导去终端粘贴执行(npm 通道显示包名命令)。 */
|
|
5643
5878
|
const copyCommand = async (p) => {
|
|
@@ -5711,7 +5946,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5711
5946
|
statsVerified,
|
|
5712
5947
|
onToggleLang: toggleLang,
|
|
5713
5948
|
hubUpdate: catalog.hubHasUpdate,
|
|
5714
|
-
onVersionClick: () =>
|
|
5949
|
+
onVersionClick: () => {
|
|
5950
|
+
catalog.refreshHub().then(() => setShowHubUpdate(true));
|
|
5951
|
+
},
|
|
5715
5952
|
onAboutClick: () => setShowAbout(true)
|
|
5716
5953
|
}), (0, react.createElement)("div", { className: Header_module_css_default.tabsRow }, (0, react.createElement)(SectionTabs, {
|
|
5717
5954
|
view,
|
|
@@ -5719,7 +5956,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5719
5956
|
installedCount: catalog.installedItems.length,
|
|
5720
5957
|
t,
|
|
5721
5958
|
noticeCount: notifications.length + queue.queue.length + queue.pendingRestarts.length,
|
|
5722
|
-
onOpenNotifications: () =>
|
|
5959
|
+
onOpenNotifications: () => {
|
|
5960
|
+
if (hubSettings.checkUpdatesOnStart) syncUpdateNotices();
|
|
5961
|
+
setShowNotifications(true);
|
|
5962
|
+
}
|
|
5723
5963
|
})), view === "market" ? (0, react.createElement)(MarketView, {
|
|
5724
5964
|
catalog,
|
|
5725
5965
|
t,
|
|
@@ -5800,7 +6040,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5800
6040
|
});
|
|
5801
6041
|
}
|
|
5802
6042
|
}), showHubUpdate && (0, react.createElement)(HubUpdateModal, {
|
|
5803
|
-
info: catalog.hubUpdateInfo ?? { version: "1.
|
|
6043
|
+
info: catalog.hubUpdateInfo ?? { version: "1.3.1" },
|
|
5804
6044
|
lang,
|
|
5805
6045
|
t,
|
|
5806
6046
|
hasUpdate: catalog.hubHasUpdate,
|
|
@@ -5844,12 +6084,43 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
5844
6084
|
queue.clearModalTask();
|
|
5845
6085
|
setConfirmPlugin(plugin);
|
|
5846
6086
|
},
|
|
6087
|
+
onIgnoreUpdate: (repo, version) => setIgnoreTarget({
|
|
6088
|
+
repo,
|
|
6089
|
+
version
|
|
6090
|
+
}),
|
|
5847
6091
|
cancelTask: queue.cancelTask,
|
|
5848
6092
|
restarting,
|
|
5849
6093
|
onRestart: () => {
|
|
5850
6094
|
requestRestart();
|
|
6095
|
+
},
|
|
6096
|
+
resolveRepo: (repo) => issueRepoOf(repo, catalog.installedItems, catalog.plugins)
|
|
6097
|
+
}), ignoreTarget && (0, react.createElement)("div", {
|
|
6098
|
+
className: Modal_module_css_default.overlay,
|
|
6099
|
+
onClick: (e) => {
|
|
6100
|
+
if (e.target === e.currentTarget) setIgnoreTarget(null);
|
|
6101
|
+
}
|
|
6102
|
+
}, (0, react.createElement)("div", {
|
|
6103
|
+
className: Modal_module_css_default.modal,
|
|
6104
|
+
role: "dialog",
|
|
6105
|
+
"aria-modal": "true"
|
|
6106
|
+
}, (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", {
|
|
6107
|
+
className: Modal_module_css_default.modalClose,
|
|
6108
|
+
type: "button",
|
|
6109
|
+
"aria-label": t("errorClose"),
|
|
6110
|
+
onClick: () => setIgnoreTarget(null)
|
|
6111
|
+
}, (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", {
|
|
6112
|
+
className: Modal_module_css_default.restartLater,
|
|
6113
|
+
type: "button",
|
|
6114
|
+
onClick: () => setIgnoreTarget(null)
|
|
6115
|
+
}, t("confirmCancel")), (0, react.createElement)("button", {
|
|
6116
|
+
className: Modal_module_css_default.restartNow,
|
|
6117
|
+
type: "button",
|
|
6118
|
+
onClick: () => {
|
|
6119
|
+
ignoreUpdate(ignoreTarget.repo, ignoreTarget.version);
|
|
6120
|
+
setNotifications(removeUpdateNotice(ignoreTarget.repo, ignoreTarget.version));
|
|
6121
|
+
setIgnoreTarget(null);
|
|
5851
6122
|
}
|
|
5852
|
-
}), confirmPlugin && (0, react.createElement)(InstallModal, {
|
|
6123
|
+
}, t("ignoreUpdateConfirm")))))), confirmPlugin && (0, react.createElement)(InstallModal, {
|
|
5853
6124
|
plugin: confirmPlugin,
|
|
5854
6125
|
done: installDone,
|
|
5855
6126
|
task: queue.installModalTask,
|
|
@@ -6007,7 +6278,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
6007
6278
|
}
|
|
6008
6279
|
//#endregion
|
|
6009
6280
|
//#region \0dsh-css:src/client/styles/tokens.module.css.mjs
|
|
6010
|
-
const css = ":root,body[data-ds-dark-theme]{--hub-text-primary:var(--dsw-alias-label-primary,#1f2328);--hub-text-secondary:var(--dsw-alias-label-secondary,#6b7280);--hub-text-tertiary:var(--dsw-alias-label-tertiary,#8b93a1);--hub-text-disabled:var(--dsw-alias-label-disabled,#aab1bd);--hub-text-on-fill:var(--dsw-alias-label-primary-foreground,#fff);--hub-bg-1:var(--dsw-alias-bg-layer-1,#fff);--hub-bg-2:var(--dsw-alias-bg-layer-2,#80808014);--hub-bg-3:#8080801a;--hub-bg-btn:#8080801f;--hub-bg-hover:var(--dsw-alias-interactive-bg-hover,#80808029);--hub-bg-on-fill:#80808038;--hub-border-1:var(--dsw-alias-border-l1,#eceef1);--hub-border-2:var(--dsw-alias-border-l2,#e5e7eb);--hub-border-ghost:var(--dsw-alias-button-ghost-active-border,#4f6ef740);--hub-border-input:var(--dsw-alias-input-border,#6b728040);--hub-brand:var(--dsw-alias-state-business-primary,#4f6ef7);--hub-brand-hover:#3b5bdb;--hub-brand-tint:#4f6ef70f;--hub-brand-tint-strong:#4f6ef71f;--hub-brand-border:#4f6ef759;--hub-brand-border-soft:#4f6ef738;--hub-purple-1:#4f46e5;--hub-purple-2:#7c3aed;--hub-purple-border:#8b5cf68c;--hub-purple-tint:#4f46e514;--hub-purple-shadow:#4f46e547;--hub-purple-shadow-strong:#7c3aed6b;--hub-btn-fill:var(--dsw-alias-button-primary-fill,#1f2328);--hub-btn-hover:var(--dsw-alias-button-primary-hover,#43454a);--hub-success:#16a34a;--hub-success-tint:#16a34a1f;--hub-success-border:#16a34a4d;--hub-warn:var(--dsw-alias-state-warn-primary,#b8860b);--hub-warn-tint:#b8860b14;--hub-warn-border:#b8860b59;--hub-warn-strong:#b8860bd9;--hub-warning:var(--dsw-alias-state-warning-primary,#b45309);--hub-warning-hover:#92400e;--hub-warning-tint:#b4530914;--hub-warning-border:#b453094d;--hub-danger:var(--dsw-alias-state-danger-primary,#d1242f);--hub-danger-hover:var(--dsw-alias-state-danger-hover,#b91c1c);--hub-danger-strong:#b0202a;--hub-danger-text:#e5484d;--hub-danger-tint:#e5484d14;--hub-danger-tint-weak:#e5484d0d;--hub-danger-border:#e5484d59;--hub-danger-border-soft:#e5484d47;--hub-danger-soft:#d1242f14}body[data-ds-dark-theme]{--hub-bg-btn:#ffffff1f;--hub-success:#
|
|
6281
|
+
const css = ":root,body[data-ds-dark-theme]{--hub-text-primary:var(--dsw-alias-label-primary,#1f2328);--hub-text-secondary:var(--dsw-alias-label-secondary,#6b7280);--hub-text-tertiary:var(--dsw-alias-label-tertiary,#8b93a1);--hub-text-disabled:var(--dsw-alias-label-disabled,#aab1bd);--hub-text-on-fill:var(--dsw-alias-label-primary-foreground,#fff);--hub-bg-1:var(--dsw-alias-bg-layer-1,#fff);--hub-bg-2:var(--dsw-alias-bg-layer-2,#80808014);--hub-bg-3:#8080801a;--hub-bg-btn:#8080801f;--hub-bg-hover:var(--dsw-alias-interactive-bg-hover,#80808029);--hub-bg-on-fill:#80808038;--hub-border-1:var(--dsw-alias-border-l1,#eceef1);--hub-border-2:var(--dsw-alias-border-l2,#e5e7eb);--hub-border-ghost:var(--dsw-alias-button-ghost-active-border,#4f6ef740);--hub-border-input:var(--dsw-alias-input-border,#6b728040);--hub-brand:var(--dsw-alias-state-business-primary,#4f6ef7);--hub-brand-hover:#3b5bdb;--hub-brand-tint:#4f6ef70f;--hub-brand-tint-strong:#4f6ef71f;--hub-brand-border:#4f6ef759;--hub-brand-border-soft:#4f6ef738;--hub-purple-1:#4f46e5;--hub-purple-2:#7c3aed;--hub-purple-border:#8b5cf68c;--hub-purple-tint:#4f46e514;--hub-purple-shadow:#4f46e547;--hub-purple-shadow-strong:#7c3aed6b;--hub-btn-fill:var(--dsw-alias-button-primary-fill,#1f2328);--hub-btn-hover:var(--dsw-alias-button-primary-hover,#43454a);--hub-success:#16a34a;--hub-success-tint:#16a34a1f;--hub-success-border:#16a34a4d;--hub-warn:var(--dsw-alias-state-warn-primary,#b8860b);--hub-warn-tint:#b8860b14;--hub-warn-border:#b8860b59;--hub-warn-strong:#b8860bd9;--hub-warning:var(--dsw-alias-state-warning-primary,#b45309);--hub-warning-hover:#92400e;--hub-warning-tint:#b4530914;--hub-warning-border:#b453094d;--hub-danger:var(--dsw-alias-state-danger-primary,#d1242f);--hub-danger-hover:var(--dsw-alias-state-danger-hover,#b91c1c);--hub-danger-strong:#b0202a;--hub-danger-text:#e5484d;--hub-danger-tint:#e5484d14;--hub-danger-tint-weak:#e5484d0d;--hub-danger-border:#e5484d59;--hub-danger-border-soft:#e5484d47;--hub-danger-soft:#d1242f14}body[data-ds-dark-theme]{--hub-bg-btn:#ffffff1f;--hub-brand:#6b6b76;--hub-brand-hover:#7d7d88;--hub-brand-tint:#ffffff14;--hub-brand-tint-strong:#ffffff21;--hub-brand-border:#ffffff4d;--hub-brand-border-soft:#fff3;--hub-purple-1:#6b6b76;--hub-purple-2:#7d7d88;--hub-purple-border:#ffffff59;--hub-purple-tint:#ffffff14;--hub-purple-shadow:#00000059;--hub-purple-shadow-strong:#00000080;--hub-warn:#6b6b76;--hub-warn-tint:#ffffff14;--hub-warn-border:#ffffff4d;--hub-warn-strong:#7d7d88;--hub-warning:#6b6b76;--hub-warning-hover:#7d7d88;--hub-warning-tint:#ffffff14;--hub-warning-border:#ffffff4d;--hub-success:#9a9aa4;--hub-success-tint:#ffffff1a;--hub-success-border:#ffffff4d}";
|
|
6011
6282
|
const tagId = "dsh-plugin/tokens.module.css";
|
|
6012
6283
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
6013
6284
|
const tag = document.createElement("style");
|
|
@@ -6019,7 +6290,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
6019
6290
|
//#endregion
|
|
6020
6291
|
//#region src/client/index.tsx
|
|
6021
6292
|
/**
|
|
6022
|
-
* DSH
|
|
6293
|
+
* DSH Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
6023
6294
|
* Website: https://dsh-plugin.org
|
|
6024
6295
|
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
6025
6296
|
*
|