WebMux v0.7.0 更新说明
在 GitHub Release 查看与下载(外部链接)下载最新版本
更新内容
v0.7.0 增加 Tailscale Serve / Funnel 托管、跨设备服务端偏好同步、统一配置与状态持久化,并修复原生附着、响应契约和浏览器失败路径问题。
Tailscale 安全入口
- 支持检测 Tailscale 状态,并通过配置文件或设置页创建、切换和关闭 Serve / Funnel HTTPS 入口;保存后立即生效,无需重启或结束终端会话(#144、#145)。
- 支持 Linux/macOS、WSL 原生 Tailscale 和显式选择的 Windows 主机 provider;Windows provider 要求 WSL mirrored 网络,自动模式不会代管 Windows 节点。
- 按精确端口和目标记录所有权,启动时对账,退出或切换时只移除本实例入口,不执行全局 reset;端口冲突、状态损坏或目标不明时失败关闭。
- Host / Origin 按 Cloudflare 与 Tailscale 来源及端口独立授权。Funnel 默认关闭,开启前需要风险确认;状态接口不返回 token、其他入口目标或原始 CLI 输出。
跨设备偏好与配置诊断
- 新增服务端偏好存储及 REST / WebSocket 同步:主题、终端字号、输出预览、代码阅读、快捷指令、主页工作树和软键盘偏好可在桌面与手机间即时同步(#119、#146、#147)。
- 更新带修订号并原子提交,冲突返回 409;客户端按操作意图重读并最多重放一次,断线通过快照恢复,慢客户端不会阻塞其他连接。
webmux config show默认只读显示磁盘配置,--live显示运行进程的已验证内存快照、字段来源、实例和存储健康;凭据只显示是否配置,磁盘与活进程诊断不相互回退。
持久化与可靠性
- 统一 JSON 存储的权限、跨进程生命周期锁、严格有界解码、原子替换和目录同步;损坏文件保留并按领域隔离,提交结果不确定时冻结写入,不广播虚构成功。
- 新增全平台持久化清单守卫,核对存储描述符、文件写入入口、锁和文档,防止新增状态文件绕过统一治理。
- 原生
run/attach在退出或分离前取消并等待输入、输出和尺寸协程,不再遗留 stdin 读取或误关持久会话;Unix 处理信号中断重试,Windows 使用可取消同步读取。 - 必填响应数组和映射稳定编码为
[]/{},并增加 Go wire 快照到前端 Zod 的契约测试;推送存储失败记录内部原因,同时保持固定、脱敏的客户端错误。 - 改进中途 401 恢复、上传 413/500/中断后的重试、重复提交防护、列表断线恢复、代码标签键盘导航、路由焦点、深色首屏和 reduced-motion 行为(#149、#152)。
工程与本地测试
- 新增 Go / 前端质量基线,CI 固定运行 golangci-lint、全仓 vet、类型感知 Oxlint、Svelte 推荐规则、严格索引和测试目录类型检查(#148、#150)。
- 新增
make test-fast(Go race + Vitest 单元/组件),make test保持完整门禁;本地 E2E 默认最多 2 个 worker,可用WEBMUX_E2E_WORKERS和GO_TEST_PARALLEL调整(#151、#153)。 - E2E 与性能套件共用一次预构建运行时;CI 保持原有分片和 worker 配置,并缓存 Playwright 的 Linux 系统依赖、忽略等待同轮运行产物时的失败 API 响应。
升级须知
- 替换服务端二进制并重启后生效;服务重启会结束当前 PTY 会话,请先处理正在运行的任务。
- 先停止全部旧实例并备份配置与状态目录。 新旧版本不得共用同一状态目录并发运行;锁文件统一为完整数据文件名加
.lock。 tunnel.json改为tunnel-settings.json,Tailscale 所有权记录改为tailscale-ownership.json。旧tailscale.json会阻止启动:先核实或撤销旧版本创建的外部入口,不要直接删除记录后遗忘仍存在的入口。launch-configs.json仅接受版本 2;版本 1 文件会保留并使启动配置不可用。升级前用旧版本保存为 v2,或备份后重建。- 旧浏览器偏好不会自动上传;首次使用时在设置页重新确认。Token、Web Push 身份、草稿和最近目录仍保留在本机,不纳入跨设备同步。
- Serve 仅 tailnet 可达;Funnel 会公开到互联网。公网入口仍要求 WebMux token,链接与 token 泄露等同于命令执行权限。Windows 实机托盘、真实公网 Funnel、Linux/macOS 原生 Tailscale 和 iOS/Android 真机未做本次手工验收。
验证
- 发布提交:
b43fc684eac930687c4889c2d4c2c93d5ed5e09a,tagv0.7.0。 - 主分支 Test 工作流:全部检查和最终汇总通过。合并后首轮发现设置页/快照契约交叉集成问题及一项 Go 测试 lint,已修复并在最终提交重新完整验证。
- 本地
make check、make test-fast(421 个单元、264 个浏览器用例)和完整桌面/Pixel 7 Chromium E2E(194 通过、20 按平台条件跳过)通过;8 个 Linux、macOS、Windows 产物的架构、SHA256 和托盘内嵌服务端摘要检查通过,Linux 二进制报告webmux 0.7.0。 - 隔离实例手工验收:认证与 Origin 拒绝、磁盘/实时配置诊断、REST/WebSocket、PTY 输入输出、重连回放、退出清理、原生
run/attach分离后继续运行、服务定义 dry-run。 - 桌面与 Pixel 7 双客户端偏好双向同步、重启持久化、409/非法请求、损坏设置文件保留与 503 降级均通过;偏好损坏时真实终端创建、命令、回放和退出仍可用。
- 真实 WSL2 mirrored + Windows Tailscale Serve 10000:设置页应用、HTTPS 页面、认证、Origin、WebSocket、状态脱敏和精确清理通过;既有 443/8444 入口保持不变。Funnel 风险确认与取消通过,未创建真实公网 Funnel。
- 上传 413、500、网络中断后第四次重试成功;深色首屏、reduced-motion、中途 401 恢复、路由焦点、代码标签方向键/Home/End、桌面/移动布局手工验收通过。
- Release 工作流:构建与发布全部通过,包括前端构建、Go race、全部 8 个产物、SHA256 校验和版本检查。
- 已重新下载线上全部 8 个文件并通过
SHA256SUMS;线上 Linux 二进制的版本、源码修订号与CGO_ENABLED=0正确,认证、WebSocket、PTY 和重连冒烟再次通过。
下载
| 文件 | 用途 |
|---|---|
webmux-linux-{amd64,arm64} |
Linux 服务端,也用于 WSL 2 |
webmux-darwin-{amd64,arm64} |
macOS 服务端 |
webmux-windows-{amd64,arm64}.exe |
Windows 控制台客户端 |
webmux-tray-windows-{amd64,arm64}.exe |
Windows 托盘,管理 WSL 中的服务 |
SHA256SUMS |
全部 8 个文件的 SHA256 校验值 |
完整变更:https://github.com/mzdluo123/webmux/compare/v0.6.0...v0.7.0