v4.4.0

v4.4.0 es una importante versión de modernización que rebasa OpenMV IDE desde su base de larga data de Qt Creator 10.0.1 a Qt Creator 14.0.2, reaplicando el complemento completo de OpenMV y todas las personalizaciones de la bifurcación sobre la base más reciente. Además, esta versión incluye un servidor de lenguaje Python embebido para autocompletado de código sin conexión, habilita GitHub Copilot en todas las plataformas, introduce un nuevo gestor de arranque (bootloader) DFU personalizado de OpenMV y migra las cámaras OpenMV a un nuevo identificador de proveedor USB 37C5. El cambio de base es una gran modernización interna, pero no rompe los proyectos de los usuarios; consulta Breaking changes para conocer el reducido número de cambios de flujo de trabajo visibles para el usuario.

Aspectos destacados

  • Rebase a Qt Creator 14.0.2. El IDE pasa de Qt Creator 10.0.1 a 14.0.2, con todo el complemento de OpenMV y todas las personalizaciones // OPENMV-DIFF // reaplicadas sobre la base moderna (d6c895be8, 1fa75b397).

  • Servidor de lenguaje Python embebido. El IDE ahora incluye y utiliza automáticamente un pylsp integrado (con astroid 3.3.5), que ofrece autocompletado de código Python/MicroPython sin conexión sin necesidad de una instalación de pip por separado en Windows, macOS y Linux x86_64 (257addee0, 5a2b3e72f, 94470798d).

  • GitHub Copilot en todas las plataformas. Copilot está integrado y habilitado de forma predeterminada, con un entorno de ejecución Node.js 20.18.0 incluido para Windows, macOS y Linux, de modo que ya no se limita a determinadas máquinas, además de un diálogo de inicio para activarlo (bb07d582b, 1cb967c5a, b37e48040).

  • Nuevo gestor de arranque (bootloader) DFU de OpenMV. Un flujo de gestor de arranque (bootloader) openmv_dfu personalizado y totalmente implementado controla las actualizaciones de firmware desde settings.json, incluyendo un diálogo de «board in DFU mode detected» que ofrece las opciones de instalar la última versión, cargar un firmware específico y borrar el sistema de archivos, además de una ruta de gestor de arranque (bootloader) de reserva para recuperar cámaras inutilizadas (08b9d0676, 6a6a9351d, 6d78d6571).

  • Compatibilidad con nuevas cámaras. Añade las placas OpenMV Cam N6, RT1062 y AE3, y migra las cámaras al nuevo identificador de proveedor USB 37C5 con controladores DFU y reglas udev actualizados (000ed8a87, f453bc945, 4a16e04c2, 6d78d6571).

  • Comunicación serie más fiable. Correcciones importantes en la comunicación serie resuelven el texto distorsionado en la terminal y las desconexiones aleatorias con cámaras basadas en TinyUSB (caeba6a16, 6cf122a3c).

Nuevas características

  • Gestor de arranque (bootloader) DFU de OpenMV. Un nuevo sistema de gestor de arranque (bootloader) openmv_dfu con controladores DFU dedicados y un mecanismo de gestor de arranque (bootloader) de reserva recupera cámaras inutilizadas en distintos tipos de firmware (6a6a9351d, 6d78d6571). El flujo controla las actualizaciones de firmware desde settings.json y presenta un diálogo de «board in DFU mode detected» con las opciones de instalar la última versión, cargar un firmware específico y borrar el sistema de archivos (08b9d0676, ef19133b6, 9c59d113c).

  • Nombre de la placa en el selector de puerto. El diálogo de selección de puerto serie ahora sondea cada puerto y muestra el nombre de la placa detectada junto al puerto (p. ej. COM3: OpenMV Cam H7) en lugar de un nombre de puerto a secas (9837d6cb5).

  • Editor con pestañas. Se restaura el complemento de editor con pestañas, añadiendo una fila de pestañas de documentos sobre el área del editor para cambiar entre archivos abiertos (c8519c09f), y ahora conserva y restaura el orden de las pestañas entre sesiones (55ccfb207).

  • Resaltado de sintaxis de Python. Añade una definición de resaltado de sintaxis de Python dedicada para el editor con reglas para formato de cadenas, números de punto flotante y palabras clave (9be46c0c3).

