v4.8.11

v4.8.11 è una release di stabilità e correttezza incentrata sulla robustezza su macOS, sulla serializzazione degli strumenti esterni e sull’affidabilità dell’aggiornamento del firmware. È basata su Qt Creator 14.0.2 (invariata rispetto alla release precedente) e non contiene modifiche che rompono la compatibilità con i progetti utente.

Punti salienti

  • Irrobustimento contro i crash su macOS — eliminato un intermittente abort silenzioso NSRangeException causato dall’aggiornamento delle selezioni di albero/elenco/combo prima che un pannello o un popup fosse completamente costruito o durante un refresh asincrono, su outline combo, gerarchia di chiamate/tipi, popup di completamento e locator, albero del progetto e altro ancora.

  • Strumenti esterni serializzati — la finestra di avanzamento del loader è ora application-modal e sospende tutto il polling dei dispositivi, così l’esecuzione di dfu-util, bossac, picotool e degli altri strumenti non può più essere rientrata dallo stream della camera o dalla riconnessione automatica.

  • Aggiornamenti del firmware affidabili — la riconnessione automatica non può più dirottare un aggiornamento del firmware durante la scrittura su flash, cosa che in precedenza interrompeva la vera continuazione e faceva comparire una finestra DFU spuria.

  • Sicurezza dell’Hello World — collegando una scheda non viene più occasionalmente sovrascritto un programma Hello World in cui hai scritto, grazie al confronto con uno snapshot incontaminato invece che con l’inaffidabile flag di modifica.

  • Errori DFU più chiari — l’errore «no matching interface» ora indica il nome della scheda rilevata e i nomi dei file di firmware che accetta invece di mostrare un VID/PID grezzo.

Nuove funzionalità

  • ST Edge AI (STM32N6) ora produce il binario di rete rilocabile direttamente tramite la modalità --relocatable del compilatore, eliminando il passaggio di rilocazione Python separato e il campo aggiuntivo Relocation CLI Options dalla finestra di dialogo (7613135c5).

Altre modifiche e miglioramenti

  • Gli errori di interfaccia DFU ora indicano il nome della scheda rilevata ed elencano i nomi dei file di firmware che la scheda accetta, con indicazioni per rinominare o scegliere il file corretto, invece di mostrare un VID/PID grezzo (ac509b369).

  • Le scorciatoie di navigazione tra le schede su macOS ora usano Cmd+Shift+[ / Cmd+Shift+] (precedente/successiva) e Cmd+Alt+[ / Cmd+Alt+] (sposta) raggiungibili, invece degli impremibili Ctrl+PageUp / Ctrl+PageDown; le associazioni di Windows e Linux sono invariate (6c09e10b1).

  • Le richieste di licenza/scheda a upload.openmv.io (check.php, insert.php, register.php) ora inviano uno User-Agent in stile browser specifico per piattaforma, così il server delle licenze può identificare il sistema operativo del client (6bfd74b36).

