3.5.3 (2026-08-06) {#353-2026-08-06}
内部改进 {#internal-improvements}
core/log:新增延迟格式化的haply_* 宏形式 (cf7dbfc),已关闭 #271核心:新增 pivot 以及 compose/inverse 变换原语 (01080f6),已关闭 #283设备:缓存 0xE4 机身姿态并路由 trigger_mode (#265) (4864700)devices:在服务器端对 0xE4 IMU 传感器坐标系进行补偿 (#286) (e6d877c),关闭 tapi-prototype-firmware#87设备:在 inkwell 校准时刷新 body_orientation (#268) (89b190b),已关闭 #286 #286 #286设备:将实时(0x0C)与参考(0xE4)的躯干方向拆分开来 (#286 #315) (638487a),已关闭 #268 #266 #268http:将不支持该协议的响应统一设为 422 (e0e7638),已关闭 #293 #293 #295http:将 transform 回显与 sdf 输入迁移为支持 Euler 的补丁(#279、#280、#291)(bb29404)http:在执行 Delete scope=device 时重置设备挂载 (#265) (f6bf26b),已关闭 #286modules::navigation:在运动锁上新增离合器模式(由开关控制,默认关闭)(4b69eed),已关闭 #308 #308 #283 #308modules::navigation:带 prevent_default 的按钮输入;clutch force_scale;bubble 长按导航 (fb216aa),关闭 #317 #318 #316 #317 #318modules::navigation:为 clutch 设置 max_motion/force_scale 的上限 (a946088),已关闭 #316modules::navigation:镜像的“kill switch”功能,两者默认均处于开启状态 (b6ee0c0),已关闭 #318modules::navigation:对 inputs[] 中的每个输入应用设置补丁;bubble 触发 status.engaged (ba2058f),关闭 #318协议:拆分 capability 文件,新增 damping 门控,并将 base 上调 (30d7d5d),关闭 #293协议:能力表 + 统一的不支持响应发射器 (289382e),已关闭 #293 #295协议:通过表对 home_return 和 pen_attached 进行门控 (8a05d20),已关闭 #293协议:引入 fw_version 并迁移版本检查 (38c2cae),已关闭 #293序列化:在 v3.1 会话通道中应用握把按钮掩码 (7b93e35),已关闭 #316序列化:在 euler.output 下为 config.mount 旋转输出 euler (#268) (f6b54a2)序列化:在 euler.output 下将 euler (96c6cc9) 的输出进行 transform 旋转,已关闭 #283序列化:在 set_transform 上启用工作区“以枢轴点为中心缩放”功能 (#309) (c1d08fc),关闭 #280序列化:将 config/body_orientation 的 trigger_mode 扁平化 (#265) (8781b8a),关闭 #268序列化:将 transform 参数提升为每个会话的 serial_options (#280) (03b2fd6)序列化:将 config/mount 拆分为 scope 和 body_orientation (#265) (5618839),关闭 #280序列化:将会话选项传递到输出中,并对嵌套的 reshape 进行控制 (#279, #280) (59984ce),已关闭 #265序列化:统一 WS 与 HTTP 的配置解码 (#280) (6076917)sessions:新增了脱离 bake 的通用运动锁机制 (c8d2a93),已关闭 #304sessions:新增 live_motion 逐 tick 推进运动锁(受开关控制)(d29013c),已关闭 #308 #304 #308会话:新增了经理级会话观察者,并通过主循环进行分发 (83e76ef),已关闭 #284sessions:新增挂载、reparent 以及 workspace zoom-about-pivot 功能 (294d6e8),已关闭 #265、297/#272 和 #304sessions:新增了命名空间化的 config.body_orientation 事件作用域;对旧版 'values' 输入发出警告 (3f70047),已关闭 #320sessions:新增预览版 config/mount 源与 trigger 路由 (#265) (5d11dbf),已关闭 #268sessions:在挂载空间中存储和加载设备挂载 (#265) (4cec178),关闭 #292sessions:泛化 set_workspace_transform_around,并添加 pivot 回显 (0b242a2),已关闭 #309sessions:新增握把按钮遮罩与 force_scale 叠加机制 (836ef2f),已关闭 #316sessions:为 Tracy 会话图表添加客户端配置文件标签 (72a8f34),已关闭 #258sessions:挂载 scope 路由与存储虚拟项 (#265) (9a4e7f4),关闭 #286 之后 #293会话:按会话进行 force_scale 衰减(预览)(bff66ad)错误修复 {#bug-fixes}
ci:固定发布工具链以恢复更新日志的生成 (72c6773),已关闭 #313修复了新版 glaze 的编译问题 (e2c53d3)deps:将 rust crate nix 更新至 0.31 (b3b9a84)devices:在发送入口处对 safety-config 协议进行门控 (b8e8401),已解决 #295设备:根据固件版本和校准状态对 safety-config 的写入操作进行保护 (5ad5128),已关闭 #295devices:在唤醒稳定窗口期间保持 inverse3 通信链路处于活动状态 (4afed45)devices:在唤醒稳定窗口期间保持 inverse3 通信链路处于活动状态 (79c2b66)设备:在有线 Verse Grips 上禁用 [secure] 电量通知 (ea54a1a),关闭 #314http:对会话作用域的安全写入进行校验检查 (89f9cd7),已关闭 #295 #293http:根据会话约定对欧拉旋转进行归一化 (#288) (97cf203)inverse_ux:将 calibration_notifier 的处理限制为 Minverse (418913f)为防止崩溃而进行的生命周期清理 (e7b3785)modules::inverse-ux:当固件阻止时,始终触发 calibration-failed 错误 (3841d06)modules::inverse-ux:更换已配对设备后重新配对 (cf85707),已关闭 #278modules::sdf:根据会话约定对 sdf 变换的欧拉角进行归一化 (#291) (9741ac6)modules::sdf:在客户端坐标系下正确定向 SDF 形状 (c29e4f2),已关闭 #276协议:消除导致服务崩溃或挂起的定时器生命周期竞争 (0cb019b),已关闭 #303协议:在打开端口时刷新串口缓冲区,以识别热插拔设备 (b8724d9)协议:为固件客户端回调添加保护机制,以防止设备销毁竞争 (3d795bb),已关闭 #303协议:使用带类型的枚举和正确的传输格式重写 0xE4 IMU 方向 API (8733ec0)当通过 bia hub 启用/禁用 inverse3x 时返回主页 (f435454)服务:默认禁用自适应分发 (9415638)service:确保服务关闭流程有序、有界且无竞争 (ff888d7),已关闭 #303会话: 将 *_居中_ 将预设居中位置调整为实际可达的中心点 (ad6e726),已关闭 #321sessions:在挂载变更时移除 SIGGRAPH 工作区边界的自动推送 (2df1654)会话:对于仍由活动会话驱动的设备,跳过关闭会话时的强制清空 (e1f9ff7),已解决 #324会话:停止 start() 清除连接时协商的 serial_options (#290) (27e27d8)sessions:在 set_transform 之后将工作区变换速度清零 (133c3ad),已关闭 #280WebSocket:根据发送方会话约定解码命令 (#289) (1b24049),已关闭 #265性能改进 {#performance-improvements}
core/log:对haply_* 宏进行门控,关闭时跳过 fmt::format (672a87a),已关闭 #270modules::sdf:在创建时烘焙一次 SDF,而不是在每个 tick 时都进行烘焙 (15350c5),已关闭 #277