v4.4.0

v4.4.0 este o versiune majoră de modernizare care rebazează OpenMV IDE de la baza sa veche Qt Creator 10.0.1 pe Qt Creator 14.0.2, reaplicând întregul plugin OpenMV și fiecare personalizare a fork-ului peste noua bază. În plus, această versiune include un server de limbaj Python încorporat pentru completare de cod offline, activează GitHub Copilot pe fiecare platformă, introduce un nou bootloader DFU OpenMV personalizat și migrează camerele OpenMV pe un nou ID de furnizor USB 37C5. Schimbarea bazei este o modernizare internă amplă, dar nu afectează proiectele utilizatorilor; consultați Breaking changes pentru numărul redus de modificări de flux de lucru vizibile pentru utilizator.

Repere

  • Rebazare pe Qt Creator 14.0.2. IDE-ul trece de la Qt Creator 10.0.1 la 14.0.2, cu întregul plugin OpenMV și toate personalizările // OPENMV-DIFF // reaplicate pe baza modernă (d6c895be8, 1fa75b397).

  • Server de limbaj Python încorporat. IDE-ul livrează acum și folosește automat un pylsp inclus (cu astroid 3.3.5), oferind completare de cod Python/MicroPython offline fără o instalare pip separată pe Windows, macOS și Linux x86_64 (257addee0, 5a2b3e72f, 94470798d).

  • GitHub Copilot pe toate platformele. Copilot este integrat și activat implicit, cu un runtime Node.js 20.18.0 inclus pentru Windows, macOS și Linux, astfel încât nu mai este limitat la anumite mașini, plus un dialog de pornire pentru a-l activa (bb07d582b, 1cb967c5a, b37e48040).

  • Nou bootloader DFU OpenMV. Un flux de bootloader openmv_dfu personalizat, complet implementat, conduce actualizările de firmware din settings.json, inclusiv un dialog „board in DFU mode detected” care oferă opțiunile de instalare a celei mai recente versiuni, încărcare a unui firmware specific și ștergere a sistemului de fișiere, plus o cale de bootloader de rezervă pentru recuperarea camerelor blocate (08b9d0676, 6a6a9351d, 6d78d6571).

  • Suport pentru camere noi. Adaugă plăcile OpenMV Cam N6, RT1062 și AE3 și migrează camerele pe noul ID de furnizor USB 37C5 cu drivere DFU și reguli udev actualizate (000ed8a87, f453bc945, 4a16e04c2, 6d78d6571).

  • Comunicație serială mai fiabilă. Corecții majore ale comunicației seriale rezolvă textul terminalului corupt și deconectările aleatorii cu camerele bazate pe TinyUSB (caeba6a16, 6cf122a3c).

Funcționalități noi

  • Bootloader DFU OpenMV. Un nou sistem de bootloader openmv_dfu cu drivere DFU dedicate și un mecanism de bootloader de rezervă recuperează camerele blocate indiferent de tipul de firmware (6a6a9351d, 6d78d6571). Fluxul conduce actualizările de firmware din settings.json și prezintă un dialog „board in DFU mode detected” cu opțiunile de instalare a celei mai recente versiuni, încărcare a unui firmware specific și ștergere a sistemului de fișiere (08b9d0676, ef19133b6, 9c59d113c).

  • Numele plăcii în selectorul de port. Dialogul de selecție a portului serial sondează acum fiecare port și afișează numele plăcii detectate lângă port (de ex. COM3: OpenMV Cam H7) în loc de un simplu nume de port (9837d6cb5).

  • Editor cu file. Pluginul de editor cu file este restabilit, adăugând un rând de file de documente deasupra zonei editorului pentru comutarea între fișierele deschise (c8519c09f), iar acum păstrează și restaurează ordinea filelor între sesiuni (55ccfb207).

  • Evidențiere a sintaxei Python. Adaugă o definiție dedicată de evidențiere a sintaxei Python pentru editor, cu reguli pentru format de șir, virgulă mobilă și cuvinte-cheie (9be46c0c3).

