3.5.3 (06.08.2026)
Innenausbau
core/log: Makroform „ haply_*“ im Deferred-Format hinzufügen (cf7dbfc), schließt #271Kern: Primitive für „Pivot“ und „Compose/Inverse Transform“ hinzufügen (01080f6), schließt #283Geräte: Zwischenspeicherung der Körperausrichtung 0xE4 und Route trigger_mode (#265) (4864700)Geräte: Kompensation des 0xE4-IMU-Sensor-Frames auf Serverseite (#286) (e6d877c), schließt tapi-prototype-firmware#87 abGeräte: body_orientation bei der Inkwell-Kalibrierung aktualisieren (#268) (89b190b), schließt #286 #286 #286Geräte: Trennung von Live- (0x0C) und Referenz- (0xE4) Körperausrichtung (#286 #315) (638487a), schließt #268 #266 #268 abhttp: Antworten bei nicht unterstützten Protokollen auf 422 ausrichten (e0e7638), schließt #293 #293 #295http: Migration der „echoes“- und „sdf“-Eingaben in Euler-kompatible Patches (#279, #280, #291) (bb29404)http: Zurücksetzen der Geräte-Einbindung bei „Delete scope=device“ (#265) (f6bf26b), schließt #286modules::navigation: Kupplungsmodus für die Bewegungssperre hinzufügen (gated, standardmäßig deaktiviert) (4b69eed), schließt #308 #308 #283 #308modules::navigation: Schaltflächen-Eingabefelder mit „prevent_default“; Kupplung „force_scale“; Bubble „Hold-to-Navigate“ (fb216aa), schließt #317 #318 #316 #317 #318modules::navigation: Obergrenzen für „clutch max_motion“ und „force_scale“ (a946088), schließt #316modules::navigation: gespiegelte Funktions-Kill-Schalter, beide standardmäßig aktiviert (b6ee0c0), schließt #318modules::navigation: Patches für die Einstellungen pro Eingabe in inputs[]; Bubble sendet „status.engaged“ (ba2058f), schließt #318Protokoll: Aufteilung der Capability-Datei, Dämpfungsgate, Basis-Hoist (30d7d5d), schließt #293Protokoll: Capability-Tabelle + einzelner nicht unterstützter Emitter (289382e), schließt #293 und #295 abProtokoll: gate home_return + pen_attached über Tabelle (8a05d20), schließt #293Protokoll: Einführung von „fw_version“ und Umstellung der Versionsprüfungen (38c2cae), schließt #293Serialisierung: Die Maske für die Griff-Schaltfläche in den Sitzungsdurchläufen der Version 3.1 anwenden (7b93e35), schließt #316Serialisierung: Ausgabe von Euler-Werten bei „config.mount“-Rotationen unter „euler.output“ (#268) (f6b54a2)Serialisierung: Ausgabe von Euler-Werte bei Transformationsrotationen unter „euler.output“ (96c6cc9), schließt #283Serialisierung: „workspace zoom-about-pivot“ bei „set_transform“ verfügbar machen (#309) (c1d08fc), schließt #280Serialisierung: „config/body_orientation“ im Trigger-Modus flach darstellen (#265) (8781b8a), schließt #268Serialisierung: Umwandlung von Reglern in sitzungsspezifische `serial_options` (#280) (03b2fd6)Serialisierung: „config/mount“ in „scope“ und „body_orientation“ aufteilen (#265) (5618839), schließt #280Serialisierung: Thread-Sitzungsoptionen über Ausgänge und Steuerung der verschachtelten Umformung (#279, #280) (59984ce), schließt #265Serialisierung: Vereinheitlichung von WS und HTTP, Konfiguration der Dekodierung (#280) (6076917)Sitzungen: Hinzufügen eines generischen Mechanismus zur Bewegungssperre mit der Möglichkeit, diese zu deaktivieren (c8d2a93), schließt #304Sessions: Hinzufügen von „live_motion“-Bewegungssperre pro Tick (gated) (d29013c), schließt #308, #304 und #308Sitzungen: Hinzufügen von Sitzungsbeobachtern auf Managementebene mit Übermittlung in der Hauptschleife (83e76ef), schließt #284Sitzungen: „mount reparent“ und „workspace zoom-about-pivot“ hinzugefügt (294d6e8), schließt #265, 297, #272 und #304Sitzungen: Ereignisbereich „config.body_orientation“ mit Namespace hinzufügen; Warnung bei Eingabe veralteter „Werte“ (3f70047), schließt #320Sitzungen: Vorschau für Konfiguration/Einbindung der Quelle und Trigger-Routing hinzufügen (#265) (5d11dbf), schließt #268Sitzungen: Einbinden und Laden von Geräten im Einbindebereich (#265) (4cec178), schließt #292Sitzungen: Verallgemeinerung von „set_workspace_transform_around“ mit Pivot-Echo (0b242a2), schließt #309Sitzungen: Griff-Button-Maske + „force_scale“-Overlay-Mechanismen (836ef2f), schließt #316Sitzungen: Tracy-Sitzungsdiagramme mit Kundenprofil beschriften (72a8f34), schließt #258Sitzungen: Mount-Scope-Routing + virtuelle Speichersysteme (#265) (9a4e7f4), schließt die Einträge nach #286 und #293 abSitzungen: „force_scale“-Ducking pro Sitzung (Vorschau) (bff66ad)Fehlerbehebungen
ci: Toolchain zur Freigabe von Pins zur Wiederherstellung der Änderungsprotokolle (72c6773), schließt #313Kompilierungskorrektur mit neuer Glaze (e2c53d3)deps: „rust crate nix“ auf 0.31 (b3b9a84) aktualisierenGeräte: Das „safety-config“-Protokoll am Send-Chokepoint steuern (b8e8401), schließt #295Geräte: „guard safety-config“ schreibt die Firmware-Version und die Kalibrierung (5ad5128) und schließt #295Geräte: Die Leitung „inverse3“ während des Stabilisierungsfensters beim Aufwachen aktiv halten (4afed45)Geräte: „inverse3“-Leitung während des Wakeup-Einstellfensters aktiv halten (79c2b66)Geräte: Unterdrückung der [Sicherheits-]Akkubenachrichtigung bei kabelgebundenen Verse-Griffen (ea54a1a), schließt #314http: Überprüfung der Kalibrierung bei sicherheitsrelevanten Schreibvorgängen im Session-Bereich (89f9cd7), schließt #295 #293http: Euler-Rotationen gemäß Sitzungskonventionen zusammenfassen (#288) (97cf203)inverse_ux: Verarbeitung von „calibration_notifier“ auf Minverse beschränken (418913f)Bereinigung der Lebensdauer, um Abstürze zu verhindern (e7b3785)modules::inverse-ux: Bei einer Firmware-Blockierung wird immer „calibration-failed“ ausgegeben (3841d06)modules::inverse-ux: Erneutes Koppeln nach dem Austauschen eines gekoppelten Geräts (cf85707), schließt #278modules::sdf: SDF-Transformation „euler“ gemäß den Sitzungskonventionen anwenden (#291) (9741ac6)modules::sdf: Ausrichtung von SDF-Formen im Client-Koordinatensystem (c29e4f2), schließt #276Protokoll: Beseitigung von Timer-Lebensdauer-Wettläufen, die zum Absturz oder zum Einfrieren des Dienstes führen (0cb019b), schließt #303Protokoll: Serielle Puffer beim Öffnen des Ports leeren, um im laufenden Betrieb ausgetauschte Geräte zu erkennen (b8724d9)Protokoll: Schutz der Firmware-Client-Callbacks vor Race-Conditions bei der Gerätevernichtung (3d795bb), schließt #303Protokoll: Neufassung der 0xE4-IMU-Orientierungs-API mit typisierter Aufzählung und korrektem Datenübertragungsformat (8733ec0)Zurück zur Startseite für „Inverse3x“ – BIA-Hub aktivieren/deaktivieren (f435454)Dienst: Adaptive Zuweisung standardmäßig deaktiviert (9415638)service: Den Abbau des Dienstes geordnet, begrenzt und wettlaufsicher gestalten (ff888d7), schließt #303Sitzungen: Mitte *_zentriert* Voreinstellungen für den tatsächlich erreichbaren Mittelpunkt (ad6e726), schließt #321Sitzungen: Automatisches Übertragen der Siggraph-Arbeitsbereichsgrenzen bei einer Änderung des Mounts deaktivieren (2df1654)Sitzungen: Das erzwungene Entleeren beim Schließen einer Sitzung für ein Gerät, das noch von einer aktiven Sitzung angesteuert wird, wird übersprungen (e1f9ff7), schließt #324Sitzungen: stop start() löscht die bei der Verbindung ausgehandelten serial_options (#290) (27e27d8)Sitzungen: Transformationsgeschwindigkeit des Arbeitsbereichs nach „set_transform“ gleich Null (133c3ad), schließt #280WebSocket: Befehle gemäß den Konventionen der Absendersitzung dekodieren (#289) (1b24049), schließt #265Leistungsverbesserungen
core/log: Gate- haply-_*-Makros, sodass fmt::format bei deaktivierter Option übersprungen wird (672a87a), schließt #270modules::sdf: SDF einmalig bei der Erstellung statt pro Tick berechnen (15350c5), schließt #277