3.5.3 (2026-08-06) {#353-2026-08-06}
内部改进 {#internal-improvements}
core/log:添加 Makro-Formhaply_*(延迟格式化)(cf7dbfc),已关闭 #271核心:添加枢轴和组合/逆变换原语 (01080f6),已解决 #283设备:将 0xE4-机身方向缓存并转发 trigger_mode (#265) (4864700)设备:den 0xE4-IMU-Sensorrahmen 在服务端进行补偿 (#286) (e6d877c),已包含在 tapi-prototype-firmware#87 中设备:在 Inkwell 校准时更新机身方向 (#268) (89b190b),已解决 #286 #286 #286设备:将实时(0x0C)和参考主体方向(0xE4)分开(#286 #315)(638487a),包含 #268 #266 #268http:将不支持协议时的响应统一为 422(e0e7638),已解决 #293 #293 #295http:将 Transform-Echos 和 sdf 输入转换为支持 Euler 的补丁 (#279, #280, #291) (bb29404)http:在执行 Delete scope=device 时重置设备挂载点 (#265) (f6bf26b),已解决 #286modules::navigation:在移动锁定功能中添加离合器模式(受控,默认关闭)(4b69eed),已解决 #308 #308 #283 #308modules::navigation:Button-Eingaben 带 prevent_default;Clutch-force_scale;Bubble-Navigation 通过长按实现(fb216aa),包含 #317 #318 #316 #317 #318modules::navigation:为 max_motion/force_scale 设置上限(a946088),已关闭 #316modules::navigation:镜像的“功能关闭开关”,两者默认均处于启用状态(b6ee0c0),已解决 #318modules::navigation:针对 inputs[] 中每个输入项的设置补丁;气泡发送 status.engaged(ba2058f),关闭 #318协议:拆分能力文件、抑制门、基数提升 (30d7d5d),已解决 #293协议:不支持功能的权限表和单个发射器(289382e),已合并 #293 和 #295协议:通过表(8a05d20)确保 home_return 和 pen_attached 的安全性,已关闭 #293协议:引入 fw_version 并迁移版本检查(38c2cae),已解决 #293序列化:在 v3.1 会话迭代中应用 Greiftasten 表单(7b93e35),已解决 #316序列化:在 euler.output 下输出 config.mount 的轮换信息 (#268) (f6b54a2)序列化:在 euler.output 中输出 transform 旋转时的欧拉角 (96c6cc9),已解决 #283序列化:通过 set_transform 在 Workspace-Zoom 中提供 Pivot (#309) (c1d08fc),已解决 #280序列化:统一 config/body_orientation 的 trigger_mode (#265) (8781b8a),已解决 #268序列化:将 Transform-Regler 转换为每个会话适用的 serial_options (#280) (03b2fd6)序列化:在作用域内添加 config/mount + 将 body_orientation 拆分 (#265) (5618839),已解决 #280序列化:将会话选项传递到输出中,并确保嵌套转换 (#279, #280) (59984ce),已解决 #265序列化:统一 WS 和 HTTP 的配置解码 (#280) (6076917)sessions:在“Disengage”时添加带Bake的通用移动锁定机制(c8d2a93),已解决 #304sessions:live_motion——为每个时钟周期添加运动限制更新(受控)(d29013c),已解决 #308 #304 #308会话:在管理层级添加会话观察器,并通过主循环进行分发(83e76ef),已解决 #284sessions:将“挂载-重新归属”和“工作区缩放”功能添加到枢轴(294d6e8),关闭 #265 297/#272 #304sessions:在事件作用域中添加配置项 config.body_orientation 并为其分配独立命名空间;当“values”输入已过时会触发警告(3f70047),已解决 #320会话:添加预览源 config/mount 和触发器路由 (#265) (5d11dbf),已解决 #268sessions:在挂载区域保存和加载设备挂载 (#265) (4cec178),已解决 #292sessions:使用 Pivot-Echo 将 set_workspace_transform_around 泛化(0b242a2),已解决 #309sessions:抓取按钮掩码和 force_scale 叠加机制 (836ef2f),已关闭 #316会话:在 Tracy 会话图上标注客户端配置文件 (72a8f34),已关闭 #258会议:挂载范围路由与存储虚拟化 (#265) (9a4e7f4),解决 #286 之后的问题 #293会话:force_scale-Ducking Pro 会话(预览)(bff66ad)错误修复 {#bug-fixes}
ci:锁定发布工具链以恢复变更日志(72c6773),已解决 #313修复了新版 glaze 引发的编译错误 (e2c53d3)deps:将 Rust-Crate nix 更新至 0.31 版 (b3b9a84)设备:在发送瓶颈处保护安全配置协议 (b8e8401),已解决 #295设备:根据固件版本和校准情况,确保安全配置的写入操作安全(5ad5128),已解决 #295设备:在唤醒后的建立稳定状态窗口期间保持 inverse3 连接处于活动状态 (4afed45)设备:在唤醒后的建立窗口期间保持 inverse3 连接处于活动状态 (79c2b66)设备:[安全]——抑制有线 Verse 手柄的电池通知(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-Transformations-Euler (#291) (9741ac6)modules::sdf:在客户端坐标系中对齐 SDF 形状 (c29e4f2),已关闭 #276协议:消除导致服务崩溃或阻塞的定时器生命周期中的竞争条件(0cb019b),已解决 #303协议:在打开端口时清空串行缓冲区,以便在运行过程中识别被替换的设备 (b8724d9)协议:通过固件-客户端回调机制防范设备销毁时的竞争条件(3d795bb),已解决 #303协议:重写 0xE4-IMU-Orientierungs-API,采用类型化的枚举和正确的 Wire 格式 (8733ec0)通过Hub启用和禁用inverse3x时返回初始位置 (f435454)服务:adaptives 调度功能默认处于禁用状态 (9415638)服务:确保服务关闭过程有序、受控且不存在竞态条件(ff888d7),已解决 #303会话: *_居中_-将预设对齐到实际可达的中心点(ad6e726),已解决 #321会话:在切换挂载点时移除Siggraph-Auto-Push在工作区边界处的限制 (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,而非按每个时钟周期计算(15350c5),已解决 #277