3.5.3 (06.08.2026) {#353-2026-08-06}
Interne Verbesserungen {#internal-improvements}
core/log: Neues Makro „ haply_*“ für verzögerte Formatierung hinzugefügt (cf7dbfc), schließt #271Kern: Neue Primitive „pivot“ sowie „compose“ und „inverse“ hinzugefügt (01080f6), schließt #283Geräte: Zwischenspeicherung der Körperausrichtung 0xE4 und Weiterleitung des trigger_mode (#265) (4864700)Geräte: Kompensation des 0xE4-IMU-Sensorkoordinatensystems auf dem Server (#286) (e6d877c), schließt „tapi-prototype-firmware#87“ abGeräte: Aktualisierung von „body_orientation“ bei der Inkwell-Kalibrierung (#268) (89b190b), schließt #286 #286 #286Geräte: Trennung von Echtzeit- (0x0C) und Referenz- (0xE4) Körperausrichtung (#286 #315) (638487a), schließt #268 #266 #268http: Antworten, die das Protokoll nicht unterstützen, werden einheitlich mit 422 zurückgegeben (e0e7638), schließt #293 #293 #295http: Patch zur Umstellung der „transform“-Ausgabe und der SDF-Eingabe auf Euler-Unterstützung (#279, #280, #291) (bb29404)http: Zurücksetzen der Gerätezuordnung bei „Delete scope=device“ (#265) (f6bf26b), schließt #286modules::navigation: Hinzufügen eines „Clutch“-Modus zur Bewegungssperre (über Schalter steuerbar, standardmäßig deaktiviert) (4b69eed), schließt #308 #308 #283 #308modules::navigation: Schaltfläche mit „prevent_default“; clutch force_scale; Bubble: Navigation durch langes Drücken (fb216aa), schließt #317 #318 #316 #317 #318modules::navigation: Festlegen der Obergrenze für max_motion/force_scale für „clutch“ (a946088), schließt #316modules::navigation: Die Funktion „Kill Switch“ für Spiegel, beide sind standardmäßig aktiviert (b6ee0c0), schließt #318modules::navigation: Wendet den Einstellungs-Patch auf jede Eingabe in inputs[] an; „bubble“ gibt „status.engaged“ aus (ba2058f), schließt #318Protokoll: Aufteilung der Capability-Datei, Hinzufügen einer Damping-Steuerung und Anhebung des Basiswerts (30d7d5d), schließt #293Protokoll: Capability-Tabelle + einheitlicher „Nicht unterstützt“-Antwort-Sender (289382e), schließt #293 und #295 abProtokoll: Gating von „home_return“ und „pen_attached“ über eine Tabelle (8a05d20), schließt #293Protokoll: Einführung von „fw_version“ und Umstellung der Versionsprüfung (38c2cae), schließt #293Serialisierung: Anwendung der Griff-Tastenmaske im v3.1-Sitzungskanal (7b93e35), schließt #316Serialisierung: Ausgabe von „euler“ unter „euler.output“ für „config.mount“ drehen (#268) (f6b54a2)Serialisierung: Unter „euler.output“ wird die Ausgabe von „euler“ für „transform“ gedreht (96c6cc9), schließt #283Serialisierung: „Zoom-about-Pivot“ im Arbeitsbereich für „set_transform“ freigeschaltet (#309) (c1d08fc), schließt #280Serialisierung: Vereinfachung des `trigger_mode` von `config/body_orientation` (#265) (8781b8a), schließt #268Serialisierung: Den Parameter „transform“ auf die „serial_options“ jeder Sitzung anheben (#280) (03b2fd6)Serialisierung: Aufteilung von „config/mount“ in „scope“ und „body_orientation“ (#265) (5618839), schließt #280Serialisierung: Die Sitzungsoptionen werden in die Ausgabe übernommen, und verschachtelte „reshape“-Anweisungen werden gefiltert (#279, #280) (59984ce), schließt #265Serialisierung: Vereinheitlichung der Dekodierung von „configure“ für WS und HTTP (#280) (6076917)Sessions: Einführung eines generischen Mechanismus zur Bewegungssperre ohne „Bake“ (c8d2a93), schließt #304Sitzungen: „live_motion“ hinzugefügt – Bewegung, die Tick für Tick voranschreitet (über Schalter gesteuert) (d29013c), schließt #308, #304, #308Sitzungen: Neuer Beobachter auf Manager-Ebene hinzugefügt, der über die Hauptschleife übermittelt wird (83e76ef), schließt #284Sitzungen: Neue Funktionen „reparent“ und „workspace zoom-about-pivot“ hinzugefügt (294d6e8), schließt #265, 297, #272 und #304Sitzungen: Neuer, namensraumbasierter Geltungsbereich für das Ereignis „config.body_orientation“; Warnung bei Eingaben im alten Format „values“ (3f70047), schließt #320Sitzungen: Neue Vorschau für „config/mount“-Quellen und Trigger-Routing hinzugefügt (#265) (5d11dbf), schließt #268Sitzungen: Speichern und Laden von Geräte-Mounts im Mount-Bereich (#265) (4cec178), schließt #292Sitzungen: Verallgemeinerung von `set_workspace_transform_around` und Hinzufügen einer Pivot-Ausgabe (0b242a2), schließt #309Sitzungen: Neue Maske für Griff-Schaltflächen und Überlagerungsmechanismus für „force_scale“ (836ef2f), schließt #316Sitzungen: Hinzufügen des Client-Profil-Tags zum Sitzungsdiagramm von Tracy (72a8f34), schließt #258Sitzungen: Einbinden von Scope, Routing und Speicherung virtueller Einträge (#265) (9a4e7f4), schließt die Beiträge #286 und #293 abSitzungen: „force_scale“-Abklingzeit pro Sitzung (Vorschau) (bff66ad)Fehlerbehebungen {#bug-fixes}
ci: Festlegung der Build-Pipeline zur Wiederherstellung der Erstellung des Update-Protokolls (72c6773), schließt #313Behebung eines Kompilierungsproblems in der neuen Version von „glaze“ (e2c53d3)deps: rust crate nix auf 0.31 (b3b9a84) aktualisierenGeräte: Steuerung des „safety-config“-Protokolls am Eingangsport (b8e8401), schließt #295Geräte: Schutz beim Schreiben in „safety-config“ je nach Firmware-Version und Kalibrierungsstatus (5ad5128), schließt #295Geräte: Aufrechterhaltung der inverse3-Kommunikationsverbindung während des Stabilisierungsfensters (4afed45)Geräte: Aufrechterhaltung der „inverse3“-Kommunikationsverbindung während des Stabilisierungsfensters beim Aufwachen (79c2b66)Geräte: Unterdrückung der [secure]-Akkustandsmeldung bei kabelgebundenen Verse Grips (ea54a1a), schließt #314http: Überprüfung der Sicherheit von Schreibvorgängen im Sitzungsbereich (89f9cd7), schließt #295 #293http: Normalisierung der Euler-Rotation gemäß der Sitzungskonvention (#288) (97cf203)inverse_ux: Die Verarbeitung von „calibration_notifier“ auf Minverse beschränken (418913f)Lebenszyklusbereinigung zur Vermeidung von Abstürzen (e7b3785)modules::inverse-ux: Bei einer Firmware-Sperre wird immer „calibration-failed“ ausgegeben (3841d06)modules::inverse-ux: Erneutes Koppeln nach dem Austausch eines bereits gekoppelten Geräts (cf85707), schließt #278modules::sdf: Normalisierung von Euler bei der SDF-Transformation gemäß der Sitzungskonvention (#291) (9741ac6)modules::sdf: Korrekte Ausrichtung der SDF-Form im clientseitigen Koordinatensystem (c29e4f2), schließt #276Protokoll: Beseitigung von Lebenszykluskonflikten bei Timern, die zu einem Absturz oder einem Hängenbleiben des Dienstes führen (0cb019b), schließt #303Protokoll: Beim Öffnen des Ports wird der Puffer der seriellen Schnittstelle aktualisiert, um Hot-Swap-Geräte zu erkennen (b8724d9)Protokoll: Schutz für Firmware-Client-Callbacks hinzufügen, um einen Wettlauf um die Gerätevernichtung zu verhindern (3d795bb), schließt #303Protokoll: Neuschreiben der 0xE4-IMU-Ausrichtungs-API unter Verwendung typisierter Aufzählungen und des korrekten Übertragungsformats (8733ec0)Rückkehr zur Startseite, wenn inverse3x über den BIA-Hub aktiviert/deaktiviert wird (f435454)Dienst: Adaptive Verteilung ist standardmäßig deaktiviert (9415638)service: Gewährleistet, dass das Beenden des Dienstes geordnet, begrenzt und konkurrenzfrei erfolgt (ff888d7), schließt #303Sitzungen: wird *_zentriert* Voreingestellte Zentrierung auf den tatsächlich erreichbaren Mittelpunkt (ad6e726), schließt #321Sitzungen: Automatische Übertragung der Siggraph-Arbeitsbereichsgrenzen bei Änderungen der Einbindung entfernen (2df1654)Sitzungen: Bei Geräten, die weiterhin von aktiven Sitzungen gesteuert werden, wird das erzwungene Leeren beim Schließen der Sitzung übersprungen (e1f9ff7), schließt #324Sitzungen: stop start() Löscht die bei der Verbindung ausgehandelten serial_options (#290) (27e27d8)Sitzungen: Nach „set_transform“ wird die Geschwindigkeit der Arbeitsbereichstransformation auf Null gesetzt (133c3ad), schließt #280WebSocket: Befehle gemäß den Konventionen der sendenden Sitzung dekodieren (#289) (1b24049), schließt #265Leistungsverbesserungen {#performance-improvements}
core/log: Gesteuerte Verwendung des Makros „ haply_*“; bei Deaktivierung wird „fmt::format“ übersprungen (672a87a), schließt #270modules::sdf: SDF wird einmalig beim Erstellen gebacken, statt bei jedem Tick (15350c5), schließt #277