dsh-plugin 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +5 -5
- package/README.md +5 -5
- package/client/client.js +242 -153
- package/client/client.js.map +1 -1
- package/lib/http/routes.js +15 -8
- package/lib/index.js +4 -0
- package/lib/services/install-types.js +8 -2
- package/lib/services/install.js +1 -1
- package/lib/services/installed-versions.js +5 -1
- package/lib/services/loader.js +4 -0
- package/lib/services/npm-resolve.js +4 -0
- package/lib/services/pending-restart.js +1 -1
- package/lib/services/preflight.js +9 -4
- package/lib/services/profile.js +30 -3
- package/lib/services/progress.js +4 -0
- package/lib/services/task-queue.js +13 -7
- package/lib/types/index.d.ts +4 -0
- package/lib/types/services/install-types.d.ts +10 -4
- package/lib/types/services/install.d.ts +5 -1
- package/lib/types/services/loader.d.ts +4 -0
- package/lib/types/services/pending-restart.d.ts +8 -2
- package/lib/types/services/profile.d.ts +4 -2
- package/lib/types/services/progress.d.ts +4 -0
- package/package.json +1 -1
- package/src/client/components/AboutModal.tsx +4 -0
- package/src/client/components/CatalogControls.tsx +4 -0
- package/src/client/components/CatalogHeader.tsx +4 -0
- package/src/client/components/CatalogList.tsx +4 -0
- package/src/client/components/CategoryTabs.tsx +4 -0
- package/src/client/components/Dropdown.tsx +4 -0
- package/src/client/components/HubUpdateModal.tsx +4 -0
- package/src/client/components/NotificationsModal.tsx +4 -0
- package/src/client/components/PluginCard.tsx +5 -1
- package/src/client/components/PluginHubSection.tsx +5 -1
- package/src/client/components/ProgressView.tsx +4 -0
- package/src/client/components/icons.tsx +4 -0
- package/src/client/components/modals.tsx +4 -0
- package/src/client/hooks/useCatalog.ts +9 -5
- package/src/client/hooks/useTaskQueue.ts +13 -9
- package/src/client/index.tsx +4 -0
- package/src/client/lib/catalog.ts +27 -6
- package/src/client/lib/env.ts +4 -0
- package/src/client/lib/failures.ts +5 -1
- package/src/client/lib/format.ts +4 -0
- package/src/client/lib/renderMarkdown.ts +4 -0
- package/src/client/locales.ts +7 -1
- package/src/client/styles/Dropdown.module.css +5 -1
- package/src/client/styles/Header.module.css +5 -1
- package/src/client/styles/List.module.css +5 -1
- package/src/client/styles/Modal.module.css +5 -1
- package/src/client/styles/tokens.module.css +5 -1
- package/src/client/types.ts +5 -1
- package/src/server/http/routes.ts +14 -8
- package/src/server/index.ts +4 -0
- package/src/server/services/install-types.ts +10 -4
- package/src/server/services/install.ts +5 -1
- package/src/server/services/installed-versions.ts +5 -1
- package/src/server/services/loader.ts +4 -0
- package/src/server/services/npm-resolve.ts +4 -0
- package/src/server/services/pending-restart.ts +8 -2
- package/src/server/services/preflight.ts +9 -4
- package/src/server/services/profile.ts +27 -3
- package/src/server/services/progress.ts +4 -0
- package/src/server/services/task-queue.ts +13 -7
package/client/client.js
CHANGED
|
@@ -6,7 +6,13 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
6
6
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
7
7
|
let react = require("react");
|
|
8
8
|
//#region src/client/locales.ts
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* DSH-Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
11
|
+
* Website: https://dsh-plugin.org
|
|
12
|
+
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
13
|
+
*
|
|
14
|
+
* zh/en dictionaries for the DSH-Plugin Hub settings section.
|
|
15
|
+
*/
|
|
10
16
|
const zh = {
|
|
11
17
|
nav: "插件中心",
|
|
12
18
|
title: "DSH-Plugin Hub",
|
|
@@ -278,43 +284,43 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
278
284
|
document.head.appendChild(tag);
|
|
279
285
|
}
|
|
280
286
|
var Header_module_css_default = {
|
|
281
|
-
"githubIcon": "qikqja_githubIcon",
|
|
282
|
-
"installedBtnActive": "qikqja_installedBtnActive",
|
|
283
|
-
"taglineLink": "qikqja_taglineLink",
|
|
284
287
|
"tagline": "qikqja_tagline",
|
|
288
|
+
"filterResults": "qikqja_filterResults",
|
|
289
|
+
"adBanner": "qikqja_adBanner",
|
|
285
290
|
"installedBtn": "qikqja_installedBtn",
|
|
286
|
-
"
|
|
287
|
-
"
|
|
288
|
-
"
|
|
289
|
-
"resultCount": "qikqja_resultCount",
|
|
291
|
+
"version": "qikqja_version",
|
|
292
|
+
"brandTitle": "qikqja_brandTitle",
|
|
293
|
+
"hubUpdateBadge": "qikqja_hubUpdateBadge",
|
|
290
294
|
"title": "qikqja_title",
|
|
291
|
-
"
|
|
295
|
+
"segCount": "qikqja_segCount",
|
|
296
|
+
"headerTitleRow": "qikqja_headerTitleRow",
|
|
292
297
|
"githubLink": "qikqja_githubLink",
|
|
298
|
+
"headerRight": "qikqja_headerRight",
|
|
299
|
+
"adArrow": "qikqja_adArrow",
|
|
293
300
|
"tabActive": "qikqja_tabActive",
|
|
294
|
-
"
|
|
295
|
-
"header": "qikqja_header",
|
|
301
|
+
"copyIcon": "qikqja_copyIcon",
|
|
296
302
|
"tab": "qikqja_tab",
|
|
303
|
+
"controls": "qikqja_controls",
|
|
304
|
+
"installedBtnDisabled": "qikqja_installedBtnDisabled",
|
|
305
|
+
"failBadge": "qikqja_failBadge",
|
|
306
|
+
"taglineLink": "qikqja_taglineLink",
|
|
297
307
|
"search": "qikqja_search",
|
|
308
|
+
"header": "qikqja_header",
|
|
309
|
+
"githubIcon": "qikqja_githubIcon",
|
|
298
310
|
"tabCount": "qikqja_tabCount",
|
|
299
|
-
"
|
|
300
|
-
"brandTitle": "qikqja_brandTitle",
|
|
301
|
-
"controls": "qikqja_controls",
|
|
302
|
-
"filterResults": "qikqja_filterResults",
|
|
303
|
-
"adArrow": "qikqja_adArrow",
|
|
304
|
-
"root": "qikqja_root",
|
|
305
|
-
"adBanner": "qikqja_adBanner",
|
|
311
|
+
"failBtn": "qikqja_failBtn",
|
|
306
312
|
"adBadge": "qikqja_adBadge",
|
|
307
313
|
"logoIcon": "qikqja_logoIcon",
|
|
308
|
-
"
|
|
309
|
-
"
|
|
310
|
-
"failBtn": "qikqja_failBtn",
|
|
314
|
+
"searchRow": "qikqja_searchRow",
|
|
315
|
+
"installedBtnActive": "qikqja_installedBtnActive",
|
|
311
316
|
"adText": "qikqja_adText",
|
|
312
|
-
"
|
|
313
|
-
"headerTitleRow": "qikqja_headerTitleRow",
|
|
314
|
-
"hubUpdateBadge": "qikqja_hubUpdateBadge",
|
|
315
|
-
"copyIcon": "qikqja_copyIcon",
|
|
317
|
+
"root": "qikqja_root",
|
|
316
318
|
"tabs": "qikqja_tabs",
|
|
317
|
-
"
|
|
319
|
+
"aboutBtn": "qikqja_aboutBtn",
|
|
320
|
+
"segCountActive": "qikqja_segCountActive",
|
|
321
|
+
"langBtn": "qikqja_langBtn",
|
|
322
|
+
"resultCount": "qikqja_resultCount",
|
|
323
|
+
"versionBtn": "qikqja_versionBtn"
|
|
318
324
|
};
|
|
319
325
|
//#endregion
|
|
320
326
|
//#region src/client/lib/failures.ts
|
|
@@ -462,14 +468,14 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
462
468
|
* tsdown 构建时用 define 把 __PLUGIN_VERSION__ 替换成 package.json 的版本号;
|
|
463
469
|
* node --test 直接 import 本模块时该标识符不存在,typeof 守卫兜底为空串。
|
|
464
470
|
*/
|
|
465
|
-
const PLUGIN_VERSION = "1.1.
|
|
471
|
+
const PLUGIN_VERSION = "1.1.2";
|
|
466
472
|
/** dsh-plugin.org 中文页挂在 /zh/ 前缀下,英文在根路径。 */
|
|
467
473
|
function langPathOf(lang) {
|
|
468
474
|
return lang === "zh" ? "zh/" : "";
|
|
469
475
|
}
|
|
470
476
|
/**
|
|
471
477
|
* 官网详情页两级路径:/plugins/{ownerSlug}/{slug};
|
|
472
|
-
*
|
|
478
|
+
* 缺 ownerSlug 时从 repo 推导(卡片详情按钮与弹窗来源行共用)。
|
|
473
479
|
*/
|
|
474
480
|
function pluginDetailUrl(plugin, langPath) {
|
|
475
481
|
const repo = plugin.source?.repo ?? "";
|
|
@@ -504,7 +510,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
504
510
|
"",
|
|
505
511
|
`## [DSH-Plugin 插件中心](${SITE_URL}) · 安装 Plugin 失败错误信息`,
|
|
506
512
|
`本错误信息由 [dsh-plugin-hub](${GITHUB_URL}) 插件中心的安装程序自动生成,随本次安装失败一并提交。`,
|
|
507
|
-
`- 实际执行的安装命令:\`${command ?? `dsh plugin${env?.profile ? ` --profile ${env.profile}` : ""} add github
|
|
513
|
+
`- 实际执行的安装命令:\`${command ?? `dsh plugin${env?.profile ? ` --profile ${env.profile}` : ""} add git+https://github.com/${repo}.git`}\``,
|
|
508
514
|
`- 执行结果:安装失败,未能安装该插件。`,
|
|
509
515
|
...attempts && attempts.length > 0 ? [
|
|
510
516
|
"",
|
|
@@ -514,7 +520,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
514
520
|
.../\[packaging\]/i.test(message) ? [
|
|
515
521
|
"",
|
|
516
522
|
"## 安装方式说明",
|
|
517
|
-
"DSH 插件支持两种官方安装通道:`dsh plugin add <npm-package>`(npm 分发,需发布完整构建产物)与 `dsh plugin add github
|
|
523
|
+
"DSH 插件支持两种官方安装通道:`dsh plugin add <npm-package>`(npm 分发,需发布完整构建产物)与 `dsh plugin add git+https://github.com/owner/repo.git`(Git 直装,仓库需提交构建产物或在 package.json 提供 `prepare` 脚本)。当前插件的分发物缺少 package.json 声明的入口文件,请按所用通道补齐后重新发布。"
|
|
518
524
|
] : [],
|
|
519
525
|
"",
|
|
520
526
|
"## Environment",
|
|
@@ -619,10 +625,25 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
619
625
|
via: "github"
|
|
620
626
|
};
|
|
621
627
|
}
|
|
622
|
-
/** 展示用安装命令(复制/弹窗):npm 通道显示包名,git
|
|
628
|
+
/** 展示用安装命令(复制/弹窗):npm 通道显示包名,git 通道显示显式 HTTPS URL。 */
|
|
623
629
|
function installCommandOf(p, withProfile = false) {
|
|
624
630
|
const { target, via } = installTargetOf(p);
|
|
625
|
-
return via === "npm" ? `dsh plugin${withProfile ? " --profile web" : ""} add ${target}` : `dsh plugin${withProfile ? " --profile web" : ""} add github
|
|
631
|
+
return via === "npm" ? `dsh plugin${withProfile ? " --profile web" : ""} add ${target}` : `dsh plugin${withProfile ? " --profile web" : ""} add git+https://github.com/${target}.git`;
|
|
632
|
+
}
|
|
633
|
+
/** Normalize a task/install target to its owner/repo display identity. */
|
|
634
|
+
function repoFromInstallTarget(value) {
|
|
635
|
+
const input = value.trim();
|
|
636
|
+
if (/^[A-Za-z0-9._-]+\/[A-Za-z0-9._-]+$/.test(input)) return input;
|
|
637
|
+
for (const pattern of [
|
|
638
|
+
/^github:([^/]+)\/([^/]+)$/i,
|
|
639
|
+
/^(?:git\+)?https:\/\/github\.com\/([^/]+)\/([^/]+?)(?:\.git)?(?:[?#].*)?$/i,
|
|
640
|
+
/^(?:git\+)?ssh:\/\/(?:git@)?github\.com\/([^/]+)\/([^/]+?)(?:\.git)?(?:[?#].*)?$/i,
|
|
641
|
+
/^git@github\.com:([^/]+)\/([^/]+?)(?:\.git)?(?:[?#].*)?$/i
|
|
642
|
+
]) {
|
|
643
|
+
const match = pattern.exec(input);
|
|
644
|
+
if (match !== null) return `${match[1]}/${match[2]}`;
|
|
645
|
+
}
|
|
646
|
+
return value;
|
|
626
647
|
}
|
|
627
648
|
const CATEGORY_LABELS = {
|
|
628
649
|
interface: {
|
|
@@ -733,6 +754,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
733
754
|
//#endregion
|
|
734
755
|
//#region src/client/hooks/useCatalog.ts
|
|
735
756
|
/**
|
|
757
|
+
* DSH-Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
758
|
+
* Website: https://dsh-plugin.org
|
|
759
|
+
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
760
|
+
*
|
|
736
761
|
* Catalog data + view state for the Plugin Hub section.
|
|
737
762
|
*
|
|
738
763
|
* Owns the online-data pipeline (live fetch from dsh-plugin.org), the local
|
|
@@ -847,12 +872,12 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
847
872
|
cancelled = true;
|
|
848
873
|
};
|
|
849
874
|
}, [reloadKey]);
|
|
850
|
-
/** 插件是否已安装:匹配
|
|
875
|
+
/** 插件是否已安装:匹配 Git spec 中的 owner/repo,或 npm 通道安装的依赖包名;命中返回 npm 包名。 */
|
|
851
876
|
const installedName = (p) => {
|
|
852
877
|
const repo = p.source?.repo;
|
|
853
878
|
if (!repo) return null;
|
|
854
|
-
const needle =
|
|
855
|
-
for (const [name, spec] of Object.entries(installed)) if (spec.toLowerCase()
|
|
879
|
+
const needle = repo.toLowerCase();
|
|
880
|
+
for (const [name, spec] of Object.entries(installed)) if (repoFromInstallTarget(spec).toLowerCase() === needle) return name;
|
|
856
881
|
const pkg = ((p.source?.npmPackage || versions[repo.toLowerCase()]?.npmPackage) ?? "").toLowerCase();
|
|
857
882
|
if (pkg) {
|
|
858
883
|
for (const name of Object.keys(installed)) if (name.toLowerCase() === pkg) return name;
|
|
@@ -888,7 +913,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
888
913
|
*/
|
|
889
914
|
const hubHasUpdate = (() => {
|
|
890
915
|
if (!hubUpdateInfo) return false;
|
|
891
|
-
return hubUpdateInfo.version !== "1.1.
|
|
916
|
+
return hubUpdateInfo.version !== "1.1.2";
|
|
892
917
|
})();
|
|
893
918
|
/** 当前分类下的插件(「全部」时为整个目录)。 */
|
|
894
919
|
const categoryPlugins = (0, react.useMemo)(() => {
|
|
@@ -970,6 +995,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
970
995
|
//#endregion
|
|
971
996
|
//#region src/client/hooks/useTaskQueue.ts
|
|
972
997
|
/**
|
|
998
|
+
* DSH-Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
999
|
+
* Website: https://dsh-plugin.org
|
|
1000
|
+
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
1001
|
+
*
|
|
973
1002
|
* Background install/remove task queue for the Plugin Hub.
|
|
974
1003
|
*
|
|
975
1004
|
* Mirrors the server-side FIFO active queue by polling /active, settles
|
|
@@ -1020,7 +1049,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1020
1049
|
queueRef.current = next;
|
|
1021
1050
|
setQueue(next);
|
|
1022
1051
|
};
|
|
1023
|
-
/**
|
|
1052
|
+
/** 解析服务端待重启列表(安装目标归一化为 owner/repo,与安装任务对齐)。 */
|
|
1024
1053
|
const parsePendingRestarts = (value) => {
|
|
1025
1054
|
if (!Array.isArray(value)) return [];
|
|
1026
1055
|
const out = [];
|
|
@@ -1030,7 +1059,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1030
1059
|
if (typeof target !== "string" || target === "") continue;
|
|
1031
1060
|
const at = x.at;
|
|
1032
1061
|
out.push({
|
|
1033
|
-
target: target
|
|
1062
|
+
target: repoFromInstallTarget(target),
|
|
1034
1063
|
kind: x.kind === "uninstall" ? "uninstall" : "install",
|
|
1035
1064
|
at: typeof at === "number" ? at : 0
|
|
1036
1065
|
});
|
|
@@ -1179,9 +1208,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1179
1208
|
next.push({
|
|
1180
1209
|
id,
|
|
1181
1210
|
kind: isRemove ? "uninstall" : "install",
|
|
1182
|
-
target: typeof a.target === "string" ? a.target
|
|
1211
|
+
target: typeof a.target === "string" ? repoFromInstallTarget(a.target) : prevTask?.target ?? "",
|
|
1183
1212
|
desc: prevTask?.desc,
|
|
1184
|
-
repo: prevTask?.repo ?? (isRemove ? null : typeof a.target === "string" ? a.target
|
|
1213
|
+
repo: prevTask?.repo ?? (isRemove ? null : typeof a.target === "string" ? repoFromInstallTarget(a.target) : null),
|
|
1185
1214
|
version: prevTask?.version,
|
|
1186
1215
|
updatedAt: prevTask?.updatedAt,
|
|
1187
1216
|
status: a.status === "running" ? "running" : "pending",
|
|
@@ -1221,8 +1250,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1221
1250
|
applyPending(parsePendingRestarts(data.pendingRestarts));
|
|
1222
1251
|
const items = (data.tasks ?? []).filter((a) => typeof a.id === "number").map((a) => {
|
|
1223
1252
|
const isRemove = a.action === "remove";
|
|
1224
|
-
const display = typeof a.displayTarget === "string" ? a.displayTarget
|
|
1225
|
-
const fallback = typeof a.target === "string" ? a.target
|
|
1253
|
+
const display = typeof a.displayTarget === "string" ? repoFromInstallTarget(a.displayTarget) : "";
|
|
1254
|
+
const fallback = typeof a.target === "string" ? repoFromInstallTarget(a.target) : "";
|
|
1226
1255
|
return {
|
|
1227
1256
|
id: a.id,
|
|
1228
1257
|
kind: isRemove ? "uninstall" : "install",
|
|
@@ -1402,107 +1431,111 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1402
1431
|
document.head.appendChild(tag);
|
|
1403
1432
|
}
|
|
1404
1433
|
var Modal_module_css_default = {
|
|
1405
|
-
"modalTitle": "BiQ1zG_modalTitle",
|
|
1406
|
-
"errorHint": "BiQ1zG_errorHint",
|
|
1407
|
-
"resultCheck": "BiQ1zG_resultCheck",
|
|
1408
|
-
"noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
|
|
1409
|
-
"toastIn": "BiQ1zG_toastIn",
|
|
1410
|
-
"modalLabel": "BiQ1zG_modalLabel",
|
|
1411
1434
|
"resultDesc": "BiQ1zG_resultDesc",
|
|
1412
|
-
"
|
|
1413
|
-
"
|
|
1414
|
-
"
|
|
1415
|
-
"
|
|
1416
|
-
"
|
|
1435
|
+
"hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
|
|
1436
|
+
"modalBody": "BiQ1zG_modalBody",
|
|
1437
|
+
"queueRowTarget": "BiQ1zG_queueRowTarget",
|
|
1438
|
+
"queueRowDesc": "BiQ1zG_queueRowDesc",
|
|
1439
|
+
"trustHint": "BiQ1zG_trustHint",
|
|
1417
1440
|
"uninstallConfirm": "BiQ1zG_uninstallConfirm",
|
|
1441
|
+
"progressText": "BiQ1zG_progressText",
|
|
1442
|
+
"noticeList": "BiQ1zG_noticeList",
|
|
1443
|
+
"noticeRowMain": "BiQ1zG_noticeRowMain",
|
|
1444
|
+
"queueRowHead": "BiQ1zG_queueRowHead",
|
|
1445
|
+
"result": "BiQ1zG_result",
|
|
1446
|
+
"restartNow": "BiQ1zG_restartNow",
|
|
1447
|
+
"modalIn": "BiQ1zG_modalIn",
|
|
1448
|
+
"modalInstall": "BiQ1zG_modalInstall",
|
|
1449
|
+
"errorBox": "BiQ1zG_errorBox",
|
|
1450
|
+
"toastIn": "BiQ1zG_toastIn",
|
|
1451
|
+
"noticeRemove": "BiQ1zG_noticeRemove",
|
|
1452
|
+
"resultTitle": "BiQ1zG_resultTitle",
|
|
1453
|
+
"progressHead": "BiQ1zG_progressHead",
|
|
1454
|
+
"modal": "BiQ1zG_modal",
|
|
1455
|
+
"modalCmd": "BiQ1zG_modalCmd",
|
|
1456
|
+
"pendingRowActions": "BiQ1zG_pendingRowActions",
|
|
1457
|
+
"modalCmdText": "BiQ1zG_modalCmdText",
|
|
1418
1458
|
"modalTitleQueued": "BiQ1zG_modalTitleQueued",
|
|
1419
|
-
"failHead": "BiQ1zG_failHead",
|
|
1420
|
-
"cliOnlyHint": "BiQ1zG_cliOnlyHint",
|
|
1421
|
-
"progress": "BiQ1zG_progress",
|
|
1422
1459
|
"queuedHint": "BiQ1zG_queuedHint",
|
|
1460
|
+
"noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
|
|
1461
|
+
"progressFill": "BiQ1zG_progressFill",
|
|
1462
|
+
"noticeTextFail": "BiQ1zG_noticeTextFail",
|
|
1463
|
+
"aboutModal": "BiQ1zG_aboutModal",
|
|
1464
|
+
"failList": "BiQ1zG_failList",
|
|
1465
|
+
"modalHead": "BiQ1zG_modalHead",
|
|
1466
|
+
"noticeRow": "BiQ1zG_noticeRow",
|
|
1467
|
+
"toast": "BiQ1zG_toast",
|
|
1468
|
+
"modalCloseIcon": "BiQ1zG_modalCloseIcon",
|
|
1469
|
+
"failEmpty": "BiQ1zG_failEmpty",
|
|
1470
|
+
"noticeRowOk": "BiQ1zG_noticeRowOk",
|
|
1471
|
+
"aboutMeta": "BiQ1zG_aboutMeta",
|
|
1472
|
+
"resultRestarting": "BiQ1zG_resultRestarting",
|
|
1423
1473
|
"modalCancel": "BiQ1zG_modalCancel",
|
|
1424
|
-
"
|
|
1425
|
-
"restartNow": "BiQ1zG_restartNow",
|
|
1426
|
-
"result": "BiQ1zG_result",
|
|
1427
|
-
"modalRow": "BiQ1zG_modalRow",
|
|
1428
|
-
"queueRowBody": "BiQ1zG_queueRowBody",
|
|
1429
|
-
"modalInstall": "BiQ1zG_modalInstall",
|
|
1430
|
-
"noticeMain": "BiQ1zG_noticeMain",
|
|
1431
|
-
"linkIcon": "BiQ1zG_linkIcon",
|
|
1474
|
+
"restartLater": "BiQ1zG_restartLater",
|
|
1432
1475
|
"noticeTime": "BiQ1zG_noticeTime",
|
|
1433
1476
|
"queueSection": "BiQ1zG_queueSection",
|
|
1434
|
-
"
|
|
1435
|
-
"
|
|
1436
|
-
"
|
|
1437
|
-
"
|
|
1438
|
-
"
|
|
1439
|
-
"
|
|
1440
|
-
"
|
|
1477
|
+
"modalTitleBusy": "BiQ1zG_modalTitleBusy",
|
|
1478
|
+
"modalRow": "BiQ1zG_modalRow",
|
|
1479
|
+
"failBigIssue": "BiQ1zG_failBigIssue",
|
|
1480
|
+
"resultCheckIcon": "BiQ1zG_resultCheckIcon",
|
|
1481
|
+
"queueSectionTitle": "BiQ1zG_queueSectionTitle",
|
|
1482
|
+
"hubUpdateModal": "BiQ1zG_hubUpdateModal",
|
|
1483
|
+
"modalCmdCopy": "BiQ1zG_modalCmdCopy",
|
|
1441
1484
|
"overlayIn": "BiQ1zG_overlayIn",
|
|
1485
|
+
"modalClose": "BiQ1zG_modalClose",
|
|
1486
|
+
"failRow": "BiQ1zG_failRow",
|
|
1487
|
+
"noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
|
|
1488
|
+
"failRepo": "BiQ1zG_failRepo",
|
|
1489
|
+
"noticeHead": "BiQ1zG_noticeHead",
|
|
1490
|
+
"noticeFoot": "BiQ1zG_noticeFoot",
|
|
1442
1491
|
"aboutContent": "BiQ1zG_aboutContent",
|
|
1443
|
-
"
|
|
1444
|
-
"
|
|
1445
|
-
"
|
|
1446
|
-
"
|
|
1492
|
+
"errorModal": "BiQ1zG_errorModal",
|
|
1493
|
+
"failKindUninstall": "BiQ1zG_failKindUninstall",
|
|
1494
|
+
"noticeTextOk": "BiQ1zG_noticeTextOk",
|
|
1495
|
+
"progressTrack": "BiQ1zG_progressTrack",
|
|
1496
|
+
"noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
|
|
1497
|
+
"progress": "BiQ1zG_progress",
|
|
1498
|
+
"linkIcon": "BiQ1zG_linkIcon",
|
|
1447
1499
|
"toastFail": "BiQ1zG_toastFail",
|
|
1448
|
-
"
|
|
1449
|
-
"
|
|
1450
|
-
"
|
|
1451
|
-
"
|
|
1452
|
-
"resultRestarting": "BiQ1zG_resultRestarting",
|
|
1453
|
-
"queueSectionTitle": "BiQ1zG_queueSectionTitle",
|
|
1454
|
-
"modalBody": "BiQ1zG_modalBody",
|
|
1455
|
-
"failKind": "BiQ1zG_failKind",
|
|
1500
|
+
"modalDesc": "BiQ1zG_modalDesc",
|
|
1501
|
+
"pendingRowStatus": "BiQ1zG_pendingRowStatus",
|
|
1502
|
+
"queueRowPct": "BiQ1zG_queueRowPct",
|
|
1503
|
+
"resultCheck": "BiQ1zG_resultCheck",
|
|
1456
1504
|
"queueRowTrack": "BiQ1zG_queueRowTrack",
|
|
1457
|
-
"
|
|
1458
|
-
"
|
|
1459
|
-
"
|
|
1460
|
-
"resultTitle": "BiQ1zG_resultTitle",
|
|
1461
|
-
"failKindUninstall": "BiQ1zG_failKindUninstall",
|
|
1505
|
+
"failPrepareHint": "BiQ1zG_failPrepareHint",
|
|
1506
|
+
"queueRow": "BiQ1zG_queueRow",
|
|
1507
|
+
"failKindInstall": "BiQ1zG_failKindInstall",
|
|
1462
1508
|
"failCopy": "BiQ1zG_failCopy",
|
|
1463
|
-
"
|
|
1464
|
-
"
|
|
1465
|
-
"
|
|
1466
|
-
"
|
|
1467
|
-
"
|
|
1468
|
-
"
|
|
1469
|
-
"failedCopyHint": "BiQ1zG_failedCopyHint",
|
|
1509
|
+
"cliOnlyHint": "BiQ1zG_cliOnlyHint",
|
|
1510
|
+
"modalLabel": "BiQ1zG_modalLabel",
|
|
1511
|
+
"overlay": "BiQ1zG_overlay",
|
|
1512
|
+
"modalActions": "BiQ1zG_modalActions",
|
|
1513
|
+
"queueRowBody": "BiQ1zG_queueRowBody",
|
|
1514
|
+
"modalLink": "BiQ1zG_modalLink",
|
|
1470
1515
|
"queueRowStatus": "BiQ1zG_queueRowStatus",
|
|
1471
|
-
"
|
|
1472
|
-
"
|
|
1473
|
-
"
|
|
1474
|
-
"modal": "BiQ1zG_modal",
|
|
1516
|
+
"stripCancel": "BiQ1zG_stripCancel",
|
|
1517
|
+
"errorTitle": "BiQ1zG_errorTitle",
|
|
1518
|
+
"failedCopyHint": "BiQ1zG_failedCopyHint",
|
|
1475
1519
|
"modalValue": "BiQ1zG_modalValue",
|
|
1476
|
-
"
|
|
1477
|
-
"
|
|
1520
|
+
"errorCopySoft": "BiQ1zG_errorCopySoft",
|
|
1521
|
+
"errorHint": "BiQ1zG_errorHint",
|
|
1522
|
+
"modalCopy": "BiQ1zG_modalCopy",
|
|
1478
1523
|
"failClear": "BiQ1zG_failClear",
|
|
1479
|
-
"queueRow": "BiQ1zG_queueRow",
|
|
1480
|
-
"toast": "BiQ1zG_toast",
|
|
1481
|
-
"noticeTextOk": "BiQ1zG_noticeTextOk",
|
|
1482
|
-
"noticeTextFail": "BiQ1zG_noticeTextFail",
|
|
1483
|
-
"noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
|
|
1484
|
-
"noticeHead": "BiQ1zG_noticeHead",
|
|
1485
|
-
"failPrepareHint": "BiQ1zG_failPrepareHint",
|
|
1486
|
-
"trustHint": "BiQ1zG_trustHint",
|
|
1487
|
-
"pendingRowStatus": "BiQ1zG_pendingRowStatus",
|
|
1488
|
-
"progressHead": "BiQ1zG_progressHead",
|
|
1489
|
-
"failBigIssue": "BiQ1zG_failBigIssue",
|
|
1490
|
-
"failRow": "BiQ1zG_failRow",
|
|
1491
1524
|
"hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
|
|
1492
|
-
"
|
|
1493
|
-
"
|
|
1494
|
-
"
|
|
1495
|
-
"
|
|
1496
|
-
"
|
|
1497
|
-
"
|
|
1498
|
-
"errorTitle": "BiQ1zG_errorTitle",
|
|
1499
|
-
"modalCmdText": "BiQ1zG_modalCmdText",
|
|
1500
|
-
"failEmpty": "BiQ1zG_failEmpty",
|
|
1501
|
-
"noticeBadgeFail": "BiQ1zG_noticeBadgeFail"
|
|
1525
|
+
"noticeMain": "BiQ1zG_noticeMain",
|
|
1526
|
+
"progressFillFail": "BiQ1zG_progressFillFail",
|
|
1527
|
+
"modalTitle": "BiQ1zG_modalTitle",
|
|
1528
|
+
"failHead": "BiQ1zG_failHead",
|
|
1529
|
+
"failKind": "BiQ1zG_failKind",
|
|
1530
|
+
"hubUpdateNotes": "BiQ1zG_hubUpdateNotes"
|
|
1502
1531
|
};
|
|
1503
1532
|
//#endregion
|
|
1504
1533
|
//#region src/client/components/icons.tsx
|
|
1505
1534
|
/**
|
|
1535
|
+
* DSH-Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
1536
|
+
* Website: https://dsh-plugin.org
|
|
1537
|
+
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
1538
|
+
*
|
|
1506
1539
|
* Inline SVG icons used across the client. Icons inherit currentColor so
|
|
1507
1540
|
* they adapt to themes and disabled states automatically.
|
|
1508
1541
|
*/
|
|
@@ -1658,6 +1691,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1658
1691
|
//#endregion
|
|
1659
1692
|
//#region src/client/components/ProgressView.tsx
|
|
1660
1693
|
/**
|
|
1694
|
+
* DSH-Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
1695
|
+
* Website: https://dsh-plugin.org
|
|
1696
|
+
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
1697
|
+
*
|
|
1661
1698
|
* Inline progress block shared by the install and uninstall dialogs:
|
|
1662
1699
|
* a real percentage bar (server-estimated, client-polled). No live terminal
|
|
1663
1700
|
* window — pnpm emits nothing during git clone/build, so a log pane would be
|
|
@@ -1672,6 +1709,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1672
1709
|
//#endregion
|
|
1673
1710
|
//#region src/client/components/modals.tsx
|
|
1674
1711
|
/**
|
|
1712
|
+
* DSH-Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
1713
|
+
* Website: https://dsh-plugin.org
|
|
1714
|
+
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
1715
|
+
*
|
|
1675
1716
|
* Dialog layer for the Plugin Hub: the install-confirm dialog, the uninstall
|
|
1676
1717
|
* dialog and the global toast. Both dialogs lock themselves while a mutation
|
|
1677
1718
|
* or restart is running, then switch to a result view offering an immediate
|
|
@@ -1869,6 +1910,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1869
1910
|
//#endregion
|
|
1870
1911
|
//#region src/client/lib/renderMarkdown.ts
|
|
1871
1912
|
/**
|
|
1913
|
+
* DSH-Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
1914
|
+
* Website: https://dsh-plugin.org
|
|
1915
|
+
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
1916
|
+
*
|
|
1872
1917
|
* 轻量 Markdown 渲染器:仅用于 Hub 自我更新的变更记录(Worker 下发的 notes)。
|
|
1873
1918
|
*
|
|
1874
1919
|
* 内容由插件作者自己编写、属可信内容,但渲染端仍先整体 HTML 转义,再按
|
|
@@ -1956,6 +2001,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1956
2001
|
//#endregion
|
|
1957
2002
|
//#region src/client/components/AboutModal.tsx
|
|
1958
2003
|
/**
|
|
2004
|
+
* DSH-Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2005
|
+
* Website: https://dsh-plugin.org
|
|
2006
|
+
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2007
|
+
*
|
|
1959
2008
|
* 头部「关注我们」弹窗:介绍 DSH-Plugin Hub 是干什么的 + 用户反馈群二维码。
|
|
1960
2009
|
* 内容以 Markdown 形式由 dsh-update Worker 的 /about 接口下发(key = hub:about),
|
|
1961
2010
|
* 作者想怎么写就怎么写、随写随推,客户端只负责渲染 —— 非写死。
|
|
@@ -1993,6 +2042,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
1993
2042
|
//#endregion
|
|
1994
2043
|
//#region src/client/components/HubUpdateModal.tsx
|
|
1995
2044
|
/**
|
|
2045
|
+
* DSH-Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2046
|
+
* Website: https://dsh-plugin.org
|
|
2047
|
+
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2048
|
+
*
|
|
1996
2049
|
* Hub 版本信息 / 自我更新说明弹窗:
|
|
1997
2050
|
* - 有更新(hasUpdate=true):标题「有新版本」,展示新版本号、发布时间与 Worker 下发的
|
|
1998
2051
|
* Markdown 变更记录(renderMarkdown 渲染,双语言按界面语言取 {zh,en} 对象),
|
|
@@ -2038,6 +2091,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2038
2091
|
//#endregion
|
|
2039
2092
|
//#region src/client/components/NotificationsModal.tsx
|
|
2040
2093
|
/**
|
|
2094
|
+
* DSH-Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2095
|
+
* Website: https://dsh-plugin.org
|
|
2096
|
+
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2097
|
+
*
|
|
2041
2098
|
* Notification-center dialog: a persistent log of every settled install /
|
|
2042
2099
|
* remove task — successes and failures alike.
|
|
2043
2100
|
*
|
|
@@ -2181,6 +2238,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2181
2238
|
//#endregion
|
|
2182
2239
|
//#region src/client/components/CatalogHeader.tsx
|
|
2183
2240
|
/**
|
|
2241
|
+
* DSH-Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2242
|
+
* Website: https://dsh-plugin.org
|
|
2243
|
+
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2244
|
+
*
|
|
2184
2245
|
* Section header: brand title row (H1 + open-site button) + tagline, followed
|
|
2185
2246
|
* by the purple ad banner that promotes the catalog stats.
|
|
2186
2247
|
*/
|
|
@@ -2239,6 +2300,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2239
2300
|
//#endregion
|
|
2240
2301
|
//#region src/client/components/CategoryTabs.tsx
|
|
2241
2302
|
/**
|
|
2303
|
+
* DSH-Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2304
|
+
* Website: https://dsh-plugin.org
|
|
2305
|
+
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2306
|
+
*
|
|
2242
2307
|
* Category tabs: an "all" chip followed by one chip per catalog category.
|
|
2243
2308
|
* The "all" chip carries the total plugin count; the per-category chips
|
|
2244
2309
|
* carry no counts so their widths stay uniform.
|
|
@@ -2266,21 +2331,25 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2266
2331
|
document.head.appendChild(tag);
|
|
2267
2332
|
}
|
|
2268
2333
|
var Dropdown_module_css_default = {
|
|
2269
|
-
"
|
|
2270
|
-
"
|
|
2334
|
+
"dropdownLabel": "B_Gxsq_dropdownLabel",
|
|
2335
|
+
"dropdownItemActive": "B_Gxsq_dropdownItemActive",
|
|
2336
|
+
"dropdown": "B_Gxsq_dropdown",
|
|
2271
2337
|
"dropdownBtn": "B_Gxsq_dropdownBtn",
|
|
2272
|
-
"dropdownArrow": "B_Gxsq_dropdownArrow",
|
|
2273
|
-
"dropdownPanel": "B_Gxsq_dropdownPanel",
|
|
2274
2338
|
"dropdownItem": "B_Gxsq_dropdownItem",
|
|
2339
|
+
"dropdownPanel": "B_Gxsq_dropdownPanel",
|
|
2340
|
+
"dropdownCount": "B_Gxsq_dropdownCount",
|
|
2275
2341
|
"dropdownCountActive": "B_Gxsq_dropdownCountActive",
|
|
2342
|
+
"dropdownArrow": "B_Gxsq_dropdownArrow",
|
|
2276
2343
|
"dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen",
|
|
2277
|
-
"
|
|
2278
|
-
"dropdownLabel": "B_Gxsq_dropdownLabel",
|
|
2279
|
-
"dropdown": "B_Gxsq_dropdown"
|
|
2344
|
+
"dropdownItemLabel": "B_Gxsq_dropdownItemLabel"
|
|
2280
2345
|
};
|
|
2281
2346
|
//#endregion
|
|
2282
2347
|
//#region src/client/components/Dropdown.tsx
|
|
2283
2348
|
/**
|
|
2349
|
+
* DSH-Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2350
|
+
* Website: https://dsh-plugin.org
|
|
2351
|
+
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2352
|
+
*
|
|
2284
2353
|
* Custom dropdown (native <select> replacement).
|
|
2285
2354
|
*
|
|
2286
2355
|
* macOS/浏览器原生下拉无法跟随宿主主题,这里自绘:触发器按钮 + 绝对定位面板,
|
|
@@ -2333,6 +2402,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2333
2402
|
//#endregion
|
|
2334
2403
|
//#region src/client/components/CatalogControls.tsx
|
|
2335
2404
|
/**
|
|
2405
|
+
* DSH-Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2406
|
+
* Website: https://dsh-plugin.org
|
|
2407
|
+
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2408
|
+
*
|
|
2336
2409
|
* Toolbar above the list: search input + sort dropdown + installed / not
|
|
2337
2410
|
* installed filter buttons + the notifications entry. All buttons share the
|
|
2338
2411
|
* same size (24px high, like the notification entry button).
|
|
@@ -2391,36 +2464,36 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2391
2464
|
document.head.appendChild(tag);
|
|
2392
2465
|
}
|
|
2393
2466
|
var List_module_css_default = {
|
|
2394
|
-
"star": "_3XaZHa_star",
|
|
2395
|
-
"cardTitle": "_3XaZHa_cardTitle",
|
|
2396
|
-
"actions": "_3XaZHa_actions",
|
|
2397
|
-
"stateTitle": "_3XaZHa_stateTitle",
|
|
2398
2467
|
"body": "_3XaZHa_body",
|
|
2399
|
-
"
|
|
2400
|
-
"desc": "_3XaZHa_desc",
|
|
2468
|
+
"star": "_3XaZHa_star",
|
|
2401
2469
|
"footer": "_3XaZHa_footer",
|
|
2402
|
-
"
|
|
2403
|
-
"
|
|
2404
|
-
"
|
|
2470
|
+
"footLink": "_3XaZHa_footLink",
|
|
2471
|
+
"installBtnUpdate": "_3XaZHa_installBtnUpdate",
|
|
2472
|
+
"updateBadge": "_3XaZHa_updateBadge",
|
|
2473
|
+
"stateTitle": "_3XaZHa_stateTitle",
|
|
2474
|
+
"fork": "_3XaZHa_fork",
|
|
2405
2475
|
"versionBadge": "_3XaZHa_versionBadge",
|
|
2406
|
-
"
|
|
2407
|
-
"stateDesc": "_3XaZHa_stateDesc",
|
|
2476
|
+
"topic": "_3XaZHa_topic",
|
|
2408
2477
|
"state": "_3XaZHa_state",
|
|
2478
|
+
"date": "_3XaZHa_date",
|
|
2479
|
+
"cardSide": "_3XaZHa_cardSide",
|
|
2480
|
+
"verified": "_3XaZHa_verified",
|
|
2409
2481
|
"stats": "_3XaZHa_stats",
|
|
2482
|
+
"installBtn": "_3XaZHa_installBtn",
|
|
2483
|
+
"topics": "_3XaZHa_topics",
|
|
2484
|
+
"stateDesc": "_3XaZHa_stateDesc",
|
|
2410
2485
|
"categoryBadge": "_3XaZHa_categoryBadge",
|
|
2411
|
-
"updateBadge": "_3XaZHa_updateBadge",
|
|
2412
|
-
"footLink": "_3XaZHa_footLink",
|
|
2413
|
-
"retryBtn": "_3XaZHa_retryBtn",
|
|
2414
2486
|
"uninstallBtn": "_3XaZHa_uninstallBtn",
|
|
2487
|
+
"cardHead": "_3XaZHa_cardHead",
|
|
2415
2488
|
"detailBtn": "_3XaZHa_detailBtn",
|
|
2416
|
-
"date": "_3XaZHa_date",
|
|
2417
|
-
"cardMain": "_3XaZHa_cardMain",
|
|
2418
|
-
"topics": "_3XaZHa_topics",
|
|
2419
2489
|
"list": "_3XaZHa_list",
|
|
2420
|
-
"
|
|
2421
|
-
"
|
|
2422
|
-
"
|
|
2423
|
-
"
|
|
2490
|
+
"installBtnCopied": "_3XaZHa_installBtnCopied",
|
|
2491
|
+
"actions": "_3XaZHa_actions",
|
|
2492
|
+
"cardTitle": "_3XaZHa_cardTitle",
|
|
2493
|
+
"installBtnInstalled": "_3XaZHa_installBtnInstalled",
|
|
2494
|
+
"cardMain": "_3XaZHa_cardMain",
|
|
2495
|
+
"desc": "_3XaZHa_desc",
|
|
2496
|
+
"retryBtn": "_3XaZHa_retryBtn",
|
|
2424
2497
|
"card": "_3XaZHa_card"
|
|
2425
2498
|
};
|
|
2426
2499
|
//#endregion
|
|
@@ -2444,6 +2517,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2444
2517
|
//#endregion
|
|
2445
2518
|
//#region src/client/components/PluginCard.tsx
|
|
2446
2519
|
/**
|
|
2520
|
+
* DSH-Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2521
|
+
* Website: https://dsh-plugin.org
|
|
2522
|
+
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2523
|
+
*
|
|
2447
2524
|
* One plugin card in the catalog list: name/category/verified badge,
|
|
2448
2525
|
* description + topics, star/fork/date stats, and the detail/install/
|
|
2449
2526
|
* uninstall actions.
|
|
@@ -2491,6 +2568,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2491
2568
|
//#endregion
|
|
2492
2569
|
//#region src/client/components/CatalogList.tsx
|
|
2493
2570
|
/**
|
|
2571
|
+
* DSH-Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2572
|
+
* Website: https://dsh-plugin.org
|
|
2573
|
+
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2574
|
+
*
|
|
2494
2575
|
* Catalog list: the scrollable container with the loading / failed / empty
|
|
2495
2576
|
* states, the plugin cards, and the count footer. Resets scroll position when
|
|
2496
2577
|
* the category or install-status filter changes so the replaced content is
|
|
@@ -2530,10 +2611,14 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2530
2611
|
//#endregion
|
|
2531
2612
|
//#region src/client/components/PluginHubSection.tsx
|
|
2532
2613
|
/**
|
|
2614
|
+
* DSH-Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
2615
|
+
* Website: https://dsh-plugin.org
|
|
2616
|
+
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
2617
|
+
*
|
|
2533
2618
|
* Plugin Hub section: wires the catalog data pipeline, the background task
|
|
2534
2619
|
* queue and the feedback state together. Data/queue logic lives in hooks/,
|
|
2535
2620
|
* rendering is delegated to the small presentational components in this
|
|
2536
|
-
* folder;
|
|
2621
|
+
* folder; it hosts the dialogs/toast and the section-level copy actions.
|
|
2537
2622
|
*/
|
|
2538
2623
|
function PluginHubSection({ t: _hostT, locale }) {
|
|
2539
2624
|
/** 界面语言:默认跟随宿主(系统)语言;右上角按钮可手动切换,切换后以手动选择为准 */
|
|
@@ -2800,7 +2885,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2800
2885
|
setUninstallPlugin(p);
|
|
2801
2886
|
}
|
|
2802
2887
|
}), showHubUpdate && (0, react.createElement)(HubUpdateModal, {
|
|
2803
|
-
info: catalog.hubUpdateInfo ?? { version: "1.1.
|
|
2888
|
+
info: catalog.hubUpdateInfo ?? { version: "1.1.2" },
|
|
2804
2889
|
lang,
|
|
2805
2890
|
t,
|
|
2806
2891
|
hasUpdate: catalog.hubHasUpdate,
|
|
@@ -2911,6 +2996,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
|
|
|
2911
2996
|
//#endregion
|
|
2912
2997
|
//#region src/client/index.tsx
|
|
2913
2998
|
/**
|
|
2999
|
+
* DSH-Plugin Hub — the community plugin marketplace for DeepSeek Harness.
|
|
3000
|
+
* Website: https://dsh-plugin.org
|
|
3001
|
+
* GitHub: https://github.com/dshplugin/dsh-plugin-hub
|
|
3002
|
+
*
|
|
2914
3003
|
* dsh-plugin client entry: wires the Plugin Hub into the host settings via
|
|
2915
3004
|
* the module-loader bundle (see tsdown.config.ts). All UI logic lives in
|
|
2916
3005
|
* PluginHubSection; this file only performs the cordis apply wiring.
|