v4.4.0

v4.4.0 è una importante release di modernizzazione che ribasa OpenMV IDE dalla sua consolidata base Qt Creator 10.0.1 alla nuova base Qt Creator 14.0.2, riapplicando l’intero plugin OpenMV e ogni personalizzazione del fork sopra alla base più recente. In aggiunta a questo, questa release include un language server Python integrato per il completamento del codice offline, abilita GitHub Copilot su ogni piattaforma, introduce un nuovo bootloader DFU OpenMV personalizzato e migra le camere OpenMV a un nuovo USB vendor ID 37C5. Il cambio di base è una grande modernizzazione interna ma non rompe i progetti degli utenti; vedere Modifiche che rompono la compatibilità per il piccolo numero di cambiamenti di workflow visibili agli utenti.

In evidenza

  • Ribasamento su Qt Creator 14.0.2. L’IDE passa da Qt Creator 10.0.1 a 14.0.2, con l’intero plugin OpenMV e tutte le personalizzazioni // OPENMV-DIFF // riapplicate sulla base moderna (d6c895be8, 1fa75b397).

  • Language server Python integrato. L’IDE ora include e utilizza automaticamente un pylsp incorporato (con astroid 3.3.5), fornendo il completamento del codice Python/MicroPython offline senza una installazione pip separata su Windows, macOS e Linux x86_64 (257addee0, 5a2b3e72f, 94470798d).

  • GitHub Copilot su tutte le piattaforme. Copilot è integrato e abilitato per impostazione predefinita, con un runtime Node.js 20.18.0 incorporato per Windows, macOS e Linux, così non è più limitato a macchine selezionate, oltre a una finestra di dialogo all’avvio per attivarlo (bb07d582b, 1cb967c5a, b37e48040).

  • Nuovo bootloader DFU OpenMV. Un flusso bootloader openmv_dfu personalizzato e completamente implementato gestisce gli aggiornamenti del firmware da settings.json, inclusa una finestra di dialogo «board in DFU mode detected» che offre le scelte installa-ultima-release, carica-firmware-specifico ed cancella-filesystem, oltre a un percorso di bootloader di fallback per recuperare camere danneggiate (08b9d0676, 6a6a9351d, 6d78d6571).

  • Supporto per nuove camere. Aggiunge le schede OpenMV Cam N6, RT1062 e AE3, e migra le camere al nuovo USB vendor ID 37C5 con driver DFU e regole udev aggiornati (000ed8a87, f453bc945, 4a16e04c2, 6d78d6571).

  • Comunicazione seriale più affidabile. Importanti correzioni alla comunicazione seriale risolvono il testo del terminale alterato e le disconnessioni casuali con le camere basate su TinyUSB (caeba6a16, 6cf122a3c).

Nuove funzionalità

  • Bootloader DFU OpenMV. Un nuovo sistema bootloader openmv_dfu con driver DFU dedicati e un meccanismo di bootloader di fallback recupera le camere danneggiate tra i vari tipi di firmware (6a6a9351d, 6d78d6571). Il flusso gestisce gli aggiornamenti del firmware da settings.json e presenta una finestra di dialogo «board in DFU mode detected» con le opzioni installa-ultima-release, carica-firmware-specifico e cancella-filesystem (08b9d0676, ef19133b6, 9c59d113c).

  • Nome della scheda nel selettore di porta. La finestra di selezione della porta seriale ora sonda ogni porta e mostra il nome della scheda rilevata accanto alla porta (ad es. COM3: OpenMV Cam H7) invece di un semplice nome di porta (9837d6cb5).

  • Editor a schede. Il plugin editor a schede è stato ripristinato, aggiungendo una riga di schede dei documenti sopra l’area dell’editor per passare tra i file aperti (c8519c09f), e ora mantiene e ripristina l’ordinamento delle schede tra le sessioni (55ccfb207).

  • Evidenziazione della sintassi Python. Aggiunge una definizione dedicata di evidenziazione della sintassi Python per l’editor con regole per string-format, float e parole chiave (9be46c0c3).