Alte modificări și îmbunătățiri

  • Refactorizarea încărcării firmware-ului. Codul de încărcare a firmware-ului a fost împărțit în handlere de bootloader separate per tip (OpenMV DFU, Arduino DFU, BOSSAC, i.MX, picotool), adăugând gestionarea PID-ului touch-to-reset pentru plăcile Arduino DFU și variante explicite „Legacy” de plăci pentru dispozitivele cu VID/PID alternativ (9f465f9f8).

  • Măsuri de protecție pentru bootloader-ul ROM STM32. IDE-ul avertizează sau blochează acum încărcarea firmware.dfu/openmv.dfu pe bootloader-ul de recuperare ROM STM32, recomandând doar bootloader.dfu pentru a evita blocarea plăcilor STM32H7 afectate de o eroare a bootloader-ului ROM al cipului (c5ce0ae1a, e7cde1ec1).

  • Configurare automată și silențioasă a serverului LSP Python. Serverul de limbaj Python se instalează și se actualizează acum automat, fără solicitări în bara de informații sau spam de mesaje în consolă (d89f5985f), iar sistemul de autocompletare/documentație la trecerea cursorului pentru Python a fost reproiectat într-un motor de documentație OpenMV dedicat care analizează documentația HTML a bibliotecii inclusă pentru a alimenta evidențierea cuvintelor-cheie și indiciile (47e02873b, 4f9853f21, 82cefc931).

  • Detectarea interpretorului Python pe Linux. Detectarea interpretorului pe Linux este acum automată, luând în considerare doar interpretoarele Python 3 din PATH și selectându-l pe cel mai nou ca implicit unic (214fdc758).

  • Curățarea setărilor Python. Grupul de gestionare per interpretor și pagina Interpreters sunt ascunse, Language Server Configuration este plasată sub o categorie Python, iar butoanele neutilizate din bara de instrumente pentru REPL și selectorul de interpretor sunt ascunse în editorul Python (d89f5985f). Pe Windows, IDE-ul înregistrează acum automat python.exe încorporat inclus ca interpretor implicit, cu serverul de limbaj inclus tratat ca deja instalat (1d9ca003e, d89f5985f).

  • Director de profil mai curat. IDE-ul nu mai scrie fișiere de setări Qt Creator neutilizate (devices, kits, toolchains, versiuni Qt) și deschide fișierele direct în editor (3771b0107), nu mai scanează sistemul după versiuni qmake/Qt (42807f25f) și evită încărcarea mecanismelor neutilizate de device/toolchain/kit și a zgomotului de pornire (902a357de, b2666a35b).

  • Actualizări mai sigure. Actualizarea IDE-ului nu mai suprascrie resursele utilizatorului; doar folderele de resurse gestionate (examples, firmware, html, models) sunt eliminate și recopiate, micropython-headers fiind suplimentar eliminat (este instalat separat în loc să fie recopiat pe această cale), plus o eroare mai clară dacă firmware/settings.json lipsește sau este invalid (b4b8c208d, 3255ba4fb).

  • Conectare DFU mai rapidă. Timpul de așteptare a conexiunii DFU a fost redus, astfel încât flashing-ul și conectarea sunt mai rapide (11d8c9fe3, 4700bf678).

  • Meniul OpenMV și personalizările UI restabilite. Aranjamentul simplificat al meniului OpenMV este reaplicat, ascunzând meniurile Build și Debug și eliminând acțiunile de gestionare a proiectului (7503f2bec); motorul de completare a codului recâștigă conștientizarea claselor/metodelor și domeniile cuvintelor-cheie public/private pentru autocompletarea MicroPython (55fc348ea); randarea culorilor ANSI ale terminalului este reaplicată cu valori bright/dim adaptate temei și suport pentru escape-ul cursor-back (c6787a27a); iar bara de instrumente a vizualizatorului de imagini este personalizată cu indicii pentru rezoluție/zoom și o acțiune Fit-to-Screen relocată (734fec693).

  • Resurse incluse restabilite. Instrumentele de flashing, driverele DFU, firmware-ul și întregul arbore de exemple/scripturi sunt restabilite în resursele partajate după reducerea aferentă rebazării (33c8354bc), iar logica personalizată de pornire a aplicației OpenMV este reaplicată: solicită obligatoriu pluginul TextEditor (verificările pluginurilor OpenMV și TabbedEditor sunt prezente, dar dezactivate), instalează un handler de mesaje Qt personalizat, elimină opțiunile de linie de comandă -client/-pid/-block și forțează comportamentul de instanță unică (06c788f3d).

  • Eroare la lipsa unui plugin. Aplicația eșuează acum definitiv cu o eroare clară dacă pluginurile necesare lipsesc sau sunt dezactivate, pluginul OpenMV a primit o dependență de Copilot, iar mai multe opțiuni ale editorului de text (Prefer single line comments și selectorul de poziție a comentariilor din setările Behavior, precum și Highlight selection din setările Display) sunt ascunse (1bc02b1f3).

  • Timeout-uri seriale mai scurte. Timeout-urile protocolului serial au fost scurtate (citire de la 10000 la 5000 ms, scriere de la 6000 la 3000 ms) pentru un feedback mai rapid în caz de eșec, cu valoarea implicită documentată -override_read_timeout actualizată corespunzător (641385af4).

  • Recuperarea porturilor blocate. Porturile seriale blocate la mijlocul unei comenzi sunt acum recuperate folosind o interogare GET_STATE (configurabilă prin setarea get-state) în loc de o interogare de tip script-running (a8598f550).

  • Ordinea dialogului de setări. Dialogul de setări ascunde caseta de bifare pentru sortarea alfabetică a categoriilor, astfel încât lista de pagini rămâne în ordinea intenționată de OpenMV (1cb967c5a).

  • Setări Copilot simplificate. Pagina de setări Copilot este redusă doar la controalele de autentificare/conectare și proxy, ascunzând opțiunile enable-Copilot, calea Node.js, dist-path și auto-complete (1cb967c5a).

