Skip to content

Releases: bitterSmilezzz/dsh-notify

v0.4.2 — 按事件分类的通知音效

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 19 Oct 16:05

按事件分类的通知音效

此前「声音开关」只是把 silent 传给系统通知——响声由 macOS / Windows 决定,插件改不了,
也无法让「审批」与「轮次完成」听起来不一样。现在音色由插件用 Web Audio 合成,
系统提示音一律静音(不叠加成双声)。

事件 音色
审批 / 提问 上行双音 G5 → C6(需要你动手,最显眼)
出错 下行小三度 A4 → F4,三角波(听感下沉)
轮次完成 单音 A5 轻响(最高频,最克制)
会话结束 下行双音 E5 → C5(收束)
子代理完成 与轮次完成同款、音量更低

全部 ≤0.48s、增益 ≤0.16;同类 300ms 节流,连续通知不叠成噪音。
AudioContext 懒创建并在首次交互时预热(否则后台页面无法出声),随 fiber 卸载关闭;
运行时不提供音频能力时静默降级,横幅照常送达。

修复

  • 「试听」按钮此前不会发声:它只再发一条通知,声音完全依赖系统提示音。
    现在会真的播放音效,且不受开关限制——关闭声音后仍能确认音色。

验证

真实 Chromium 加载真实 lib/client.js,接线到 AnalyserNode 实测峰值 0.156
(设定增益 0.16),确认真的发声而非只走代码路径。测试 97/97。

完整变更:v0.4.1...v0.4.2

v0.4.1 — 点击通知跳转到对应会话

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 19 Oct 15:10

修复:点击通知只拉起窗口、不切会话

0.4.0 的点击回调调用 ctx.sessions.open(id)——该方法是 0.1.x 的会话控制器接口。
DSH 0.2 把「选主视图 + 打开会话」移到了 uiWorkspace.openSession(target),
ctx.sessions 只剩会话代际与历史。

