v3.18.0
botmux v3.18.0
自 v3.17.0 以来 121 个提交。本次正式版把之前 v3.18.0-canary.1~6 灰度验证过的
musl/Bun 发版链路与一批权限、会话、卡片改动一并转正。
主要变化
飞书权限与建 Bot
- 权限数据范围自动收敛为「与应用的可用范围一致」,不再以「全部」提审 (#1061)。
「权限可访问的数据范围」是独立于 scope/update 的第二条链路,botmux 此前从未
配置过它;而这些权限属「需审核」档,以全员数据范围提审会触发额外加签。现在
建应用与权限自愈两条路径都会在发版前把它收敛到应用可用范围。 - 权限自愈只申请缺失的 scope,不再全量导入完整清单(301 项 → 实际缺失项)(#1042)。
- 支持按 bot 关闭 发言人标签注入 (#1048)。
- 接入独立服务身份诊断适配器 (#1041)。
发版与运行时
- 支持 musl(Alpine)二进制,npm 按 libc 自动选包 (#1053);随后修正 arm64 腿在
Alpine 容器内无法运行 JS action (#1054) 与容器产物归属导致的校验和失败 (#1056)。 - 去掉 Node fallback,安装不再编译原生模块 (#1047)。
- 编译态版本号改为编译时烤入,修 --version 输出 unknown。
会话与终端
- session-store 引擎替换为 per-bot SQLite(导入 + 混合窗口 db-else-json + 兼容层)(#852)。
- 恢复休眠及已关闭的 Botmux 会话 (#1028)。
- 网页终端两处周期性卡顿修复:截图 PNG 编码异步化、隧道 socket 关闭 Nagle。
- 支持 Codex 单 bot 独立鉴权 (#906)。
卡片与交互
- 支持通过 message_id 原地更新自定义卡片 (#936)。
- 静默收尾诚实化:无需回复的轮次标「已处理」,被 @ 的轮次自动回执 (#1019)。
- 话题会话的思考气泡落进话题内,不再漏到群级别 (#1035)。
完整提交列表见 GitHub 比较视图 v3.17.0...v3.18.0。
✨ 新功能
- bun: botmux 打成免-Node 单二进制分发(含 terminal-proxy 裸 TCP 修复 + self-re-exec 自托管 + CI 编包) (#873)
- profile: restore multilingual Feishu descriptions (Task 1-5) (f7e1079)
- profile: model multilingual description drafts (a43a4b4)
- profile: edit multilingual Feishu descriptions (32edc50)
- cot: 思考过程以飞书原生 CoT 消息(message_cot)流式展示 (#1000)
- setup,dashboard: 群聊模式授权零配置——回调白名单自愈、批量修复与一键授权 (#1004) (df5f4ec)
- codex-app: 增加独立 Chrome 浏览器桥接 (#1015)
- schedule: 状态感知与定时任务——限流主动通知、定时任务路由、定时跑 Workflow、关键词预过滤、ownerless relay (#1008)
- config: Workflow 功能默认关闭,需显式开启才启用 (#1022)
- cli: 提供当前轮次可信发信人身份 (#1017)
- cli: 支持用
/cli <cliId>指定会话级别使用的 cli agent (#889) - traex: 支持 reasoning effort 配置 (#1020)
- card: 静默收尾诚实化——判定无需回复的轮次改标「已处理」+被 @ 轮次自动回执 (#1019)
- session: session-store 引擎替换为 per-bot SQLite(导入 + 混合窗口 + sqlite-compat) (#852)
- prompt: 支持按 bot 关闭 发言人标签注入 (#1048)
- release: 支持 musl(Alpine)二进制,npm 按 libc 自动选包 (#1053)
- cli: 支持通过 message_id 原地更新自定义卡片 (#936)
- ebsd: 接入独立服务身份诊断适配器 (#1041)
🐛 修复
- omp: 冷 resume 时自动迁移 pre-#955 旧共享目录会话记录 (#990)
- dashboard: 旧会话页「定位话题」补带控制类 CSRF 票据 (#986)
- profile: keep description editor input live (424b23e)
- dashboard: 侧边栏菜单补回漏掉的 customization tab (a69e5cb)
- profile: load bot descriptions on selection (578f439)
- bridge: 模型网关/上游错误精准识别,失败兜底卡片兜底 @ 管理员 (#984)
- dashboard: restore description modal pointer access (d2e754d)
- traex: 识别 item_completed 用户事件,修复 adopt 回合静默丢失 (#997)
- traex: 恢复 live card token 展示 (#994)
- daemon: PM2 God 由独立 botmux.service cgroup 拥有 (Closes #774) (0517705)
- web-terminal: fall back on EACCES (Windows winnat reserved ports), not just EADDRINUSE (#982)
- cursor: survive login delay and promote queued follow-ups (#996)
- card: 可写终端链接改为按钮渲染,不再裸露 URL (#1010)
- adapter: 适配器专项——CoCo 双路径、Antigravity 不重试、Codex 信任框、TRAE 空回复、adopt 新格式 (#1007)
- i18n: 修复 #1004 合入 zh.ts 重复 key 与多余闭合括号 (af4cf16)
- codex: 关闭 Fast 后清除陈旧 priority 徽标 (#983)
- dashboard: 修复存量定时任务无法保存 (#1013)
- dsh: 软链接安装的 dsh-jsonrpc-agent 在 sandbox=true 下启动 ENOENT (#1025)
- smoke: 收尾回收 supervisor 拉起的成员,不再留 orphan dashboard (#1029)
- sandbox: codex-app / mir 的二级 spawn 路径改用 canonical,修沙盒内 ENOENT (#1031)
- cot: 话题会话的思考气泡落进话题内,不再漏到群级别 (#1035)
- worker: 支持 Codex 单 bot 独立鉴权 (#906)
- adopt: 恢复休眠及已关闭的 Botmux 会话 (#1028)
- dashboard: 顶栏文档链接直接指向官方文档站 (#1040)
- dsh: 兼容版本化凭据文件 (#1037)
- platform: 隧道桥接本机 dashboard 的 socket 关闭 Nagle 消除 Web 终端周期卡顿 (ab0bed3)
- lark: 权限自愈只申请缺失的 scope,不再全量导入完整清单 (#1042)
- release: musl 构建改用 docker run,修 arm64 腿在 Alpine 容器里跑不了 JS action (#1054)
- release: 容器构建后把 dist-bin 交还宿主用户,修 Checksums 的 Permission denied (#1056)
- zellij: do not gate a live session on an indeterminate probe (#836)
- setup: 权限数据范围自动收敛为「与应用的可用范围一致」,不再以「全部」提审 (#1061)
⚡️ 性能
- worker: 截图 PNG 编码异步化,消除网页终端每 10 秒一次的卡顿 (#1049)
📝 文档
- profile: specify automatic description loading (56c4620)
- profile: plan automatic description loading (45211f3)
- claude: 写清 worktree 共享 node_modules 的两个实测风险 + bun 在 worktree 下可用 (#1030)
- contributing: 贡献文档的构建指令改用 bun (02b9d95)
- build: 修 trustedDependencies 与 frozen-lockfile 报错的陈述错误 (524e2ce)
- session: 更正 sqlite-compat 损坏库的抛点说明,区分读写两条路径 (#1046)
🔧 其它
- build: 包管理器从 pnpm 换成 bun (#1033)
- platform: 隧道桥接 socket setNoDelay 补测试替身并锁行为 (611afcc)
- npm: 去掉 Node fallback,安装不再编译原生模块 (#1047)
🙏 感谢贡献者
@hu5h @DeepColds @sensuossss @hadix-lin @superShen0916 @Lotu527 @BoYanZh @liuhaoyang @ITcathyh @mameikagou @uestcwangci @xiaoxueSunn @47seek @zsnjuts @HarveyZgit @swtxbling @LucasIcarus @xiongz-c @Alan-Paul @le0tan @nil-err @zhangke0117cursor @Ghost-LZW @liqimore
Full Changelog: v3.17.0...v3.18.0