Corecții de erori

  • S-au remediat probleme majore de comunicație serială prin creșterea de 10x a timeout-ului de blocare a citirii seriale și dezactivarea unei căi de deblocare bazate pe GET_STATE care corupea textul terminalului serial (caeba6a16).

  • S-au remediat deconectările seriale aleatorii cu camerele bazate pe TinyUSB prin emiterea unei comenzi de deblocare frame-dump și reproiectarea gestionării blocării citirii în loc de deconectare (6cf122a3c).

  • S-a făcut gestionarea get_state a camerei tolerantă la răspunsuri scurte/parțiale și s-a asigurat golirea textului terminalului serial din buffer în timpul recuperării după erori, astfel încât ieșirea de jurnal să nu se piardă (c8b4248a6, 247a779dd).

  • S-au corectat numerele de partiție flash/alt-setting ale bootloader-ului DFU pentru încărcarea firmware-ului OpenMV Cam (a8700d12d).

  • S-au restabilit toate bootloader-ele prin onorarea unui nou flag de placă hidden, comutarea filtrării numerelor de serie la filtre inverse și oferirea unei configurări picotool funcționale pentru intrarea UF2 Arduino Nano RP2040 Connect (63cee629b).

  • S-a remediat memorarea valorii greșite de către dialogul de selecție a tipului de placă al bootloader-ului prin utilizarea unor chei de istoric separate pentru selecțiile de tip de placă lizibile de om și IMX (a3325af32).

  • S-a remediat calculul marcajului de timp/ratei de cadre la transcodarea video (Save Video) prin calcularea intervalului mediu dintre cadre în microsecunde, suportul pentru un nou format de timp v21 ImageWriter și protejarea împotriva pixmap-urilor nule în timpul conversiei (f5c75c749, f8f762b3e).

  • S-a remediat o blocare în vizualizarea histogramă/framebuffer atunci când se primea un pixmap gol (nul), protejând pixmapUpdate() împotriva datelor nule (622cf5ea8).

  • S-au restabilit indiciile de adnotare la trecerea cursorului în editorul de text, astfel încât trecerea peste marcajele de text afișează din nou indiciul adnotării (1852d18e1).

  • S-a împiedicat apariția dialogurilor de informații GitHub Copilot și LED-colors în timp ce IDE-ul este ocupat cu conectarea sau flashing-ul (f8f762b3e).

  • S-a adăugat protecție împotriva blocărilor în clientul de limbaj, astfel încât gestionarea modificărilor conținutului documentului nu mai blochează IDE-ul în cazuri limită (7926ffe4c).

  • S-au remediat verificările serverului de limbaj Python care împiedicau o închidere curată a IDE-ului, făcând pluginul Python să aștepte asincron verificările în curs înainte de ieșire (9ff6c7936).

  • S-a remediat autocompletarea Python pe Linux: clientul de limbaj se ancorează la micropython-headers inclus, iar acțiunea redundantă din bara de instrumente a editorului pentru fereastra pop-up de completare este ascunsă (d37f66a9a, 56e748f9d, 016fa73eb).

  • S-a remediat gestionarea fișierelor temporare/nesalvate astfel încât Save As folosește directorul inițial al dialogului de fișiere, iar dialogul Save Items și editorul Diff nu mai afișează căile interne ale fișierelor temporare (b7f0bb378, c8e7b6b8f, 6b128c34c).

  • Salvarea unui buffer fără titlu/temporar setează acum implicit dialogul Save-As la un nume de fișier .py corespunzător în loc de un nume gol (3001fdfff).

  • Documentele temporare/fără titlu sunt acum oferite pentru salvare când sunt modificate, excluse de la salvarea automată și direcționate corect prin Save-As (f87b71cf0).

  • S-a remediat ordinea meniului Recent Files astfel încât redeschiderea unui fișier deja listat nu îl mai reordonează, iar dialogul de fișiere setează acum implicit directorul de proiecte (d49c0c993).

  • S-a remediat randarea textului casetelor de mesaj prin renunțarea la forțarea formatului rich-text pe casetele de mesaj bifabile, astfel încât textul brut se afișează corect (0c565502f).

  • S-au remediat culorile indiciilor astfel încât indiciile se randează corect în tema deschisă (35cbf077b).

  • Corecții generale de stabilitate și curățare Qt Creator în setările de bază, clientul de limbaj, toolchain-ul MSVC, project explorer și pluginurile Python (836b163dc, 134f43cb8).

  • S-a corectat numele folderului de firmware inclus pentru Arduino Nano 33 BLE Sense (b1d8ac227) și s-a remediat regula udev Linux pentru ID-ul de produs al bootloader-ului DFU AE3, corectând 96E3 în 96e3 cu litere mici, astfel încât potrivirea idProduct sensibilă la majuscule a udev să funcționeze (2cd43c96b). Regula udev Linux a bootloader-ului DFU AE3 a fost de asemenea actualizată la ID-ul de produs 37c5:afe3 pentru link-ul simbolic openmvdfu (b99555637).

