3.5.3 (2026-08-06)
내부 개선
core/log: deferred-format haply_* 매크로 형식을 추가함 (cf7dbfc), #271 해결핵심: 피벗 및 합성/역변환 프리미티브 추가 (01080f6), #283 해결장치: 0xE4 본체 방향 및 경로 trigger_mode 캐시 (#265) (4864700)장치: 서비스 측에서 0xE4 IMU 센서 프레임 보정 (#286) (e6d877c), tapi-prototype-firmware#87을 닫음devices: 잉크웰 보정 시 body_orientation 새로 고침 (#268) (89b190b), #286 #286 #286 해결디바이스: 라이브(0x0C)와 기준(0xE4)의 신체 방향 분리 (#286 #315) (638487a), #268 #266 #268 해결http: 지원되지 않는 프로토콜에 대한 응답을 422로 정렬 (e0e7638), #293, #293, #295 해결http: echoes 및 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; 버블 길게 누르기 탐색 (fb216aa), #317, #318, #316, #317, #318 이슈 해결modules::navigation: 클러치 max_motion/force_scale 상한값 (a946088), #316 해결modules::navigation: 미러링된 기능 비활성화 스위치, 둘 다 기본적으로 켜짐 (b6ee0c0), #318 해결modules::navigation: inputs[]에 대한 입력별 설정 패치; 버블이 status.engaged를 방출함 (ba2058f), #318 해결프로토콜: 기능 파일 분할, 댐핑 게이트, 기본 호이스트 (30d7d5d), #293 해결프로토콜: 기능 테이블 + 지원되지 않는 단일 에미터 (289382e), #293 및 #295 해결프로토콜: 테이블(8a05d20)을 통해 gate home_return + pen_attached, #293 해결프로토콜: fw_version 도입 및 버전 확인 기능 이전 (38c2cae), #293 해결직렬화: v3.1 세션 패스에서 그립 버튼 마스크 적용 (7b93e35), #316 해결시리얼라이제이션: config.mount 회전 시 euler.output 하위에 euler를 출력 (#268) (f6b54a2)직렬화: euler.output 하에서 변환 회전에 대해 오일러 값을 출력 (96c6cc9), #283 해결시리얼라이제이션: set_transform에서 워크스페이스 ‘zoom-about-pivot’ 노출 (#309) (c1d08fc), #280 해결직렬화: config/body_orientation trigger_mode 평면화 (#265) (8781b8a), #268 해결직렬화: 변환 노브를 세션별 serial_options로 전환 (#280) (03b2fd6)직렬화: config/mount를 scope + body_orientation으로 분할 (#265) (5618839), #280 해결직렬화: 출력을 통해 스레드 세션 옵션을 전달하고 중첩된 reshape를 제한 (#279, #280) (59984ce), #265 해결직렬화: WS와 HTTP 통합 및 디코딩 구성 (#280) (6076917)sessions: 해제 베이킹 기능이 포함된 범용 모션 잠금 메커니즘 추가 (c8d2a93), #304 해결sessions: 틱별 live_motion 모션 잠금 진행 기능 추가 (게이트 방식) (d29013c), #308, #304, #308 해결세션: 메인 루프를 통해 전달되는 관리자급 세션 관찰자 추가 (83e76ef), #284 해결sessions: 마운트 추가, 부모 변경 및 피벗을 중심으로 한 작업 공간 확대/축소 기능 추가 (294d6e8), #265, 297, #272, #304 해결세션: 네임스페이스가 지정된 config.body_orientation 이벤트 범위를 추가함; 구식 'values' 입력 시 경고 표시 (3f70047), #320 해결세션: 미리보기 구성/마운트 소스 및 트리거 라우팅 추가 (#265) (5d11dbf), #268 해결세션: 마운트 공간에서 장치 마운트 저장/로드 (#265) (4cec178), #292 해결sessions: set_workspace_transform_around 함수에 피벗 에코 기능을 추가 (0b242a2), #309 해결세션: 그립 버튼 마스크 + force_scale 오버레이 메커니즘 (836ef2f), #316 해결세션: 트레이시 세션 플롯에 클라이언트 프로필(72a8f34)을 표시, #258 해결세션: 마운트 범위 라우팅 + 스토리지 가상화 (#265) (9a4e7f4), #286 이후 처리 완료 #293세션: 세션별 force_scale 덕킹 (미리보기) (bff66ad)버그 수정
ci: 변경 내역을 복원하기 위한 핀 릴리스 툴체인 (72c6773), #313 해결새로운 글레이즈를 적용한 컴파일 수정 (e2c53d3)deps: rust crate nix를 0.31(b3b9a84)로 업데이트장치: 전송 병목 지점에서 safety-config 프로토콜을 제어(b8e8401), #295 해결devices: guard safety-config가 펌웨어 버전 및 보정 정보(5ad5128)에 대한 쓰기 작업을 수행하고, #295를 닫습니다.디바이스: 웨이크업 안정화 기간 동안 inverse3 신호를 유지 (4afed45)디바이스: 웨이크업 안정화 기간 동안 inverse3 와이어의 전원을 유지 (79c2b66)기기: 유선 Verse 그립(ea54a1a)에서 [보안] 배터리 알림 표시를 비활성화함, #314 해결http: 세션 범위 내 안전 쓰기 작업에 대한 보정 확인 (89f9cd7), #295 및 #293 해결http: 세션 규칙에 따라 오일러 회전을 접기 (#288) (97cf203)inverse_ux: Minverse로만 calibration_notifier 처리를 제한 (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 해결프로토콜: 0xE4 IMU 방향 API를 유형 지정된 열거형과 올바른 와이어 형식으로 재작성 (8733ec0)inverse3x BIA 허브 활성화/비활성화 관련 홈 페이지로 돌아가기 (f435454)서비스: 적응형 배정이 기본적으로 비활성화됨 (9415638)서비스: 서비스 종료 과정을 순차적, 경계 지정, 경합 없는 방식으로 처리 (ff888d7), #303 해결세션: 중앙 *_중앙 정렬_ 실제 접근 가능한 중심(ad6e726)에 대한 사전 설정, #321 해결sessions: 마운트 변경 시 SIGGRAPH 작업 공간 경계 자동 푸시 기능 제거 (2df1654)sessions: 활성 세션에 의해 여전히 제어되고 있는 장치에 대해 세션 종료 시 강제 드레인 처리를 건너뜁니다 (e1f9ff7), #324 해결세션: start() 호출 시 연결 시점에 협상된 serial_options 값을 지우는 문제 해결 (#290) (27e27d8)sessions: set_transform 실행 후 작업 공간 변환 속도가 0이 됨 (133c3ad), #280 해결websocket: 발신자 세션의 규칙에 따라 명령어 디코딩 (#289) (1b24049), #265 해결성능 개선
core/log: gate haply_* 매크로를 통해 비활성화 시 fmt::format이 건너뛰어지도록 수정 (672a87a), #270 해결modules::sdf: 틱마다 처리하는 대신 생성 시 한 번만 SDF를 베이킹하도록 변경 (15350c5), #277 해결