v4.4.0

A v4.4.0 é uma grande versão de modernização que rebaseia o OpenMV IDE de sua antiga base no Qt Creator 10.0.1 para o Qt Creator 14.0.2, reaplicando todo o plugin OpenMV e cada personalização do fork sobre a base mais recente. Além disso, esta versão inclui um servidor de linguagem Python embarcado para autocompletar código offline, habilita o GitHub Copilot em todas as plataformas, introduz um novo bootloader OpenMV DFU personalizado e migra as câmeras OpenMV para um novo USB vendor ID 37C5. A mudança de base é uma grande modernização interna, mas não quebra os projetos dos usuários; veja Mudanças incompatíveis para o pequeno número de alterações de fluxo de trabalho visíveis ao usuário.

Destaques

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

  • Servidor de linguagem Python embarcado. O IDE agora distribui e usa automaticamente um pylsp empacotado (com astroid 3.3.5), oferecendo autocompletar de código Python/MicroPython offline sem uma 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 habilitado por padrão, com um runtime Node.js 20.18.0 empacotado para Windows, macOS e Linux, de modo que não está mais limitado a máquinas selecionadas, além de um diálogo de inicialização para ativá-lo (bb07d582b, 1cb967c5a, b37e48040).

  • Novo bootloader OpenMV DFU. Um fluxo de bootloader openmv_dfu personalizado e totalmente implementado conduz as atualizações de firmware a partir do settings.json, incluindo um diálogo de “placa em modo DFU detectada” que oferece as opções de instalar a versão mais recente, carregar um firmware específico e apagar o sistema de arquivos, além de um caminho de bootloader de fallback para recuperar câmeras inutilizadas (bricked) (08b9d0676, 6a6a9351d, 6d78d6571).

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

  • Comunicação serial mais confiável. Grandes correções na comunicação serial resolvem o texto distorcido no terminal e as desconexões aleatórias com câmeras baseadas em TinyUSB (caeba6a16, 6cf122a3c).

Novos recursos

  • Bootloader OpenMV DFU. Um novo sistema de bootloader openmv_dfu com drivers DFU dedicados e um mecanismo de bootloader de fallback recupera câmeras inutilizadas (bricked) entre diferentes tipos de firmware (6a6a9351d, 6d78d6571). O fluxo conduz as atualizações de firmware a partir do settings.json e apresenta um diálogo de “placa em modo DFU detectada” com as opções de instalar a versão mais recente, carregar um firmware específico e apagar o sistema de arquivos (08b9d0676, ef19133b6, 9c59d113c).

  • Nome da placa no seletor de porta. O diálogo de seleção de porta serial agora examina cada porta e mostra o nome da placa detectada ao lado da porta (ex.: COM3: OpenMV Cam H7) em vez de apenas o nome da porta (9837d6cb5).

  • Editor com abas. O plugin de editor com abas foi restaurado, adicionando uma linha de abas de documentos acima da área do editor para alternar entre arquivos abertos (c8519c09f), e agora ele persiste e restaura a ordem das abas entre sessões (55ccfb207).

  • Realce de sintaxe Python. Adiciona uma definição dedicada de realce de sintaxe Python para o editor, com regras para formatação de strings, floats e palavras-chave (9be46c0c3).