Suport pentru platforme și instrumente

  • Bază Qt Creator: 14.0.2 (rebazată de la 10.0.1).

  • OpenMV Cam N6 este acum suportată (VID:PID 37C5:1206, bootloader DFU 37C5:9206), inclusiv setări de firmware, un driver DFU Windows și o regulă udev Linux (000ed8a87, 1b950c8c6).

  • OpenMV Cam RT1062 este acum suportată sub un nou VID/PID USB personalizat (37C5:1060), inclusiv drivere DFU, reguli udev și intrările legacy păstrate 1209:ABD1 pentru unitățile mai vechi (f453bc945, d55d6441f).

  • OpenMV Cam AE3 este acum suportată, inclusiv drivere DFU Windows, arborele său de imagini de firmware/configurare și VID/PID USB (actualizat la 37C5:16E3 runtime / 37C5:96E3 bootloader) (4a16e04c2, cc52e76f5, 3f75e7de4, 8eb80b129).

  • Nou sistem USB VID/PID: Camerele OpenMV trec la ID-ul de furnizor 37C5 cu noi ID-uri de bootloader/DFU (de ex. 37C5:1202/9202 M4, 1203/9203 M7, 1204/9204 H7, 124A/924A H7 Plus, 1205/9205), reetichetând plăcile vechi 1209:ABD1 drept Legacy, suportând totodată atât firmware-ul vechi, cât și cel nou (6d78d6571, 6a6a9351d, 500b1a0bf).

  • Senzorul de imagine PAG7936 a fost adăugat la lista de senzori recunoscuți (f9e3f3461).

  • Python 3.13 încorporat, interpretor inclus pentru macOS, Linux x86_64, Linux arm64 și Linux arm (9133b1516), cu bibliotecile partajate native libpython3.13 și ujson (d3aa663d8, a2cb24e74).

  • Server de limbaj inclus: pylsp cu astroid 3.3.5 pe Windows, macOS și Linux x86_64 (257addee0). Build-ul Windows livrează un CPython încorporat cu python-lsp-server 1.12.0, jedi 0.17.2, docstring_to_markdown 0.15, pip 24.2 și distlib 0.3.9 (9b6434602, 069807cd3, 5f2e45196, 3b6c6c312).

  • Node.js 20.18.0 inclus, runtime LTS „Iron” pentru Windows, macOS, Linux arm64, Linux x64 și Linux armv7 pentru a activa GitHub Copilot pe toate platformele (bb07d582b, 6db78bf45, 1cb967c5a).

  • Alif Security Toolkit, binare semnate de boot/system-package și ghid de utilizare incluse pentru Windows, macOS și Linux x86_64 pentru aprovizionarea camerelor OpenMV bazate pe Alif (de ex. AE3) (f63851be3).

  • Integrarea în desktop Linux este restabilită, instalând o intrare desktop de aplicație și metadate AppStream și înregistrând tipul MIME Python (.py) (3fa25f571).

