Releases: MCviseron/dsh-email-notify
Releases · MCviseron/dsh-email-notify
Release list
v0.2.0 - v0.4.0
[0.4.0] - 2026-10-01
Added
- 对话完成通知:在对话输入框左侧(
conversation.input.left)新增「邮件通知」勾选,当前会话每完成一轮(turn/end)自动发送完成邮件。 - 审批邮件提醒:设置中新增「审批邮件提醒」(默认关闭),监听
approval/requestwaterfall,在等待用户审批时发送包含审批提示内容的提醒邮件;可分别开关「工作区审批提醒」和「Auto review 转手动审批提醒」两种模式。 - 新增
/api/dsh-email-notify/approval/availabilityloopback 接口,用于向设置页暴露 auto review 插件是否可用;未安装/未启用官方 auto review 插件时不提供 Auto review 转手动审批提醒选项。 - 新增
/api/dsh-email-notify/conversation-notify/describe与/api/dsh-email-notify/conversation-notify/set两个 loopback 接口,用于读取/写入按会话的勾选状态。 - 勾选状态持久化到
~/.dsh/email-notify/notify-sessions.json。 - 设置页从「Web UI 插件」子级迁移到 DSH 设置侧边栏的一级
settings.section。 - 通知模板独立化:任务通知沿用原
subjectTemplate/bodyTemplate;新增对话通知与审批通知各自的主题/正文模板(conversationSubjectTemplate、conversationBodyTemplate、approvalSubjectTemplate、approvalBodyTemplate),默认值与当前格式一致。
Changed
EmailNotifier.applyConfig仅在enabled && watchTaskBoard时启动轮询定时器;仅使用对话完成通知时不再空转任务看板轮询。- 修复测试邮件/模板渲染报
source.replace is not a function:DSH 0.2 的.volatile()Config 字段以带get()的冻结引用传入,插件现在会先展开这些引用再渲染模板、解析端口与配置。 - 更新插件公告文本,向 Agent 说明对话勾选与一级设置页。
src/client/index.ts增加conversation.input.left的 SlotMap 类型补丁;src/index.ts增加session/event与approval/request的 Cordis Events 类型补丁,修复tsc --noEmit。EmailNotifyConfig新增approvalNotifyEnabled、approvalNotifyWorkspace、approvalNotifyAutoReview三个 volatile 字段。- 审批提醒模式名称改为「工作区审批提醒」与「Auto review 转手动审批提醒」,避免与 auto review 本身的开关混淆。
- 审批提醒邮件正文改为更易读的通知格式;邮件 HTML 统一由渲染后的纯文本生成,模板改动会同时反映到纯文本与 HTML 正文。
- 任务通知模板字段名在设置页改为「任务通知主题模板 / 任务通知正文模板」,避免与对话、审批模板混淆。
- 审批提醒新增
approval/asked会话事件兜底路径(延迟 500ms,瀑布路径优先),并在设置桥之外新增GET/POST /api/dsh-email-notify/approval/status诊断接口,暴露已观察/已发送计数与最近一次审批摘要。 - 中英文案与 README 对齐新功能。
[0.3.0] - 2026-09-30
Added
- 兼容 DSH
0.2.0-rc.x与官方桌面端:同一份构建现在覆盖0.1.1-rc.x/0.1.5-rc.x/0.2.0-rc.x三代运行时,切换运行时不需换插件版本。
Changed
- 设置接缝三代表探测:0.2 的
SettingsForms走configure({ auto: false })(命名空间即 profile entry Config,并关掉自动生成页),旧版依次回退installSection/register。 Config的 13 个字段全部标记.volatile():0.2 只把这些字段投影成可编辑表单;该标记在旧接缝上无副作用。- schema 依赖由
schemastery换成@deepseek-ai/schemastery(与运行时加载 Config 的包一致)。 src/routes.ts不再 import 0.2 已移除的SettingsProvider,改用本地SettingsBridge/SettingsBridgeView结构类型,sctx.settings在调用点显式转型。- 设置冲突判定改为「类 +
code === 'SETTINGS_CONFLICT'」:插件自带的 dsh-settings 副本与宿主抛错的副本不是同一份,单靠instanceof会漏判(同时修掉 0.1.5 上的同类隐患)。 - 客户端
SettingsScope/SettingsScopeSnapshot类型本地化(0.2 已改名ConfigForm/ConfigFormSnapshot,成员一致)。 - 对等依赖范围扩到
^0.1.1-rc.2 || ^0.1.5-rc.2 || ^0.2.0-rc.2;构建期新增zustand@4.4.7、immer@10.2.0(内联快照存储)。
Verified
- 0.1.5-rc.2 / 0.2.0-rc.2 双份
tsc --noEmit与构建通过。 - 隔离
DSH_HOME下用 0.2 运行时启动 web profile:插件加载无报错,POST /api/dsh-email-notify/settings/describe返回完整 schema 与value/base/user/secrets;测试邮件路由按预期返回「配置不完整」。
[0.2.0] - 2026-09-17
Added
- 兼容 DSH 0.1.5-rc.x:同一份构建现在同时支持 DSH
0.1.1-rc.x与0.1.5-rc.x两代运行时,升级 DSH 前后都不需要更换插件版本。
Changed
- 浏览器端不再依赖 DSH 客户端运行时包:快照存储
createSnapshotStore改为随插件打包,lib/client.js的运行时依赖只剩 Web 外壳内置的react与react/jsx-runtime。原@deepseek-ai/dsh-client-runtime自 DSH 0.1.2 起被上游移除,@deepseek-ai/dsh-client-store是 0.1.5 才有的平台模块,内联后两代外壳都能加载。 - 客户端类型来源迁移:
ClientContext改用@deepseek-ai/cordis,SettingsScope/SettingsScopeSnapshot改用@deepseek-ai/dsh-client-ui-settings/client(ctx.slots的类型增补由@deepseek-ai/dsh-client-ui-renderer/client提供)。 - 宿主端设置接缝改为运行时探测:DSH 0.1.5 用
settings.installSection(owner, ns, schema, entry, hooks);旧版回退到settings.register(ns, schema, { base })的等价接线,与上游已移除的自由函数installSettingsSection行为一致(同样的setSource时机、onChange触发点与卸载保护)。 - 设置命名空间常量
EMAIL_NOTIFY_SETTINGS_NAMESPACE现在是普通字符串'email-notify'(上游移除了settingsNamespace()校验函数,该 id 本身合法)。 - 浏览器端设置作用域补齐 0.1.5 契约新增的
mutate(ops, expectedRevision):直接复用既有桥接写路径(/api/dsh-email-notify/settings/mutate本就接受ops数组),set/unset行为不变。 - 依赖声明:
dsh.client.inject收敛为两代都存在的@deepseek-ai/dsh-client-ui-settings与@deepseek-ai/dsh-client-locale;@deepseek-ai/dsh-*对等依赖范围为^0.1.1-rc.2 || ^0.1.5-rc.2,@deepseek-ai/cordis为^4.0.1。
兼容性说明
- 功能、配置字段与行为完全不变:设置卡片、SMTP 发送、任务看板轮询、已通知执行 ID 记录(
~/.dsh/email-notify/seen.json)都与 0.1.0 一致。 - 自托管设置桥
/api/dsh-email-notify/settings/*仍只接受 loopback 请求。
v0.1.0
- 初始版本。
- 轮询任务看板 Host API,任务执行成功、失败或取消后通过 SMTP 发送邮件。
- 首轮轮询作为基线,不补发历史已完成任务;已通知执行 ID 持久化到
~/.dsh/email-notify/seen.json,重启不重复发送。 - Web GUI 设置卡片(设置 → 插件 → 邮件通知):SMTP 服务器/端口/SSL、发件邮箱、授权码、收件人、主题与正文模板。
- 「发送测试邮件」按钮,配置完成后一键验证。
- 向 Agent 系统提示注入插件说明(可关闭)。
- 所有 API 仅接受 loopback 请求,保护授权码等敏感配置。