Otros cambios y mejoras

  • Refactorización de la carga de firmware. El código de carga de firmware se dividió en gestores de arranque (bootloaders) separados por tipo (OpenMV DFU, Arduino DFU, BOSSAC, i.MX, picotool), añadiendo el manejo de PID de toque-para-reiniciar para las placas Arduino DFU y variantes de placa «Legacy» explícitas para dispositivos con VID/PID alternativos (9f465f9f8).

  • Salvaguardas del gestor de arranque (bootloader) ROM de STM32. El IDE ahora advierte o impide la carga de firmware.dfu/openmv.dfu en el gestor de arranque (bootloader) de recuperación ROM de STM32, recomendando únicamente bootloader.dfu para evitar inutilizar las placas STM32H7 afectadas por un error del gestor de arranque ROM del chip (c5ce0ae1a, e7cde1ec1).

  • Configuración automática y silenciosa del LSP de Python. El servidor de lenguaje Python ahora se instala y actualiza automáticamente sin avisos en la barra de información ni mensajes de spam en la consola (d89f5985f), y el sistema de autocompletado/documentación al pasar el cursor de Python se rediseñó como un motor de documentación dedicado de OpenMV que analiza la documentación HTML de la biblioteca incluida para impulsar el resaltado de palabras clave y las descripciones emergentes (47e02873b, 4f9853f21, 82cefc931).

  • Detección del intérprete de Python en Linux. La detección del intérprete en Linux ahora es automática, considerando únicamente los intérpretes de Python 3 de PATH y seleccionando el más reciente como predeterminado único (214fdc758).

  • Limpieza de la configuración de Python. El grupo de gestión por intérprete y la página de Intérpretes están ocultos, la Configuración del Servidor de Lenguaje se archiva en una categoría Python, y los botones de la barra de herramientas de REPL y selector de intérprete no utilizados están ocultos en el editor de Python (d89f5985f). En Windows, el IDE ahora registra automáticamente el python.exe embebido incluido como intérprete predeterminado, tratando el servidor de lenguaje incluido como ya instalado (1d9ca003e, d89f5985f).

  • Directorio de perfil más limpio. El IDE ya no escribe archivos de configuración de Qt Creator no utilizados (dispositivos, kits, cadenas de herramientas, versiones de Qt) y abre los archivos directamente en el editor (3771b0107), ya no rastrea el sistema en busca de versiones de qmake/Qt (42807f25f) y evita cargar la maquinaria de dispositivos/cadenas de herramientas/kits no utilizada y el ruido en el inicio (902a357de, b2666a35b).

  • Actualizaciones más seguras. Actualizar el IDE ya no sobrescribe los recursos del usuario; solo se eliminan y vuelven a copiar las carpetas de recursos gestionadas (examples, firmware, html, models), eliminándose además micropython-headers (que se instala por separado en lugar de volver a copiarse por esta ruta), y se muestra un error más claro si falta firmware/settings.json o no es válido (b4b8c208d, 3255ba4fb).

  • Conexión DFU más rápida. Se redujo el tiempo de espera de la conexión DFU para que el flasheo y la conexión sean más rápidos (11d8c9fe3, 4700bf678).

  • Menú de OpenMV y personalizaciones de la interfaz restaurados. Se reaplica el diseño optimizado del menú de OpenMV, ocultando los menús Build y Debug y eliminando las acciones de gestión de proyectos (7503f2bec); el motor de autocompletado de código recupera el reconocimiento de clases/métodos y los ámbitos de palabras clave público/privado para el autocompletado de MicroPython (55fc348ea); se reaplica el renderizado de colores ANSI de la terminal con valores brillante/atenuado adaptados al tema y soporte para la secuencia de escape de retroceso del cursor (c6787a27a); y la barra de herramientas del visor de imágenes se personaliza con descripciones emergentes de resolución/zoom y una acción Ajustar a la pantalla reubicada (734fec693).

  • Recursos incluidos restaurados. Las herramientas de flasheo, los controladores DFU, el firmware y el árbol completo de ejemplos/scripts se restauran en los recursos compartidos tras el recorte del rebase (33c8354bc), y se reaplica la lógica de inicio personalizada de la aplicación de OpenMV: requiere obligatoriamente el complemento TextEditor (las comprobaciones de los complementos OpenMV y TabbedEditor están presentes pero desactivadas), instala un controlador de mensajes de Qt personalizado, elimina las opciones de línea de comandos -client/-pid/-block y fuerza el comportamiento de instancia única (06c788f3d).

  • Error por complemento faltante. La aplicación ahora falla de forma contundente con un error claro si faltan los complementos requeridos o están desactivados, el complemento de OpenMV adquirió una dependencia de Copilot, y varias opciones del editor de texto (Prefer single line comments y el selector de posición de comentario en la configuración de Comportamiento, y Highlight selection en la configuración de Visualización) están ocultas (1bc02b1f3).

  • Tiempos de espera de serie más cortos. Se acortaron los tiempos de espera del protocolo serie (lectura de 10000 a 5000 ms, escritura de 6000 a 3000 ms) para una retroalimentación de fallos más rápida, actualizándose en consecuencia el valor predeterminado documentado de -override_read_timeout (641385af4).

  • Recuperación de puertos bloqueados. Los puertos serie bloqueados a mitad de un comando ahora se recuperan mediante una consulta GET_STATE (configurable a través de la opción get-state) en lugar de una consulta de script en ejecución (a8598f550).

  • Orden del diálogo de configuración. El diálogo de configuración oculta la casilla de ordenación alfabética de categorías para que la lista de páginas mantenga el orden previsto por OpenMV (1cb967c5a).

  • Configuración de Copilot simplificada. La página de configuración de Copilot se reduce únicamente a los controles de inicio de sesión/autenticación y proxy, ocultando las opciones de habilitar Copilot, ruta de Node.js, ruta de distribución y autocompletado (1cb967c5a).

