dsh-tryboard-plugin:在 DSH Web GUI 里内置一块 Trello 风格看板

前言

用 DSH 做日常开发时,经常需要一个地方记录「今天要做什么、做到哪了」。常见的做法是切到独立的看板工具或者开个文本文件,上下文就断了。

dsh-tryboard-plugin 的思路是把这块看板直接放进 DSH 的 Web GUI:侧边栏「设置」上方多一个「看板」入口,点开后看板页铺在当前会话的主内容区,侧边栏保持可见可用。数据持久化在 DSH 设置中,重启不丢。

这是什么

dsh-tryboard-plugin 是一个标准的 DSH Cordis 插件,由 nexsjournal 维护,许可证为 MIT。它在 DSH Web GUI 里提供一个 Trello 风格的工作看板,支持多看板、拖拽和自定义列,全部数据存在 DSH 设置的 tryboard 命名空间里。

核心功能

多看板与默认四列

  • 可创建任意多个看板,点击标题即可重命名;头部切换器支持切换、新建、删除看板。
  • 每个看板自带四个默认列:待办 / 进行中 / 完成 / 待确认(英文环境为 To Do / In Progress / Done / Pending),列头带状态色点。

拖拽与状态

  • 卡片支持 Trello 式拖拽:跨列移动、同列内排序,拖拽时显示插入指示线。
  • 卡片拖到哪一列,状态就是哪一列,卡片上的小色点实时反映状态。
  • 快捷操作:Esc 关闭看板页或取消编辑;侧边栏收起时入口变为纯图标。

自定义列与卡片管理

  • 最后一列后面有「添加列」,可自由增删自定义列(状态为自定义/灰色)。
  • 点击卡片或列标题即可重命名;列菜单支持重命名和删除(删除带确认);列尾有「添加卡片」快速建卡。

原生风格与侧边栏整合

  • 界面全部使用 DSH 设计令牌(--dsw-* / --ds-*)绘制,自动跟随浅色/深色主题,不引入任何外部样式。
  • 侧边栏入口按钮与「设置」逐像素对齐(42px 行高 / 16-18px 图标)。在壳 v2.0.1+ 下,插件会把 footer 插槽容器改回垂直堆叠,并把「设置」的齿轮换成品牌图标——仅作用于侧边栏,用 CSS mask 实现,不改应用本体。

安装与启用

三种安装方式,任选其一。

方式一,一键脚本(本地目录,软链安装,改动即时生效):

./scripts/install.sh                # 安装到 web profile
./scripts/install.sh --profile xxx  # 指定 profile

方式二,dsh CLI 本地安装:

dsh plugin --profile web add -w /path/to/dsh-tryboard-plugin

方式三,从 GitHub 安装:

dsh plugin --profile web add git+https://github.com/<你的用户名>/dsh-tryboard-plugin.git

其中 <你的用户名> 是 README 中的占位符,替换为实际仓库地址即可。

安装后需要重启 DSH 一次(服务端半与 api-proxy 白名单补丁在下次启动生效),然后点侧边栏「看板」即可使用。

补充一点开发时的行为差异:客户端代码(看板页)支持热更新,宿主运行期间修改 lib/client.js 会自动生效;lib/index.js(服务端半)的改动需要重启 DSH。

数据存储与迁移

全部看板数据是一份 JSON 文档,存放在 ~/.dsh/settings.yamltryboard.data 字段(JSON 字符串),随 DSH profile 存储,重启不丢。

数据结构如下:

{
  "v": 1,
  "activeBoardId": "…",
  "boards": [
    {
      "id": "…",
      "name": "每日工作",
      "createdAt": 1712345678901,
      "columns": [
        {
          "id": "…",
          "title": "待办",
          "status": "todo",
          "builtin": true,
          "cards": [{ "id": "…", "title": "写周报", "createdAt": 1712345678901 }]
        }
      ]
    }
  ]
}

status 取值为 todo doing done review(四个默认状态列)或 custom(自定义列)。

迁移和备份很简单:直接备份 ~/.dsh/settings.yaml 即可。

卸载命令:

dsh plugin --profile web remove dsh-tryboard-plugin

卸载后再重启 DSH。注意看板数据仍会留在 settings.yamltryboard 字段中,不需要的话可以手动删除。

工作原理(给开发者)

插件分为宿主半和浏览器半两部分:

文件 角色
lib/index.js 宿主半:注册 tryboard 设置命名空间(schemastery schema),并幂等地把 tryboard 加入宿主 api-proxy 的 Web 设置白名单(下次启动生效)
lib/client.js 浏览器半:注入侧边栏入口与看板页,持有全部交互逻辑与状态
cordis.patch.yml 把插件 id 插入宿主的 Cordis bundle 层
package.json dsh.bundle.patch 指向补丁文件;dsh.client 声明 Web 客户端 bundle 及其依赖模块

浏览器半用到的宿主插槽(slots):

  • sidebar.footer.action(list,root 作用域):设置行上方的侧边栏脚部动作位,用于看板入口;
  • shell.overlay(list,root 作用域):应用框架级浮层位,看板页渲染于此,但通过测量侧边栏列宽([data-shell-overlay] 的父级首个子元素 + ResizeObserver)让页面只铺在主内容区(left: 侧边栏宽),侧边栏保持可见可用。

状态与持久化方面,客户端用一个模块级 store(useSyncExternalStore)持有 { open, persistence, data };所有变更即时更新 store,并防抖 400ms 通过 ctx.settingsScope.bind({ namespace: "tryboard" }).set("data", JSON) 写回宿主设置。宿主文档变更(其他客户端写入、外部修改)通过设置失效订阅自动回读合并。

适用场景与注意

适合的人群:主要在 DSH Web GUI 里工作、希望任务规划不离开当前环境的人。如果你已经在用独立的看板工具并需要多人协作,这个插件不解决那类需求,它定位是单机的个人工作看板。

运行要求与兼容性:

  • Node ≥ 20(宿主侧);
  • DSH Desktop / dsh web(Cordis 插槽系统版本,rc.6 系);
  • 安装后务必重启 DSH 一次,服务端半与 api-proxy 白名单补丁才会生效。

安全提醒:插件以当前 dsh 进程的权限运行,安装前建议检查源码与许可证。本项目许可证为 MIT。

小结

dsh-tryboard-plugin 把一块 Trello 风格的看板塞进了 DSH Web GUI:多看板、默认四列、拖拽换状态、自定义列,数据落在 ~/.dsh/settings.yaml,界面完全跟随 DSH 原生主题。安装一条命令,重启一次即可使用。

  • 插件目录页:https://www.skillhub.cn/plugins/nexsjournal/dsh-tryboard-plugin
  • GitHub 仓库:https://github.com/nexsjournal/dsh-tryboard-plugin
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