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)デバイス:0xE4 の IMU センサーフレームをサービス側で補正 (#286) (e6d877c)、tapi-prototype-firmware#87 をクローズdevices:inkwell のキャリブレーション時に body_orientation を更新 (#268) (89b190b)、#286 #286 #286 をクローズデバイス:ライブ (0x0C) とリファレンス (0xE4) のボディの向きを分離 (#286 #315) (638487a)、#268 #266 #268 をクローズhttp:非対応プロトコルへのレスポンスを 422 に統一 (e0e7638)、#293、#293、#295 をクローズhttp:transform のエコーと sdf 入力を、オイラー対応パッチに移行 (#279, #280, #291) (bb29404)http:「scope=device」を削除する際にデバイスマウントをリセット (#265) (f6bf26b)、#286 をクローズmodules::navigation:モーションロック時のクラッチモードを追加(ゲート付き、デフォルトはオフ) (4b69eed)、#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 をクローズプロトコル:キャパビリティのファイル分割、ダンピングゲート、ベースのホイスト (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 をクローズserialization:transform の調整パラメータを、セッションごとの serial_options に昇格 (#280) (03b2fd6)シリアライゼーション:config/mount を scope と body_orientation に分割 (#265) (5618839)、#280 をクローズシリアライゼーション:セッションオプションを出力に反映し、ネストされた reshape をゲート処理 (#279, #280) (59984ce)、#265 をクローズシリアライゼーション:WS と HTTP の configure デコード処理を統一 (#280) (6076917)sessions:「disengage」時のベイク処理を備えた汎用モーションロック機構を追加 (c8d2a93)、#304 をクローズsessions:live_motion に、ティックごとのモーションロックを進行させる処理を追加(ゲート付き) (d29013c)、#308 #304 #308 をクローズsessions:メインループでの配信に対応した、マネージャーレベルのセッションオブザーバーを追加 (83e76ef)、#284 をクローズsessions:マウントの「reparent」とワークスペースの「zoom-about-pivot」を追加 (294d6e8)、#265、297、#272、#304 をクローズsessions:名前空間付きの config.body_orientation イベントスコープを追加し、非推奨の 'values' 入力に対して警告を表示 (3f70047)、#320 をクローズsessions:プレビュー用の config/mount ソースとトリガーのルーティングを追加 (#265) (5d11dbf)、#268 をクローズsessions:mount space でのデバイスマウントの保存・読み込み (#265) (4cec178)、#292 をクローズsessions:pivot エコーに対応するため、set_workspace_transform_around を汎用化した (0b242a2)、#309 をクローズsessions:グリップボタンマスクと force_scale オーバーレイの仕組み (836ef2f)、#316 をクローズsessions:クライアントプロファイルでTracyのセッションプロットにラベルを付ける (72a8f34)、#258 をクローズsessions:マウントスコープのルーティングとストレージ仮想化 (#265) (9a4e7f4)、#286 #293 完了後にクローズsessions:セッションごとの force_scale ダッキング(プレビュー) (bff66ad)バグ修正 {#bug-fixes}
ci:変更履歴の復元のため、リリースツールチェーンを固定 (72c6773)、#313 をクローズ新しい glaze でのコンパイルの修正 (e2c53d3)依存関係:Rust クレート「nix」を 0.31 に更新 (b3b9a84)devices:送信処理の1か所で safety-config プロトコルをゲート (b8e8401)、#295 をクローズdevices:ファームウェアのバージョンとキャリブレーションに基づいて、safety-config への書き込みを制限する (5ad5128)、#295 をクローズdevices:ウェイクアップの安定化期間中も inverse3 の配線接続を維持 (4afed45)devices:ウェイクアップの安定化期間中も inverse3 の配線接続を維持 (79c2b66)devices:有線式 Verse グリップで [secure] バッテリー通知を抑制 (ea54a1a)、#314 をクローズhttp:セッション単位の safety 書き込み時にキャリブレーションを確認 (89f9cd7)、#295 #293 をクローズhttp:セッション規約に基づき、オイラー回転を統合 (#288) (97cf203)inverse_ux:calibration_notifier の処理を Minverse に限定 (418913f)クラッシュを防ぐためのライフタイムのクリーンアップ (e7b3785)modules::inverse-ux:ファームウェアによってブロックされた場合でも、常に「calibration-failed」を出力する (3841d06)modules::inverse-ux:ペアリング済みのデバイスを1台交換した後の再ペアリング (cf85707)、#278をクローズmodules::sdf:セッション規約に基づき、sdf 変換の euler を統合 (#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:ライブセッションでまだ駆動されているデバイスについて、終了中のセッションにおける force drain をスキップ (e1f9ff7)、#324 をクローズsessions:接続時に start() がネゴシエートした serial_options を消去しないように修正 (#290) (27e27d8)sessions:set_transform の実行後に、workspace の transform の速度をゼロにリセット (133c3ad)、#280 をクローズwebsocket:送信元セッションの規約に従ってコマンドをデコード (#289) (1b24049)、#265 をクローズパフォーマンスの改善 {#performance-improvements}
core/log:無効時には fmt::format がスキップされるよう、haply_* マクロをゲート (672a87a)、#270 をクローズmodules::sdf:SDF を毎ティックではなく、作成時に一度だけベイクする (15350c5)、#277 をクローズ