跳至主要内容

v3.5.1

3.5.1 是一个注重稳定性和质量的发布版本。主要内容包括:在 1↔1Inverse3 + 握把配置下的自动配对;在未打开 WebSocket 会话的情况下,GET /devices/{id} 仍可返回最新的运动状态;消除在力/位置模式切换时产生的尖锐异响;以及在持续高负载下能够自我调节的服务 tick 调度器。

亮点​

  • 1↔1Inverse3 + 握把安装的自动配对。 当一个Inverse3 和一个握把均已就绪时,SDK 会自动注册配对关系——在多设备环境中,pen_attached 已与Minverse 进行校准,以避免解锁时出现路由错误。
  • 无需打开会话即可获取最新的 GET /devices/{id} 快照。 固件 v7.5 及以上版本的Inverse3 / Inverse3x /Minverse 现以 20 Hz 的频率轮询运动状态,且与 WebSocket 的活动状态无关。v7.5 之前的固件会跳过该轮询,并仅发出一次警告。
  • 力/位置切换时不再发出尖叫声。 set_cursor_force ↔ set_cursor_position 该切换采用槽位互斥机制:在两个 tick 之间,每台设备仅保留最新的一条指令。HARP 中采用的 200 毫秒空闲间隔临时规避方案已失效。
  • 自调节 tick 调度器。主循环会在负载下自动调整分发速率,以防止单个慢 tick 导致命令队列无限增长。
  • 高负载下的 1 进 1 出流式恢复。 每个会话中,每条 WS 消息的流式响应被限制为 1 次/毫秒;当达到上限时,系统会重放上一个缓冲区的内容,因此仿真循环永远不会在 recv() 上。

内部改进​

设备​

  • 按设备分类的Inverse3 与VerseGrip配对注册表。 GET|POST|DELETE /devices/{sel}/paired_with 这是按设备划分的“一对一”映射。POST 将清除双方的冲突配对;DELETE 清除所选条目;选择器必须解析为唯一的 ID。
  • 固件 v7.5+ 上的 20 Hz 运动状态轮询。 GET /devices/{id} 每 50 毫秒返回一次最新数据 cursor_position、cursor_velocity、angular_position、angular_velocity;对活动会话无感知。
  • 无线 VerseGrip 的 set_extension_data 速率控制。 采用“丢弃旧数据/空闲时重复发送”的流水线机制,并在服务 tick 时进行清空——这样既不会因发送过多而导致无线链路饱和,也不会因发送不足而残留过期数值。

会话​

  • 针对仅包含控制指令(力/位置)的批次,新增了 WS 接收快速路径,该路径将跳过感知配置的处理流水线;configure / set_profile / 自定义命令仍会经过竞态修复逻辑。

可观测性​

  • 检测日志的输出频率按端口划分,并考虑持续时间。 每个被列入黑名单的端口均独立进行控制;周期性出现的 "...blacklisted: skipping" 日志行现在会附带 (×N),表示两次触发之间被静默的 tick 次数。
  • 当检测到非 WVG 设备时,无线 VerseGrip 检测将不再在日志中大量刷屏。

问题修复​

  • 使用 POST /device.config.preset 并指定 defaults 或 arm_front 时,现在将把设备的挂载配置重置为出厂默认设置(此前为静默的空操作)。basis 将被保留,因此即使挂载了预设更改,应用中配置的基座仍然有效。
  • 当匹配的 configure 与之在同一条 WS 消息中到达时,force_render_full_state 不再返回缺失 config 区块快照——configure 路径将在快照生成之前同步处理完毕。
  • 跨会话的 force_render_full_state 现在将返回目标会话的完整快照。 A 和 B 现在都能接收完整的负载(此前 A 只能接收流式数据)。
  • 当 target_session_id 在未知情况下,跨会话命令不再导致请求-响应循环挂起。 请求方将收到其自身的快照,以及一个 session-command-dropped 事件(cross-session-unknown-target)。
  • Minverse 多设备校准功能已修复,不再出现路由错误。校准Minverse A不再解锁Minverse B;针对inkwell-success的航向广播也进行了相同的修复。
  • HTTP 设备选择器 接受 #1234 与 1234 作为设备 ID;选择器类(inverse3、verse_grip)可与索引配合使用;404 错误消息将保留原始选择器表达式。
  • 无线 VerseGrip 的 ready 该标志现在依赖于初始设备信息握手——此前,在某些重新连接路径上,当设备尚未完全上报自身信息时,该标志就可能被设置。
  • 对由 keyed-rate-gate 支持的设置所做的运行时更改,现在将在下次命中时生效(此前这些更改会在首次 emplace 时被固定,只有新会话才会应用该更改)。

潜在的破坏性变更​

  • HTTP 的 404 错误信息已统一,涵盖 basis、preset、mount、transform、force_gate:"{type} device #{id} not found" → "no device matches selector '{expr}'"。会话中的 404 也是如此。
  • 设置项通配符 devices/inverse*/... → devices/*inverse/...,适用于力缩放增益、力闸门增益、控制超时以及 safeties/expose_in_snapshot。使用旧字面路径的 3.5.0 配置文件将无法绑定。
  • 设置:全局项的序列化功能已迁移至 session/serialization/*(explicit_fields、force_complete_transforms、preview/*)。旧的 serialization/* 该路径仍可通过已弃用的别名进行解析;将在 4.0 版本中移除。
  • 行为变更:对于将每条消息的 WS 响应用作 tick 同步握手机制的客户端,在持续流量下,每个会话每毫秒最多只会收到一次响应。配置变更时的完整快照不受影响。

已弃用项​

3.5.1 版本中没有弃用项。预览总开关是即将发布的 3.6 版本“从静默到警告”流程中的弃用基础设施;首轮弃用计划安排在 3.5.2 版本。