Outras mudanças e melhorias

  • Refatoração do carregamento de firmware. O código de carregamento de firmware foi dividido em handlers de bootloader separados por tipo (OpenMV DFU, Arduino DFU, BOSSAC, i.MX, picotool), adicionando o 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 ROM-bootloader do STM32. O IDE agora alerta ou bloqueia o carregamento de firmware.dfu/openmv.dfu no bootloader de recuperação do ROM do STM32, recomendando apenas bootloader.dfu para evitar inutilizar (brick) placas STM32H7 afetadas por um bug do bootloader do ROM do chip (c5ce0ae1a, e7cde1ec1).

  • Configuração automática e silenciosa do Python LSP. O servidor de linguagem Python agora se instala e se atualiza automaticamente, sem avisos na barra de informações ou poluição de mensagens no console (d89f5985f), e o sistema de autocomplete/documentação ao passar o mouse do Python foi remodelado em um mecanismo de documentação OpenMV dedicado que analisa a documentação HTML das bibliotecas empacotada para conduzir o realce de palavras-chave e as dicas (tooltips) (47e02873b, 4f9853f21, 82cefc931).

  • Detecção de interpretador Python no Linux. A detecção de interpretador no Linux agora é automática, considerando apenas interpretadores Python 3 do PATH e selecionando o mais novo como o padrão único (214fdc758).

  • Limpeza das configurações de Python. O grupo de gerenciamento por interpretador e a página de Interpretadores ficam ocultos, a Configuração do Servidor de Linguagem fica arquivada sob uma categoria Python, e os botões de barra de ferramentas não utilizados de REPL e seletor de interpretador ficam ocultos no editor Python (d89f5985f). No Windows, o IDE agora registra automaticamente o python.exe embarcado empacotado como interpretador padrão, com o servidor de linguagem empacotado tratado como já instalado (1d9ca003e, d89f5985f).

  • Diretório de perfil mais limpo. O IDE não grava mais arquivos de configuração não utilizados do Qt Creator (dispositivos, kits, toolchains, versões do Qt) e abre arquivos diretamente no editor (3771b0107), não examina mais o sistema em busca de versões de qmake/Qt (42807f25f) e evita carregar a maquinaria não utilizada de dispositivo/toolchain/kit e ruído na inicialização (902a357de, b2666a35b).

  • Atualizações mais seguras. Atualizar o IDE não sobrescreve mais os recursos do usuário; apenas as pastas de recursos gerenciados (examples, firmware, html, models) são removidas e recopiadas, com micropython-headers adicionalmente removido (ele é instalado separadamente em vez de recopiado por este caminho), além de um erro mais claro caso firmware/settings.json esteja ausente ou inválido (b4b8c208d, 3255ba4fb).

  • Conexão DFU mais rápida. O tempo de espera da conexão DFU foi reduzido, de modo que a gravação e a conexão ficam mais rápidas (11d8c9fe3, 4700bf678).

  • Menu OpenMV e personalizações de UI restaurados. O layout simplificado do menu OpenMV foi reaplicado, ocultando os menus Build e Debug e removendo as ações de gerenciamento de projeto (7503f2bec); o mecanismo de autocompletar de código recupera a percepção de classes/métodos e os escopos de palavra-chave públicos/privados para o autocomplete do MicroPython (55fc348ea); a renderização de cores ANSI do terminal foi reaplicada com valores bright/dim adequados ao tema e suporte ao escape de cursor-back (c6787a27a); e a barra de ferramentas do visualizador de imagens foi personalizada com dicas (tooltips) de resolução/zoom e uma ação Fit-to-Screen realocada (734fec693).

  • Recursos empacotados restaurados. As ferramentas de gravação, os drivers DFU, o firmware e toda a árvore de exemplos/scripts foram restaurados nos recursos compartilhados após a redução do rebase (33c8354bc), e a lógica de inicialização da aplicação personalizada da OpenMV foi reaplicada: ela exige obrigatoriamente o plugin TextEditor (as verificações dos plugins OpenMV e TabbedEditor estão presentes, mas desabilitadas), instala um manipulador de mensagens Qt personalizado, remove as opções de linha de comando -client/-pid/-block e força o comportamento de instância única (06c788f3d).

  • Falha por plugin ausente. O aplicativo agora falha de forma definitiva com um erro claro caso os plugins necessários estejam ausentes ou desabilitados, 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 configurações de Behavior, e Highlight selection nas configurações de Display) ficaram ocultas (1bc02b1f3).

  • Timeouts seriais mais curtos. Os timeouts do protocolo serial foram encurtados (leitura de 10000 para 5000 ms, escrita de 6000 para 3000 ms) para um feedback de falha mais rápido, com o padrão documentado de -override_read_timeout atualizado para corresponder (641385af4).

  • Recuperação de porta travada. Portas seriais travadas no meio de um comando agora são recuperadas usando uma consulta GET_STATE (configurável pela configuração get-state) em vez de uma consulta de script em execução (a8598f550).

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

  • Configurações do Copilot simplificadas. A página de configurações do Copilot foi reduzida apenas aos controles de login/autenticação e proxy, ocultando as opções de habilitar o Copilot, caminho do Node.js, caminho do dist e autocompletar (1cb967c5a).

