3.5.1 (2026-05-28) {#351-2026-05-28}
내부 개선 {#internal-improvements}
core/gates: backoff_time_gate 및 억제된 히트 카운터 추가 (cc989c0), 이슈 #244 해결core/gates: streak_gate 및 키 기반 변형 추가 (748f419), 이슈 #244 해결기기: 무선 Verse Grip에 충전 표시기 추가 (6482bd6)장치: inverse3 모션 상태를 20 Hz로 폴링 (bfc160d)기기: 준비 스냅샷 디버그 로그에 v3.1 직렬화 사용 (0c59c26)http: 고급/사용 중단(deprecated) 설정에 대한 정확한 GET 요청 허용 (2b5f037)http: 플래그를 통해 GET /settings 노출 제어 (4f013d8), 이슈 #251 해결modules::inverse: 미리보기 모드 문 뒤에서 paired_with.auto 노출 (1f7f0e1), #230 문제 해결직렬화: 프리릴리스 필드용 전역 플래그 미리보기 모드 추가 (422e822), #230 이슈 해결시리얼라이제이션: v3.1 쿼터니언에 오일러 표현 추가 (c32dd6b), #239 이슈 해결직렬화: 명시적 쿼터니언 생성자 및 core 할당 연산자 (677ed6f)세션: 밀리초 미만의 스트리밍 응답 스로틀 허용 (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: 'handle' 정보가 제공된 후에만 wireless verse grip을 'ready' 상태로 표시 (dfd7d5d)기기: 무선 verse_grip에 대한 set_extension_data 호출 빈도 제한 (011d5a0)http: 장치 선택자가 "#1234"와 "1234"를 장치 ID로 허용 (1452c10)http: macOS 릴리스 빌드를 방해하던 미사용 컨텍스트 필드 제거 (-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 시 항상 [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 이슈 해결세션: 지속적인 시뮬레이션 부하에서 WS RX 핫 패스 안정화 (e4e55d0)성능 개선 {#performance-improvements}
command_processor: 제어 전용 배치를 위한 WS RX 고속 경로 (92bb4e8), #241 이슈 해결엔진: AIMD 댐핑을 통한 적응형 디스패치 속도 수렴 (b8fc1c8), #249 이슈 해결main_loop: 진행 중인 틱 상한값으로 ASIO 큐 제한 (8d77823)직렬화: 정적 구조체에 프리뷰 옵션 캐시 (8698636), 이슈 #241 해결sessions: 핫 패스에서 session::_mutex 경합 감소 (bf117c8), #241 #242 이슈 해결세션: 세션 장치 호출에 대한 Tracy 범위 지정 태그 추가 (7404990)