v4.4.0

A v4.4.0 é uma versão de modernização importante que faz o rebase do OpenMV IDE da sua base de longa data Qt Creator 10.0.1 para o Qt Creator 14.0.2, reaplicando o plugin OpenMV completo e todas as personalizações de fork sobre a nova base. Adicionalmente, esta versão integra um servidor de linguagem Python embutido para completação de código offline, ativa o GitHub Copilot em todas as plataformas, introduz um novo bootloader DFU OpenMV personalizado e migra as câmaras OpenMV para um novo ID de fornecedor USB 37C5. A mudança de base é uma grande modernização interna que não afeta os projetos dos utilizadores; consulte Alterações incompatíveis para o pequeno número de alterações visíveis ao utilizador.

Destaques

  • Rebase para Qt Creator 14.0.2. O IDE passa do Qt Creator 10.0.1 para o 14.0.2, com o plugin OpenMV completo e todas as personalizações // OPENMV-DIFF // reaplicadas na nova base (d6c895be8, 1fa75b397).

  • Servidor de linguagem Python embutido. O IDE agora inclui e usa automaticamente um pylsp integrado (com astroid 3.3.5), oferecendo completação de código Python/MicroPython offline sem necessidade de instalação separada via pip no Windows, macOS e Linux x86_64 (257addee0, 5a2b3e72f, 94470798d).

  • GitHub Copilot em todas as plataformas. O Copilot está integrado e ativado por omissão, com um runtime Node.js 20.18.0 incluído para Windows, macOS e Linux, deixando de estar limitado a máquinas específicas, além de um diálogo de arranque para o ativar (bb07d582b, 1cb967c5a, b37e48040).

  • Novo bootloader DFU OpenMV. Um fluxo de bootloader openmv_dfu personalizado e completamente implementado gere as atualizações de firmware a partir de settings.json, incluindo um diálogo «placa em modo DFU detetada» com opções para instalar a versão mais recente, carregar firmware específico e apagar o sistema de ficheiros, além de um caminho de bootloader de reserva para recuperar câmaras bloqueadas (08b9d0676, 6a6a9351d, 6d78d6571).

  • Suporte a novas câmaras. Adiciona as placas OpenMV Cam N6, RT1062 e AE3, e migra as câmaras para o novo ID de fornecedor USB 37C5 com controladores DFU e regras udev atualizados (000ed8a87, f453bc945, 4a16e04c2, 6d78d6571).

  • Comunicação série mais fiável. Correções importantes na comunicação série resolvem texto truncado no terminal e desligamentos aleatórios com câmaras baseadas em TinyUSB (caeba6a16, 6cf122a3c).

Novas funcionalidades

  • Bootloader DFU OpenMV. Um novo sistema de bootloader openmv_dfu com controladores DFU dedicados e um mecanismo de bootloader de reserva recupera câmaras bloqueadas em vários tipos de firmware (6a6a9351d, 6d78d6571). O fluxo gere as atualizações de firmware a partir de settings.json e apresenta um diálogo «placa em modo DFU detetada» com opções para instalar a versão mais recente, carregar firmware específico e apagar o sistema de ficheiros (08b9d0676, ef19133b6, 9c59d113c).

  • Nome da placa no seletor de portas. O diálogo de seleção de porta série sonda agora cada porta e mostra o nome da placa detetada junto à porta (por exemplo, COM3: OpenMV Cam H7) em vez de apenas o nome da porta (9837d6cb5).

  • Editor com separadores. O plugin de editor com separadores é restaurado, adicionando uma fila de separadores de documentos acima da área do editor para alternar entre ficheiros abertos (c8519c09f), e agora mantém e restaura a ordenação dos separadores entre sessões (55ccfb207).

  • Realce de sintaxe Python. Adiciona uma definição de realce de sintaxe Python dedicada para o editor com regras para formatos de strings, números de vírgula flutuante e palavras-chave (9be46c0c3).