Corrección de errores

  • Se corrigieron problemas importantes de comunicación serie aumentando 10 veces el tiempo de espera de estancamiento de lectura serie y desactivando una ruta de desbloqueo basada en GET_STATE que distorsionaba el texto de la terminal serie (caeba6a16).

  • Se corrigieron las desconexiones aleatorias de serie con cámaras basadas en TinyUSB emitiendo un comando de desbloqueo de volcado de fotogramas y rediseñando el manejo del estancamiento de lectura en lugar de desconectar (6cf122a3c).

  • Se hizo que el manejo de get_state de la cámara tolerara respuestas cortas/parciales y se aseguró que el texto de la terminal serie en búfer se vacíe durante la recuperación de errores para que no se pierda la salida del registro (c8b4248a6, 247a779dd).

  • Se corrigieron los números de partición de memoria flash/alt-setting del gestor de arranque (bootloader) DFU para la carga de firmware de OpenMV Cam (a8700d12d).

  • Se restauraron todos los gestores de arranque (bootloaders) respetando un nuevo indicador de placa hidden, cambiando el filtrado de números de serie a filtros inversos y dotando a la entrada UF2 del Arduino Nano RP2040 Connect de una configuración picotool funcional (63cee629b).

  • Se corrigió que el diálogo de selección del tipo de placa del gestor de arranque (bootloader) recordara el valor incorrecto utilizando claves de historial separadas para las selecciones de tipo de placa legibles por humanos y de tipo IMX (a3325af32).

  • Se corrigió el cálculo de marca de tiempo/tasa de fotogramas de la transcodificación de vídeo (Save Video) calculando el intervalo medio entre fotogramas en microsegundos, admitiendo un nuevo formato de tiempo v21 de ImageWriter y protegiéndose contra mapas de píxeles nulos durante la conversión (f5c75c749, f8f762b3e).

  • Se corrigió un bloqueo en la vista de histograma/framebuffer cuando se recibía un mapa de píxeles vacío (nulo) protegiendo pixmapUpdate() contra datos nulos (622cf5ea8).

  • Se restauraron las descripciones emergentes de anotación al pasar el cursor en el editor de texto, de modo que pasar el cursor sobre las marcas de texto vuelve a mostrar la descripción emergente de la anotación (1852d18e1).

  • Se impidió que los diálogos informativos de GitHub Copilot y de los colores del LED aparecieran mientras el IDE está ocupado conectándose o flasheando (f8f762b3e).

  • Se añadió protección contra bloqueos en el cliente de lenguaje para que el manejo de cambios en el contenido del documento ya no bloquee el IDE en casos límite (7926ffe4c).

  • Se corrigieron las comprobaciones del servidor de lenguaje Python que impedían un cierre limpio del IDE haciendo que el complemento de Python espere de forma asíncrona las comprobaciones en curso antes de salir (9ff6c7936).

  • Se corrigió el autocompletado de Python en Linux: el cliente de lenguaje se ancla en los micropython-headers incluidos y se oculta la acción redundante de la barra de herramientas del editor para la ventana emergente de autocompletado (d37f66a9a, 56e748f9d, 016fa73eb).

  • Se corrigió el manejo de archivos temporales/no guardados para que Save As use el directorio inicial del diálogo de archivos, y el diálogo Save Items y el editor Diff ya no muestran rutas de archivos temporales internas (b7f0bb378, c8e7b6b8f, 6b128c34c).

  • Guardar un búfer sin título/temporal ahora establece de forma predeterminada en el diálogo Save-As un nombre de archivo .py adecuado en lugar de un nombre vacío (3001fdfff).

  • Los documentos temporales/sin título ahora se ofrecen para guardar cuando se modifican, se excluyen del autoguardado y se enrutan correctamente a través de Save-As (f87b71cf0).

  • Se corrigió el orden del menú Recent Files de modo que reabrir un archivo ya listado ya no lo reordena, y el diálogo de archivos ahora establece de forma predeterminada el directorio de proyectos (d49c0c993).

  • Se corrigió el renderizado del texto de los cuadros de mensaje al dejar de forzar el formato de texto enriquecido en los cuadros de mensaje seleccionables, de modo que el texto sin formato se muestra correctamente (0c565502f).

  • Se corrigieron los colores de las descripciones emergentes para que se rendericen correctamente en el tema claro (35cbf077b).

  • Correcciones generales de estabilidad y limpieza de Qt Creator en la configuración del núcleo, el cliente de lenguaje, la cadena de herramientas MSVC, el explorador de proyectos y los complementos de Python (836b163dc, 134f43cb8).

  • Se corrigió el nombre de la carpeta de firmware incluido del Arduino Nano 33 BLE Sense (b1d8ac227) y se corrigió la regla udev de Linux para el identificador de producto del gestor de arranque (bootloader) DFU del AE3, corrigiendo 96E3 a 96e3 en minúsculas para que la coincidencia de idProduct sensible a mayúsculas/minúsculas de udev funcione (2cd43c96b). La regla udev de Linux del gestor de arranque (bootloader) DFU del AE3 también se actualizó al identificador de producto 37c5:afe3 para el enlace simbólico openmvdfu (b99555637).

