3.5.1 (2026-05-28)
Interne Verbesserungen
core/gates: backoff_time_gate + Zähler für unterdrückte Treffer (cc989c0), closes #244core/gates: streak_gate + schlüsselbasierte Varianten (748f419), closes #244devices: Ladeanzeige für den wireless verse grip ergänzt (6482bd6)devices: Bewegungsstatus von inverse3 mit 20 Hz abfragen (bfc160d)devices: v3.1-Serialisierung für das Debug-Log des ready-Snapshots verwenden (0c59c26)http: GET auf exakter Route für erweiterte und veraltete Einstellungen zulassen (2b5f037)http: Sichtbarkeit von GET /settings über ein Flag steuern (4f013d8), closes #251modules::inverse-ux: paired_with.auto hinter dem preview_mode-Gate verfügbar machen (1f7f0e1), closes #230serialization: globales Flag preview_mode für Felder vor der Veröffentlichung hinzufügen (422e822), closes #230serialization: Euler-Darstellung zu v3.1-Quaternionen hinzufügen (c32dd6b), closes #239serialization: expliziter quaternion-Konstruktor + Core-Zuweisungsoperator (677ed6f)sessions: Drosselung von Streaming-Antworten im Sub-Millisekundenbereich zulassen (9a42719)sessions: /sessions-Erweiterung v3.1, nur im Vorschaumodus (6c1c8f2)settings: misc/deprecated als erweiterte Einstellung hochstufen (b3528d7)tutorials: Prototyp für die Frame-Prüfung bei Streaming-Antworten (6b57c39)Fehlerbehebungen
command_processor: Moduswechsel beim Tausch von Force/Position verhindern (d754ef1), closes #232command_processor: einmaliges Inline-Leeren von der ZOH-gehaltenen Steuerung trennen (5960498), closes #117core::gates: schlüsselbasiertes Zeit-Gate berücksichtigt pro Treffer die jeweils letzte Periode (c73b86a)detection: Log der ersten Injektion von extra_ports konsolidieren (57e21d7)detection: Log-Gating pro Port über keyed_gate (04b8d54), closes #243devices: wireless verse grip erst nach den Handle-Informationen als bereit markieren (dfd7d5d)devices: set_extension_data für den wireless verse_grip ratenbegrenzen (011d5a0)http: Geräteauswahl akzeptiert "#1234" und "1234" als Geräte-ID (1452c10)http: ungenutztes Kontextfeld entfernen, das den Release-Build von macOS blockierte (-Wunused-private-field) (5345989)modules::inverse-ux: automatisch koppeln, wenn 1 Inverse3 und 1 Grip verbunden sind (41b3024), closes #227 #227modules::inverse-ux: automatische Kopplungen verwerfen, wenn die Topologie über 1↔1 hinauswächst (e4fb80c)modules::inverse-ux: force_attached-Override bei der Minverse-Kalibrierung berücksichtigen (e24bf84), closes #224modules::inverse-ux: paired_with attached ist für Minverse und beim ersten POST immer [secure] (cafb574)modules::inverse-ux: Kopplungsregister pro Gerät für Inverse3 ↔ VerseGrip (ac63d2a), closes #224modules::inverse-ux: POST- und DELETE-Routen für paired_with geben den berechneten attached-Status zurück (a751208)Wiederholte Warnungen verhindern, wenn der Dienst versucht, ein Nicht-WVG-Gerät als WVG zu erkennen (17ad373)protocol::inverse3: Benachrichtigungs-Payloads 0xBA mit variabler Länge verarbeiten (61f7b1f)service: Geräteauswahl-Klassen zusammen mit dem Index anwenden (2d6422a)service: Geräteauswahl-Ausdruck in 404-Meldungen erhalten (d2c4626)sessions: apply_preset setzt den Mount bei defaults / arm_front zurück (a333da8), closes #240sessions: auf das eigene Ziel zurückfallen, wenn die sitzungsübergreifende ID unbekannt ist (14367ed), closes #239sessions: Antwort mit vollständigem Snapshot bei sitzungsübergreifendem force_render_full_state (8afc646)sessions: execute:[secure] bei session.configure.serialization berücksichtigen (3458af0)sessions: Geräte-Mount beim Anwenden der Voreinstellungen defaults / arm_front geleert lassen (698008b), closes #252 #253sessions: Mount bei den Voreinstellungen defaults / arm_front auf Identität zurücksetzen (a0a2b29), closes #240sessions: WS-Antwort bei gedrosseltem Streaming-Snapshot wiederherstellen (787a656), closes #248sessions: WS-RX-Hot-Path unter anhaltender Simulationslast entlasten (e4e55d0)Leistungsverbesserungen
command_processor: WS-RX-Fast-Path für reine Steuerungs-Batches (92bb4e8), closes #241engine: adaptive Dispatch-Rate mit AIMD-Dämpfung konvergieren lassen (b8fc1c8), closes #249main_loop: asio-Queue mit einer Obergrenze für laufende Ticks begrenzen (8d77823)serialization: Vorschau-Optionen in einer statischen Struktur zwischenspeichern (8698636), closes #241sessions: Konkurrenz um session::_mutex auf Hot Paths reduzieren (bf117c8), closes #241 #242sessions: ZoneScoped für Tracy bei Geräteaufrufen der Sitzung setzen (7404990)