3.5.3 (2026年8月6日) {#353-2026-08-06}
内部の改善 {#internal-improvements}
core/log:フォーマット処理を遅延させるhaply_*マクロの型を追加 (cf7dbfc)、#271をクローズcore: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のデコード設定を統一 (#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:config/mount ソースおよびトリガーのルーティングのプレビュー機能を追加 (#265) (5d11dbf)、#268 をクローズsessions:マウント領域へのデバイスマウントの保存と読み込み (#265) (4cec178)、#292 をクローズsessions:set_workspace_transform_around を汎用化し、pivot のエコーアウトを追加 (0b242a2)、#309 をクローズsessions:グリップボタンのマスクと force_scale の重ね合わせメカニズムを追加 (836ef2f)、#316 をクローズsessions:Tracyのセッション図にクライアントのプロフィールラベルを追加 (72a8f34)、#258 をクローズsessions:scope のマウント、ルーティング、および仮想項目の保存 (#265) (9a4e7f4)、#286 および #293 後の課題をクローズsessions:セッションごとの 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グリップにおける[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 変換のオイラーを正規化 (#291) (9741ac6)modules::sdf:クライアント座標系で SDF 形状を正しく方向付け (c29e4f2)、#276 をクローズプロトコル:サービスのクラッシュやハングアップを引き起こすタイマーのライフサイクル競合を解消 (0cb019b)、#303 をクローズプロトコル:ポートを開く際にシリアルバッファを更新し、ホットスワップ対応デバイスを識別する (b8724d9)プロトコル:ファームウェアクライアントのコールバックに保護機能を追加し、デバイスの破棄競合を防止する (3d795bb)、#303 をクローズプロトコル:型付き列挙型と正しい転送形式を使用して、0xE4 IMU 方位 API を再実装する (8733ec0)inverse3x を bia hub 経由で有効化/無効化した際にホーム画面に戻る (f435454)サービス:適応型配信はデフォルトで無効になっています (9415638)service:サービスの終了プロセスを順序正しく、境界が明確で、競合のないものにする (ff888d7)、#303 をクローズセッション: 将 *_中央揃え* 「中央揃え」を実際に到達可能な中心点に設定 (ad6e726)、#321 をクローズsessions:マウントの変更時に、Siggraph ワークスペース境界の自動プッシュを削除 (2df1654)sessions:アクティブなセッションによって引き続き制御されているデバイスについては、セッション終了時の強制的なデータ消去をスキップする (e1f9ff7)、#324 をクローズsessions:停止 start() 接続時にネゴシエートされた serial_options をクリア (#290) (27e27d8)sessions:set_transform の実行後にワークスペースの変換速度をゼロにリセット (133c3ad)、#280 をクローズwebsocket:送信側のセッションの規約に従ってコマンドをデコード (#289) (1b24049)、#265 をクローズ性能の向上 {#performance-improvements}
core/log: haply_* マクロをゲート制御し、無効化すると fmt::format をスキップする (672a87a)、#270 をクローズmodules::sdf:作成時に一度だけ SDF をベイクし、各ティックごとにベイクしないようにした (15350c5)、#277 をクローズ