3.5.3 (2026-08-06)
내부 개선 사항
core/log: 지연 서식이 적용된 haply_* 매크로 형식 추가 (cf7dbfc), #271 해결핵심: 피벗 및 변환 합성/반전 기본 연산자 추가 (01080f6), #283 해결장치: 0xE4 바디 방향 캐싱 및 trigger_mode 라우팅 (#265) (4864700)장치: IMU 센서 기준점 0xE4(#286)의 서비스 측 보정 (e6d877c), tapi-prototype-firmware#87 종료기기: inkwell 보정 시 body_orientation 업데이트 (#268) (89b190b), #286 #286 #286 해결됨장치: 실시간(0x0C) 및 기준(0xE4) 신체 방향의 분리 (#286 #315) (638487a), #268 #266 #268 해결됨http: 지원되지 않는 프로토콜 응답을 422로 정렬 (e0e7638), #293, #293, #295 해결http: 변환 에코 및 sdf 입력값을 오일러 호환 수정 사항으로 마이그레이션 (#279, #280, #291) (bb29404)http: Delete scope=device (#265) (f6bf26b)에서 장치 마운트 초기화, #286 해결modules::navigation: 이동 잠금 장치에 클러치 모드 추가 (조건부, 기본적으로 비활성화됨) (4b69eed), #308 #308 #283 #308 해결modules::navigation: prevent_default가 적용된 버튼 항목; 클러치의 force_scale; 버블(fb216aa)에 대한 길게 누르기 탐색, #317 #318 #316 #317 #318 해결됨모듈::내비게이션: 클러치의 최대 동작/힘 배율 상한값 (a946088), #316 해결modules::navigation: 미러링된 기능 비활성화 토글, 둘 다 기본적으로 활성화됨 (b6ee0c0), #318 해결됨modules::navigation: inputs[]의 각 항목별로 매개변수 수정; 버블이 status.engaged를 반환함 (ba2058f), #318 해결프로토콜: 용량 파일 분할, 감쇠 게이트, 베이스 상승 (30d7d5d), #293 해결프로토콜: 용량 테이블 + 단일 비지원 송신기 (289382e), #293, #295 해결프로토콜: 테이블(8a05d20)을 통해 home_return + pen_attached 조건 설정, #293 해결프로토콜: fw_version 도입 및 버전 확인 처리 방식 변경 (38c2cae), #293 해결직렬화: 세션 패스에서 드래그 핸들 마스크 적용 v3.1 (7b93e35), #316 해결직렬화: euler.output에서 config.mount 회전에 대한 오일러 출력 (#268) (f6b54a2)직렬화: euler.output(96c6cc9)에서 변환의 회전에 대한 오일러 발산, #283 해결시리얼화: set_transform을 중심으로 작업 공간의 피벗을 중심으로 한 확대/축소 표시 (#309) (c1d08fc), #280 해결직렬화: config/body_orientation에 대한 trigger_mode 평탄화 (#265) (8781b8a), #268 해결직렬화: 세션별로 serial_options의 변환 설정을 적용 (#280) (03b2fd6)직렬화: config/mount를 범위 + body_orientation으로 분리 (#265) (5618839), #280 해결직렬화: 세션 옵션을 출력 경로를 통해 전달하고 중첩된 재구성 처리 (#279, #280) (59984ce), #265 해결됨직렬화: WS 및 HTTP용 configure 디코딩 통합 (#280) (6076917)sessions: 해제 시 사전 계산을 수행하는 범용 이동 잠금 메커니즘 추가 (c8d2a93), #304 해결세션: live_motion 추가, 매 틱마다 이동 잠금 진행 (조건부) (d29013c), #308, #304, #308 해결세션: 관리자 수준에서 세션 관찰자 추가 및 메인 루프에 전달 (83e76ef), #284 해결세션: 피벗을 중심으로 한 작업 공간의 재할당 및 확대/축소 기능 추가 (294d6e8), #265, 297, #272, #304 해결세션: config.body_orientation 이벤트 범위를 네임스페이스에 추가; 레거시 'values' 입력에 대한 경고 (3f70047), #320 해결세션: config/mount 미리보기 소스 및 트리거 라우팅 추가 (#265) (5d11dbf), #268 해결됨세션: 장착 공간 내 장치 조립체의 보관/적재 (#265) (4cec178), #292 해결됨세션: 피벗 반사 기능을 포함한 set_workspace_transform_around의 일반화 (0b242a2), #309 해결세션: 드래그 핸들 마스크 + force_scale 중첩 메커니즘 (836ef2f), #316 해결세션: Tracy 세션 그래프에 고객 프로필 태그 지정 (72a8f34), #258 해결세션: 마운트 범위 라우팅 + 가상 스토리지 (#265) (9a4e7f4), #286 및 #293 이후 완료세션: 세션별 force_scale 감쇠 (개요) (bff66ad)버그 수정
ci: 변경 내역 로그를 복원하기 위해 게시 도구 체인을 고정함 (72c6773), #313 해결됨새로운 버전의 Glaze(e2c53d3)에 대한 컴파일 수정 사항의존성: rust nix 크레이트를 0.31(b3b9a84)로 업데이트장치: 전송 병목 지점에서의 보안 구성 프로토콜 조건 설정 (b8e8401), #295 해결됨장치: 펌웨어 버전 및 보정 설정에 따른 보안 구성 쓰기 보호 (5ad5128), #295 해결됨장치: 기상 안정화 기간 동안 inverse3의 유선 연결 유지 (4afed45)기기: 기상 안정화 기간 동안 inverse3의 유선 연결 유지 (79c2b66)기기: 유선 버스 핸들(ea54a1a)에서 배터리 알림 [secure] 비활성화, #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 오일러 변환을 세션 규약에 통합 (#291) (9741ac6)modules::sdf: 클라이언트 좌표계에서 SDF 형상의 방향 (c29e4f2), 이슈 #276 해결프로토콜: 서비스 중단이나 멈춤 현상을 유발하는 타이머 수명 관련 경쟁 조건 제거 (0cb019b), #303 처리 완료프로토콜: 포트 개방 시 일련 번호 태그를 제거하여 핫 스왑된 장치를 식별하기 (b8724d9)프로토콜: 기기 폐기 시 펌웨어 클라이언트 리콜 정보의 경합 조건으로부터 보호 (3d795bb), #303 해결됨프로토콜: 유형 지정 열거 및 올바른 전송 형식을 적용하여 IMU 0xE4 방향 API 재작성 (8733ec0)BIA 허브(F435454)를 통해 inverse3x를 켜고 끄려면 홈 위치로 복귀하십시오.서비스: 적응형 분배가 기본적으로 비활성화됨 (9415638)서비스: 명령에 따른, 제한적이며 경쟁 조건이 없는 서비스 중단 (ff888d7), #303 건 종료세션: 사전 설정의 중심 맞추기 *_중앙 정렬_ 실제로 접근 가능한 센터(ad6e726)에 대해, #321 건을 종결합니다.세션: 마운트 변경 시 SIGGRAPH 작업 공간 제한에 대한 자동 푸시 기능 중단 (2df1654)sessions: 활성 세션이 여전히 제어 중인 기기의 경우, 종료 시 세션 강제 비우기를 무시함 (e1f9ff7), #324 해결세션: start()가 연결 시 협상된 serial_options를 지우지 못하도록 방지 (#290) (27e27d8)세션: set_transform 호출 후 작업 공간 변환 속도 초기화 (133c3ad), #280 해결웹소켓: 송신 세션의 규약에 따른 명령어 디코딩 (#289) (1b24049), #265 해결성능 개선
core/log: haply_* 매크로를 비활성화했을 때 fmt::format이 무시되도록 처리 (672a87a), #270 해결modules::sdf: 매 틱마다 계산하는 대신 생성 시점에 한 번만 SDF를 사전 계산 (15350c5), #277 해결