Skip to content

v0.1.1

Latest

Choose a tag to compare

@masknull masknull released this 25 Sep 07:12
· 2 commits to master since this release

dsh-webhook-notifier — Release Notes

0.1.1

迁移:配置存储改为插件自有文件(0.1.5 / 0.1.7 行为一致,不再走宿主设置写通路)

新增

  • 配置的唯一事实源改为插件自有文件 <profile>/.dsh-webhook-notifier/settings.json,与日志同目录。
  • 一次性迁移:文件不存在时,从 profile entry 的旧值播种,并从 settings.yaml / settings.yaml.imported(0.1.5 时代的配置文档)读取本插件的旧 section——宿主只导入“名字与 profile 条目 id 相同”的 section,本插件旧命名空间 webhook-notifier 与条目 dsh-webhook-notifier 不同名,不被导入,数据只存在于那份文档里,由插件自行读取。
  • 新增 HTTP 设置面 GET/POST /dsh-webhook-notifier/settings(loopback + per-process key 鉴权),浏览器卡片经它读写;一次请求写入全部字段。
  • 迁移完成后,自动把 profile patch 里本插件写过的字段删掉,只删自己的。

性能

  • 保存一次配置从多次设置写入 + 整树重组变为一次本地原子写(实测 ~17ms),不再触发 profile 树重组、插件 fiber 热重载和客户端镜像刷新。代价恒定,与宿主后续版本对设置写入的优化无关(0.1.7-rc.2 已改善切换模型时的等待)。

修复

  • 保存后 UI 被回冲覆盖:旧实现逐字段写入,每次写入都触发一次订阅回调,回调中途把整个配置回冲,用户刚改的字段被盖掉。改为一次批量写入 + 保存期互斥。
  • /logs 与 /test 路由不可用:inject 没有声明 webServer,导致路由从未注册(表现为 404);同时 ctx.inject(["webServer"]) 被当作同步函数调用,而它只提供回调式。已改为回调式注入,并在 ctx.effect 内释放路由,OPTIONS/405 带 Allow 头。
  • 0.1.5 上插件树加载失败:宿主半 import "@deepseek-ai/schemastery" 在 0.1.5 的加载器下从插件目录真实路径解析,此前该目录缺少依赖(0.1.7 走 junction 路径解析所以侥幸可用)。已补齐依赖链,0.1.5 / 0.1.7 均可加载。
  • 迁移种子规则的默认值改为从 schema 的 meta.default 读取(此前手写默认值与 schema 不一致,导致 schema 自身的默认值被误判为“真实覆盖”,0.1.5 文档里的旧配置——triggers、fields、URL、bodyMode——永远同步不过来)。受影响的字段现已按旧值恢复。

UI

  • 下拉选择框(方法 / Body / 发送方式)与宿主「设置 - 通用设置」的 selector 对齐:36px 高、18px 圆角、bg-module-platform 底、hover 态、官方同款 chevron(14×14 / viewBox 16 / stroke 1,取自宿主 primitives 的 IconChevronDownOutline)。有宿主 Menu 组件时是真菜单(键盘上下/Enter/Escape、外部点击关闭、选中 ✓);不可用时自动退回原生 <select> 的等价外观。

兼容性

宿主要求:DSH ≥ 0.1.5-rc.2(0.1.5 线终点)。该下限已写入 package.json 的 engines.dsh,宿主会按它跳过不兼容的版本并提示。peer:schemastery(必需),@deepseek-ai/dsh-client-ui-primitives / @deepseek-ai/dsh-client-ui-slots(可选,缺失时自动降级)。

宿主版本 状态 说明
0.1.5-rc.2 ✅ 支持 最低支持版本;已修复该版本上插件树加载失败的问题
0.1.7-rc.1 ✅ 已验证 端到端实测:迁移、9 个字段从旧文档恢复、patch 行清理、/logs 与 /test 路由、下拉菜单
0.1.7-rc.2 ✅ 支持 该版本改善了切换模型时的等待,本插件路径不受影响

为什么两个版本行为一致:配置不再经过宿主设置服务,而是插件自有的 <profile>/.dsh-webhook-notifier/settings.json;宿主之间设置写通路的差异(0.1.5 的设置服务、0.1.7 的 configEditor.edit 全树 reconcile)都不参与读写。旧分支(多个 installSection + 逐字段 settings.update / configEditor.edit)已移除,两条宿主线复用同一套实现。

按宿主线取值的两处(运行时探测,不写版本号判断):

探测点 0.1.5 0.1.7
cleanup 写入通路 configEditor 不存在 → 走设置服务 replace configEditor 存在 → configEditor.edit
下拉选择框 宿主未导出 Menu → 退回原生 <select>(同款外观) Menu 可用 → 真菜单(键盘 / Esc / 外部点击 / 选中态)

依赖解析的版本差异(已修复):0.1.7 的加载器经 junction 路径解析依赖,0.1.5 经真实路径解析。此前插件目录缺少 @deepseek-ai/schemastery 依赖链,0.1.5 上直接加载失败。已补齐(schemastery + cosmokit + @standard-schema/spec),两个版本均可加载。

迁移来源(0.1.5 时代配置):插件自行读取 settings.yaml / settings.yaml.imported 中的 webhook-notifier section——宿主只导入名字与 profile 条目 id 相同的 section,本插件旧命名空间与条目 dsh-webhook-notifier 不同名,不被导入,数据只存在于那份文档里。js-yaml 缺失时该层自动跳过,其余功能不受影响。

版本差异与取舍:设置入口始终是「设置 - 插件设置」里的本插件卡片,两个版本一致;仅下拉框交互形态不同(见上表),外观一致。

升级注意

  • 首次启动自动完成迁移与 patch 清理;URL、请求方法、Body 类型、发送方式、自定义文本、请求头和全部字段开关都会从旧配置恢复。若此前保存未生效,本次迁移后会按 settings.yaml 中的旧值纠正。