v4.4.0

v4.4.0 est une version majeure de modernisation qui rebase OpenMV IDE depuis sa base Qt Creator 10.0.1 de longue date vers Qt Creator 14.0.2, en réappliquant l’intégralité du plugin OpenMV et chaque personnalisation du fork par-dessus la base plus récente. En plus de cela, cette version intègre un serveur de langage Python embarqué pour la complétion de code hors ligne, active GitHub Copilot sur toutes les plateformes, introduit un nouveau programme d’amorçage DFU OpenMV personnalisé et fait migrer les caméras OpenMV vers un nouvel identifiant fournisseur USB 37C5. Le changement de base est une vaste modernisation interne mais ne casse pas les projets utilisateur ; voir Changements incompatibles pour le petit nombre de modifications de flux de travail visibles par l’utilisateur.

Points forts

  • Rebase sur Qt Creator 14.0.2. L’IDE passe de Qt Creator 10.0.1 à 14.0.2, avec l’intégralité du plugin OpenMV et toutes les personnalisations // OPENMV-DIFF // réappliquées sur la base moderne (d6c895be8, 1fa75b397).

  • Serveur de langage Python embarqué. L’IDE livre désormais et utilise automatiquement un pylsp intégré (avec astroid 3.3.5), offrant une complétion de code Python/MicroPython hors ligne sans installation pip séparée sur Windows, macOS et Linux x86_64 (257addee0, 5a2b3e72f, 94470798d).

  • GitHub Copilot sur toutes les plateformes. Copilot est intégré et activé par défaut, avec un runtime Node.js 20.18.0 intégré pour Windows, macOS et Linux, de sorte qu’il n’est plus limité à certaines machines, ainsi qu’une boîte de dialogue au démarrage pour l’activer (bb07d582b, 1cb967c5a, b37e48040).

  • Nouveau programme d’amorçage DFU OpenMV. Un flux de programme d’amorçage openmv_dfu personnalisé et entièrement implémenté pilote les mises à jour du micrologiciel à partir de settings.json, y compris une boîte de dialogue « carte en mode DFU détectée » proposant les choix installer-la-dernière-version, charger-un-micrologiciel-spécifique et effacer-le-système-de-fichiers, ainsi qu’un chemin de programme d’amorçage de secours pour récupérer les caméras endommagées (08b9d0676, 6a6a9351d, 6d78d6571).

  • Prise en charge de nouvelles caméras. Ajoute les cartes OpenMV Cam N6, RT1062 et AE3, et fait migrer les caméras vers le nouvel identifiant fournisseur USB 37C5 avec des pilotes DFU et des règles udev mis à jour (000ed8a87, f453bc945, 4a16e04c2, 6d78d6571).

  • Liaison série plus fiable. D’importantes corrections de communication série résolvent le texte de terminal brouillé et les déconnexions aléatoires avec les caméras basées sur TinyUSB (caeba6a16, 6cf122a3c).

Nouvelles fonctionnalités

  • Programme d’amorçage DFU OpenMV. Un nouveau système de programme d’amorçage openmv_dfu avec des pilotes DFU dédiés et un mécanisme de programme d’amorçage de secours récupère les caméras endommagées pour tous les types de micrologiciel (6a6a9351d, 6d78d6571). Le flux pilote les mises à jour du micrologiciel à partir de settings.json et présente une boîte de dialogue « carte en mode DFU détectée » avec les options installer-la-dernière-version, charger-un-micrologiciel-spécifique et effacer-le-système-de-fichiers (08b9d0676, ef19133b6, 9c59d113c).

  • Nom de la carte dans le sélecteur de port. La boîte de dialogue de sélection du port série sonde désormais chaque port et affiche le nom de la carte détectée à côté du port (par exemple COM3: OpenMV Cam H7) au lieu d’un simple nom de port (9837d6cb5).

  • Éditeur à onglets. Le plugin d’éditeur à onglets est rétabli, ajoutant une rangée d’onglets de documents au-dessus de la zone d’édition pour passer d’un fichier ouvert à l’autre (c8519c09f), et il conserve et restaure désormais l’ordre des onglets d’une session à l’autre (55ccfb207).

  • Coloration syntaxique Python. Ajoute une définition de coloration syntaxique Python dédiée pour l’éditeur, avec des règles pour le formatage de chaînes, les flottants et les mots-clés (9be46c0c3).

