v4.8.11

v4.8.11 é uma versão de estabilidade e correção focada na robustez no macOS, na serialização de ferramentas externas e na confiabilidade da atualização de firmware. Ela é construída sobre o Qt Creator 14.0.2 (inalterado em relação à versão anterior) e não contém alterações incompatíveis para os projetos dos usuários.

Destaques

  • Reforço contra travamentos no macOS — foi eliminado um aborto silencioso e intermitente de NSRangeException causado pela atualização de seleções em árvores/listas/combos antes de um painel ou popup estar totalmente construído ou durante uma atualização assíncrona, abrangendo o combo de estrutura de tópicos, as hierarquias de chamada/tipo, os popups de autocompletar e de localizador, a árvore de projeto e mais.

  • Ferramentas externas serializadas — o diálogo de progresso do carregador agora é modal a nível de aplicação e suspende toda a sondagem de dispositivos, de modo que a execução de dfu-util, bossac, picotool e das demais ferramentas não pode mais ser reentrada pelo stream da câmera ou pela reconexão automática.

  • Atualizações de firmware confiáveis — a reconexão automática não pode mais sequestrar uma atualização de firmware no meio da gravação na flash, o que antes descartava a continuação real e exibia um diálogo DFU espúrio.

  • Segurança do Hello World — conectar uma placa não sobrescreve mais ocasionalmente um programa Hello World no qual você digitou, agora comparando contra um snapshot intocado em vez do indicador de modificação pouco confiável.

  • Erros de DFU mais claros — o erro “no matching interface” agora informa a placa detectada e os nomes de arquivo de firmware que ela aceita, em vez de despejar um VID/PID bruto.

Novos recursos

  • ST Edge AI (STM32N6) agora produz o binário de rede relocável diretamente por meio do modo --relocatable do compilador, removendo a etapa separada de relocação em Python e o campo extra Relocation CLI Options do diálogo (7613135c5).

Outras alterações e melhorias

  • Erros de interface DFU agora informam a placa detectada e listam os nomes de arquivo de firmware que essa placa aceita, com orientações para renomear ou escolher o arquivo correto, em vez de despejar um VID/PID bruto (ac509b369).

  • Atalhos de navegação por abas no macOS agora usam os acessíveis Cmd+Shift+[ / Cmd+Shift+] (anterior/próximo) e Cmd+Alt+[ / Cmd+Alt+] (mover) em vez dos impraticáveis Ctrl+PageUp / Ctrl+PageDown; os atalhos no Windows e no Linux permanecem inalterados (6c09e10b1).

  • Requisições de licença/placa para upload.openmv.io (check.php, insert.php, register.php) agora enviam um User-Agent estilo navegador específico por plataforma, para que o servidor de licenças possa identificar o sistema operacional do cliente (6bfd74b36).

