v3.5.3
La version 3.5.3 est une version corrective. Les principales modifications concernent un appairage automatique plus intelligent, qui réappaire les appareils lorsque vous remplacez l'un des deux éléments d'un ensemble Inverse3 + poignée appairé ; la suppression des fausses alertes de batterie sur les Verse Grip filaires ; des vérifications fiables des capacités du micrologiciel, qui ne suppriment plus silencieusement les commandes non prises en charge ; un voyant d'état plus stable lors de la connexion ; et un arrêt et un redémarrage du service sans plantage. Elle intègre également plusieurs correctifs concernant les appareils et la sérialisation, ainsi que quelques remarques sur les données transmises au niveau des octets.
Points forts
- L'appairage automatique réapparaît lorsque vous remplacez l'un des deux appareils d'un ensemble. Lorsqu'un appareil d'un ensemble « Inverse3 + Verse Grip » appairé automatiquement est remplacé, le SDK supprime désormais l'appairage obsolète et réapparaît l'ensemble avec le nouvel appareil connecté. Les appairages manuels ne sont pas modifiés.
- Fin des fausses alertes de batterie sur les Verse Grip filaires. Les alertes de batterie faible et critique ne se déclenchent désormais que pour les Verse Grip connectés sans fil ; un Verse Grip filaire ne génère plus d'alerte erronée de batterie faible ou critique.
- Vérifications fiables des capacités du micrologiciel. Lorsqu'on demande à un appareil d'exécuter une fonction haptique que son micrologiciel est trop ancien pour prendre en charge — amortissement uniforme ou directionnel sur un micrologiciel antérieur à la version 7.5, retour à la position d'origine sur un micrologiciel antérieur à la version 7.4 —, la requête renvoie désormais un code HTTP 422 accompagné d'un événement
device-protocol-unsupported, au lieu d'un 200 trompeur qui ignorait la requête sans le signaler. - Voyant d'état plus stable lors de la connexion. Le voyant d'état Inverse3 ne clignote plus en rouge à chaque connexion ou reconnexion : la connexion est maintenue pendant la période de stabilisation d'environ 5 secondes qui suit la sortie du mode veille, de sorte que le mécanisme de surveillance de la connexion intégré au micrologiciel ne se déclenche plus.
- Arrêt et redémarrage du service sans plantage. L'arrêt et le redémarrage du service ne provoquent plus de plantage ni de blocage ; le processus d'arrêt et de redémarrage a été repensé afin d'éliminer les plantages et les blocages observés lors de l'activation et de la désactivation du service.
Améliorations internes
- Mode de navigation à embrayage (expérimental, désactivé par défaut). Nouveau mode de navigation permettant à un opérateur de réduire ou de figer complètement le mouvement que le service transmet à la scène tandis que l'appareil physique continue de se déplacer — un mode « précis » à demi-vitesse pour le positionnement fin et un gel complet pour repositionner l'espace de travail —, puis d'intégrer le décalage accumulé à l'espace de travail au moment du relâchement, afin que le curseur de la scène ne fasse jamais de saut. Le retour de force se poursuit à tous les rapports. À activer explicitement pour ce cycle ; le format de transmission par défaut reste inchangé.
- Mise à l'échelle des forces limitée à la session (préversion). Un client peut réduire à zéro le retour haptique d'une session de simulation — par exemple lors de l'ouverture d'un menu radial — et céder le contrôle de l'appareil au Hub, afin que les retours haptiques du menu suivent le chemin de contrôle normal ; la restauration s'effectue automatiquement à la fermeture de la session ou du menu. Disponible uniquement en préversion pour ce cycle ; le format de transmission par défaut reste inchangé.
- Zoom de l'espace de travail autour d'un point de pivot (fonctionnalité expérimentale). Transmettez un point de pivot (par exemple le curseur en temps réel) lors de la mise à jour de la transformation de l'espace de travail : la vue est alors mise à l'échelle autour de ce point, de sorte que sa position à l'écran reste fixe — un zoom instantané vers le curseur. Disponible uniquement pour Inverse3 ; expérimental pour ce cycle, le format de transmission par défaut reste donc inchangé.
- Mise à niveau du moteur de sérialisation JSON (glaze) vers la version 7.8.4. Infrastructure uniquement — aucune modification de l'API publique ni du comportement. Un reformatage du texte des nombres à virgule flottante, sans incidence sur les valeurs, est également inclus ; voir « Modifications potentiellement incompatibles » ci-dessous.
Corrections
- La modification ou la réinitialisation de la transformation de montage d'un appareil ne risque plus de provoquer un plantage. Une partie de code prototype résiduelle déclenchait une exception de délimitation de l'espace de travail du micrologiciel à chaque changement de montage ; cette partie de code a été supprimée.
- L'orientation du corps est mise à jour après un recalibrage sur la station Inkwell. Après une remise en place sur la station Inkwell et un recalibrage, l'orientation du corps transmise est désormais mise à jour à partir de l'appareil, au lieu d'afficher les valeurs antérieures au calibrage jusqu'à la prochaine reconnexion. Nécessite un micrologiciel de l'appareil à jour ; le format de transmission reste inchangé.
- Minverse indique toujours un étalonnage bloqué. Minverse émet désormais un événement
device-calibration-failedchaque fois que le micrologiciel signale un calibrage bloqué — y compris dans le cas limite d'un capteur à effet Hall oscillant, qui masquait auparavant l'échec sans le signaler —, de sorte que le Gestionnaire de périphériques affiche toujours le message « Calibration failed ». - Les préréglages centrés placent l'origine au véritable centre accessible de l'espace de travail.
arm_front_centeredetled_front_centered(Inverse3 / Inverse3x) étaient alignés sur l'axe de l'articulation du bras, qui n'est pas centré dans l'enveloppe d'action ; ainsi,set_cursor_positionà l'origine{0, 0, 0}était décalé par rapport au centre. L'origine centrée de Minverse était en outre située environ 10 mm trop à droite. Chaque décalage correspond désormais à la moitié de la plage atteignable sur chaque axe, mesurée en excluant les zones limites des ressorts de sécurité du micrologiciel plutôt que la plage mécaniquement possible. (Voir la note sur le déplacement de l'origine dans la section « Modifications potentiellement incompatibles ».)
Modifications potentiellement incompatibles
POST/DELETE /config/filters/dampingsur un micrologiciel antérieur à la version 7.5 renvoie désormais le code HTTP 422 à l'occasion d'un événementdevice-protocol-unsupported, au lieu d'un code 200 qui ignorait silencieusement l'écriture. Le micrologiciel 7.5 et les versions plus récentes ne sont pas concernés (la réponse reste 200). Migration : mettez à jour le micrologiciel de l'appareil vers la version 7.5 ou une version plus récente, ou traitez le code 422.POST/DELETE /home_returnsur un micrologiciel qui ne prend pas en charge cette commande (antérieur à la version 7.4), renvoie désormais le code HTTP 422 au lieu d'un 200 inconditionnel. Seuls les appareils équipés d'un ancien micrologiciel sont concernés. Migration : mettez à jour le micrologiciel vers la version 7.4 ou une version plus récente, ou traitez le code 422.- Les retours de commande sur
config/mountetstate/transformLes méthodes (GET/POST/PATCH/DELETE) sont désormais sérialiséestransform.rotationpar ordre de clés{w,x,y,z}au lieu de{x,y,z,w}, afin de respecter l'ordre de rotation de l'instantanéstatediffusé en continu. Au niveau des octets uniquement — mêmes valeurs, mêmes noms de clés ; seul l'ordre des clés change, et les trois composantes sont toujours renvoyées. Les clients JSON indexés par nom n'ont aucune action à entreprendre ; les comparaisons strictes au niveau des octets ou de l'ordre doivent mettre à jour leurs références. - Noms de portée des notifications de modification pour les applications de configuration destinées à un seul appareil. L'événement de notification de changement de session signale désormais les noms des portées de configuration (
config.mount,config.basis,config.preset) au lieu des noms simples (mount,basis,preset) lorsque la configuration d'un seul appareil est appliquée. Les clients qui filtrent ces chaînes de portée d'événement doivent mettre à jour leur correspondance. - Reformatage du texte des nombres à virgule flottante par Glaze pour toutes les valeurs numériques transmises, v3.0 et v3.1 (par exemple
1.0E-7->1E-7,16777216->1.6777216E7,-1.0E-37->-1E-37). Au niveau des octets uniquement — les analyseurs numériques lisent les mêmes valeurs ; seule la forme textuelle a changé. Les consommateurs qui comparent des chaînes de caractères doivent mettre à jour leurs jeux de tests de référence. - Décalage de l'origine des préréglages centrés. Comme les préréglages centrés visent désormais le véritable centre accessible, l'origine qu'ils définissent se déplace par rapport à la version 3.5.2 :
arm_front_centered/led_front_centeredse déplacent de 25 mm le long de l'axe de profondeur de l'appareil, le préréglage centré de Minverse se déplace de 10 mm en X, 20 mm en Y et 20 mm en Z, etminverse_zupse déplace de 20 mm sur l'axe X et de 30 mm sur l'axe Y. Cette fonctionnalité est activée par défaut, etminverse_zupest appliqué automatiquement aux sessions Freeform détectées. Portée de l'impact : le contenu placé à l'origine, ou la géométrie positionnée par rapport à celle-ci, lorsqu'un préréglage centré est actif — il se déplace avec l'origine. Migration : vérifiez à nouveau la géométrie ancrée à l'origine, ou indiquez explicitement le décalage précédent en tant que transformation de montage personnalisée. Les préréglages non centrés (device_defaults,arm_front,led_front) sont des transformations identitaires et ne sont pas affectées.
Fonctionnalités obsolètes
- L'entrée héritée
valuesLes commandes de contrôle « inverse3 » sont désormais signalées comme obsolètes. L'expédition du tableauvaluesàset_cursor_force,set_cursor_position,set_angular_positionouset_angular_torques, à la place du champ nommé de la commande (vector/position/angles/torques), fonctionne toujours, mais déclenche désormais un événementcommand-deprecated(limité à un par 30 secondes et par commande) au lieu d'être accepté sans réaction. Migrezvaluesvers le champ indiqué ; l'entrée héritée sera supprimée dans la version 4.0. - Sinon, aucun changement n'est apporté au protocole public pour ce cycle.