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 이슈 해결devices: 무선 verse grip에 충전 표시기 추가 (6482bd6)devices: inverse3 모션 상태를 20 Hz로 폴링 (bfc160d)devices: ready 스냅샷 디버그 로그에 v3.1 직렬화 사용 (0c59c26)http: 고급/지원 중단(deprecated) 설정에 대한 정확한 라우트 GET 허용 (2b5f037)http: 플래그로 GET /settings 노출 제어 (4f013d8), #251 이슈 해결modules::inverse-ux: preview_mode 게이트 뒤에 paired_with.auto 노출 (1f7f0e1), #230 이슈 해결serialization: 프리릴리스 필드용 전역 플래그 preview_mode 추가 (422e822), #230 이슈 해결serialization: v3.1 쿼터니언에 오일러 표현 추가 (c32dd6b), #239 이슈 해결serialization: 명시적 quaternion 생성자 및 core 할당 연산자 (677ed6f)sessions: 밀리초 미만 스트리밍 응답 스로틀 허용 (9a42719)sessions: 프리뷰 게이트 적용된 /sessions v3.1 보강 (6c1c8f2)settings: misc/deprecated를 고급 설정으로 승격 (b3528d7)tutorials: 스트리밍 응답 프레임 검사용 프로토타입 (6b57c39)버그 수정 {#bug-fixes}
command_processor: Force/Position 스왑 시 모드 플립 방지 (d754ef1), #232 이슈 해결command_processor: 일회성 인라인 드레인과 ZOH 적용 제어 분리 (5960498), #117 이슈 해결core::gates: 키 기반 시간 게이트가 히트별 최신 주기를 반영 (c73b86a)detection: extra_ports 최초 주입 로그 통합 (57e21d7)detection: keyed_gate를 통한 포트별 로그 게이팅 (04b8d54), #243 이슈 해결devices: handle 정보 이후에만 wireless verse grip을 ready로 표시 (dfd7d5d)devices: wireless verse_grip에 대한 set_extension_data 호출 빈도 제한 (011d5a0)http: 장치 선택자가 "#1234"와 "1234"를 장치 ID로 허용 (1452c10)http: macOS 릴리스 빌드를 막던 미사용 context 필드 제거 (-Wunused-private-field) (5345989)modules::inverse-ux: Inverse3 1개 + grip 1개 연결 시 자동 페어링 (41b3024), #227 #227 이슈 해결modules::inverse-ux: 토폴로지가 1↔1을 넘어 커지면 자동 페어링 해제 (e4fb80c)modules::inverse-ux: Minverse 캘리브레이션에서 force_attached 재정의 반영 (e24bf84), #224 이슈 해결modules::inverse-ux: paired_with attached 값은 Minverse 및 최초 POST에서 항상 [secure] (cafb574)modules::inverse-ux: Inverse3 ↔ VerseGrip 장치별 페어링 레지스트리 (ac63d2a), #224 이슈 해결modules::inverse-ux: POST 및 DELETE paired_with 라우트가 계산된 attached 상태를 반환 (a751208)서비스가 non-WVG 장치를 WVG로 감지하려 할 때 반복 경고가 발생하지 않도록 방지 (17ad373)protocol::inverse3: 가변 길이 0xBA 알림 페이로드 처리 (61f7b1f)service: 인덱스와 함께 장치 선택자 클래스 적용 (2d6422a)service: 404 메시지에서 장치 선택자 표현식 유지 (d2c4626)sessions: defaults / arm_front 프리셋에서 apply_preset이 마운트를 초기화 (a333da8), #240 이슈 해결sessions: 세션 간 ID를 알 수 없을 때 자기 자신을 대상으로 폴백 (14367ed), #239 이슈 해결sessions: 세션 간 force_render_full_state 요청 시 전체 스냅샷으로 응답 (8afc646)sessions: session.configure.serialization에서 execute:[secure] 준수 (3458af0)sessions: defaults / arm_front 프리셋 적용 시 장치 마운트를 초기 상태로 유지 (698008b), #252 #253 이슈 해결sessions: defaults / arm_front 프리셋에서 마운트를 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: 진행 중 tick 상한으로 asio 큐 제한 (8d77823)serialization: 프리뷰 옵션을 정적 구조체에 캐시 (8698636), #241 이슈 해결sessions: 핫 패스에서 session::_mutex 경합 감소 (bf117c8), #241 #242 이슈 해결sessions: 세션 장치 호출에 Tracy ZoneScoped 태그 추가 (7404990)