Breaking changes

Niciun API de scripting nu a fost modificat. Pot fi observate următoarele modificări de flux de lucru și comportament vizibile pentru utilizator:

  • Nou ID de furnizor USB. Camerele OpenMV migrează la ID-ul de furnizor 37C5 cu noi ID-uri de produs și de bootloader DFU; plăcile pe vechiul VID 1209:ABD1 sunt acum etichetate „Legacy”. IDE-ul suportă simultan atât firmware-ul vechi, cât și cel nou, dar utilizatorii Linux trebuie să reinstaleze regulile udev actualizate pentru ca noile ID-uri să fie recunoscute.

  • Intrările de plăci Legacy ascunse. Variantele legacy ale plăcilor OpenMV Cam M4/M7/H7/H7 Plus/Pure Thermal sunt acum suprimate din lista de selecție firmware/placă printr-un nou flag de placă legacy (distinct de flag-ul hidden preexistent), astfel încât utilizatorii care au nevoie special de o intrare de placă legacy nu o vor mai vedea în lista derulantă (6d78d6571).

  • Timeout-uri seriale mai scurte. Timeout-ul implicit de citire a răspunsului scade de la 10000 ms la 5000 ms, iar timeout-ul de scriere de la 6000 ms la 3000 ms (valoarea implicită -override_read_timeout este acum documentată ca 5000). Plăcile/legăturile lente care se bazau pe valorile implicite mai lungi pot expira mai devreme.

Rebazarea pe Qt Creator 14.0.2 este o modernizare internă amplă, dar nu afectează proiectele utilizatorilor.