Altre modifiche e miglioramenti

  • Refactoring del caricamento del firmware. Il codice di caricamento del firmware è stato suddiviso in gestori di bootloader separati per tipo (OpenMV DFU, Arduino DFU, BOSSAC, i.MX, picotool), aggiungendo la gestione del PID touch-to-reset per le schede Arduino DFU e varianti di schede «Legacy» esplicite per i dispositivi con VID/PID alternativi (9f465f9f8).

  • Protezioni per il ROM bootloader STM32. L’IDE ora avvisa o blocca il caricamento di firmware.dfu/openmv.dfu sul ROM recovery bootloader STM32, raccomandando solo bootloader.dfu per evitare di danneggiare le schede STM32H7 colpite da un bug del ROM bootloader del chip (c5ce0ae1a, e7cde1ec1).

  • Configurazione automatica e silenziosa dell’LSP Python. Il language server Python ora si installa e si aggiorna automaticamente senza prompt nella infobar o spam di messaggi nella console (d89f5985f), e il sistema di autocompletamento/hover della documentazione Python è stato rielaborato in un motore di documentazione OpenMV dedicato che analizza la documentazione HTML delle librerie integrata per pilotare l’evidenziazione delle parole chiave e i tooltip (47e02873b, 4f9853f21, 82cefc931).

  • Rilevamento dell’interprete Python su Linux. Il rilevamento dell’interprete su Linux è ora automatico, considerando solo gli interpreti Python 3 da PATH e selezionando il più recente come unica impostazione predefinita (214fdc758).

  • Pulizia delle impostazioni Python. Il gruppo di gestione per-interprete e la pagina Interpreters sono nascosti, la Language Server Configuration è classificata sotto una categoria Python e i pulsanti della toolbar inutilizzati per REPL e per il selettore di interprete sono nascosti nell’editor Python (d89f5985f). Su Windows, l’IDE ora registra automaticamente il python.exe incorporato come interprete predefinito, con il language server integrato trattato come già installato (1d9ca003e, d89f5985f).

  • Cartella del profilo più pulita. L’IDE non scrive più file di impostazioni Qt Creator inutilizzati (devices, kits, toolchains, versioni Qt) e apre i file direttamente nell’editor (3771b0107), non scansiona più il sistema per le versioni qmake/Qt (42807f25f) ed evita di caricare la macchinaria inutilizzata di device/toolchain/kit e il rumore all’avvio (902a357de, b2666a35b).

  • Aggiornamenti più sicuri. L’aggiornamento dell’IDE non sovrascrive più le risorse dell’utente; solo le cartelle delle risorse gestite (examples, firmware, html, models) vengono rimosse e ricopiate, con micropython-headers rimosso in aggiunta (viene installato separatamente anziché ricopiato tramite questo percorso), e un errore più chiaro se firmware/settings.json è mancante o non valido (b4b8c208d, 3255ba4fb).

  • Connessione DFU più veloce. Il tempo di attesa della connessione DFU è stato ridotto in modo che il flashing e la connessione siano più veloci (11d8c9fe3, 4700bf678).

  • Menu OpenMV e personalizzazioni dell’UI ripristinati. Il layout semplificato del menu OpenMV è stato riapplicato, nascondendo i menu Build e Debug e rimuovendo le azioni di gestione del progetto (7503f2bec); il motore di completamento del codice recupera la consapevolezza di classi/metodi e gli ambiti delle parole chiave public/private per l’autocompletamento MicroPython (55fc348ea); il rendering dei colori ANSI del terminale è stato riapplicato con valori bright/dim consapevoli del tema e supporto per la sequenza di escape cursor-back (c6787a27a); e la toolbar del visualizzatore di immagini è stata personalizzata con tooltip per risoluzione/zoom e un’azione Fit-to-Screen riposizionata (734fec693).

  • Risorse integrate ripristinate. Gli strumenti di flashing, i driver DFU, il firmware e l’intero albero di esempi/script sono stati ripristinati nelle risorse condivise dopo la riduzione dovuta al ribasamento (33c8354bc), ed è stata riapplicata la logica di avvio dell’applicazione personalizzata di OpenMV: richiede obbligatoriamente il plugin TextEditor (i controlli dei plugin OpenMV e TabbedEditor sono presenti ma disabilitati), installa un message handler Qt personalizzato, rimuove le opzioni da riga di comando -client/-pid/-block e forza il comportamento a istanza singola (06c788f3d).

  • Errore per plugin mancante. L’app ora fallisce in modo netto con un errore chiaro se i plugin richiesti sono mancanti o disabilitati, il plugin OpenMV ha acquisito una dipendenza da Copilot e diverse opzioni dell’editor di testo (Prefer single line comments e il selettore della posizione dei commenti nelle impostazioni Behavior, e Highlight selection nelle impostazioni Display) sono nascoste (1bc02b1f3).

  • Timeout seriali più brevi. I timeout del protocollo seriale sono stati accorciati (lettura da 10000 a 5000 ms, scrittura da 6000 a 3000 ms) per un feedback di errore più rapido, con l’aggiornamento del valore predefinito documentato di -override_read_timeout per corrispondere (641385af4).

  • Recupero delle porte bloccate. Le porte seriali bloccate a metà comando vengono ora recuperate utilizzando una query GET_STATE (configurabile tramite l’impostazione get-state) invece di una query di esecuzione script (a8598f550).

  • Ordine della finestra di dialogo delle impostazioni. La finestra di dialogo delle impostazioni nasconde la casella di controllo per l’ordinamento alfabetico delle categorie in modo che l’elenco delle pagine rimanga nell’ordine previsto da OpenMV (1cb967c5a).

  • Impostazioni di Copilot semplificate. La pagina delle impostazioni di Copilot è ridotta ai soli controlli di sign-in/autenticazione e proxy, nascondendo le opzioni enable-Copilot, Node.js-path, dist-path e auto-complete (1cb967c5a).