Outras alterações e melhorias

  • Refatoração do carregamento de firmware. O código de carregamento de firmware foi dividido em gestores de bootloader separados por tipo (OpenMV DFU, Arduino DFU, BOSSAC, i.MX, picotool), adicionando tratamento de PID touch-to-reset para placas Arduino DFU e variantes de placa «Legacy» explícitas para dispositivos com VID/PID alternativos (9f465f9f8).

  • Salvaguardas do bootloader ROM STM32. O IDE avisa agora ou bloqueia o carregamento de firmware.dfu/openmv.dfu no bootloader de recuperação ROM do STM32, recomendando apenas bootloader.dfu para evitar bloquear placas STM32H7 afetadas por um bug do bootloader ROM do chip (c5ce0ae1a, e7cde1ec1).

  • Configuração automática e silenciosa do Python LSP. O servidor de linguagem Python instala-se e atualiza-se agora automaticamente sem prompts na barra de informações nem spam de mensagens na consola (d89f5985f), e o sistema de completação automática/documentação hover do Python foi reformulado num motor de documentação OpenMV dedicado que analisa os documentos HTML da biblioteca integrada para alimentar o realce de palavras-chave e dicas (47e02873b, 4f9853f21, 82cefc931).

  • Deteção do interpretador Python no Linux. A deteção do interpretador no Linux é agora automática, considerando apenas interpretadores Python 3 do PATH e selecionando o mais recente como predefinição única (214fdc758).

  • Simplificação das definições do Python. O grupo de gestão por interpretador e a página de Interpretadores estão ocultos, a Configuração do Servidor de Linguagem está arquivada sob uma categoria Python, e os botões de REPL e de seleção de interpretador na barra de ferramentas estão ocultos no editor Python (d89f5985f). No Windows, o IDE regista agora automaticamente o python.exe embutido como o interpretador predefinido, com o servidor de linguagem integrado considerado como já instalado (1d9ca003e, d89f5985f).

  • Diretório de perfil mais limpo. O IDE deixa de escrever ficheiros de configuração Qt Creator não utilizados (dispositivos, kits, cadeias de ferramentas, versões Qt) e abre os ficheiros diretamente no editor (3771b0107), deixa de analisar o sistema em busca de versões qmake/Qt (42807f25f), e evita carregar a maquinaria não utilizada de dispositivos/cadeias de ferramentas/kits e o ruído no arranque (902a357de, b2666a35b).

  • Atualizações mais seguras. A atualização do IDE já não substitui os recursos do utilizador; apenas as pastas de recursos geridos (examples, firmware, html, models) são removidas e recopiadas, com micropython-headers adicionalmente removido (é instalado separadamente em vez de recopiado por este caminho), e uma mensagem de erro mais clara se firmware/settings.json estiver em falta ou inválido (b4b8c208d, 3255ba4fb).

  • Ligação DFU mais rápida. O tempo de espera da ligação DFU foi reduzido para que a gravação e a ligação sejam mais rápidas (11d8c9fe3, 4700bf678).

  • Menu OpenMV e personalizações de UI restaurados. O esquema de menu OpenMV simplificado é reaplicado, ocultando os menus Build e Debug e removendo as ações de gestão de projetos (7503f2bec); o motor de completação de código recupera a consciência de classes/métodos e âmbitos de palavras-chave públicas/privadas para a completação automática do MicroPython (55fc348ea); a renderização de cores ANSI no terminal é reaplicada com valores de brilho/escuridão adaptados ao tema e suporte a escape de cursor-back (c6787a27a); e a barra de ferramentas do visualizador de imagens é personalizada com dicas de resolução/zoom e uma ação Ajustar ao Ecrã reposicionada (734fec693).

  • Recursos integrados restaurados. Ferramentas de gravação, controladores DFU, firmware e a árvore completa de exemplos/scripts são restaurados nos recursos partilhados após a simplificação do rebase (33c8354bc), e a lógica de arranque personalizada da aplicação OpenMV é reaplicada: exige obrigatoriamente o plugin TextEditor (as verificações dos plugins OpenMV e TabbedEditor estão presentes mas desativadas), instala um gestor de mensagens Qt personalizado, remove as opções de linha de comando -client/-pid/-block e impõe o comportamento de instância única (06c788f3d).

  • Falha com plugin em falta. A aplicação falha agora definitivamente com uma mensagem de erro clara se os plugins necessários estiverem em falta ou desativados, o plugin OpenMV ganhou uma dependência do Copilot, e várias opções do editor de texto (Prefer single line comments e o seletor de posição de comentário nas definições de Comportamento, e Highlight selection nas definições de Apresentação) estão ocultas (1bc02b1f3).

  • Timeouts série mais curtos. Os timeouts do protocolo série foram reduzidos (leitura de 10000 para 5000 ms, escrita de 6000 para 3000 ms) para obter um feedback de falha mais rápido, com o valor predefinido documentado de -override_read_timeout atualizado em conformidade (641385af4).

  • Recuperação de porta bloqueada. As portas série bloqueadas a meio de um comando são agora recuperadas usando uma consulta GET_STATE (configurável através da definição get-state) em vez de uma consulta de execução de script (a8598f550).

  • Ordem do diálogo de definições. O diálogo de definições oculta a caixa de seleção de ordenação alfabética de categorias para que a lista de páginas se mantenha na ordem pretendida pelo OpenMV (1cb967c5a).

  • Definições do Copilot simplificadas. A página de definições do Copilot é reduzida apenas aos controlos de autenticação/início de sessão e proxy, ocultando as opções de ativar o Copilot, caminho do Node.js, caminho de distribuição e completação automática (1cb967c5a).