调用落在 try/catch 里,抛出的 TypeError 被静默吞掉:窗口聚焦成功、会话停在原处。
URL 深链(#session= / ?session=)走同一处调用,一并失效。

修复:新增 src/client/navigation.ts,通知点击与 deep-link 共用一个导航缝——
优先 uiWorkspace.openSession,回落旧版 sessions.open,两者都缺时返回 false 而不抛错。
服务在每次点击时解析而非 apply 时缓存:ctx.get 只返回 ACTIVE 提供方的值,
ui-workspace 激活晚于本插件时,缓存会把 undefined 永久留在闭包里。

市场准入配置

  • engines.dsh: ^0.2.1-rc.2——宿主自己的兼容判据(存在时 peer 被忽略),市场卡片据此判兼容性
  • npm run validate:registry——逐条实现 DSH-Store 准入规则的静态部分(22 项)
  • README 补仓库地址栏、权限能力表、分发渠道与已知风险
  • 仓库 topics 加 dsh-plugin 等 6 个,补 description 与 homepage

打包

清掉 lib/types/client/sound.d.ts 残留(源文件早已删除,声明仍随包发布),
并新增产物↔源码一一对应守卫,防再犯。

完整变更:v0.3.6...v0.4.1

v0.2.0 —— Linux 支持 / 文案本地化 / 聚焦抑制 / 双契约卡片(破坏性:移除防重叠探测)

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 17 Sep 15:24

新增

  • Linux 平台支持:notify-send(libnotify)展示型通知,未安装时静默跳过。
    通知不可点击(notify-send 无可靠的点击回调通道),声音由桌面主题控制(本插件的声音
    开关在 Linux 上无效)——两者都在 README 与设置卡片文案里写明。
  • 通知文案本地化:host 侧通知标题/正文跟随官方 locale 设置的偏好(设置 → 通用 → 语言),
    中文/英文双语;读不到偏好时回落中文(此前一律硬编码中文,英文界面用户收到中文通知)。
  • 正文带会话标题:优先官方 sessionTitle 服务折叠出的会话标题,无标题时回落模型名
    (此前正文只有模型名,多会话并行时无法分辨是哪一个会话)。
  • 聚焦抑制(分级):浏览器半区把页面可见性 POST 到 /api/dsh-notify/presence(精确 HTTP
    路由,信任围栏复用官方 connection.requestRejection:Host/Origin 检查 + 浏览器认证),
    host 在页面可见时抑制「轮次完成 / 会话完成」这类非阻塞通知;「审批 / 出错」始终送达
    (审批是阻塞性的,官方审批 UI 只在对应会话内出现)。上报可见时每 30s 续期,host 侧
    75s 保鲜期兜底——页面崩溃/断连后最多 75s 恢复通知(宁可多通知,不可静默失效)。
  • 设置卡片双契约注册:同时注册旧 settings.plugin.item(设置 → 插件 → 配置)与新
    plugins.bundle.config(插件详情页,view: 'summary' | 'page')两代官方 slot 契约——
    DSH 0.1.6 期间换过插件配置架构,只注册一个会让卡片在其中一代运行时里彻底消失。

变更(破坏性)

  • 移除防重叠探测机制(overlap / probeServices):实测该机制探测的 6 个 cordis
    service 名(notification / notifications / notifyCenter / desktopNotify /
    systemNotify / toast)在官方 251 个包中零命中,探测名单纯属命名猜测;而一旦误命中
    (第三方插件恰好注册同名 service),本插件会静默停止通知(只弹一次提示)——这是
    通知类插件最糟的失败模式。移除探测逻辑、两个配置项与设置卡片对应行(老配置里残留的
    字段被 schemastery 原样保留,不影响解析,但不再有任何作用)。
  • 设置卡片视觉对齐官方组件层:卡片描边 0.5px border-l4、圆角 16px、悬停与打开态
    换描边/背景、头部 focus-visible 轮廓、正文分隔线 0.5px border-l2;折叠箭头改用官方
    IconChevronDownOutline14(此前自绘 svg);次要按钮改 outline 形态(对齐官方卡片内
    按钮);错误色改用真实存在的 --dsw-alias-label-error(此前用的是不存在的
    --dsw-alias-state-danger-fill,恒走硬编码 fallback 色)。
  • 折叠头补官方同款无障碍名(展开设置/收起设置: <标题>)。

修复

  • 设置卡片文案 masterDesc 此前称「macOS 需已装 terminal-notifier」,与实现不符
    (osascript 为主、terminal-notifier 只影响可点击跳转),会误导用户以为没装就收不到通知;
    已改为按平台说明(macOS 可点击需 terminal-notifier;Linux 仅展示)。
  • README 补齐此前缺失的 overlap/probeServices 说明(该机制已移除),并补全平台矩阵、
    权限披露与已知风险。
  • CHANGELOG 0.1.10 对 overlap 的描述(「检测到屏幕已被其他应用独占(如全屏演示、投屏)时
    自动暂停」)与实现(探测 cordis service 名)完全不符——本版移除该机制,描述错位一并终结。

工程

  • host 侧按职责拆分:notify-events.ts(事件编排)、notify-text.ts(文案)、
    presence.ts(聚焦状态机)、system-notify.ts(平台通道)、notify-policy.ts(纯策略);
    原先单文件 512 行的 system-notify.ts 同时承载四类职责。
  • 新增回归测试覆盖:文案字典 zh/en key 一致性、notifyTextOf 回落、聚焦状态机与上报协议、
    Linux notify-send argv 与 PATH 探测、Windows toast 全路径(argv/静默 env/兜底清理)、
    host↔client 配置字段一致性、卡片双契约注册。

v0.1.12 — 包名迁移到 @bittersmilezzz/dsh-notify(npm 首发)

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 14 Sep 07:45

变更

  • 包名迁移:dsh-notify → @bittersmilezzz/dsh-notify,以便发布到 npm registry
    (原短名在 npm 上已被其他作者占用)。同步更新的四处加载契约:package.json name、
    cordis.patch.yml 的 bundle name(id 保持短原名,那是实例标识而非模块说明符)、
    客户端 bundle 的 window.__ModuleLoader__.load({ id })、样式注入的
    data-plugin / data-plugin-css 标记。
  • npm 首次发布:本版是包进入 npm registry 的首个版本,此前只能通过 GitHub 或本地路径安装。
  • 桌面端兼容:客户端平台模块(react、react-dom、@deepseek-ai/dsh-client-ui-slots、
    @deepseek-ai/dsh-client-ui-primitives)改标为 optional peer(peerDependenciesMeta)。
    它们由 DSH 客户端的冻结模块表在运行时提供,不属于宿主共享包;不标 optional 会被 Desktop 的
    profile 校验以 requires missing … 拒绝加载。

功能、配置 schema、settings namespace(notify)与 UI 文案均未改动。

安装

# npm(推荐)
dsh plugin --profile <profile> add @bittersmilezzz/dsh-notify
# 或从 GitHub
dsh plugin --profile <profile> add github:bitterSmilezzz/dsh-notify

验证

双半区 tsc 零错误;构建通过;测试 56/56 通过。

dsh-notify v0.1.11

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 12 Sep 07:53

纯依赖与元数据对齐版本,无功能与行为变更。

变更

  • DSH 兼容:@deepseek-ai/* 依赖线对齐 DSH 0.1.5-rc.2(peer 与 dev 双声明,约束 ^0.1.5-rc.2),并同步 pnpm-workspace.yaml 的 release-age 例外清单。
  • 0.1.5-rc.2 相较 rc.1 的改动(反馈弹窗确认、交付卡片排版)均不触及本插件依赖的 API 与事件,升级后无需改动任何配置。

验证

  • 双半区 typecheck(host + client)零错误,构建通过。
  • 测试 56/56 通过。

升级方式

dsh plugin --profile web add github:bitterSmilezzz/dsh-notify

安装/升级后需重启 web profile 生效;通知开关调整即时生效,无需重启。

dsh-notify v0.1.9

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 04 Sep 08:54
  • 1b02781 chore: 发版 0.1.9(deep-link 适配 rc.1 token 鉴权:authenticatedUrl + #session= fragment)
  • 66c7360 chore: align @deepseek-ai deps to 0.1.2-rc.1 (dsh @next)

v0.1.8

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 03 Sep 03:17

chore: 发版 0.1.8(新一轮优化(保存失败提示、turn 去抖、处理器错误隔离))

v0.1.7

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 03 Sep 01:26

依赖线对齐:@deepseek-ai/* 全量 ^0.1.2-alpha.5(dsh 0.1.2-alpha.5 配套);构建与测试全绿,无代码变更。

v0.1.6

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 02 Sep 15:38

dsh-notify v0.1.6

DeepSeek Harness (DSH) 的系统级桌面通知插件。

修复

  • macOS 兜底链补执行失败分支:terminal-notifier 文件存在但不可执行(quarantine/权限/损坏安装)时 exec 报 error 此前被静默吞掉、通知完全丢失,现在退到 osascript(不可点击但可见)

改进

  • 补 scripts.test 入口(测试文件此前只能手动跑);新增 3 例注入不变量测试,钉住「AppleScript/PowerShell 负载走 argv、脚本体零 JS 插值」约束

验证

  • typecheck(alpha.4 类型)+ 12 测试 + build 全绿;伞校验通过

v0.1.5

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 02 Sep 01:23

dsh-notify v0.1.5

变更

  • b3223be chore: 发版 0.1.5(补齐产物入库,固定源可安装)

  • 68cc9ac fix(release): 补入漏提交的 lib/notify-policy.* 产物

  • 历史回填:该 tag 此前只有 git tag、未建 GitHub Release,notes 由 tag 区间提交生成