Compatibilidad de plataformas y herramientas

  • Base de Qt Creator: 14.0.2 (rebasada desde 10.0.1).

  • OpenMV Cam N6 ahora es compatible (VID:PID 37C5:1206, gestor de arranque (bootloader) DFU 37C5:9206), incluyendo la configuración de firmware, un controlador DFU de Windows y una regla udev de Linux (000ed8a87, 1b950c8c6).

  • OpenMV Cam RT1062 ahora es compatible bajo un nuevo VID/PID USB personalizado (37C5:1060), incluyendo controladores DFU, reglas udev y entradas heredadas 1209:ABD1 conservadas para las unidades más antiguas (f453bc945, d55d6441f).

  • OpenMV Cam AE3 ahora es compatible, incluyendo controladores DFU de Windows, su árbol de imágenes de firmware/configuración y VID/PID USB (actualizado a 37C5:16E3 en tiempo de ejecución / 37C5:96E3 en el gestor de arranque) (4a16e04c2, cc52e76f5, 3f75e7de4, 8eb80b129).

  • Nuevo sistema de VID/PID USB: las cámaras OpenMV pasan al identificador de proveedor 37C5 con nuevos identificadores de gestor de arranque (bootloader)/DFU (p. ej. 37C5:1202/9202 M4, 1203/9203 M7, 1204/9204 H7, 124A/924A H7 Plus, 1205/9205), reetiquetando las placas antiguas 1209:ABD1 como Legacy aunque sigan siendo compatibles tanto con el firmware antiguo como con el nuevo (6d78d6571, 6a6a9351d, 500b1a0bf).

  • Sensor de imagen PAG7936 añadido a la lista de sensores reconocidos (f9e3f3461).

  • Python 3.13 embebido como intérprete incluido para macOS, Linux x86_64, Linux arm64 y Linux arm (9133b1516), con bibliotecas compartidas nativas libpython3.13 y ujson (d3aa663d8, a2cb24e74).

  • Servidor de lenguaje incluido: pylsp con astroid 3.3.5 en Windows, macOS y Linux x86_64 (257addee0). La compilación de Windows incluye un CPython embebido con python-lsp-server 1.12.0, jedi 0.17.2, docstring_to_markdown 0.15, pip 24.2 y distlib 0.3.9 (9b6434602, 069807cd3, 5f2e45196, 3b6c6c312).

  • Node.js 20.18.0 incluido entorno de ejecución LTS «Iron» para Windows, macOS, Linux arm64, Linux x64 y Linux armv7 para habilitar GitHub Copilot en todas las plataformas (bb07d582b, 6db78bf45, 1cb967c5a).

  • Alif Security Toolkit con binarios de paquete de arranque/sistema firmados y una guía de usuario incluidos para Windows, macOS y Linux x86_64 para el aprovisionamiento de cámaras OpenMV basadas en Alif (p. ej. AE3) (f63851be3).

  • Integración con el escritorio de Linux restaurada, instalando una entrada de escritorio de la aplicación y metadatos AppStream y registrando el tipo MIME de Python (.py) (3fa25f571).

