v3.5.1
3.5.1은 안정성과 품질을 중시한 릴리스 버전입니다. 주요 내용은 다음과 같습니다: 1↔1 Inverse3 + 핸들 구성에서의 자동 페어링; WebSocket 세션이 열려 있지 않은 상태에서,GET /devices/{id} 여전히 최신 동작 상태를 반환할 수 있으며, 힘/위치 모드 전환 시 발생하는 삐걱거리는 소음을 제거하고, 지속적인 고부하 상태에서도 자체적으로 조정되는 서비스 틱 스케줄러를 제공합니다.
하이라이트
- 1↔1 Inverse3 + 그립 장착 시 자동 페어링. Inverse3 와 그 그립이 모두 준비되면 SDK는 자동으로 페어링 관계를 등록합니다. 다중 기기 환경에서는,
pen_attachedMinverse 와의 동기화를 통해 잠금 해제 시 더 이상 잘못된 경로로 연결되지 않습니다. - 세션을 열지 않고도 최신 정보를 확인할 수 있습니다.
GET /devices/{id}스냅샷. 펌웨어 v7.5 이상 버전의 Inverse3 / Inverse3x / Minverse 는 이제 WebSocket의 활동 상태와 관계없이 20 Hz 간격으로 동작 상태를 폴링합니다. v7.5 이전 펌웨어는 이 폴링을 건너뛰고 경고 메시지를 한 번만 표시합니다. - 힘/위치 전환 시 더 이상 삐삐거리는 소리가 나지 않습니다.
set_cursor_force↔set_cursor_position전환에는 슬롯 배타 메커니즘이 적용됩니다. 두 틱 사이에는 각 장치마다 가장 최근의 명령어 하나만 유지됩니다.HARP 에 제시된 200ms 유휴 간격에 대한 임시 해결책은 더 이상 유효하지 않습니다. - 자동 조정형 틱 스케줄러. 메인 루프는 부하 상황에 따라 배포 속도를 자동으로 조정하여, 단일 틱이 느려지는 경우라도 명령어 큐가 무한정 늘어나는 것을 방지합니다.
- 고부하 환경에서의 1-in-1-out 스트림 방식 복구. 각 세션에서 WS 메시지당 스트리밍 응답은 1/ms로 제한됩니다. 상한값을 초과하여 응답이 거부되면 이전 버퍼의 내용이 재전송되므로, 시뮬레이션 루프는 절대
recv()위로.
내부 개선
장비
- 기기별 Inverse3 ↔ VerseGrip 페어링 등록 목록.
GET|POST|DELETE /devices/{sel}/paired_with이는 장치별로 구분된 일대일 매핑입니다.POST양측의 충돌하는 페어링을 제거합니다;DELETE선택한 항목을 삭제합니다. 선택기는 고유한 ID로 해석되어야 합니다. - 펌웨어 v7.5 이상에서 20 Hz 동작 상태 폴링.
GET /devices/{id}50 ms마다 최신 정보를 반환합니다.cursor_position、cursor_velocity、angular_position、angular_velocity;활동 세션에 영향을 미치지 않습니다. - 무선 VerseGrip의
set_extension_data속도 제어. “오래된 데이터 버리기 / 유휴 시 재전송” 방식의 파이프라인을 채택하고, 서비스 틱에서 데이터를 비워냅니다. 이렇게 하면 전송량이 과다해도 무선 링크가 포화 상태가 되지 않으며, 전송량이 부족해도 만료된 값이 남아 있지 않게 됩니다.
대화
- 제어 명령(힘/위치)만 포함된 배치에 대해 WS 수신 빠른 경로가 새로 추가되었으며, 이 경로는 센서 구성(configure) 처리 파이프라인을 건너뜁니다.
configure/set_profile/ 사용자 정의 명령도 여전히 경합 상태 해결 로직을 거치게 됩니다.
관측 가능성
- 로그 출력 빈도는 포트별로 구분되며, 지속 시간도 고려됩니다. 블랙리스트에 등재된 각 포트는 개별적으로 제어되며, 주기적으로 발생하는
"...blacklisted: skipping"이제 로그 행에는 다음이 포함됩니다.(×N), 두 번의 트리거 사이에 무음 처리된 틱 횟수를 나타냅니다. - WVG 기기가 아닌 장치가 감지될 경우, 무선 VerseGrip 감지 기능이 더 이상 로그 화면을 과도하게 채우지 않습니다.
문제 해결
- 사용
POST /device.config.preset그리고 지정하고defaults또는arm_front시,이제 장치의 마운트 설정을 공장 출하 시 기본값으로 재설정합니다(이전에는 아무런 작업도 수행하지 않는 무응답 처리였습니다).basis유지되므로, 프리셋 변경 후에도 앱에서 설정된 베이스는 계속 유효합니다. - 일치하는 configure가 동일한 WS 메시지 내에 포함되어 도착할 때,
force_render_full_state더 이상 누락되지 않음config블록 스냅샷——configure 경로는 스냅샷 생성 전에 동기화 처리가 완료됩니다. - 세션 간
force_render_full_state이제 대상 세션의 전체 스냅샷이 반환됩니다. A와 B는 이제 모두 전체 데이터를 수신할 수 있습니다(이전에는 A가 스트리밍 데이터만 수신했습니다). - 그때
target_session_id'알 수 없음' 상태에서는 세션 간 명령이 더 이상 요청-응답 루프를 중단시키지 않습니다. 요청자는 자신의 스냅샷과 함께 하나의session-command-dropped사건(cross-session-unknown-target). - Minverse 다중 장치 보정을 통해 더 이상 잘못된 라우팅이 발생하지 않습니다. Minverse A를 보정해도 더 이상 Minverse B가 잠금 해제되지 않습니다. inkwell-success의 헤딩 브로드캐스트에 대해서도 동일한 수정 사항이 적용되었습니다.
- HTTP 장치 선택기 수락
#1234와1234장치 ID로; 선택기 클래스(inverse3、verse_grip) 인덱스와 함께 사용할 수 있으며, 404 오류 메시지에서는 원래의 선택자 표현식이 유지됩니다. - 무선 VerseGrip의
ready로고는 이제 초기 기기 정보 교환에 의존합니다.——이전에는 일부 재연결 경로에서, 장치가 아직 자체 정보를 완전히 보고하지 않은 상태에서도 이 플래그가 설정될 수 있었습니다. - keyed-rate-gate가 지원하는 설정에 대한 런타임 변경 사항은 이제 다음 히트 시점에 적용됩니다(이전에는 첫 번째 emplace 시점에 고정되어, 새 세션에서만 해당 변경 사항이 적용되었습니다).
잠재적으로 파괴적인 변경 사항
- HTTP의 404 오류 메시지가 통일되었습니다., 포함
basis、preset、mount、transform、force_gate:"{type} device #{id} not found"→"no device matches selector '{expr}'"。회화의 404도 마찬가지입니다. - 설정 항목 와일드카드
devices/inverse*/...→devices/*inverse/..., 힘 스케일링 이득, 힘 게이트 이득, 제어 타임아웃 및safeties/expose_in_snapshot。구식 리터럴 경로를 사용하는 3.5.0 설정 파일은 바인딩할 수 없습니다. - 설정: 전역 항목의 직렬화 기능이 다음 위치로 이전되었습니다.
session/serialization/*(explicit_fields、force_complete_transforms、preview/*). 이전의serialization/*이 경로는 더 이상 사용되지 않는 별칭을 통해 여전히 해석될 수 있습니다. 4.0 버전에서 제거될 예정입니다. - 동작 변경: 각 메시지에 대한 WS 응답을 틱 동기화 핸드셰이크에 사용하는 클라이언트의 경우, 지속적인 트래픽이 발생하는 상황에서 각 세션당 밀리초당 최대 한 번만 응답을 수신하게 됩니다. 구성 변경 시 생성되는 전체 스냅샷에는 영향을 미치지 않습니다.
사용 중단 항목
3.5.1 버전에는 비추천 항목이 없습니다. 미리보기 메인 스위치는 곧 출시될 3.6 버전의 “무통보에서 경고로” 파이프라인에서 비추천될 예정인 인프라입니다. 첫 번째 비추천 일정은 3.5.2 버전으로 예정되어 있습니다.