Skip to content

dsh-notify 0.6.0

Latest

Choose a tag to compare

@having5548 having5548 released this 17 Oct 05:54

dsh-notify 0.6.0

前台后台都会响提示音了。 之前提示音只在 DSH 有焦点时播放,窗口切到后台就只剩一个静音的系统通知。


改了什么

每条通知现在在两种状态下都响,但只响一次:

状态 谁发声
焦点在 DSH 页面内的 <audio> 播放自带的 notify.wav(与之前一致)
焦点不在 DSH 页面保持安静,由系统原生通知发声

之所以不两边同时响,是为了避免同一条通知响两遍。

为什么不干脆让页面一直播? 浏览器会限流后台标签页的播放,后台标签页里的 Audio.play() 并不可靠——这正是把后台的声音交给系统通知的原因。

平台细节

  • Windows:dsh-toast.ps1 现在往 toast XML 里写显式的
    <audio src="ms-winsoundevent:Notification.Default" loop="false"/>,
    不再依赖「没有 <audio> 元素时系统用默认音」这种隐式行为;
    关闭「提示音」时写 <audio silent="true"/>。
  • macOS:osascript 的 display notification 加上 sound name "default";
    关闭「提示音」时省略该子句(不写就是静音)。

兜底

如果「系统通知」通道被关掉,后台会退回页面内发声(尽力而为,可能被浏览器限流)。

客户端在请求原生通知时带上 sound 字段;服务端未收到时默认按开启处理,旧客户端不受影响。

回归测试

新增三组断言,覆盖全部三条路径:

  • 前台:不请求原生通知,页面内放音一次
  • 后台:请求一次原生通知且 sound: true,页面内不放音
  • 后台 + 系统通知关闭:退回页面内放音

测试里有个坑值得记:插件是在 focus/blur 事件回调里读 document.hasFocus() 的,
所以测试必须真的派发这些事件,光改一个布尔变量不生效。

安装

# 从 npm
dsh plugin --profile desktop add @having5548/dsh-notify

# 或从本页附件
dsh plugin --profile desktop add having5548-dsh-notify-0.6.0.tgz

安装后重启 DSH 生效。

新版桌面端的 profile 名是 desktop;旧版 Web 是 web。

环境

  • DSH ≥ 0.1.7-rc.2(已在 0.1.7-rc.2 / 0.2.0-rc.2 上核对)
  • Windows 10+ / macOS

完整改动

见 7bd9ce7。


Assets

  • having5548-dsh-notify-0.6.0.tgz — 插件安装包
  • SHA256:6AA6C5B81672AE7D90E3D41CECE4C4B5C68BBF7241C93FBDD2A0A9AA55872161