Repository navigation
Releases: mzdluo123/webmux
Release list
WebMux v0.10.2
What's Changed
- feat(tray): 增加按用户安装的 Windows 安装程序与托盘 quit 子命令 by @RuabbitX in #245
- feat(web): migrate the file reader to @pierre/diffs by @pullfrog[bot] in #253
- feat(hybrid): 支持 Claude Code 混合会话 by @mzdluo123 in #251
- fix(hybrid): 聊天端使用 ACP 会话标题 by @pullfrog[bot] in #250
- ci: 拆分 Go 缓存并按变更裁剪测试 job by @pullfrog[bot] in #254
- feat(launch): 支持选择 Bash / Zsh 启动文件 by @pullfrog[bot] in #248
- feat(chat): 显示回合实时与最终耗时 by @mzdluo123 in #258
- feat(release): 提供 Linux deb/rpm 安装包与包内 systemd 用户服务 by @RuabbitX in #256
- chore(openspec): 归档 add-windows-installer 与 add-linux-packages by @RuabbitX in #259
- fix(hybrid): 持久化并展示可恢复会话标题 by @mzdluo123 in #257
- Fix superseded snapshot replay ending the current replay window early by @mzdluo123 in #261
- docs: 文档守卫不再豁免表格行,并将超宽表格改为列表 by @mzdluo123 in #262
- test(web): 嵌入资源测试适配预压缩的 .br/.gz 布局 by @mzdluo123 in #263
- docs: 文档导航治理、README 首页重写与可达性/链接校验 by @mzdluo123 in #264
New Contributors
Full Changelog: v0.10.1...v0.10.2
WebMux 开发版
main 上通过 CI 的最新开发版,版本见 SHA256SUMS.minisig 的可信注释。安装:curl -fsSL https://github.com/mzdluo123/webmux/releases/download/dev/install.sh | WEBMUX_CHANNEL=dev sh
WebMux v0.10.1
WebMux v0.10.0
更新内容
v0.10.0 新增 Codex CLI 混合模式、资源管理器文件操作与九款 CLI 启动配置;独立代码窗口改为独立实例;终端重绘风暴与会话恢复闪屏得到修复。
新功能
- 混合模式支持 Codex CLI,并检查第三方 ACP 连接器是否已安装(#217)。
- 代码资源管理器右键菜单支持上传、下载、ZIP、重命名、复制、移动与删除;复制与 ZIP 限 100 MiB / 10000 项,递归删除遇
.git或嵌套仓库会拒绝(#224)。 - 启动配置补齐九款 CLI 及其品牌图标,图标在本地打包(#219)。
- 独立代码窗口改为在 iframe 中运行独立实例,弹出和收回时保留完整阅读状态(#237)。
- 统一 WebMux Logo 与应用图标(#218)。
- 聊天视图提供快捷指令入口,指令插入消息输入框。
终端
- 调整尺寸引起的重绘风暴改为按帧合并输出,并消除整屏重新测量(#240)。
- 同步输出与回放期间,终端文字与 Kitty 图片在同一帧切换,会话恢复时不再闪屏(#239,#241)。
- 重连期间重新显示“正在恢复…”提示(#232)。
- 锁定终端尺寸后保持网格并显示滚动条(#221)。
- 输出队列按积压字节限制,PTY reader 发布输出后让出调度,持续或突发的小块输出不再误断开慢客户端。
修复
- 慢速 Git 发现不再误报超时,并保留上次快照(#233)。
- 长按结束的点击不再误选弹出面板中的操作(#225)。
- 首页默认恢复输出预览(#216)。
- 独立代码窗口中 diff 行号范围选择失效(#215)。
- 托盘“远程访问”子菜单不再出现重复的远程 URL。
内部
升级须知
- 替换二进制后需重启服务;重启会结束当前所有终端会话,混合会话可从首页“可恢复”分组恢复。
- 新安装不再预置 Gemini CLI 启动配置(上游已停止服务个人账号)。已有
launch-configs.json不会被改写。
完整变更:v0.9.1...v0.10.0。
验证
- 发布提交:
f1d2579,tagv0.10.0。 - Release 工作流:Go race 与跨平台构建通过。
- 下载全部 9 项载荷后与 SHA256SUMS 逐项比对通过;Linux amd64 二进制运行输出
webmux 0.10.0;install.sh语法检查通过。
WebMux v0.9.1
更新内容
v0.9.1 修复终端逐字回显和 AI / 日志流式输出一顿一顿的问题(#214)。
- 取消服务端输出合并时固定的 50 ms 等待,有输出即可发送,只合并当前已排队的字节。
- 保留 64 KiB 合并上限、控制消息顺序、慢客户端保护和退出前排空。
- 新增真实 PTY / WebSocket 逐字回显延迟回归,以及 14 万字节连续输出的完整性与退出顺序回归。
高频小块输出会增加 WebSocket / TLS 帧数与封装开销,实际流量增幅取决于每块大小和输出频率;终端内容字节数不变。
升级须知
- 替换二进制后需重启服务;重启会结束当前所有终端会话,混合会话可从首页“可恢复”分组恢复。
验证
- 发布提交:
664c1586e625a41d8956886bccdd1710894fd08e,tagv0.9.1。 - 主分支 Test 工作流:全部检查通过,覆盖 Linux / macOS Go race、桌面 / 手机 E2E、Vitest、Storybook、性能、格式与构建检查。
- Release 工作流:Go race、跨平台构建、SHA256SUMS 与 Linux 版本号校验通过,8 个二进制、安装脚本及校验清单均已上传。
- 发布后复核:9 项载荷的 GitHub 上传摘要与 SHA256SUMS 一致;另从 GitHub 下载 macOS arm64 二进制、安装脚本及清单,独立校验 SHA-256。macOS arm64 二进制运行返回
webmux 0.9.1,安装脚本语法检查通过。
完整变更:v0.9.0...v0.9.1。
WebMux v0.9.0
更新内容
v0.9.0 新增会话交互物临时文件夹(上传与 agent 产物的统一落点,可在代码栏查看,并可一键插入使用说明提示词),强化代码工作区的 Markdown 预览并新增 HTML / 表格 / JSON / PDF 预览,软键栏支持 Shift 修饰键,终端新增快捷键参考。
会话临时文件夹
- 每个会话拥有一个交互物临时文件夹
$TMPDIR/webmux-artifacts-<uid>-<实例摘要>/<会话ID>,首次需要时创建,权限 0700;路径已被符号链接、他人目录或共享权限目录占用时拒绝使用且不改动它(#213)。 - 代码栏导航顶部新增“工作区 | 临时文件夹”切换,可浏览、搜索、预览和下载其中文件;临时文件夹没有“修改”与 Diff(#213)。
- ⚡ 快捷指令菜单顶部固定“插入临时文件夹提示词”,把说明临时文件夹用法的提示词(含真实路径)插入终端或草稿,不自动回车;模板可在“设置 → 快捷指令”中编辑、恢复默认并跨设备同步(新设置键
artifactPrompt)(#213)。 - 新接口
POST /api/sessions/{id}/artifacts返回文件夹路径(#213)。
代码工作区
- Markdown 预览:相对链接在代码面板内打开文件或定位目录,标题锚点与“目录”,工作区相对图片懒加载,围栏代码块语法高亮;文件预览与聊天消息使用独立的净化规则(#210)。
- 新增 HTML(隔离静态渲染)、CSV/TSV 表格、JSON 与 PDF 预览(#210);修复 PDF 页码框输入时被滚动覆盖的问题(#212)。
终端与界面
- 软键栏新增 Shift:点按一次性生效,长按约 0.5 秒锁定;支持 Shift+Tab、Shift+方向键等组合(#206)。
- 终端右上角新增“快捷键”参考面板,说明键位、平台差异与生效范围(#207)。
- 聊天输入框下方的会话选项统一收为图标控件,横向滚动不再挤压输入框(#205)。
文档
- 文档单行宽度守卫收紧至 300 显示列,并对超长段落做语义改写(#211)。
升级须知
- 替换二进制后需重启服务;重启会结束当前所有终端会话,混合会话可从首页“可恢复”分组恢复。
- 上传文件位置变化:上传改存到会话临时文件夹的
uploads/,同名文件追加(2)等序号。升级前留在草稿或待发送聊天附件中的旧webmux-upload-*路径会被拒绝,需要重新上传。 - 上传文件随会话清理:普通会话移除后其临时文件夹(含上传文件)随之删除;混合会话保留到删除其可恢复记录为止;服务启动时清扫不再属于任何可恢复会话的文件夹。以前上传文件会保留到服务停止。
artifactPrompt为null(使用内置模板)时不写入settings.json。若保存过自定义模板,回退到旧版本前请在设置页点击“恢复默认”,否则旧版本会把设置文件判为损坏(503)。
验证
- 发布提交:
3ca88de72073c270577e00cd4cad48e4addebc74,tagv0.9.0。 - 主分支 Test 工作流:全部检查通过。首次运行中 macOS E2E 分片因与本次变更无关的
split-background.spec.ts偶发失败(重试通过,CI 视 flaky 为失败),重跑失败分片后通过;本地对该用例重复 40 次全部通过。 - 本地在发布提交上运行
make check与完整make test:Go race、Vitest 单元 544 / 浏览器 375、Storybook 332、E2E 255(27 跳过)、性能 16 全部通过。
WebMux v0.8.0
更新内容
v0.8.0 增加 ACP 混合会话(同一段 OpenCode / omp 对话在聊天视图与原生 TUI 之间切换)、聊天附件、tmux 风格终端分屏和锁定终端尺寸,并收紧启动配置校验、修复会话迁移后回放与状态轮询加锁问题。
混合会话(聊天 ↔ 终端)
- 新增 ACP 混合会话:OpenCode 与 omp 的同一段对话可以在原生 TUI 与聊天视图之间来回切换,webmux 会话 ID 不变,历史由 agent 自己保存。会话页头部用“聊天 | 终端”控件切换,正在执行的回合先中断再切换,失败自动回到原来的一端(#181、#187、#190)。
- 聊天视图支持多设备共享队列、插话、权限请求与表单、空闲休眠(
chatIdleSleepMinutes,默认 30 分钟)和重启后从首页“可恢复”分组恢复;CLIls显示所在端,attach在聊天端时被动分离或拒绝。 - 聊天端可选择权限模式(每次询问 / 自动批准),默认自动批准(#181)。点击上下文用量环可查看 Token 使用详情(#181)。
- 切到终端时一直显示进度,直到新 TUI 在本页输出第一屏,切换窗格淡入;“减少动态效果”下不播放动画(#192)。
- 聊天视图支持上传文件与图片(选择、拖放、粘贴),上传中可取消(#194、#197);agent 声明相应能力时,图片以 ACP
image块、其他文件以resource块直接发送,能力不足时退回为服务器路径并提示(#196、#198)。 - 新安装首次启动预置的启动配置默认自动批准(Claude Code、Codex CLI、Gemini CLI、Open Code、omp),其中 Open Code 与 omp 默认开启混合模式;已有
launch-configs.json不会被改写(#191)。
终端与界面
- 支持 tmux 风格分屏:同一页面左右/上下嵌套最多 8 个窗格,拖动调整比例,Ctrl+B 前缀切换、放大和关闭窗格;布局保存在本机,窄于 768px 时一次显示一个窗格(#199)。
- 终端菜单新增“锁定尺寸”:移动端弹出软键盘或地址栏变化时不再改变 PTY 行列,避免 TUI 重绘卡顿(#184、#185)。
- 软键栏增加
#和!按键(#182、#183)。 - 会话卡片在当前标签页打开终端,修饰键点击保留浏览器默认行为;会话页顶栏、首页会话卡片信息行和聊天输入框焦点样式重新整理,大字号窄卡片不再横向溢出。
- 创建 worktree 时“起始提交”显示 commit 标题,并标明本地/远程分支(#200)。
可靠性与修复
- 修复
MoveClients之后浏览器请求回放会吞掉“已迁移”消息、连接停在无输出状态的问题;状态轮询读取/proc时不再持有Manager锁;关闭服务时等待状态与伴随进程协程退出(#201)。 DELETE /api/sessions/{id}按错误类型返回 404 / 409 / 400 / 503 / 500,不再一律 404(#201)。- macOS 上读取进程可执行文件路径恒为空的问题已修复(#187)。
- 修复若干不稳定测试;文档与 spec 增加单行长度守卫(#193、#195)。
升级须知
- 替换二进制后需重启服务;重启会结束当前所有终端会话,仓库登记与磁盘工作树保留。混合会话在重启后标记为已中断,可从首页“可恢复”分组恢复到聊天或终端(排队消息不保留)。
- 启动时校验更严格:
listen端口无效(如:99999),或allowed_origins中有不是精确小写scheme://host[:port]形式的条目(带路径、末尾斜杠、默认端口、大写字母或缺少 scheme)时,服务直接启动失败。这些条目在旧版本中本来就无法匹配、请求会被 403 拒绝;升级前请先修正配置(#201)。 - 新增状态文件
hybrid-sessions.json(及其锁),只保存会话对应关系、命令快照与状态,不含环境变量值、消息或 token;损坏时只禁用混合会话,普通会话不受影响。 - 启动配置的
hybrid字段只在勾选时写入,文件仍为版本2。回退到旧版本前先取消所有混合勾选,否则旧版本会报告启动配置文件损坏。 - 新安装的预置 agent 配置带有自动批准参数(如
--dangerously-skip-permissions、--dangerously-bypass-approvals-and-sandbox、--yolo),agent 执行命令不再逐条确认;需要逐条确认时在“设置 → 启动配置”中删除这些参数。
验证
- 发布提交:
27b88ac4b1215431ca8032151e03a7681700f3a5,tagv0.8.0。 - 主分支 Test 工作流:全部检查(Go race、Vitest、Storybook、性能、Ubuntu 与 macOS E2E 分片)和最终汇总通过。发布前修复了
TestFakeAgentProfiles在 CI 上偶发失败的测试竞态(只改测试)。 - 本地
make check(构建、类型、格式、文档守卫、Oxlint、前端架构守卫、Go 架构守卫、go vet、golangci-lint)与make test-fast(Go race 全部包、479 个单元、326 个浏览器用例)通过。 - 本地
make release VERSION=0.8.0:8 个 Linux、macOS、Windows 产物的架构和SHA256SUMS校验通过,Linux 二进制报告webmux 0.8.0;allowed_origins带末尾斜杠时启动失败并给出原因。 - Release 工作流:前端构建、Go race、全部产物、SHA256 校验和版本检查通过。
- 已重新下载线上全部文件并通过
SHA256SUMS;线上 Linux 二进制版本、源码修订号与CGO_ENABLED=0正确。隔离实例冒烟:未认证 401、创建会话并读到输出预览、删除会话、首页静态资源;新状态目录预置 6 条启动配置,Open Code 与 omp 为混合模式。 - 混合会话的真实 agent 验收(omp 18.13.2、OpenCode 2.1.4)在 #187 中完成;本次发布未重复真实 agent、Windows 实机托盘和 iOS/Android 真机手工验收。
下载
| 文件 | 用途 |
|---|---|
install.sh |
Linux/macOS 一键安装脚本 |
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 |
全部文件的 SHA256 校验值 |
What's Changed
- feat(web): 软键栏增加 # 和 ! 按键 by @pullfrog[bot] in #183
- docs(openspec): 归档 add-program-status-signals by @mzdluo123 in #188
- feat(web): 增加锁定终端尺寸选项 (#184) by @pullfrog[bot] in #185
- feat: ACP 混合会话——聊天视图与原生 TUI 之间切换 (#181) by @mzdluo123 in #187
- fix(hybrid): 修正 #187 合入后 main 上的不稳定测试与两处状态发布时序 (#181) by @mzdluo123 in #190
- feat(launch): 预置 agent 配置默认自动批准,OpenCode 与 omp 默认混合模式 by @mzdluo123 in #191
- feat(web): 切到终端时显示进度直到新 TUI 首屏输出,切换窗格淡入 by @mzdluo123 in #192
- docs: 为文档与 spec 增加单行长度守卫 by @pullfrog[bot] in #195
- feat(web): 聊天模式支持上传文件与图片并插入路径 (#194) by @pullfrog[bot] in #197
- feat(hybrid): 聊天附件以 ACP 图片/嵌入资源块发送 by @pullfrog[bot] in #198
- fix(web): show commit titles for worktree starting points by @myot233 in #200
- feat(web): 支持 tmux 风格的终端分屏 by @myot233 in #199
- fix: address code quality scan findings (session replay, error mapping, config validation, a11y) by @mzdluo123 in #201
Full Changelog: v0.7.3...v0.8.0
WebMux v0.7.3
升级注意
webmux run --launch-config/--config-id现在按配置名称选择(区分大小写),不再接受配置 ID(#176)。webmux run -- COMMAND(Linux/macOS)现在默认继承调用方 shell 的环境,--env覆盖同名值;终端身份变量、WEBMUX_SESSION_ID、PWD/OLDPWD不继承。Windows 客户端与启动配置不受影响(#180)。
What's Changed
- fix: 给出 Tailscale 所有权未知时的精确恢复命令 (#174) by @pullfrog[bot] in #178
- feat(cli): webmux run 按名称选择启动配置 by @mzdluo123 in #176
- feat(tray): 将所有复制链接收拢到单一菜单 (#177) by @mzdluo123 in #179
- feat(cli): webmux run 默认继承调用方环境 (#175) by @mzdluo123 in #180
Full Changelog: v0.7.2...v0.7.3
WebMux v0.7.2
更新内容
v0.7.2 是小版本更新:新增 webmux start 后台启动;所有已授权的 HTTPS 入口都可以开启推送;终端支持用 Ctrl+C 复制选中内容。
CLI
- 新增
webmux start:没有 systemd/launchd 时也能在后台运行,启动命令立即返回,并打印 PID、本机地址和日志路径。日志默认写到<state_dir>/webmux.log。服务已在运行时重复执行不会再启动一份,可用webmux stop/webmux status停止和查看(#164、#172)。
推送
- 只要页面来自已授权的 HTTPS 入口,就可以开启推送,包括 Tailscale Serve/Funnel、Cloudflare Named Tunnel,以及
allowed_origins里配置的 HTTPS 地址。如果反向代理在非 443 端口上转发、并去掉了 Host 里的端口号,通知链接会按配置的端口生成。本机回环地址仍可开启;Quick Tunnel 和非本机的普通 HTTP 地址仍不支持,并会说明原因(#154、#173)。
终端
升级说明
替换二进制后需要重启服务。重启会结束当前所有终端会话,仓库登记和磁盘上的工作树会保留。
WebMux v0.7.1
更新内容
v0.7.1 是小版本更新:增加一键安装脚本与 CLI 使用 Web 端启动配置,改进 PWA 前台重连、安装入口与浏览器标签页运行指示,并修复 Home Screen 应用中设置导航遮挡顶栏的问题。
安装与 CLI
- 新增 POSIX
install.sh一键安装脚本,作为 Release 资产发布,不依赖raw.githubusercontent.com:支持 Linux/macOS 的 amd64/arm64,先直连 GitHub,失败后按WEBMUX_MIRRORS回退镜像;二进制与同源SHA256SUMS校验通过才原子替换,失败保留旧文件;可用WEBMUX_VERSION、WEBMUX_INSTALL_DIR、WEBMUX_SHA256固定版本、目录与摘要。脚本只安装二进制,不修改配置、服务或 shell(#163、#166)。 webmux run --launch-config ID(别名--config-id)直接使用 Web 端保存的启动配置,argv 与环境变量由服务端解析;与--后命令、--env互斥,空 ID 和冲突别名在创建会话前拒绝(#168)。- 会话环境统一终端身份:移除宿主终端/多路复用器(Kitty、tmux、Warp、iTerm、WezTerm、Ghostty、Windows Terminal 等)变量,默认设置
TERM=xterm-256color、COLORTERM=truecolor、TERM_PROGRAM=webmux、TERM_PROGRAM_VERSION与WEBMUX_SESSION_ID;显式启动环境仍可覆盖(#168)。
Web 与 PWA
- 健康的终端连接回到前台时先探测并保留,不再无条件重连;设置页新增“安装应用”分区,显示安装状态与非安全上下文提示;manifest 增加
id/lang,推送授权只请求一次(#161、#165)。 - 当前终端或首页任一会话处于运行中时,浏览器标签页标题加
▶前缀并播放本地生成的 favicon 动画;等待、空闲、退出时恢复静态图标,prefers-reduced-motion下保持静态(#162、#167)。 - Home Screen 应用中设置页吸顶分区导航按实际顶栏高度定位,不再遮挡顶栏(#157、#159)。
升级说明
替换二进制后需重启服务;重启会结束现有终端会话,仓库登记与磁盘工作树保留。