Correções de erros

  • Corrigidos problemas importantes de comunicação série, aumentando o timeout de bloqueio de leitura série 10 vezes e desativando um caminho de desbloqueio baseado em GET_STATE que estava a corromper o texto do terminal série (caeba6a16).

  • Corrigidos desligamentos série aleatórios com câmaras baseadas em TinyUSB, emitindo um comando de desbloqueio de despejo de fotograma e reformulando o tratamento de bloqueio de leitura em vez de desligar (6cf122a3c).

  • Tornada a gestão de get_state da câmara tolerante a respostas curtas/parciais e assegurado que o texto do terminal série em buffer é descarregado durante a recuperação de erros para que a saída de registo não se perca (c8b4248a6, 247a779dd).

  • Corrigidos os números de partição flash/alt-setting do bootloader DFU para o carregamento de firmware da OpenMV Cam (a8700d12d).

  • Restaurados todos os bootloaders ao respeitar um novo sinalizador de placa hidden, mudando a filtragem por número de série para filtros inversos e dando à entrada UF2 do Arduino Nano RP2040 Connect uma configuração picotool funcional (63cee629b).

  • Corrigido o diálogo de seleção do tipo de placa do bootloader que memorizava o valor errado, usando chaves de histórico separadas para as seleções de tipo de placa legível por humanos e IMX (a3325af32).

  • Corrigido o cálculo de timestamp/taxa de fotogramas na transcodificação de vídeo (Guardar Vídeo) através do cálculo do intervalo médio de fotogramas em microssegundos, suportando um novo formato de tempo ImageWriter v21 e protegendo contra pixmaps nulos durante a conversão (f5c75c749, f8f762b3e).

  • Corrigida uma falha na vista do histograma/buffer de fotograma quando era recebido um pixmap vazio (nulo), protegendo pixmapUpdate() contra dados nulos (622cf5ea8).

  • Restauradas as dicas de anotação hover no editor de texto para que passar o rato sobre marcas de texto volte a mostrar a dica de anotação (1852d18e1).

  • Impedidos os diálogos de informação do GitHub Copilot e das cores dos LEDs de aparecer enquanto o IDE está ocupado a ligar ou a gravar firmware (f8f762b3e).

  • Adicionada proteção contra falhas no cliente de linguagem para que o tratamento de alterações ao conteúdo de documentos já não cause falhas no IDE em casos extremos (7926ffe4c).

  • Corrigidas as verificações do servidor de linguagem Python que impediam um encerramento limpo do IDE, fazendo o plugin Python aguardar assincronamente pelas verificações em curso antes de sair (9ff6c7936).

  • Corrigida a completação automática do Python no Linux: o cliente de linguagem enraíza-se nos micropython-headers integrados e a ação redundante de popup de completação na barra de ferramentas do editor está oculta (d37f66a9a, 56e748f9d, 016fa73eb).

  • Corrigido o tratamento de ficheiros temporários/não guardados para que Guardar Como use o diretório inicial do diálogo de ficheiros, e o diálogo Guardar Itens e o editor Diff já não mostrem caminhos de ficheiros temporários internos (b7f0bb378, c8e7b6b8f, 6b128c34c).

  • Guardar um buffer sem título/temporário define agora por omissão o diálogo Guardar Como para um nome de ficheiro .py adequado em vez de um nome vazio (3001fdfff).

  • Os documentos temporários/sem título são agora propostos para guardar quando modificados, excluídos do salvamento automático e encaminhados corretamente para Guardar Como (f87b71cf0).

  • Corrigida a ordenação do menu Ficheiros Recentes para que reabrir um ficheiro já listado não altere a sua ordem, e o diálogo de ficheiros fica agora predefinido para o diretório de projetos (d49c0c993).

  • Corrigida a renderização de texto nas caixas de mensagem ao não forçar o formato rich-text em caixas de mensagem com caixa de seleção, para que o texto simples seja apresentado corretamente (0c565502f).

  • Corrigidas as cores das dicas para que sejam apresentadas corretamente no tema claro (35cbf077b).

  • Correções gerais de estabilidade e limpeza do Qt Creator nas definições principais, no cliente de linguagem, na cadeia de ferramentas MSVC, no explorador de projetos e nos plugins Python (836b163dc, 134f43cb8).

  • Corrigido o nome da pasta de firmware integrado do Arduino Nano 33 BLE Sense (b1d8ac227) e corrigida a regra udev do Linux para o ID de produto do bootloader DFU do AE3, corrigindo 96E3 para minúsculas 96e3 para que a correspondência idProduct sensível a maiúsculas/minúsculas do udev funcione (2cd43c96b). A regra udev do Linux do bootloader DFU do AE3 foi também atualizada para o ID de produto 37c5:afe3 para a ligação simbólica openmvdfu (b99555637).