Correções de bugs

  • Corrigiu grandes problemas de comunicação serial aumentando em 10x o timeout de stall de leitura serial e desabilitando um caminho de desbloqueio baseado em GET_STATE que distorcia o texto do terminal serial (caeba6a16).

  • Corrigiu desconexões seriais aleatórias com câmeras baseadas em TinyUSB emitindo um comando de desbloqueio de frame-dump e remodelando o tratamento de stall de leitura em vez de desconectar (6cf122a3c).

  • Tornou o tratamento de get_state da câmera tolerante a respostas curtas/parciais e garantiu que o texto do terminal serial em buffer seja descarregado durante a recuperação de erros, de modo que a saída de log não seja perdida (c8b4248a6, 247a779dd).

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

  • Restaurou todos os bootloaders ao respeitar uma nova flag 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 funcional de picotool (63cee629b).

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

  • Corrigiu o cálculo de timestamp/taxa de quadros da transcodificação de vídeo (Save Video) calculando o intervalo médio entre quadros em microssegundos, suportando um novo formato de tempo v21 do ImageWriter e protegendo contra pixmaps nulos durante a conversão (f5c75c749, f8f762b3e).

  • Corrigiu um crash na visualização de histograma/framebuffer quando um pixmap vazio (nulo) era recebido, protegendo pixmapUpdate() contra dados nulos (622cf5ea8).

  • Restaurou as dicas (tooltips) de anotação ao passar o mouse no editor de texto, de modo que passar o mouse sobre marcas de texto mostra novamente a dica de anotação (1852d18e1).

  • Impediu que os diálogos de informação do GitHub Copilot e das cores dos LEDs apareçam enquanto o IDE está ocupado conectando ou gravando (f8f762b3e).

  • Adicionou proteção contra crashes no cliente de linguagem, de modo que o tratamento de mudanças no conteúdo do documento não trava mais o IDE em casos extremos (7926ffe4c).

  • Corrigiu verificações do servidor de linguagem Python que impediam um encerramento limpo do IDE, fazendo o plugin Python aguardar de forma assíncrona pelas verificações em andamento antes de sair (9ff6c7936).

  • Corrigiu o autocomplete de Python no Linux: o cliente de linguagem se enraíza no micropython-headers empacotado e a ação redundante do popup de autocompletar na barra de ferramentas do editor fica oculta (d37f66a9a, 56e748f9d, 016fa73eb).

  • Corrigiu o tratamento de arquivos temporários/não salvos, de modo que Save As usa o diretório inicial do diálogo de arquivo, e o diálogo Save Items e o editor de Diff não mostram mais caminhos internos de arquivos temporários (b7f0bb378, c8e7b6b8f, 6b128c34c).

  • Salvar um buffer sem título/temporário agora usa por padrão um nome de arquivo .py apropriado no diálogo Save-As em vez de um nome vazio (3001fdfff).

  • Documentos temporários/sem título agora são oferecidos para salvar quando modificados, excluídos do salvamento automático e roteados corretamente pelo Save-As (f87b71cf0).

  • Corrigiu a ordenação do menu Recent Files, de modo que reabrir um arquivo já listado não o reordena mais, e o diálogo de arquivo agora usa por padrão o diretório de projetos (d49c0c993).

  • Corrigiu a renderização de texto das caixas de mensagem ao não forçar mais o formato rich-text em caixas de mensagem marcáveis, de modo que o texto bruto é exibido corretamente (0c565502f).

  • Corrigiu as cores das dicas (tooltips) para que sejam renderizadas corretamente no tema claro (35cbf077b).

  • Correções gerais de estabilidade e limpeza do Qt Creator nas configurações principais, no cliente de linguagem, na toolchain MSVC, no project explorer e nos plugins Python (836b163dc, 134f43cb8).

  • Corrigiu o nome da pasta de firmware empacotado do Arduino Nano 33 BLE Sense (b1d8ac227) e corrigiu a regra udev do Linux para o product ID do bootloader DFU do AE3, corrigindo 96E3 para 96e3 em minúsculas para que a correspondência de idProduct sensível a maiúsculas/minúsculas do udev funcione (2cd43c96b). A regra udev do Linux do bootloader DFU do AE3 também foi atualizada para o product ID 37c5:afe3 no symlink openmvdfu (b99555637).