Cambios incompatibles

Ninguna API de scripting cambió. Es posible que se noten los siguientes cambios de flujo de trabajo y comportamiento visibles para el usuario:

  • Nuevo identificador de proveedor USB. Las cámaras OpenMV migran al identificador de proveedor 37C5 con nuevos identificadores de producto y de gestor de arranque (bootloader) DFU; las placas con el VID antiguo 1209:ABD1 ahora se etiquetan como «Legacy». El IDE admite tanto el firmware antiguo como el nuevo simultáneamente, pero los usuarios de Linux deben reinstalar las reglas udev actualizadas para que se reconozcan los nuevos identificadores.

  • Entradas de placas heredadas ocultas. Las variantes heredadas de las placas OpenMV Cam M4/M7/H7/H7 Plus/Pure Thermal ahora se suprimen de la lista de selección de firmware/placa mediante un nuevo indicador de placa legacy (distinto del indicador hidden preexistente), de modo que los usuarios que necesiten específicamente una entrada de placa heredada ya no la verán en el menú desplegable (6d78d6571).

  • Tiempos de espera de serie más cortos. El tiempo de espera de lectura de respuesta predeterminado baja de 10000 ms a 5000 ms y el tiempo de espera de escritura de 6000 ms a 3000 ms (el valor predeterminado de -override_read_timeout ahora se documenta como 5000). Las placas/enlaces lentos que dependían de los valores predeterminados más largos pueden agotar el tiempo de espera antes.

El rebase a Qt Creator 14.0.2 es una gran modernización interna, pero no rompe los proyectos de los usuarios.