3.5.1 (2026-05-28) {#351-2026-05-28}
内部改进 {#internal-improvements}
core/gates: backoff_time_gate + 抑制命中计数器 (cc989c0),关闭 #244core/gates: streak_gate + keyed 变体 (748f419),关闭 #244devices: 为 wireless verse grip 添加充电指示灯 (6482bd6)devices: 以 20 Hz 频率轮询 inverse3 运动状态 (bfc160d)devices: 为 ready 快照调试日志使用 v3.1 序列化 (0c59c26)http: 允许对高级/已弃用设置执行精确路由的 GET 请求 (2b5f037)http: 通过标志控制 GET /settings 的可见性 (4f013d8),关闭 #251modules::inverse-ux: 在 preview_mode 开关后暴露 paired_with.auto (1f7f0e1),关闭 #230serialization: 新增 preview_mode 全局标志,用于预发布字段 (422e822),关闭 #230serialization: 为 v3.1 四元数添加 euler 表示 (c32dd6b),关闭 #239serialization: 显式 quaternion 构造函数 + core 赋值运算符 (677ed6f)sessions: 允许亚毫秒级的流式回复节流 (9a42719)sessions: 预览开关控制的 /sessions v3.1 增强 (6c1c8f2)settings: 将 misc/deprecated 提升为高级设置 (b3528d7)tutorials: 流式回复帧检查的原型 (6b57c39)Bug 修复 {#bug-fixes}
command_processor: 防止 Force/Position 切换时模式翻转 (d754ef1),关闭 #232command_processor: 将一次性内联排空与 ZOH'd 控制分离 (5960498),关闭 #117core::gates: keyed 时间门控按每次命中使用最新周期 (c73b86a)detection: 合并 extra_ports 的首次注入日志 (57e21d7)detection: 通过 keyed_gate 实现按端口的日志控制 (04b8d54),关闭 #243devices: 仅在获取句柄信息后才将 wireless verse grip 标记为就绪 (dfd7d5d)devices: 对 wireless verse_grip 的 set_extension_data 进行速率限制 (011d5a0)http: 设备选择器接受 "#1234" 和 "1234" 作为设备 ID (1452c10)http: 移除阻塞 macOS 发布构建的未使用 context 字段 (-Wunused-private-field) (5345989)modules::inverse-ux: 当 1 个 Inverse3 和 1 个握把连接时自动配对 (41b3024),关闭 #227 #227modules::inverse-ux: 当拓扑超出 1↔1 时取消自动配对 (e4fb80c)modules::inverse-ux: 在 Minverse 校准时遵循 force_attached 覆盖设置 (e24bf84),关闭 #224modules::inverse-ux: paired_with 的 attached 对 Minverse 及首次 POST 始终为 [secure] (cafb574)modules::inverse-ux: 按设备的 Inverse3 ↔ VerseGrip 配对注册表 (ac63d2a),关闭 #224modules::inverse-ux: POST 和 DELETE paired_with 路由返回计算得到的 attached 状态 (a751208)防止服务尝试将非 WVG 设备检测为 WVG 时重复出现警告 (17ad373)protocol::inverse3: 处理长度可变的 0xBA 通知载荷 (61f7b1f)service: 在索引之外同时应用设备选择器类 (2d6422a)service: 在 404 消息中保留设备选择器表达式 (d2c4626)sessions: defaults / arm_front 预设下 apply_preset 重置挂载 (a333da8),关闭 #240sessions: 当跨会话 ID 未知时回退到自身目标 (14367ed),关闭 #239sessions: 跨会话 force_render_full_state 时返回完整快照回复 (8afc646)sessions: 在 session.configure.serialization 上遵循 execute:[secure] (3458af0)sessions: 应用 defaults / arm_front 预设时保持设备挂载已清除状态 (698008b),关闭 #252 #253sessions: 在 defaults / arm_front 预设下将挂载重置为 identity (a0a2b29),关闭 #240sessions: 在节流的流式快照上恢复 WS 回复 (787a656),关闭 #248sessions: 在持续仿真负载下优化 WS RX 热路径 (e4e55d0)性能优化 {#performance-improvements}
command_processor: 针对仅含控制指令批次的 WS RX 快速路径 (92bb4e8),关闭 #241engine: 通过 AIMD 阻尼使自适应分发速率收敛 (b8fc1c8),关闭 #249main_loop: 为 asio 队列设置在途 tick 上限 (8d77823)serialization: 将预览选项缓存在静态结构体中 (8698636),关闭 #241sessions: 减少热路径上 session::_mutex 的争用 (bf117c8),关闭 #241 #242sessions: 为会话设备调用添加 Tracy ZoneScoped 标记 (7404990)