ハイライト {#highlights}
Minverse インクウェルにスタイラスをドッキングすると、スタイラスがアームに沿ってまっすぐ向くようになりました。 ドッキングされたスタイラスに設定される方位(heading)が 135 度から 180 度に変更されました。これは、それ以外は変更のないデフォルトのセッションにおける、3.5.6 からの唯一の想定される目に見える違いです。
ゲート制御もオプトインも不要で、ハンドルのファームウェア 1.3.1 以上のすべてのユーザーが対象です。詳細は「修正」を参照してください。
セッション中、デバイスの姿勢がリアルタイムに反映されるようになりました。アプリケーションがデバイスの制御を開始した時点で値が固定されることなく、state.body_orientation が20 Hz でデバイスの姿勢を追従します(Inverse3 / Minverse ファームウェア 7.9 以降、デフォルトで有効)。
デバイス設定のリセットで、そのデバイスが実際に保存している値が復元されるようになりました。config/torque_scaling、config/gravity_compensation、config/handedness に対する DELETE は、サービスに組み込まれた固定の工場出荷時定数ではなく、デバイスが起動時に持っている値を返すようになりました。そのため、左手用として保存されたデバイスが右手用にリセットされることはなくなりました。
デバイススコープの設定変更は、デフォルトのイベントチャネルで自動的に通知されなくなりました。以前は、共有のマウントや姿勢の書き込みが 1 回行われるたびに、そのデバイスを保持している各セッションごとにsession-updated が送出されていました。しかも、いずれもデバイスを特定するものではありませんでした。保持しているすべてのセッションは、引き続き次のスナップショットから更新されます。
内部改善 {#internal-improvements}
新しい設定 devices/*inverse/body_orientation_poll_interval_ms(デフォルトは 50 ms、0 で無効、範囲 0〜5000)により、リアルタイムの姿勢の読み取りを調整できるようになりました。ただし、50 ms のデバイスモーションタイマーが実質的な下限となります。
ファームウェア 7.9 未満のデバイスは、姿勢の利用側(コンシューマー)ごとに個別に警告を表示するようになりました。そのため、古いファームウェアに対して devices/*inverse/query_orientation_on_idle を有効にした場合、黙って無視されるのではなく、その設定が効果を持たないことが通知されます。
新しい姿勢データを供給しなくなったデバイスについては、警告を 1 回表示するようになりました。以前は、最後に取得した正常な値を無言で永久に報告し続けていました。保持されている値自体は変更されないため、デバイスは引き続き使用できます。
セッションスコープの config/mount または config/body_orientation の書き込みは、これまでどおりデフォルトのイベントチャネルで通知されます。取り下げられたのはデバイススコープの要因のみで、handedness、torque_scaling、gravity_compensation はセッションごとの通知を引き続き行います。
修正 {#fixes}
Minverse インクウェルのドック・キャリブレーションにより、ドッキングされたスタイラスの設定が 45 度不足していました。 インクウェルのキャリブレーション時に、ドッキングされたスタイラスに設定される方位が 135 度から 180 度に変更され、その値は設定 devices/*inverse/inkwell/dock_heading_deg になりました。2026-09-22 に、ハンドルのファームウェア 1.3.1 のスタイラスを搭載した Minverse で測定しました。従来の 135 度では、ドッキングされたペンが 45 度不足していたため、
ヨー推定器がそれを補正する必要がありました(観測値は +42〜+50 度)。残差は現在、約 5 度以内に収まっています。段階的なゲートの対象外です(ドック・キャリブレーションの処理経路は常に実行されます)。そのため、ハンドルのファームウェア 1.3.1 以上のすべてのユーザーについて、
ドッキングされたペンの公開される姿勢が 45 度変わります。このバージョンを下回るファームウェアでは、ファームウェアがこの値を無視して姿勢全体を即座に設定するため、これらのユーザーには変化はありません。
state.body_orientation は、デバイスがアイドル状態のときにのみ更新されていたため、アプリケーションが力覚のストリーミングを開始した瞬間に値が固定され、すべての利用者が古いハンドシェイクのスナップショットを読み取っていました。現在は既存のモーションタイマーでポーリングされ、セッション中もリアルタイムに更新されます。
config/torque_scaling、config/gravity_compensation、config/handedness に対する DELETE は、デバイス自身が保存している設定の上に、コンパイル時に組み込まれた工場出荷時定数を書き込んでいました。そのため、「デフォルトにリセット」とデバイスの実際の起動時状態が食い違っていました。config/handedness は、保存されていた値にかかわらず、常に right に設定されていました。現在はこの 3 つすべてで保存された値が復元され、
従来の定数は、デバイスから一度も読み取られていない項目の場合に限り使用されます。
デバイス単位の設定変更 1 回につき、そのデバイスを保持している各セッションごとに 1 件のイベントが発生していました。 ペイロードには session_id、profile、scope しか含まれず、デバイス識別子がなかったため、購読者は複製の発生元を特定することも、一連のイベントを重複排除することもできませんでした。デバイス単位の通知は、デバイスを指定する代替の仕組みが提供されるまで保留されます。セッションごとの更新には変更はありません。
潜在的な破壊的変更 {#potential-breaking-changes}
DELETE config/torque_scaling、config/gravity_compensation、config/handedness は、リセットが何を意味するかを変えています。応答と書き込まれる値は、サービス側の固定定数ではなく、デバイスに保存された設定になりました。応答の形式は変わりません。値が異なるのは、保存された設定が工場出荷時定数と異なるデバイスのみです。ただし、
リテラル定数(false / {enabled: true, scaling_factor: 0.0} / right)を前提としていた連携では、異なる値が返されるようになります。
state.body_orientation は、形式と階層(tier)を変えずに、値の意味が変わります。ストリーミングクライアントにとって実質的に静的だったフィールドが、20 Hz で変化するようになります。アタッチ後は定数として扱っていた利用者は、オプトインなしで新しい動作を目にすることになります。
オプトインしていない `:10020` の購読者は、デバイススコープの書き込みが原因である場合、`config.mount` または `config.body_orientation` の `session-updated` を受信しなくなりました。また、非推奨の旧来のフラットな body_orientation スコープも同じレーンに従うようになり、デフォルトのチャネルに漏れ戻らなくなりました。移行: イベントを更新のトリガーとして扱うのをやめ、
セッションのスナップショットから値を読み取ってください。スナップショットは、保持しているすべてのセッションで、オプトインを一切必要とせずに引き続き更新されます。同等のセッションスコープのイベントや、
handedness / torque_scaling / gravity_compensation の通知は影響を受けません。
ドッキングされたスタイラスの公開される姿勢が 45 度変わります。 これは相互参照のみです。バグ修正であり、「ハイライト」と「修正」で公開されています。ここに記載するのは、ハンドルのファームウェア 1.3.1 以上のすべてのユーザーについて、オプトインなしで観測値が変わるためです。そのため、従来の 135 度の基準値に合わせて独自のアプリケーションを調整していた利用者には、実際の移行作業が必要になります。形式の変更はありません。
非推奨 {#deprecations}
このリリースで新たに追加された非推奨はありません。 devices/*inverse/query_orientation_on_idle は、新しいポーリング間隔がゼロ以外であれば冗長になりますが、3.5.7 では意図的に deprecated としてフラグ付けを行っていません。その非推奨化は 3.6 で予定されています。