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)在服务端校正设备: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 #295将http:transform 的回显和 sdf 输入迁移至支持欧拉法的补丁 (#279, #280, #291) (bb29404)http:在执行“scope=device”删除操作时重置设备挂载 (#265) (f6bf26b),已关闭 #286modules::navigation:在运动锁定模式下添加 clutch 模式(带门控,默认关闭) (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:镜像功能的“杀死开关”(两者默认均启用) (b6ee0c0),已关闭 #318modules::navigation:针对 inputs[] 的逐项配置补丁,通过 bubble 输出 status.engaged(ba2058f),已关闭 #318协议:能力文件分割、阻尼门、基数提升 (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 下的 transform 旋转中输出 euler (96c6cc9),已关闭 #283序列化:通过 set_transform 公开工作区的 zoom-about-pivot 属性 (#309) (c1d08fc),已关闭 #280序列化:将 config/body_orientation 中的 trigger_mode 改为扁平化 (#265) (8781b8a),已关闭 #268将serialization:transform 的调整参数提升为每个会话的 serial_options (#280) (03b2fd6)序列化:将 config/mount 拆分为 scope 和 body_orientation (#265) (5618839),关闭 #280序列化:将会话选项传递到输出,并处理嵌套的 reshape 操作 (#279, #280) (59984ce),已关闭 #265序列化:统一 ws 和 http 的 configure 解码处理 (#280) (6076917)sessions:添加了带有“脱离”时烘焙处理功能的通用运动锁定机构 (c8d2a93),已关闭 #304sessions:在 live_motion 中添加了按 tick 推进运动锁定的处理(带门控) (d29013c),已关闭 #308 #304 #308会话:添加了支持在主循环中进行分发的、管理器级别的会话观察器 (83e76ef),已关闭 #284sessions:添加了“mount”的“reparent”和“workspace”的“zoom-about-pivot”功能 (294d6e8),已关闭 #265 297/#272 #304sessions:添加了带命名空间的 config.body_orientation 事件作用域,并对过时的 'values' 输入发出警告 (3f70047),已关闭 #320sessions:添加用于预览的 config/mount 源和触发器路由 (#265) (5d11dbf),已关闭 #268sessions:在“挂载空间”中保存和加载设备挂载 (#265) (4cec178),已关闭 #292会话:将 set_workspace_transform_around 通用化以支持 pivot 回显 (0b242a2),已关闭 #309sessions:握把按钮遮罩与 force_scale 叠加层的机制 (836ef2f),已关闭 #316会话:在客户端配置文件中为 Tracy 的会话图标添加标签 (72a8f34),已关闭 #258sessions:挂载范围的路由和存储虚拟体 (#265) (9a4e7f4),在 #286 和 #293 之后关闭会话:按会话进行的 force_scale 降音(预览) (bff66ad)错误修复 {#bug-fixes}
ci:为恢复变更日志,已锁定发布工具链 (72c6773),已关闭 #313针对新版 Glaze 的编译修复 (e2c53d3)deps:将 Rust 库 nix 更新至 0.31 版 (b3b9a84)devices:在发送处理的一个环节中对 safety-config 协议进行过滤 (b8e8401),已关闭 #295设备:根据固件版本和校准情况,限制对 safety-config 的写入操作 (5ad5128),已关闭 #295设备:在“唤醒”的稳定化期间内,仍保持 inverse3 的线缆连接 (4afed45)设备:在“唤醒”的稳定化期间内,仍保持 inverse3 的线缆连接 (79c2b66)设备:通过有线 Verse 握把抑制 [secure] 电池通知 (ea54a1a),已关闭 #314http:在按会话为单位进行 safety 写入时确认校准 (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)启用/禁用 inverse3x 时,通过 bia hub 返回主屏幕 (f435454)服务:默认禁用自适应调度 (9415638)service:将服务的终止处理改为按顺序进行、设有时间上限且无竞争的形式 (ff888d7),已关闭 #303会话: *_居中_ 将预设中心调整为实际可达的中心 (ad6e726),已关闭 #321sessions:移除了在更改挂载点时自动推送 SIGGRAPH 工作区边界的操作 (2df1654)会话:对于仍在实时会话中运行的设备,跳过结束中会话的强制放电操作 (e1f9ff7),已关闭 #324sessions:修复了 start() 不会清除连接时协商的 serial_options 的问题 (#290) (27e27d8)sessions:在 set_transform 之后将 workspace 的变换速度重置为零 (133c3ad),已关闭 #280WebSocket:根据源会话规范对命令进行解码 (#289) (1b24049),已关闭 #265性能优化 {#performance-improvements}
core/log:当无效时,通过haply_* 宏跳过 fmt::format(672a87a),已关闭 #270modules::sdf:在创建时仅烘焙一次 SDF,而非每帧烘焙一次 (15350c5),已关闭 #277