Correções de bugs

  • Corrigido um travamento intermitente no macOS (um aborto silencioso de NSRangeException sem diálogo de travamento) em que atualizar seleções em árvores/listas/combos enquanto um painel ou popup ainda estava oculto ou em meio a uma atualização assíncrona indexava em um cache de acessibilidade Cocoa ainda não construído. As ações de seleção, rolagem e expansão agora são adiadas ou protegidas no combo de estrutura de tópicos, nas hierarquias de chamada/tipo, no popup de autocompletar de código, no popup do localizador, no diálogo Save Items, na árvore de projeto, na navegação por pastas, em Open Documents, na lista de Issues/Tasks e no combobox de visualização em árvore (94c8f9def, ae40a3806, ed23b5c60, c6baf89cd, d7b6f5838, d8b70609c, 21740d9c2, 9217fc8a9, fe75924d5, 9cc247ffb, 3ca71e915, 559b6005f).

  • Corrigido um travamento distinto no macOS (NSRangeException/SIGABRT) no combobox de estrutura de tópicos do código, causado por um índice obsoleto fora do intervalo quando o servidor de linguagem Python atualizava os símbolos de forma assíncrona; setCurrentIndex agora revalida os limites de linha/coluna contra o modelo ativo (3e0ce89f1).

  • Reforçados o editor de modelos ROMFS e o editor de conjuntos de dados contra condições de corrida assíncronas de QFileSystemModel ao adiar a pré-expansão da árvore até que o diretório termine de carregar e ao selecionar arquivos/pastas/modelos recém-criados apenas quando o modelo tiver um índice válido para eles (5eaa91aff).

  • As operações de ferramentas externas (dfu-util, bossac, picotool, alif, imx, ST Cube, mpy-cross, vela, ST Edge AI, conversão de vídeo) não permitem mais que o stream da câmera ou trabalhos enfileirados reentrem em uma operação de dispositivo por trás da ferramenta em execução: o diálogo de progresso do carregador agora é modal a nível de aplicação e a sondagem de dispositivos fica totalmente suspensa enquanto ele é exibido (3069e8ec0).

  • A reconexão automática não sequestra mais uma atualização de firmware no meio da gravação na flash, por meio de um indicador persistente de atualização-de-firmware-em-andamento mantido travado durante toda a operação forçada/bootloader/apagamento, que o temporizador de reconexão agora também verifica (b7745484a).

  • Conectar uma placa não sobrescreve mais ocasionalmente um programa Hello World no qual você digitou, agora comparando o documento ativo contra um snapshot intocado capturado na abertura, em vez de depender do indicador de modificação pouco confiável antes de sincronizar automaticamente o exemplo específico do sensor (6f4539d44).

  • Rolar para cima no terminal serial durante saída contínua rápida não puxa mais a visualização de volta para o fim: os caminhos de anexação agora seguem o indicador persistente de intenção de rolagem do usuário em vez de re-derivar “no fim” a partir de uma posição da barra de rolagem que cada bloco acabara de re-fixar (9aea0f1a2).

  • Escape agora fecha de forma confiável o diálogo Code Profiler independentemente de qual widget filho tem o foco (203ffd1e6).

  • No macOS, os atalhos de teclado de menu global e de comandos agora funcionam em todo o aplicativo, em vez de apenas quando o editor tinha o foco, ao reparentar a barra de menus oculta para a janela principal em todas as plataformas (6d52cbe73).

  • O interpretador Python incluído agora é forçado como padrão a cada inicialização, de modo que um padrão obsoleto persistido não desabilita mais silenciosamente o servidor de linguagem Python (autocompletar e dicas de chamada) (1d5069a52).

  • Reforçada a E/S das configurações do OpenMV contra reentrância: beginGroup / endGroup no objeto de configurações globais compartilhado (que abrem diálogos modais e executam loops de eventos aninhados) foram substituídos por caminhos de chave completos, de modo que um acesso reentrante às configurações durante um diálogo modal não pode mais arquivar chaves no grupo errado. Os caminhos em disco são idênticos byte a byte, então as configurações dos usuários existentes são preservadas exatamente (91e78a9e3, f4bb9f48c).

  • Corrigida uma regressão em que vários diálogos e auxiliares que recebem o objeto de configurações compartilhado faziam E/S de chave nua na raiz das configurações em vez de sob OpenMV/, perdendo a geometria de janela, o divisor e o estado de expansão do model zoo, bem como o estado dos seis diálogos de carregamento (dfu-util, imx, bossac, alif, picotool e ST Cube Programmer), além das opções dos compiladores mpy-cross, vela e ST Edge AI; o grupo agora é embutido em cada chave para que o caminho correto seja usado (258448bdf).

Suporte de plataforma e ferramentas

  • Base do Qt Creator: 14.0.2.

  • Versão do OpenMV IDE elevada para 4.8.11.

Alterações incompatíveis

Nenhuma. Todas as alterações são correções de bugs e melhorias sobrepostas à base existente do Qt Creator 14.0.2; os projetos e fluxos de trabalho existentes não são afetados.