WebMux v0.3.0 release notes
View and download on GitHub Releases (external link)Download the latest release
更新内容
本版本加入注意力提醒的 Web Push 推送:会话需要处理时,即使页面已关闭或手机已锁屏也能收到通知。同时主页区分 Shell 报告目录与会话归属,Windows 托盘检查 WSL 中 webmux 的兼容性与版本对应,并修复多项 iOS 体验问题。
通知推送(Web Push)
- 注意力推送(#88):设备开启推送后,会话需要处理时收到系统通知,页面关闭或手机锁屏后依然有效。页面须从 Cloudflare Named Tunnel 域名(
https://<tunnel.hostname>)或回环地址打开;Quick Tunnel 返回409 quick_tunnel,VPN / 局域网地址等其他来源不能订阅。 - 加密(RFC 8291
aes128gcm)和 VAPID(RFC 8292)只使用 Go 标准库,无新增依赖。VAPID 密钥和最多 32 个订阅保存在<state_dir>/push.json(0600);推送服务返回 404 / 410 时删除订阅。日志只记录订阅 ID 和推送服务主机,不记录 endpoint。 - 去重:首次快照中已存在的提醒不推送,spinner 输出、来源变化和重连不会重复推送;内部订阅落后重连后,期间产生的提醒只推送一次。
- 新增配置段
[push]:enabled、subject、ttl_seconds、kinds(bell默认关闭)和include_title。/local/v1/status与webmux status --json新增可选的push字段,契约仍为 v1。 - 设置页新增“通知推送”卡片:前置条件不满足时逐项提示(非安全上下文、iOS 未从主屏幕打开、Quick Tunnel、配置未启用、权限被拒等)。Chrome 改用静默权限提示时,卡片说明在地址栏铃铛处允许通知。
- 测试通知一次发送到所有已订阅设备,并报告设备数、成功数、移除数和错误;未开启推送的浏览器也能发送,便于在桌面上检查手机后台的显示效果。
- Windows 托盘在隧道项下显示“手机推送”状态和已订阅设备数;“手机推送设置说明…”按是否配置 Named Tunnel 给出设置步骤,不包含 Token。
会话与代码查看
- Shell 报告目录(#89):解析 shell 通过 OSC 7 报告的当前目录,在会话行中与启动目录分开显示,远端主机的报告带“远端”标记;会话仍按启动目录归属到仓库 / 工作树。
SessionInfo新增可空字段reportedCwd。docs/usage.md提供可自行启用的 bash / zsh 片段,WebMux 不改写 shell rc。 - 会话菜单可复制 Shell 报告目录(无报告时复制启动目录)。
- 代码导航新增“按路径打开”:相对路径以 Shell 报告目录(无报告时用启动目录)为基点,由新增的
GET /api/sessions/{id}/code/locate在服务端解析符号链接,只打开代码工作区根内的路径;目录会跳转到文件树。 - omp 预设加载
~/.bashrc(#91):默认 omp 预设改为bash -ic 'exec omp "$@"' omp,~/.bashrc中的环境变量对 omp 可见,参数边界、进程组和退出码保持不变。配置中已声明[[presets]]的用户需要手动修改 omp 的cmd,或执行webmux config init --force重新生成。
Windows(WSL)托盘
- 版本兼容检查(#96):托盘执行
webmux version --json,先按控制契约判断兼容,再按版本号判断对应,并在菜单状态行指出较旧的一方,例如托盘 0.3.0 · WSL 0.2.0(WSL 较旧)。正在运行的实例与已安装文件版本不同时,提示重启后生效(重启会结束所有会话)。 - WSL 中的 webmux 较新且为正式发布版本时,菜单提供“下载托盘 <版本>”,打开对应的 Release 页面。
- 契约不兼容的实例仍可启动和停止:托盘按 Windows 侧可达性跟踪,不会误判失败或自动重启,状态行显示“运行中(不兼容,功能受限)”。
- 新增
webmux version --json,输出{"v":1,"version":"…","contract":1},不读取配置;webmux version的文本输出不变。旧版 webmux 不支持--json时,托盘回退解析文本并视为契约 v1。
iOS 与移动端
- 点击方向键等软键不再收起 iOS 键盘(#94)。
- 添加到主屏幕的 iPhone 应用中,主页和设置页顶栏不再被状态栏和 iOS 26 的边缘模糊遮挡。
其他
- 项目以 MIT 许可证发布。
- 仓库要求随功能变更维护 User Stories(#92)。
- 4 倍 CPU 降速下的交互延迟阈值从 200 ms 放宽到 300 ms,避免共享 runner 的性能波动导致检查失败。
验证
- 发布提交:
ff726f04b52577b0ff8531372a5a5838b2b77e2f,tagv0.3.0。 - Release 工作流通过:前端构建、Go race 测试,以及
CGO_ENABLED=0下 Linux / macOS 服务端和 Windows 控制台 / 托盘的 amd64、arm64 构建;构建时确认两个托盘都内嵌了 Linux 服务端摘要。SHA256SUMS校验与版本检查均通过。 - 在发布提交上,Test 工作流全部通过:格式与构建、Ubuntu Go race、Vitest 单元与浏览器测试、Storybook、Ubuntu / macOS E2E,以及 CLS 和 4 倍 CPU 降速检查。
- 未在 Windows 实机上验证本版本的托盘发布产物;CI 无法覆盖推送经 APNs / FCM 的实际送达。
下载
| 文件 | 用途 |
|---|---|
webmux-linux-{amd64,arm64} |
Linux 服务端(也用于 WSL 2) |
webmux-darwin-{amd64,arm64} |
macOS 服务端 |
webmux-tray-windows-{amd64,arm64}.exe |
Windows 托盘,管理 WSL 中的 WebMux |
webmux-windows-{amd64,arm64}.exe |
Windows 控制台客户端(建议改名为 webmux.exe 并放入 PATH) |
SHA256SUMS |
全部 8 个文件的 SHA256 校验值 |
手机推送的配置步骤见部署指南。
完整变更:https://github.com/mzdluo123/webmux/compare/v0.2.0...v0.3.0