Correzioni di bug

  • Corretti importanti problemi di comunicazione seriale aumentando di 10 volte il timeout di stallo della lettura seriale e disabilitando un percorso di sblocco basato su GET_STATE che alterava il testo del terminale seriale (caeba6a16).

  • Corrette le disconnessioni seriali casuali con le camere basate su TinyUSB inviando un comando di sblocco del frame-dump e rielaborando la gestione dello stallo di lettura invece di disconnettersi (6cf122a3c).

  • Resa la gestione di get_state della camera tollerante alle risposte brevi/parziali e assicurato che il testo bufferizzato del terminale seriale venga scaricato durante il recupero degli errori in modo che l’output di log non vada perso (c8b4248a6, 247a779dd).

  • Corretti i numeri di partizione flash/alt-setting del bootloader DFU per il caricamento del firmware delle OpenMV Cam (a8700d12d).

  • Ripristinati tutti i bootloader rispettando un nuovo flag di scheda hidden, passando il filtraggio dei numeri di serie a filtri inversi e fornendo alla voce UF2 dell’Arduino Nano RP2040 Connect una configurazione picotool funzionante (63cee629b).

  • Corretto il fatto che la finestra di dialogo di selezione del tipo di scheda del bootloader ricordava il valore sbagliato, utilizzando chiavi di cronologia separate per le selezioni del tipo di scheda human-readable e IMX (a3325af32).

  • Corretto il calcolo del timestamp/frame-rate della transcodifica video (Save Video) calcolando l’intervallo medio tra i frame in microsecondi, supportando un nuovo formato di tempo v21 ImageWriter e proteggendo dai pixmap nulli durante la conversione (f5c75c749, f8f762b3e).

  • Corretto un crash nella vista istogramma/framebuffer quando veniva ricevuto un pixmap vuoto (nullo) proteggendo pixmapUpdate() dai dati nulli (622cf5ea8).

  • Ripristinati i tooltip di annotazione al passaggio del mouse nell’editor di testo, in modo che passando sopra i contrassegni di testo venga nuovamente mostrato il tooltip dell’annotazione (1852d18e1).

  • Impedito alle finestre di dialogo informative di GitHub Copilot e dei colori dei LED di comparire mentre l’IDE è occupato a connettersi o a effettuare il flashing (f8f762b3e).

  • Aggiunta protezione dai crash nel language client in modo che la gestione delle modifiche al contenuto dei documenti non faccia più crashare l’IDE nei casi limite (7926ffe4c).

  • Corretti i controlli del language server Python che impedivano un arresto pulito dell’IDE, facendo attendere in modo asincrono il plugin Python per i controlli in corso prima di uscire (9ff6c7936).

  • Corretto l’autocompletamento Python su Linux: il language client si radica al micropython-headers integrato e l’azione ridondante del popup di completamento nella toolbar dell’editor è nascosta (d37f66a9a, 56e748f9d, 016fa73eb).

  • Corretta la gestione dei file temporanei/non salvati in modo che Save As utilizzi la directory iniziale della finestra di dialogo dei file, e la finestra di dialogo Save Items e l’editor Diff non mostrino più i percorsi dei file temporanei interni (b7f0bb378, c8e7b6b8f, 6b128c34c).

  • Il salvataggio di un buffer senza titolo/temporaneo ora imposta come predefinito nella finestra di dialogo Save-As un nome di file .py appropriato invece di un nome vuoto (3001fdfff).

  • I documenti temporanei/senza titolo vengono ora offerti per il salvataggio quando modificati, esclusi dal salvataggio automatico e instradati correttamente tramite Save-As (f87b71cf0).

  • Corretto l’ordinamento del menu Recent Files in modo che la riapertura di un file già elencato non lo riordini più, e la finestra di dialogo dei file ora utilizza come predefinita la directory dei progetti (d49c0c993).

  • Corretto il rendering del testo delle finestre di messaggio non forzando più il formato rich-text sulle finestre di messaggio selezionabili, in modo che il testo grezzo venga visualizzato correttamente (0c565502f).

  • Corretti i colori dei tooltip in modo che i tooltip vengano renderizzati correttamente nel tema chiaro (35cbf077b).

  • Correzioni generali di stabilità e pulizia di Qt Creator nelle impostazioni core, nel language client, nella toolchain MSVC, nel project explorer e nei plugin Python (836b163dc, 134f43cb8).

  • Corretto il nome della cartella del firmware integrato dell’Arduino Nano 33 BLE Sense (b1d8ac227) e corretta la regola udev Linux per il product ID del bootloader DFU dell’AE3, correggendo 96E3 in 96e3 minuscolo in modo che la corrispondenza idProduct case-sensitive di udev funzioni (2cd43c96b). La regola udev Linux del bootloader DFU dell’AE3 è stata aggiornata anche al product ID 37c5:afe3 per il symlink openmvdfu (b99555637).