Suporte de plataforma e ferramentas

  • Base do Qt Creator: 14.0.2 (rebaseada a partir da 10.0.1).

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

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

  • OpenMV Cam AE3 agora é suportada, incluindo drivers DFU para Windows, sua árvore de imagens de firmware/config e VID/PID USB (atualizado para 37C5:16E3 em runtime / 37C5:96E3 no bootloader) (4a16e04c2, cc52e76f5, 3f75e7de4, 8eb80b129).

  • Novo sistema de VID/PID USB: as câmeras OpenMV passam para o vendor ID 37C5 com novos IDs de bootloader/DFU (ex.: 37C5:1202/9202 M4, 1203/9203 M7, 1204/9204 H7, 124A/924A H7 Plus, 1205/9205), rotulando as antigas placas 1209:ABD1 como Legacy enquanto ainda suporta tanto o firmware antigo quanto o novo (6d78d6571, 6a6a9351d, 500b1a0bf).

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

  • Interpretador Python 3.13 embarcado empacotado para macOS, Linux x86_64, Linux arm64 e Linux arm (9133b1516), com bibliotecas compartilhadas nativas libpython3.13 e ujson (d3aa663d8, a2cb24e74).

  • Servidor de linguagem empacotado: pylsp com astroid 3.3.5 no Windows, macOS e Linux x86_64 (257addee0). O build do Windows distribui um CPython embarcado 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).

  • Runtime Node.js 20.18.0 “Iron” LTS empacotado para Windows, macOS, Linux arm64, Linux x64 e Linux armv7 para habilitar o GitHub Copilot em todas as plataformas (bb07d582b, 6db78bf45, 1cb967c5a).

  • Alif Security Toolkit com binários assinados de boot/system-package e guia do usuário empacotados para Windows, macOS e Linux x86_64 para provisionar câmeras OpenMV baseadas em Alif (ex.: AE3) (f63851be3).

  • Integração com o desktop Linux restaurada, instalando uma entrada de aplicativo no desktop e metadados AppStream e registrando o tipo MIME do Python (.py) (3fa25f571).

Mudanças incompatíveis

Nenhuma API de scripting mudou. As seguintes mudanças de fluxo de trabalho e comportamento visíveis ao usuário podem ser notadas:

  • Novo USB vendor ID. As câmeras OpenMV migram para o vendor ID 37C5 com novos IDs de produto e de bootloader DFU; placas no antigo VID 1209:ABD1 agora são rotuladas como “Legacy”. O IDE suporta o firmware antigo e o novo simultaneamente, mas os usuários de Linux precisam 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 agora são suprimidas da lista de seleção de firmware/placa por meio de uma nova flag de placa legacy (distinta da flag hidden pré-existente), de modo que usuários que precisem especificamente de uma entrada de placa legada não a verão mais no menu suspenso (6d78d6571).

  • Timeouts seriais mais curtos. O timeout padrão de leitura de resposta cai de 10000 ms para 5000 ms e o timeout de escrita de 6000 ms para 3000 ms (o padrão de -override_read_timeout agora é documentado como 5000). Placas/links lentos que dependiam dos padrões mais longos podem expirar mais cedo.

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