Autres changements et améliorations

  • Refonte du chargement du micrologiciel. Le code de chargement du micrologiciel a été scindé en gestionnaires de programme d’amorçage distincts par type (OpenMV DFU, Arduino DFU, BOSSAC, i.MX, picotool), ajoutant la gestion du PID touch-to-reset pour les cartes Arduino DFU et des variantes de carte « Legacy » explicites pour les périphériques à VID/PID alternatif (9f465f9f8).

  • Garde-fous du programme d’amorçage ROM STM32. L’IDE avertit désormais ou bloque le chargement de firmware.dfu/openmv.dfu sur le programme d’amorçage de récupération ROM STM32, recommandant uniquement bootloader.dfu afin d’éviter d’endommager les cartes STM32H7 affectées par un bug du programme d’amorçage ROM de la puce (c5ce0ae1a, e7cde1ec1).

  • Configuration automatique et silencieuse du LSP Python. Le serveur de langage Python s’installe et se met désormais à jour automatiquement, sans invites dans la barre d’information ni messages de console intempestifs (d89f5985f), et le système de complétion automatique/d’info-bulles de documentation Python a été retravaillé en un moteur de documentation OpenMV dédié qui analyse la documentation HTML intégrée des bibliothèques pour piloter la mise en surbrillance des mots-clés et les info-bulles (47e02873b, 4f9853f21, 82cefc931).

  • Détection de l’interpréteur Python sous Linux. La détection de l’interpréteur sous Linux est désormais automatique, ne considérant que les interpréteurs Python 3 du PATH et sélectionnant le plus récent comme valeur par défaut unique (214fdc758).

  • Nettoyage des paramètres Python. Le groupe de gestion par interpréteur et la page Interpreters sont masqués, la configuration du serveur de langage est classée sous une catégorie Python, et les boutons inutilisés de la barre d’outils REPL et de sélection d’interpréteur sont masqués dans l’éditeur Python (d89f5985f). Sous Windows, l’IDE enregistre désormais automatiquement le python.exe embarqué intégré comme interpréteur par défaut, le serveur de langage intégré étant considéré comme déjà installé (1d9ca003e, d89f5985f).

  • Répertoire de profil plus propre. L’IDE n’écrit plus les fichiers de paramètres Qt Creator inutilisés (périphériques, kits, chaînes d’outils, versions de Qt) et ouvre les fichiers directement dans l’éditeur (3771b0107), n’analyse plus le système à la recherche de versions de qmake/Qt (42807f25f), et évite de charger la machinerie inutilisée des périphériques/chaînes d’outils/kits et le bruit de démarrage (902a357de, b2666a35b).

  • Mises à jour plus sûres. La mise à jour de l’IDE n’écrase plus les ressources de l’utilisateur ; seuls les dossiers de ressources gérés (examples, firmware, html, models) sont supprimés et recopiés, micropython-headers étant en outre supprimé (il est installé séparément plutôt que recopié par ce chemin), avec une erreur plus claire si firmware/settings.json est manquant ou invalide (b4b8c208d, 3255ba4fb).

  • Connexion DFU plus rapide. Le temps d’attente de la connexion DFU a été réduit afin d’accélérer le flashage et la connexion (11d8c9fe3, 4700bf678).

  • Menu OpenMV et personnalisations d’interface rétablis. La disposition épurée du menu OpenMV est réappliquée, masquant les menus Build et Debug et supprimant les actions de gestion de projet (7503f2bec) ; le moteur de complétion de code retrouve la connaissance des classes/méthodes et les portées de mots-clés publics/privés pour la complétion automatique MicroPython (55fc348ea) ; le rendu des couleurs ANSI du terminal est réappliqué avec des valeurs claires/foncées tenant compte du thème et la prise en charge de l’échappement de retour du curseur (c6787a27a) ; et la barre d’outils de la visionneuse d’images est personnalisée avec des info-bulles de résolution/zoom et une action Ajuster à l’écran déplacée (734fec693).

  • Ressources intégrées rétablies. Les outils de flashage, les pilotes DFU, le micrologiciel et l’arborescence complète des exemples/scripts sont rétablis dans les ressources partagées après l’allègement consécutif au rebase (33c8354bc), et la logique de démarrage applicative personnalisée d’OpenMV est réappliquée : elle exige impérativement le plugin TextEditor (les vérifications des plugins OpenMV et TabbedEditor sont présentes mais désactivées), installe un gestionnaire de messages Qt personnalisé, supprime les options de ligne de commande -client/-pid/-block et impose un comportement d’instance unique (06c788f3d).

  • Échec en cas de plugin manquant. L’application échoue désormais de manière nette avec une erreur claire si les plugins requis sont manquants ou désactivés, le plugin OpenMV a acquis une dépendance Copilot, et plusieurs options de l’éditeur de texte (Prefer single line comments et le sélecteur de position de commentaire dans les paramètres Behavior, ainsi que Highlight selection dans les paramètres Display) sont masquées (1bc02b1f3).

  • Délais d’attente série plus courts. Les délais d’attente du protocole série ont été raccourcis (lecture de 10000 à 5000 ms, écriture de 6000 à 3000 ms) pour un retour d’échec plus rapide, la valeur par défaut documentée de -override_read_timeout étant mise à jour en conséquence (641385af4).

  • Récupération de port bloqué. Les ports série bloqués au milieu d’une commande sont désormais récupérés à l’aide d’une requête GET_STATE (configurable via le paramètre get-state) au lieu d’une requête d’exécution de script (a8598f550).

  • Ordre de la boîte de dialogue des paramètres. La boîte de dialogue des paramètres masque la case de tri alphabétique des catégories afin que la liste des pages reste dans l’ordre prévu par OpenMV (1cb967c5a).

  • Paramètres Copilot simplifiés. La page des paramètres Copilot est réduite aux seuls contrôles de connexion/authentification et de proxy, masquant les options d’activation de Copilot, de chemin Node.js, de chemin dist et de complétion automatique (1cb967c5a).