Supporto di piattaforme e strumenti

  • Base Qt Creator: 14.0.2 (ribasata da 10.0.1).

  • OpenMV Cam N6 è ora supportata (VID:PID 37C5:1206, bootloader DFU 37C5:9206), incluse le impostazioni del firmware, un driver DFU per Windows e una regola udev Linux (000ed8a87, 1b950c8c6).

  • OpenMV Cam RT1062 è ora supportata con un nuovo USB VID/PID personalizzato (37C5:1060), inclusi driver DFU, regole udev e voci legacy 1209:ABD1 mantenute per le unità più vecchie (f453bc945, d55d6441f).

  • OpenMV Cam AE3 è ora supportata, inclusi driver DFU per Windows, il suo albero di immagini firmware/config e USB VID/PID (aggiornato a 37C5:16E3 runtime / 37C5:96E3 bootloader) (4a16e04c2, cc52e76f5, 3f75e7de4, 8eb80b129).

  • Nuovo sistema USB VID/PID: le camere OpenMV passano al vendor ID 37C5 con nuovi ID bootloader/DFU (ad es. 37C5:1202/9202 M4, 1203/9203 M7, 1204/9204 H7, 124A/924A H7 Plus, 1205/9205), rietichettando le vecchie schede 1209:ABD1 come Legacy pur continuando a supportare sia il firmware vecchio che quello nuovo (6d78d6571, 6a6a9351d, 500b1a0bf).

  • Aggiunto il sensore di immagine PAG7936 all’elenco dei sensori riconosciuti (f9e3f3461).

  • Python 3.13 integrato come interprete incluso per macOS, Linux x86_64, Linux arm64 e Linux arm (9133b1516), con le librerie condivise native libpython3.13 e ujson (d3aa663d8, a2cb24e74).

  • Language server integrato: pylsp con astroid 3.3.5 su Windows, macOS e Linux x86_64 (257addee0). La build di Windows include un CPython incorporato con 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 integrato, runtime LTS «Iron» per Windows, macOS, Linux arm64, Linux x64 e Linux armv7 per abilitare GitHub Copilot su tutte le piattaforme (bb07d582b, 6db78bf45, 1cb967c5a).

  • Alif Security Toolkit con binari firmati di boot/system-package e guida utente inclusi per Windows, macOS e Linux x86_64 per il provisioning delle camere OpenMV basate su Alif (ad es. AE3) (f63851be3).

  • L’integrazione desktop Linux è stata ripristinata, installando una voce desktop dell’applicazione e i metadati AppStream e registrando il tipo MIME Python (.py) (3fa25f571).

Modifiche che rompono la compatibilità

Nessuna API di scripting è cambiata. Le seguenti modifiche di workflow e comportamento visibili agli utenti potrebbero essere notate:

  • Nuovo USB vendor ID. Le camere OpenMV migrano al vendor ID 37C5 con nuovi ID di prodotto e di bootloader DFU; le schede sul vecchio VID 1209:ABD1 sono ora etichettate come «Legacy». L’IDE supporta sia il firmware vecchio che quello nuovo simultaneamente, ma gli utenti Linux devono reinstallare le regole udev aggiornate affinché i nuovi ID siano riconosciuti.

  • Voci delle schede legacy nascoste. Le varianti legacy delle schede OpenMV Cam M4/M7/H7/H7 Plus/Pure Thermal sono ora soppresse dall’elenco di selezione firmware/scheda tramite un nuovo flag di scheda legacy (distinto dal preesistente flag hidden), in modo che gli utenti che hanno specificamente bisogno di una voce di scheda legacy non la vedranno più nel menu a tendina (6d78d6571).

  • Timeout seriali più brevi. Il timeout di lettura della risposta predefinito scende da 10000 ms a 5000 ms e il timeout di scrittura da 6000 ms a 3000 ms (il valore predefinito di -override_read_timeout è ora documentato come 5000). Le schede/connessioni lente che si affidavano ai valori predefiniti più lunghi potrebbero andare in timeout prima.

Il ribasamento su Qt Creator 14.0.2 è una grande modernizzazione interna ma non rompe la compatibilità per i progetti degli utenti.