3.5.1 (2026-05-28) {#351-2026-05-28}
내부 개선 {#internal-improvements}
core/gates: backoff_time_gate 및 suppressed-hit 카운터 (cc989c0), #244 해결core/gates: streak_gate 및 keyed 변형 (748f419), #244 해결기기: 무선 버즈 그립에 충전 표시기 추가 (6482bd6)장치: inverse3의 동작 상태를 20 Hz로 폴링 (bfc160d)기기: 준비 스냅샷 디버그 로그에서 v3.1 직렬화 사용 (0c59c26)http: 고급 설정/권장되지 않는 설정에서 완전 일치 GET 경로 허용 (2b5f037)http: 플래그를 통해 GET /settings의 표시 제어 (4f013d8), #251 해결modules::inverse: 미리보기 모드 게이트 뒤에서 paired_with.auto 공개 (1f7f0e1), #230 해결직렬화: 출시 전 필드용 전역 플래그 미리보기 모드 추가 (422e822), #230 해결직렬화: v3.1의 쿼터니언에 오일러 표기법 추가 (c32dd6b), #239 해결직렬화: 명시적인 쿼터니언 생성자와 코어의 할당 연산자 (677ed6f)세션: 스트리밍 응답 스로틀에서 1밀리초 미만의 간격을 허용 (9a42719)sessions: 미리보기 게이트가 포함된 /sessions v3.1 확장 (6c1c8f2)설정: 기타/사용 중단됨 상세 설정으로 승격 (b3528d7)튜토리얼: 스트리밍 응답 프레임 검사를 위한 프로토타입 (6b57c39)버그 수정 {#bug-fixes}
command_processor: 강제/위치 전환 시 모드 반전 방지 (d754ef1), #232 해결command_processor: ZOH 제어에서 원샷 인라인 드레인을 분리 (5960498), #117 해결core::gates: 키 기반 타임 게이트가 히트할 때마다 최신 기간을 반영 (c73b86a)탐지: extra_ports의 초기 주입 로그 통합 (57e21d7)탐지: keyed_gate를 통한 포트별 로그 제어 (04b8d54), #243 해결devices: 정보를 가져온 후에만 wireless verse grip을 ready로 표시 (dfd7d5d)기기: wireless verse_grip에 대한 set_extension_data 요율 제한 (011d5a0)http: 장치 선택기가 "#1234"와 "1234"를 장치 ID로 허용하도록 수정 (1452c10)http: macOS 릴리스 빌드를 차단하고 있던 사용되지 않는 context 필드를 제거 (-Wunused-private-field) (5345989)modules::inverse-ux: Inverse3 1대와 그립 1개가 연결되면 자동 페어링 (41b3024), #227 #227 해결modules::inverse-ux: 토폴로지가 1↔1을 초과하여 확장된 경우 자동 페어를 삭제 (e4fb80c)modules::inverse: Minverse의 보정 과정에서 강제 연결 에 의한 덮어쓰기를 반영 (e24bf84), #224를 닫음modules::inverse: Minverse 및 첫 번째 POST 요청에서 paired_with의 첨부됨 항상 [secure] 상태가 되도록 (cafb574)modules::inverse-ux: 기기별 Inverse3 ↔ VerseGrip 페어링 레지스트리 (ac63d2a), #224 해결modules::inverse: POST 및 DELETE의 ~와 함께 경로가 계산되었습니다. 첨부됨 상태를 반환하도록 (a751208)서비스가 WVG가 아닌 장치를 WVG로 감지하려고 할 때 반복적으로 표시되는 경고를 방지 (17ad373)protocol::inverse3: 가변 길이의 0xBA 알림 페이로드 처리 (61f7b1f)서비스: 인덱스와 함께 디바이스 선택기 클래스 적용 (2d6422a)서비스: 404 메시지 내에서 장치 선택기 식 유지 (d2c4626)세션: 기본값 / 팔 앞쪽 적용 시 apply_preset이 마운트를 재설정함 (a333da8), #240 해결sessions: 세션 간 ID를 알 수 없는 경우, 자체를 대상으로 폴백 처리 (14367ed), #239 해결세션: 세션 간 force_render_full_state를 통해 모든 스냅샷을 반환 (8afc646)sessions: session.configure.serialization의 execute:[secure]를 준수 (3458af0)세션: 기본값 / 팔 앞쪽 프리셋 적용 시 장치의 마운트 해제 상태를 유지 (698008b), #252 #253 해결세션: 기본값 / 팔 앞쪽 프리셋을 통해 마운트를 identity로 재설정 (a0a2b29), #240 해결sessions: 스로틀링된 스트리밍 스냅샷에서 WS 응답 복원 (787a656), #248 해결sessions: 지속적인 시뮬레이션 부하 하에서 WS RX 핫패스 안정화 (e4e55d0)성능 개선 {#performance-improvements}
command_processor: 제어 전용 배치용 WS RX 패스트패스 추가 (92bb4e8), #241 해결engine: AIMD 댐핑을 통한 적응형 디스패치율의 수렴 (b8fc1c8), #249 해결main_loop: 처리 중인 틱의 상한값으로 asio 큐 제한 (8d77823)시리얼라이제이션: 미리보기 옵션을 정적 구조체에 캐시 (8698636), #241 해결세션: 핫패스에서 session::_mutex의 경합 감소 (bf117c8), #241, #242 해결세션: 세션의 디바이스 호출에 Tracy의 범위 지정 부여 (7404990)