Corrections de bugs

  • Correction de problèmes majeurs de communication série en multipliant par 10 le délai d’attente de blocage de lecture série et en désactivant un chemin de déblocage basé sur GET_STATE qui brouillait le texte du terminal série (caeba6a16).

  • Correction des déconnexions série aléatoires avec les caméras basées sur TinyUSB en émettant une commande de déverrouillage du vidage de trame et en retravaillant la gestion du blocage de lecture au lieu de se déconnecter (6cf122a3c).

  • Rendu de la gestion de get_state de la caméra tolérante aux réponses courtes/partielles et garantie que le texte du terminal série mis en tampon est vidé pendant la récupération d’erreur afin que la sortie du journal ne soit pas perdue (c8b4248a6, 247a779dd).

  • Correction des numéros de partition flash/alt-setting du programme d’amorçage DFU pour le chargement du micrologiciel des OpenMV Cam (a8700d12d).

  • Rétablissement de tous les programmes d’amorçage en respectant un nouveau drapeau de carte hidden, en basculant le filtrage par numéro de série vers des filtres inverses et en dotant l’entrée UF2 de l’Arduino Nano RP2040 Connect d’une configuration picotool fonctionnelle (63cee629b).

  • Correction de la boîte de dialogue de sélection du type de carte du programme d’amorçage qui mémorisait la mauvaise valeur, en utilisant des clés d’historique distinctes pour les sélections de type de carte lisibles par l’humain et IMX (a3325af32).

  • Correction du calcul d’horodatage/de fréquence de trame du transcodage vidéo (Save Video) en calculant l’intervalle moyen entre trames en microsecondes, en prenant en charge un nouveau format de temps ImageWriter v21 et en se prémunissant contre les pixmaps nuls pendant la conversion (f5c75c749, f8f762b3e).

  • Correction d’un plantage dans la vue histogramme/tampon d’image lorsqu’un pixmap vide (nul) était reçu, en protégeant pixmapUpdate() contre les données nulles (622cf5ea8).

  • Rétablissement des info-bulles d’annotation au survol dans l’éditeur de texte, de sorte que survoler les marques de texte affiche de nouveau l’info-bulle d’annotation (1852d18e1).

  • Empêchement de l’apparition des boîtes de dialogue d’information de GitHub Copilot et des couleurs de LED pendant que l’IDE est occupé à se connecter ou à flasher (f8f762b3e).

  • Ajout d’une protection contre les plantages dans le client de langage afin que la gestion des changements de contenu de document ne plante plus l’IDE dans les cas limites (7926ffe4c).

  • Correction des vérifications du serveur de langage Python empêchant un arrêt propre de l’IDE, en faisant attendre le plugin Python de manière asynchrone les vérifications en cours avant de quitter (9ff6c7936).

  • Correction de la complétion automatique Python sous Linux : le client de langage s’enracine désormais dans le répertoire micropython-headers intégré et l’action redondante de fenêtre contextuelle de complétion de la barre d’outils de l’éditeur est masquée (d37f66a9a, 56e748f9d, 016fa73eb).

  • Correction de la gestion des fichiers temporaires/non enregistrés afin que Save As utilise le répertoire initial de la boîte de dialogue de fichier, et que la boîte de dialogue Save Items et l’éditeur Diff n’affichent plus les chemins de fichiers temporaires internes (b7f0bb378, c8e7b6b8f, 6b128c34c).

  • L’enregistrement d’un tampon sans titre/temporaire propose désormais par défaut un nom de fichier .py approprié dans la boîte de dialogue Save As, au lieu d’un nom vide (3001fdfff).

  • Les documents temporaires/sans titre sont désormais proposés à l’enregistrement lorsqu’ils sont modifiés, exclus de l’enregistrement automatique et acheminés correctement via Save As (f87b71cf0).

  • Correction de l’ordre du menu Recent Files afin que la réouverture d’un fichier déjà listé ne le réordonne plus, et la boîte de dialogue de fichier pointe désormais par défaut vers le répertoire des projets (d49c0c993).

  • Correction du rendu du texte des boîtes de message en ne forçant plus le format texte enrichi sur les boîtes de message cochables, de sorte que le texte brut s’affiche correctement (0c565502f).

  • Correction des couleurs des info-bulles afin qu’elles s’affichent correctement dans le thème clair (35cbf077b).

  • Corrections générales de stabilité et de nettoyage de Qt Creator dans les paramètres principaux, le client de langage, la chaîne d’outils MSVC, l’explorateur de projet et les plugins Python (836b163dc, 134f43cb8).

  • Correction du nom du dossier de micrologiciel intégré de l’Arduino Nano 33 BLE Sense (b1d8ac227) et correction de la règle udev Linux pour l’identifiant produit du programme d’amorçage DFU de l’AE3, corrigeant 96E3 en minuscules 96e3 afin que la correspondance idProduct sensible à la casse d’udev fonctionne (2cd43c96b). La règle udev Linux du programme d’amorçage DFU de l’AE3 a également été mise à jour vers l’identifiant produit 37c5:afe3 pour le lien symbolique openmvdfu (b99555637).

