Noob-stupid/dsh-plugin-hub
Noob-stupid/dsh-plugin-gating-hub插件管理面板:已安装插件一键启用/停用,内置 GitHub dsh-plugin 插件市场,支持详情查看与一键安装。
v0.8.1 — WKWebView/电子壳外链修复:window.open 返回值检测,壳内被吞时降级「复制链接 + toast」。
v0.8.0 — Store v2 Batch 3(最近更新排序 / 安装流式日志 / 已装精确匹配)。
v0.7.0 — Store v2 Batch 2(增量渲染哨兵 / Featured 策展区 / 场景组合一键装 / watchlist 与投稿入口)。
v0.6.0 — Store v2 Batch 1(详情抽屉 / 分类归一+只看兼容 / 中文别名搜索 / 卡片单语化 / 安装后引导 / 反馈口子)。
嵌入 DSH Web UI 设置页的插件商店面板:目录浏览 / 搜索 / 一键安装 / 兼容徽章 / 已装列表。
A plugin-store panel embedded in DSH Web UI: catalog browse / search / one-click install / compat badges / installed list.
旗舰功能(本团队)。官方只做了「设置页只读清单 + 命令行安装」,本插件补上「在 Web UI 里发现 + 搜索 + 一键安装」这半截断掉的链路。
plugin-manager/
├── lib/index.js 宿主半 / host half — install 服务 + 已装清单,经 /plugin-manager/* HTTP 路由暴露
│ (spawn 官方 `dsh plugin add`;inject webServer + loader)
└── lib/client.js 浏览器半 / browser half — 「Store」tab 注入官方 settings.plugins.tab slot
(fetch GitHub Pages catalog.json;卡片/搜索/排序/徽章/安装确认框)dsh plugin add → 安装必须走 host 侧服务(spawn 官方 CLI,复用安装机制)。ctx.loader.entries() 投影,经 /plugin-manager/list 返回。catalog.json(GH Pages,CORS *),不 host 代理。catalog.json 的 plugins 数组渲染卡片(name / 双语描述 / author / stars / license)。dsh plugin add → 成功绿勾+「需重启生效」/ 失败红叉+日志 / 超时提示。每卡 [📋] 复制 installCmd。加载(骨架/文字)· 空(搜索无结果 + 清除筛选 / 目录空 + 重试)· 错误(fetch 失败 + 重试)。全部双语(ctx.locale.register(NS, {zh, en}))。
export DSH_HOME=/tmp/dsh-pm
npx -y @deepseek-ai/dsh plugin --profile web add @dsh-suite/plugin-manager
npx -y @deepseek-ai/dsh web # http://127.0.0.1:3080
# 设置 Settings → Plugins → 「Store 商店」tab项 · 默认 · 说明 catalogUrl · https://whyihaveyou.github.io/dsh-suite/catalog.json · 目录源 profile · web · 安装目标 profile installTimeoutMs · 120000 · spawn 超时 confirmBeforeInstall · true · 安装前二次确认 allowInstall · true · 安装开关
lastPush(YYYY-MM-DD) 降序,缺字段落尾;host trimPlugin 补直通 lastPush。/plugin-manager/install-stream(原生 res 分块 NDJSON:{t:start|log|done};spawnCmd 可选逐行回调,runInstall 透传);doInstall 流式优先,读流异常静默回退 buffered /install(不硬造假进度);右下角悬浮小终端实时滚动真实安装日志。buffered /install 接口保持不变。isInstalled 由近似子串互含改为 trim 后全名精确相等,修掉 152 对同名异包假阳性(如 dsh-remote↔@linxin666/dsh-remote-web-ui 被错标已装)——loader 名字即完整 npm 名,无需模糊匹配。featured=true 条目按星标取 top6,商店顶部横排大卡(og 大图 + 一句话 + 安装按钮),仅默认浏览态显示(搜索/筛选时自动隐藏);host trimPlugin 直通 featured 字段。/plugin-manager/install,单包失败不中断,行内 ⏳/✔/❌ 逐包回报;装完自动刷新已装列表。引导型:含 preset-center 的组合提示去 设置 → Agent presets 应用预设——不新造 preset 应用通道(host apply-preset 另行评审)。plugin-submission 标签);商店底部 🔎 观测聚合条目(compat-unknown 计数 · risk 计数 → 每日兼容年报 stars.html / stars-zh.html;catalog 无官方 watchlist metadata,采用现状口径)。/plugin-manager/updates 独立异步回填角标);宿主缓存 TTL 1h → 6h(PM_UPDATES=off 仍可关)。Installed 视图每项「⬆ 有更新 → vX.Y.Z」角标 + 「⬆ 升级」按钮,确认框提示「已装旧版,确认后将覆盖升级 (old → new)」,执行 /plugin-manager/update(复用 dsh plugin add 安装路径重装最新版;无 pending 更新服务端返回 409 防误刷)→ ✔ 更新成功横幅。Store 视图已装旧版卡露出同款升级按钮 + 确认框提示。git/link/workspace 源包不适用(持续增长仓库,AI 自行 git pull)。dsh plugin remove(pnpm remove + bundle 协调)。/plugin-manager/catalog 裁剪目录路由,只含面板必需字段 + gzip/deflate,缓存 1h,浏览器优先走宿主路由、失败回退 Pages 完整版);已装 npm 源插件更新检查(npm view 批量查询,并发 ≤4、缓存 1h,卡片加「⬆ 有更新」角标,git/link 源跳过 —— 注:0.5.0 起改为异步回填不阻塞首屏、缓存 6h、加入一键升级流)。+ 确认依赖真加了 + --dump-config 确认包进了 bundle 栈」才翻绿;未挂载(monorepo 根包/缺 dsh.bundle)显示黄色警告,失败显示 stderr 摘要;目标 profile 从硬编码 web 改为从启动 argv 探测当前 profile。官方「Plugin list」是清单(只读平铺,160+ 个名字难找);本插件的「已装管理」是管理——分组、搜索、显示版本/来源/状态,并可移除。两者共存于 Settings → Plugins 的 tab 栏。
This plugin follows the DSH Web styling contract (docs/web-styling.md): all Store UI colors come from --dsw-alias-* design tokens, so the panel follows the host light/dark theme. L2 semantic attributes (data-dsh-plugin/part/surface) land in a follow-up.
本插件遵循 DSH Web 样式契约:商店界面颜色全部经 --dsw-alias-* 设计令牌引用,跟随宿主亮/暗主题。 L2 语义属性(data-dsh-plugin/part/surface)后续版本补齐。