Suporte a plataformas e ferramentas

  • Base Qt Creator: 14.0.2 (rebase a partir de 10.0.1).

  • OpenMV Cam N6 é agora suportada (VID:PID 37C5:1206, bootloader DFU 37C5:9206), incluindo definições de firmware, um controlador DFU para Windows e uma regra udev para Linux (000ed8a87, 1b950c8c6).

  • OpenMV Cam RT1062 é agora suportada com um novo VID/PID USB personalizado (37C5:1060), incluindo controladores DFU, regras udev e entradas legadas 1209:ABD1 mantidas para unidades mais antigas (f453bc945, d55d6441f).

  • OpenMV Cam AE3 é agora suportada, incluindo controladores DFU para Windows, a árvore de imagens de firmware/configuração e USB VID/PID (atualizado para 37C5:16E3 em modo de execução / 37C5:96E3 em modo de bootloader) (4a16e04c2, cc52e76f5, 3f75e7de4, 8eb80b129).

  • Novo sistema USB VID/PID: as câmaras OpenMV migram para o ID de fornecedor 37C5 com novos IDs de bootloader/DFU (por exemplo, 37C5:1202/9202 M4, 1203/9203 M7, 1204/9204 H7, 124A/924A H7 Plus, 1205/9205), reidentificando as antigas placas 1209:ABD1 como Legacy enquanto se continua a suportar firmware antigo e novo (6d78d6571, 6a6a9351d, 500b1a0bf).

  • Sensor de imagem PAG7936 adicionado à lista de sensores reconhecidos (f9e3f3461).

  • Python 3.13 embutido incluído como interpretador para macOS, Linux x86_64, Linux arm64 e Linux arm (9133b1516), com bibliotecas partilhadas nativas libpython3.13 e ujson (d3aa663d8, a2cb24e74).

  • Servidor de linguagem integrado: pylsp com astroid 3.3.5 no Windows, macOS e Linux x86_64 (257addee0). A compilação para Windows inclui um CPython embutido com python-lsp-server 1.12.0, jedi 0.17.2, docstring_to_markdown 0.15, pip 24.2 e distlib 0.3.9 (9b6434602, 069807cd3, 5f2e45196, 3b6c6c312).

  • Node.js 20.18.0 «Iron» LTS incluído para Windows, macOS, Linux arm64, Linux x64 e Linux armv7 para ativar o GitHub Copilot em todas as plataformas (bb07d582b, 6db78bf45, 1cb967c5a).

  • Alif Security Toolkit com binários de arranque/pacote de sistema assinados e guia do utilizador incluídos para Windows, macOS e Linux x86_64 para o provisionamento de câmaras OpenMV baseadas em Alif (por exemplo, AE3) (f63851be3).

  • Integração no ambiente de trabalho Linux restaurada, instalando uma entrada de ambiente de trabalho da aplicação e metadados AppStream e registando o tipo MIME Python (.py) (3fa25f571).

Alterações incompatíveis

A API de scripting não foi alterada. Podem ser notadas as seguintes alterações de fluxo de trabalho e comportamento visíveis ao utilizador:

  • Novo ID de fornecedor USB. As câmaras OpenMV migram para o ID de fornecedor 37C5 com novos IDs de produto e bootloader DFU; as placas com o VID antigo 1209:ABD1 são agora identificadas como «Legacy». O IDE suporta firmware antigo e novo simultaneamente, mas os utilizadores de Linux devem reinstalar as regras udev atualizadas para que os novos IDs sejam reconhecidos.

  • Entradas de placas legadas ocultas. As variantes legadas das placas OpenMV Cam M4/M7/H7/H7 Plus/Pure Thermal estão agora suprimidas da lista de seleção de firmware/placa através de um novo sinalizador de placa legacy (distinto do sinalizador hidden pré-existente), pelo que os utilizadores que necessitam especificamente de uma entrada de placa legada já não a verão na lista pendente (6d78d6571).

  • Timeouts série mais curtos. O timeout de leitura de resposta predefinido passa de 10000 ms para 5000 ms e o timeout de escrita de 6000 ms para 3000 ms (o valor predefinido de -override_read_timeout está agora documentado como 5000). Placas/ligações lentas que dependiam dos valores predefinidos mais longos poderão atingir o timeout mais cedo.

O rebase para Qt Creator 14.0.2 é uma grande modernização interna mas não é incompatível com os projetos dos utilizadores.