3.5.3 (2026-08-06) {#353-2026-08-06}
내부 개선 사항 {#internal-improvements}
core/log: 지연 포맷팅이 적용된 haply_* 매크로 형태 추가 (cf7dbfc), #271 해결핵심: 피벗(pivot) 및 compose/inverse 변환 원시 연산자 추가 (01080f6), #283 해결devices: 0xE4 본체 방향 캐시 및 라우팅 trigger_mode (#265) (4864700)devices: 서버 측에서 0xE4 IMU 센서 좌표계 보정 (#286) (e6d877c), tapi-prototype-firmware#87을 닫음devices: inkwell 보정 시 body_orientation 새로 고침 (#268) (89b190b), #286 #286 #286 해결devices: 실시간(0x0C)과 기준(0xE4)의 신체 방향 분리 (#286 #315) (638487a), #268 #266 #268 해결http: 프로토콜을 지원하지 않는 응답을 일괄적으로 422로 처리 (e0e7638), #293, #293, #295 해결http: transform 반사 및 sdf 입력을 오일러를 지원하도록 수정하는 패치 (#279, #280, #291) (bb29404)http: Delete scope=device 시 장치 마운트 재설정 (#265) (f6bf26b), #286 해결modules::navigation: 스포츠 모드 잠금 기능에 클러치 모드 추가 (스위치로 제어, 기본적으로 비활성화됨) (4b69eed), #308 #308 #283 #308 해결modules::navigation: prevent_default가 적용된 버튼 입력; clutch force_scale; bubble 길게 누르기 탐색 (fb216aa), #317 #318 #316 #317 #318 해결modules::navigation: clutch에 대한 max_motion/force_scale 상한값 설정 (a946088), #316 해결modules::navigation: 미러의 ‘킬 스위치’ 기능, 두 기능 모두 기본적으로 활성화됨 (b6ee0c0), #318 해결modules::navigation: inputs[] 내의 각 입력에 설정 패치를 적용함; bubble이 status.engaged를 발생시킴 (ba2058f), #318 해결프로토콜: capability 파일을 분할하고, damping 게이트를 추가하며, base를 상향 조정 (30d7d5d), #293 해결프로토콜: 기능 표 + 일관된 ‘지원 불가’ 응답 송신기 (289382e), #293 및 #295 해결프로토콜: 테이블을 통해 home_return 및 pen_attached에 대한 게이트 제어 (8a05d20), #293 해결프로토콜: fw_version 도입 및 버전 확인 기능 이전 (38c2cae), #293 해결직렬화: v3.1 세션 채널에서 그립 버튼 마스크 적용 (7b93e35), #316 해결시리얼화: euler.output 아래에서 config.mount에 대한 euler 출력 회전 (#268) (f6b54a2)직렬화: euler.output 아래에서 transform을 통해 euler(96c6cc9)를 회전하여 출력, #283 해결시리얼라이제이션: set_transform에서 워크스페이스 zoom-about-pivot 기능 지원 (#309) (c1d08fc), #280 해결직렬화: config/body_orientation의 trigger_mode를 평면화 (#265) (8781b8a), #268 해결직렬화: transform 매개변수를 각 세션의 serial_options로 승격 (#280) (03b2fd6)시리얼라이제이션: config/mount를 scope와 body_orientation으로 분리 (#265) (5618839), #280 해결직렬화: 세션 옵션을 출력 전체에 반영하고, 중첩된 reshape에 대해 게이트 처리를 수행합니다 (#279, #280) (59984ce), #265 해결시리얼화: WS와 HTTP의 configure 디코딩 통합 (#280) (6076917)sessions: 베이크에서 분리되는 범용 모션 잠금 메커니즘 추가 (c8d2a93), #304 해결sessions: live_motion 틱 단위 진행 모션 잠금 기능 추가 (스위치로 제어) (d29013c), #308, #304, #308 해결sessions: 매니저 등급 세션 관찰자를 새로 추가하고 메인 루프를 통해 전달 (83e76ef), #284 해결sessions: reparent 마운트 및 workspace zoom-about-pivot 기능 추가 (294d6e8), #265, 297, #272, #304 해결sessions: 네임스페이스화된 config.body_orientation 이벤트 범위를 새로 추가함; 구버전 'values' 입력에 대해 경고 메시지를 표시함 (3f70047), #320 해결sessions: preview config/mount 소스 및 트리거 라우팅 추가 (#265) (5d11dbf), #268 해결sessions: 마운트 공간에 장치 마운트 정보 저장 및 불러오기 (#265) (4cec178), #292 해결세션: set_workspace_transform_around를 일반화하고 피벗 반환 기능을 추가함 (0b242a2), #309 해결sessions: 그립 버튼 마스크 및 force_scale 중첩 메커니즘 추가 (836ef2f), #316 해결sessions: Tracy 세션 차트에 클라이언트 프로필 태그 추가 (72a8f34), #258 해결세션: scope 라우팅 및 저장소 가상 항목 마운트 (#265) (9a4e7f4), #286 이후 #293을 닫음세션: 세션별 force_scale 감쇠 적용 (미리 보기)(bff66ad)오류 수정 {#bug-fixes}
ci: 업데이트 로그 생성을 복원하기 위해 툴체인을 고정함 (72c6773), #313 해결새 버전의 glaze 컴파일 문제 수정 (e2c53d3)deps: rust crate nix를 0.31 (b3b9a84)로 업데이트devices: 입력 지점에서 safety-config 프로토콜에 대한 게이트 제어 (b8e8401), #295 해결devices: 펌웨어 버전 및 보정 상태에 따라 safety-config 쓰기 작업을 제한 (5ad5128), #295 해결devices: 안정화 기간 동안 inverse3 통신 링크를 유지 (4afed45)devices: 안정화 기간 동안 inverse3 통신 링크를 유지 (79c2b66)devices: 유선 Verse Grips에서 [secure] 배터리 알림 억제 (ea54a1a), #314 해결http: 세션 범위에 대한 안전 쓰기 작업에 대한 검증 검사 (89f9cd7), #295, #293 해결http: 세션 약정에 따라 오일러 회전을 정규화 (#288) (97cf203)inverse_ux: calibration_notifier의 처리를 Minverse로 제한 (418913f)충돌 방지를 위한 수명 주기 정리 (e7b3785)modules::inverse-ux: 펌웨어가 차단된 경우에도 항상 calibration-failed 오류를 발생시킴 (3841d06)modules::inverse-ux: 페어링된 기기를 교체한 후 다시 페어링하기 (cf85707), #278 해결modules::sdf: 세션 약정에 따라 sdf 변환의 euler 값 정규화 (#291) (9741ac6)modules::sdf: 클라이언트 좌표계에서 SDF 형상의 방향을 올바르게 설정 (c29e4f2), #276 해결프로토콜: 서비스 중단 또는 정지를 유발하는 타이머 수명 주기 경합 문제 해결 (0cb019b), #303 해결프로토콜: 핫스왑 장치를 식별하기 위해 포트를 열 때 시리얼 버퍼를 새로 고침 (b8724d9)프로토콜: 펌웨어 클라이언트 콜백에 보호 기능을 추가하여 장치 파괴 경쟁을 방지함 (3d795bb), #303 해결프로토콜: 유형이 지정된 열거형과 올바른 전송 형식을 사용하여 0xE4 IMU 방향 API 재구현 (8733ec0)inverse3x가 bia 허브를 통해 활성화/비활성화될 때 홈 화면으로 돌아감 (f435454)서비스: 자동 배포 기능이 기본적으로 비활성화되어 있습니다 (9415638)서비스: 서비스 종료 프로세스를 질서 있고, 범위가 제한되며, 경합이 없도록 함 (ff888d7), #303 해결세션: 将 *_중앙 정렬_ 가정된 중심점에서 실제 도달 가능한 중심점까지 (ad6e726), #321 해결세션: 마운트 변경 시 SIGGRAPH 작업 영역 경계 자동 푸시 기능 제거 (2df1654)세션: 여전히 세션에 의해 구동되는 기기의 경우, 세션 종료 시 강제 비우기를 건너뜁니다 (e1f9ff7), #324 해결세션: start() 호출 시 연결 협상 시 설정된 serial_options 제거 (#290) (27e27d8)sessions: set_transform 실행 후 작업 공간 변환 속도를 0으로 초기화 (133c3ad), #280 해결websocket: 발신자 세션의 약정에 따라 명령을 디코딩 (#289) (1b24049), #265 해결성능 개선 {#performance-improvements}
core/log: haply_* 매크로에 대한 게이트 제어 기능을 추가하여, 비활성화 시 fmt::format을 건너뛰도록 함 (672a87a), #270 해결modules::sdf: 생성 시 SDF를 한 번만 베이킹하고, 매 틱마다 베이킹하지 않음 (15350c5), #277 해결