Skip to content

v0.24.0 — 画布可以承载任何插件

Choose a tag to compare

@He2way He2way released this 18 Sep 06:52
· 6 commits to main since this release

v0.24.0 — 画布可以承载任何插件 / The canvas hosts any plugin

🧩 插件(或一句对话)现在可以把另一个插件的原生界面放到画布上 —— 不局限于卡片与控件。

  • 两个新的 [canvas] 操作 —— addPlugin(id / title / height / bare / x / y)与 rebuild(重建某个已有插件项),会校验、计数并汇报为 新增插件 1 · 重建插件 1;画布提示词会列出启动清单里的插件(已挂载过的标 ✓)并教这两个操作。
  • 主对话与专属对话都可以 —— 画布自带的对话框一直可以;现在任意会话里的 [canvas] 块也会被对话行监听器拾取并应用(与 [taskcard] 建卡同一条路径),作用于块里指名的画布("canvas": "名字或 id",不存在就创建)或当前画布,任务台上出现可点击的提示,点它直接打开那块画布。
  • 嵌入约定 —— 插件发布 globalThis.__DSH_<去掉 dsh-plugin- 的 ID>__.mountEmbedded(host, api),api 提供 render(独立 React root)、dark 与 onStatus(显示在项头部的实时徽标上:待挂载 / 加载中… / 已挂载 / 未挂载)。mount(host, api) 与纯函数形式也接受。
  • 一次加载、多处挂载 —— 客户端包每会话只取一次,同一插件每个项各挂自身宿主(无 iframe、无第二份 React);⟳ 或 rebuild 换新修订号 → 重新取包并重新挂载,且修订号保证严格递增。
  • 失败也说得清楚 —— 没有嵌入入口 / 启动清单里没有 / 加载失败时显示写明期望全局名与示例的说明面板,而不是空白框;选择器还会列出插件管理端口报告的动态插件。
  • 顺带修掉 —— 平面上有插件项 / 内嵌应用时切换画布会触发的两个拆除问题(插件宿主节点的卸载顺序、桥接通知抹掉页面标题)。

另外包含此前未发布的改动:画布对话新增的控件会被收养回对应卡片(canvasAdoptItems),以及内置预设卡「工作时序」(承载 dsh-plugin-tpt-chronicle 面板)。

Install / 安装

dsh plugin --profile web add dsh-task-console           # npm(发布后)
dsh plugin --profile web add ./dsh-task-console.tgz     # 本 Release 的预构建 tarball

Full changelog / 完整变更记录: CHANGELOG.md · README: README.md