Correzioni di bug

  • Corretto un crash intermittente su macOS (un abort silenzioso NSRangeException senza finestra di crash) in cui l’aggiornamento delle selezioni di albero/elenco/combo mentre un pannello o un popup era ancora nascosto o durante un refresh asincrono indicizzava una cache di accessibilità Cocoa non ancora costruita. Selezione, scorrimento ed espansione sono ora differiti o protetti su outline combo, gerarchia di chiamate/tipi, popup di completamento del codice, popup del locator, finestra Save Items, albero del progetto, navigazione delle cartelle, Open Documents, l’elenco Issues/Tasks e la combobox della tree-view (94c8f9def, ae40a3806, ed23b5c60, c6baf89cd, d7b6f5838, d8b70609c, 21740d9c2, 9217fc8a9, fe75924d5, 9cc247ffb, 3ca71e915, 559b6005f).

  • Corretto un crash separato su macOS (NSRangeException/SIGABRT) nella combobox dell’outline del codice causato da un indice obsoleto fuori intervallo quando il language server Python aggiornava i simboli in modo asincrono; setCurrentIndex ora rivalida i limiti di riga/colonna rispetto al modello attivo (3e0ce89f1).

  • Irrobustiti l”editor del modello ROMFS e l”editor del dataset contro le race asincrone di QFileSystemModel, differendo la pre-espansione dell’albero finché la directory non ha terminato il caricamento e selezionando i file/cartelle/modelli appena creati solo quando il modello dispone di un indice valido per essi (5eaa91aff).

  • Le operazioni degli strumenti esterni (dfu-util, bossac, picotool, alif, imx, ST Cube, mpy-cross, vela, ST Edge AI, conversione video) non consentono più allo stream della camera o al lavoro in coda di rientrare in un’operazione su dispositivo dietro lo strumento in esecuzione: la finestra di avanzamento del loader è ora application-modal e il polling dei dispositivi è completamente sospeso mentre è visualizzata (3069e8ec0).

  • La riconnessione automatica non dirotta più un aggiornamento del firmware durante la scrittura su flash grazie a un flag persistente di aggiornamento-firmware-in-corso bloccato per l’intera operazione forzata/bootloader/cancellazione, che ora viene verificato anche dal timer di riconnessione (b7745484a).

  • Collegando una scheda non viene più occasionalmente sovrascritto un programma Hello World in cui hai scritto, grazie al confronto del documento attivo con uno snapshot incontaminato catturato all’apertura, invece di fare affidamento sull’inaffidabile flag di modifica prima di sincronizzare automaticamente l’esempio specifico per sensore (6f4539d44).

  • Lo scorrimento verso l’alto nel terminale seriale durante un output continuo e rapido non riporta più bruscamente la vista in fondo: i percorsi di append ora seguono il flag persistente dell’intenzione di scorrimento dell’utente invece di ricavare nuovamente «in fondo» da una posizione della scrollbar che ogni blocco aveva appena riancorato (9aea0f1a2).

  • Escape ora chiude in modo affidabile la finestra Code Profiler indipendentemente da quale widget figlio abbia il focus (203ffd1e6).

  • Su macOS, le scorciatoie da tastiera del menu globale e dei comandi ora funzionano in tutta l’applicazione invece che solo quando l’editor aveva il focus, grazie al parenting della barra dei menu nascosta nella finestra principale su ogni piattaforma (6d52cbe73).

  • L’interprete Python in bundle è ora forzato come predefinito a ogni avvio, così un predefinito persistente obsoleto non disabilita più silenziosamente il language server Python (completamento e suggerimenti di chiamata) (1d5069a52).

  • Irrobustito l’I/O delle impostazioni OpenMV contro la rientranza: beginGroup / endGroup sull’oggetto delle impostazioni globali condiviso (che generano finestre modali ed eseguono cicli di eventi annidati) sono sostituiti con percorsi di chiave completi, così un accesso rientrante alle impostazioni durante una finestra modale non può più archiviare erroneamente le chiavi sotto il gruppo sbagliato. I percorsi su disco sono identici byte per byte, quindi le impostazioni degli utenti esistenti sono preservate esattamente (91e78a9e3, f4bb9f48c).

  • Corretta una regressione in cui diverse finestre e helper che ricevono l’oggetto delle impostazioni condiviso eseguivano l’I/O a chiave nuda nella radice delle impostazioni invece che sotto OpenMV/, perdendo la geometria della finestra del model zoo, lo splitter e lo stato di espansione, nonché lo stato delle sei finestre dei loader (dfu-util, imx, bossac, alif, picotool e ST Cube Programmer) insieme alle opzioni dei compilatori mpy-cross, vela e ST Edge AI; il gruppo è ora incorporato in ciascuna chiave così viene usato il percorso corretto (258448bdf).

Supporto di piattaforme e strumenti

  • Base Qt Creator: 14.0.2.

  • Versione di OpenMV IDE portata a 4.8.11.

Modifiche che rompono la compatibilità

Nessuna. Tutte le modifiche sono correzioni di bug e miglioramenti sovrapposti alla base esistente Qt Creator 14.0.2; i progetti e i flussi di lavoro esistenti non sono interessati.