Prise en charge des plateformes et des outils

  • Base Qt Creator : 14.0.2 (rebasée depuis 10.0.1).

  • OpenMV Cam N6 est désormais prise en charge (VID:PID 37C5:1206, programme d’amorçage DFU 37C5:9206), y compris les paramètres de micrologiciel, un pilote DFU Windows et une règle udev Linux (000ed8a87, 1b950c8c6).

  • OpenMV Cam RT1062 est désormais prise en charge sous un nouveau VID/PID USB personnalisé (37C5:1060), y compris les pilotes DFU, les règles udev et les entrées héritées 1209:ABD1 conservées pour les unités plus anciennes (f453bc945, d55d6441f).

  • OpenMV Cam AE3 est désormais prise en charge, y compris les pilotes DFU Windows, son arborescence d’images de micrologiciel/configuration et son VID/PID USB (mis à jour vers 37C5:16E3 en exécution / 37C5:96E3 en programme d’amorçage) (4a16e04c2, cc52e76f5, 3f75e7de4, 8eb80b129).

  • Nouveau système de VID/PID USB : les caméras OpenMV passent à l’identifiant fournisseur 37C5 avec de nouveaux identifiants de programme d’amorçage/DFU (par exemple 37C5:1202/9202 M4, 1203/9203 M7, 1204/9204 H7, 124A/924A H7 Plus, 1205/9205), reclassant les anciennes cartes 1209:ABD1 comme Legacy tout en prenant toujours en charge à la fois l’ancien et le nouveau micrologiciel (6d78d6571, 6a6a9351d, 500b1a0bf).

  • Capteur d’image PAG7936 ajouté à la liste des capteurs reconnus (f9e3f3461).

  • Interpréteur Python 3.13 embarqué pour macOS, Linux x86_64, Linux arm64 et Linux arm (9133b1516), avec les bibliothèques partagées natives libpython3.13 et ujson (d3aa663d8, a2cb24e74).

  • Serveur de langage intégré : pylsp avec astroid 3.3.5 sur Windows, macOS et Linux x86_64 (257addee0). La version Windows livre un CPython embarqué avec python-lsp-server 1.12.0, jedi 0.17.2, docstring_to_markdown 0.15, pip 24.2 et distlib 0.3.9 (9b6434602, 069807cd3, 5f2e45196, 3b6c6c312).

  • Runtime Node.js 20.18.0 LTS « Iron » intégré pour Windows, macOS, Linux arm64, Linux x64 et Linux armv7 afin d’activer GitHub Copilot sur toutes les plateformes (bb07d582b, 6db78bf45, 1cb967c5a).

  • Alif Security Toolkit : binaires signés de boot/system-package et guide utilisateur intégrés pour Windows, macOS et Linux x86_64 pour le provisionnement des caméras OpenMV basées sur Alif (par exemple l’AE3) (f63851be3).

  • L’intégration au bureau Linux est rétablie, installant une entrée de bureau d’application et des métadonnées AppStream et enregistrant le type MIME Python (.py) (3fa25f571).

