3.5.3 (06/08/2026) {#353-2026-08-06}
Améliorations internes {#internal-improvements}
core/log : ajout d'un format de retard haply_* sous forme de macro (cf7dbfc), clôture le ticket n° 271core : ajout des primitives « pivot » et « compose/inverse » (01080f6), clôture du ticket n° 283périphériques : cache d'orientation du corps 0xE4 et routage du mode de déclenchement (#265) (4864700)Périphériques : correction de la trame du capteur IMU 0xE4 côté service (#286) (e6d877c), clôture de tapi-prototype-firmware#87appareils : mise à jour de `body_orientation` lors de l'étalonnage d'Inkwell (#268) (89b190b), clôture des tickets #286 #286 #286appareils : séparation de l'orientation du corps en temps réel (0x0C) et de référence (0xE4) (#286 #315) (638487a), clôture des tickets #268 #266 #268http : uniformisation des réponses aux protocoles non pris en charge avec le code 422 (e0e7638), clôture des tickets #293, #293 et #295http : migration des entrées « transform », « echo » et « sdf » vers le patch de prise en charge d'Euler (#279, #280, #291) (bb29404)http : Réinitialisation du montage de l'appareil lors de la suppression de scope=device (#265) (f6bf26b), clôture le ticket #286modules::navigation : ajout du mode « clutch » au verrouillage de mouvement (application de la condition « gate », désactivé par défaut) (4b69eed), clôture les tickets #308 #308 #283 #308modules::navigation : ajout du bouton « prevent_default » ; force_scale pour l'embrayage ; prise en charge de la navigation par maintien du doigt (fb216aa) ; clôture des tickets n° 317, 318, 316, 317 et 318modules::navigation : définition des limites supérieures pour max_motion/force_scale de l'embrayage (a946088), clôture du ticket n° 316modules::navigation : « Kill Switch » des fonctionnalités en miroir, les deux activés par défaut (b6ee0c0), clôture le ticket n° 318modules::navigation : correctif concernant les paramètres par entrée pour inputs[] ; la bulle émet status.engaged (ba2058f), clôture le ticket n° 318protocole : séparation des fichiers de capacités, porte d'atténuation, élévation de la base (30d7d5d), clôture du ticket n° 293protocole : table des capacités + un seul émetteur non pris en charge (289382e), clôture des tickets n° 293 et 295protocole : application des portes « home_return » et « pen_attached » via le tableau (8a05d20), clôture du ticket n° 293protocole : migration vers l'introduction de fw_version et la vérification de la version (38c2cae), clôture du ticket n° 293sérialisation : v3.1 – Application du masque du bouton « grip » à la barre de session (7b93e35), clôture le ticket n° 316sérialisation : publication des valeurs d'Euler dans le paramètre « config.mount rotation » de la sous-configuration « euler.output » (#268) (f6b54a2)sérialisation : émission des valeurs d'Euler pour la transformation de rotation « euler.output » (96c6cc9), clôture du ticket n° 283sérialisation : exposition de « workspace zoom-about-pivot » dans set_transform (#309) (c1d08fc), clôture du ticket #280sérialisation : config/body_orientation trigger_mode aplatissement (#265) (8781b8a), clôture #268sérialisation : promotion du paramètre « transform » au rang de « serial_options » par session (#280) (03b2fd6)sérialisation : séparation de « config/mount » en « scope » et « body_orientation » (#265) (5618839), clôture le ticket #280sérialisation : transmission des options de session à l'ensemble de la sortie et application d'une porte aux transformations « reshape » imbriquées (#279, #280) (59984ce), clôture le ticket #265sérialisation : harmonisation du décodage pour les configurations WS et HTTP (#280) (6076917)sessions : ajout d'un mécanisme universel de verrouillage des mouvements, incluant la fonction « disengage bake » (c8d2a93), clôture du ticket n° 304sessions : ajout de « live_motion » : verrouillage du mouvement par incréments d'un tick (application d'une porte) (d29013c), clôture des tickets #308, #304 et #308sessions : ajout d'un observateur de session au niveau du gestionnaire utilisant le mécanisme de transmission de la boucle principale (83e76ef), clôture le ticket n° 284sessions : ajout des fonctionnalités « reparent » pour les montages et « zoom-about-pivot » pour l'espace de travail (294d6e8), clôture des tickets #265, 297, #272 et #304sessions : ajout de la portée d'événement `config.body_orientation` avec application d'un espace de noms ; avertissement concernant l'entrée héritée « values » (3f70047), clôture du ticket n° 320sessions : ajout d'un aperçu de la configuration / du montage des sources et du routage des déclencheurs (#265) (5d11dbf), clôture le ticket #268sessions : enregistrement/chargement du montage des périphériques dans l'espace de montage (#265) (4cec178), clôture du ticket #292sessions : généralisation de « set_workspace_transform_around » incluant « pivot echo » (0b242a2), clôture du ticket n° 309sessions : mécanisme de superposition « grip button mask » + « force_scale » (836ef2f), clôture le ticket n° 316sessions : ajout d'étiquettes au graphique des sessions de Tracy en fonction du profil du client (72a8f34), clôture du ticket n° 258sessions : routage et virtualisation du stockage au niveau du montage (#265) (9a4e7f4), clôture des tickets post-#286 et #293sessions : ajustement de la force_scale par session (aperçu) (bff66ad)Corrections de bogues {#bug-fixes}
ci : fixation de la chaîne d'outils de publication pour la restauration du journal des modifications (72c6773), clôture du ticket n° 313Correction de la compilation pour la prise en charge de « 새 » dans Glaze (e2c53d3)dépendances : mise à jour de rust crate nix vers la version 0.31 (b3b9a84)Périphériques : application d'une règle de filtrage au protocole safety-config au niveau des goulots d'étranglement de transmission (b8e8401), clôture du ticket n° 295Périphériques : protection en écriture de safety-config en fonction de la version du micrologiciel et des paramètres d'étalonnage (5ad5128), clôture du ticket n° 295Périphériques : maintenir la connexion inverse3 wire pendant la phase de stabilisation au réveil (4afed45)Périphériques : maintien de la connexion inverse3 wire pendant la phase de stabilisation au réveil (79c2b66)appareils : suppression des notifications de batterie [secure] sur le Verse Grip filaire (ea54a1a), clôture du ticket n° 314http : Vérification de l'étalonnage lors de l'écriture dans la zone de sécurité de la session (89f9cd7), clôture des tickets n° 295 et n° 293http : Intégration des valeurs de rotation d'Euler conformément au protocole de session (#288) (97cf203)inverse_ux : limitation du traitement de calibration_notifier à Minverse (418913f)Nettoyage des objets « lifetime » pour éviter les plantages (e7b3785)modules::inverse-ux : émission systématique d'un message « calibration-failed » lorsque le micrologiciel bloque le système (3841d06)modules::inverse-ux : remplacement d'un appareil appairé suivi d'un nouvel appairage (cf85707), clôture #278modules::sdf : Intégration de la transformation SDF Euler conformément au protocole de session (#291) (9741ac6)modules::sdf : Orientation des figures SDF en fonction du système de coordonnées du client (c29e4f2), clôture du ticket n° 276protocole : suppression d'une situation de concurrence liée à la durée de vie des temporisateurs pouvant entraîner un plantage ou un blocage du service (0cb019b), clôture du ticket n° 303Protocole : détection des périphériques remplaçables à chaud grâce au vidage du tampon série lors de l'ouverture du port (b8724d9)protocole : protection des rappels du client du micrologiciel contre les situations de concurrence liées à la disparition d'un périphérique (3d795bb), clôture du ticket n° 303protocole : réécriture de l'API d'orientation IMU 0xE4 avec une énumération de type spécifié et un format de transmission valide (8733ec0)Retour à la page d'accueil concernant l'activation/la désactivation du concentrateur BIA inverse3x (f435454)service : désactivation de la valeur par défaut de la répartition adaptative (9415638)service : amélioration de la fermeture du service selon un mode garantissant l'ordre, borné et sans condition de concurrence (ff888d7), clôture le ticket n° 303sessions : en fonction d'un centre réellement accessible *_centré* Alignement central des préréglages (ad6e726), clôture du ticket n° 321sessions : suppression automatique des poussées aux limites de l'espace de travail SIGGRAPH lors d'un changement de montage (2df1654)sessions : pour les appareils encore en cours d'exécution lors d'une session en direct, ignorer le « force drain » de la session en cours de fermeture (e1f9ff7), clôture le ticket n° 324sessions : correction d'un problème où la fonction start() effaçait les options serial_options négociées lors de l'établissement de la connexion (#290) (27e27d8)sessions : après `set_transform`, la vitesse de transformation de l'espace de travail est définie sur 0 (133c3ad), clôture le ticket n° 280websocket : décodage des commandes conformément au protocole de la session émettrice (#289) (1b24049), clôture le ticket #265Améliorations des performances {#performance-improvements}
core/log : application d'une condition de contrôle à la macro haply_* pour ignorer fmt::format lorsqu'elle est désactivée (672a87a), clôture le ticket n° 270modules::sdf : Cuisson SDF effectuée une seule fois lors de la création, et non lors du « tick » (15350c5), clôture du ticket n° 277