Changements incompatibles

Aucune API de script n’a changé. Les changements de flux de travail et de comportement visibles par l’utilisateur suivants peuvent être remarqués :

  • Nouvel identifiant fournisseur USB. Les caméras OpenMV migrent vers l’identifiant fournisseur 37C5 avec de nouveaux identifiants produit et de programme d’amorçage DFU ; les cartes sur l’ancien VID 1209:ABD1 sont désormais étiquetées « Legacy ». L’IDE prend en charge simultanément l’ancien et le nouveau micrologiciel, mais les utilisateurs Linux doivent réinstaller les règles udev mises à jour pour que les nouveaux identifiants soient reconnus.

  • Entrées de cartes héritées masquées. Les variantes héritées des cartes OpenMV Cam M4/M7/H7/H7 Plus/Pure Thermal sont désormais supprimées de la liste de sélection du micrologiciel/de la carte via un nouveau drapeau de carte legacy (distinct du drapeau hidden préexistant), de sorte que les utilisateurs ayant spécifiquement besoin d’une entrée de carte héritée ne la verront plus dans le menu déroulant (6d78d6571).

  • Délais d’attente série plus courts. Le délai d’attente de lecture de réponse par défaut passe de 10000 ms à 5000 ms et le délai d’attente d’écriture de 6000 ms à 3000 ms (la valeur par défaut de -override_read_timeout est désormais documentée comme étant 5000). Les cartes/liaisons lentes qui s’appuyaient sur les valeurs par défaut plus longues peuvent expirer plus tôt.

Le rebase sur Qt Creator 14.0.2 est une vaste modernisation interne mais n’est pas incompatible pour les projets utilisateur.