v4.4.0

v4.4.0 je velká modernizační verze, která přesouvá OpenMV IDE z jeho dlouhodobého základu Qt Creator 10.0.1 na Qt Creator 14.0.2 a znovu aplikuje kompletní plugin OpenMV a všechny úpravy forku na novější základ. Kromě toho tato verze obsahuje vestavěný jazykový server Python pro offline doplňování kódu, povoluje GitHub Copilot na všech platformách, zavádí nový vlastní bootloader OpenMV DFU a přesouvá kamery OpenMV na nové USB vendor ID 37C5. Změna základu je rozsáhlá interní modernizace, ale nenarušuje uživatelské projekty; viz Breaking changes pro malý počet uživatelsky viditelných změn pracovního postupu.

Hlavní novinky

  • Přechod na Qt Creator 14.0.2. IDE přechází z Qt Creator 10.0.1 na 14.0.2, přičemž celý plugin OpenMV a všechny úpravy // OPENMV-DIFF // jsou znovu aplikovány na moderní základ (d6c895be8, 1fa75b397).

  • Vestavěný jazykový server Python. IDE nyní dodává a automaticky používá zabudovaný pylsp (s astroid 3.3.5), čímž poskytuje offline doplňování kódu Python/MicroPython bez samostatné instalace pomocí pip na Windows, macOS a Linux x86_64 (257addee0, 5a2b3e72f, 94470798d).

  • GitHub Copilot na všech platformách. Copilot je integrován a ve výchozím nastavení povolen, se zabudovaným běhovým prostředím Node.js 20.18.0 pro Windows, macOS a Linux, takže již není omezen na vybrané stroje, plus startovacím dialogem pro jeho zapnutí (bb07d582b, 1cb967c5a, b37e48040).

  • Nový bootloader OpenMV DFU. Plně implementovaný vlastní postup bootloaderu openmv_dfu řídí aktualizace firmwaru z settings.json, včetně dialogu „board in DFU mode detected“ nabízejícího volby instalovat nejnovější verzi, načíst konkrétní firmware a vymazat souborový systém, plus záložní cestou bootloaderu pro obnovu zacyklených kamer (08b9d0676, 6a6a9351d, 6d78d6571).

  • Podpora nových kamer. Přidává desky OpenMV Cam N6, RT1062 a AE3 a přesouvá kamery na nové USB vendor ID 37C5 s aktualizovanými DFU ovladači a udev pravidly (000ed8a87, f453bc945, 4a16e04c2, 6d78d6571).

  • Spolehlivější sériová komunikace. Zásadní opravy sériové komunikace řeší zkomolený text terminálu a náhodná odpojení u kamer založených na TinyUSB (caeba6a16, 6cf122a3c).

Nové funkce

  • Bootloader OpenMV DFU. Nový systém bootloaderu openmv_dfu s dedikovanými DFU ovladači a mechanismem záložního bootloaderu obnovuje zacyklené kamery napříč typy firmwaru (6a6a9351d, 6d78d6571). Tento postup řídí aktualizace firmwaru z settings.json a zobrazuje dialog „board in DFU mode detected“ s možnostmi instalovat nejnovější verzi, načíst konkrétní firmware a vymazat souborový systém (08b9d0676, ef19133b6, 9c59d113c).

  • Název desky ve výběru portu. Dialog výběru sériového portu nyní zkoumá každý port a zobrazuje zjištěný název desky vedle portu (např. COM3: OpenMV Cam H7) místo holého názvu portu (9837d6cb5).

  • Editor se záložkami. Plugin editoru se záložkami je obnoven, přidává řadu záložek dokumentů nad oblastí editoru pro přepínání mezi otevřenými soubory (c8519c09f) a nyní napříč relacemi ukládá a obnovuje pořadí záložek (55ccfb207).

  • Zvýrazňování syntaxe Pythonu. Přidává dedikovanou definici zvýrazňování syntaxe Pythonu pro editor s pravidly pro formátování řetězců, čísla s plovoucí desetinnou čárkou a klíčová slova (9be46c0c3).

Další změny a vylepšení

  • Refaktoring načítání firmwaru. Kód pro načítání firmwaru byl rozdělen na samostatné obslužné rutiny bootloaderu podle typu (OpenMV DFU, Arduino DFU, BOSSAC, i.MX, picotool), s přidáním obsluhy touch-to-reset PID pro desky Arduino DFU a explicitních variant desek „Legacy“ pro zařízení s alternativními VID/PID (9f465f9f8).

  • Ochrany ROM bootloaderu STM32. IDE nyní varuje nebo blokuje načítání firmware.dfu/openmv.dfu do ROM obnovovacího bootloaderu STM32 a doporučuje pouze bootloader.dfu, aby se zabránilo zacyklení desek STM32H7 postižených chybou ROM bootloaderu čipu (c5ce0ae1a, e7cde1ec1).

  • Automatické, tiché nastavení Python LSP. Jazykový server Python se nyní instaluje a aktualizuje automaticky bez výzev v informačním panelu nebo spamu zpráv v konzoli (d89f5985f) a systém automatického doplňování/dokumentačního náhledu Pythonu byl přepracován na dedikovaný dokumentační engine OpenMV, který analyzuje zabudovanou HTML dokumentaci knihoven pro řízení zvýrazňování klíčových slov a tooltipů (47e02873b, 4f9853f21, 82cefc931).

  • Detekce interpreteru Python na Linuxu. Detekce interpreteru na Linuxu je nyní automatická, zvažuje pouze interprety Python 3 z PATH a vybírá nejnovější jako jediný výchozí (214fdc758).

  • Vyčištění nastavení Pythonu. Skupina správy podle interpreteru a stránka Interpreters jsou skryté, Language Server Configuration je zařazena do kategorie Python a nepoužívaná tlačítka REPL a výběru interpreteru na panelu nástrojů jsou v editoru Pythonu skryta (d89f5985f). Na Windows IDE nyní automaticky registruje zabudovaný vestavěný python.exe jako výchozí interpreter, přičemž zabudovaný jazykový server je považován za již nainstalovaný (1d9ca003e, d89f5985f).

  • Čistší profilový adresář. IDE již nezapisuje nepoužívané konfigurační soubory Qt Creator (zařízení, kity, toolchainy, verze Qt) a otevírá soubory přímo v editoru (3771b0107), již neprohledává systém na verze qmake/Qt (42807f25f) a vyhýbá se načítání nepoužívané mechaniky zařízení/toolchainu/kitů a rušivým prvkům při startu (902a357de, b2666a35b).

  • Bezpečnější aktualizace. Aktualizace IDE již nepřepisuje uživatelské zdroje; odstraňují a znovu kopírují se pouze spravované složky zdrojů (examples, firmware, html, models), přičemž micropython-headers jsou navíc odstraněny (instalují se samostatně, nikoli znovu kopírovány touto cestou), a zobrazuje se jasnější chyba, pokud firmware/settings.json chybí nebo je neplatný (b4b8c208d, 3255ba4fb).

  • Rychlejší připojení DFU. Čekací doba na DFU připojení byla zkrácena, takže flashování a připojování jsou rychlejší (11d8c9fe3, 4700bf678).

  • Obnovené menu OpenMV a úpravy UI. Zjednodušené rozložení menu OpenMV je znovu aplikováno, skrývá menu Build a Debug a odstraňuje akce správy projektů (7503f2bec); engine doplňování kódu znovu získává povědomí o třídách/metodách a rozsahy klíčových slov public/private pro automatické doplňování MicroPython (55fc348ea); vykreslování ANSI barev terminálu je znovu aplikováno s hodnotami bright/dim zohledňujícími motiv a podporou escape sekvence pro pohyb kurzoru zpět (c6787a27a); a panel nástrojů prohlížeče obrazů je přizpůsoben s tooltipy rozlišení/přiblížení a přesunutou akcí Fit-to-Screen (734fec693).

  • Obnovené zabudované zdroje. Nástroje pro flashování, DFU ovladače, firmware a celý strom příkladů/skriptů jsou po odstranění při přechodu na nový základ obnoveny do sdílených zdrojů (33c8354bc) a vlastní logika spouštění aplikace OpenMV je znovu aplikována: tvrdě vyžaduje plugin TextEditor (kontroly pluginů OpenMV a TabbedEditor jsou přítomny, ale zakázány), instaluje vlastní obslužnou rutinu zpráv Qt, odstraňuje příkazové volby -client/-pid/-block a vynucuje chování s jedinou instancí (06c788f3d).

  • Selhání při chybějícím pluginu. Aplikace nyní tvrdě selže s jasnou chybou, pokud požadované pluginy chybí nebo jsou zakázané, plugin OpenMV získal závislost na Copilotu a několik možností textového editoru (Prefer single line comments a volič pozice komentáře v nastavení Behavior a Highlight selection v nastavení Display) je skryto (1bc02b1f3).

  • Kratší časové limity sériové komunikace. Časové limity sériového protokolu byly zkráceny (čtení z 10000 na 5000 ms, zápis z 6000 na 3000 ms) pro rychlejší zpětnou vazbu o selhání, přičemž dokumentovaná výchozí hodnota -override_read_timeout byla odpovídajícím způsobem aktualizována (641385af4).

  • Obnova zaseknutého portu. Sériové porty zaseknuté uprostřed příkazu se nyní obnovují pomocí dotazu GET_STATE (konfigurovatelného prostřednictvím nastavení get-state) místo dotazu na běžící skript (a8598f550).

  • Pořadí v dialogu nastavení. Dialog nastavení skrývá zaškrtávací pole abecedního řazení kategorií, takže seznam stránek zůstává v zamýšleném pořadí OpenMV (1cb967c5a).

  • Zjednodušené nastavení Copilotu. Stránka nastavení Copilotu je zredukována pouze na ovládací prvky přihlášení/autentizace a proxy, skrývá možnosti enable-Copilot, cestu k Node.js, cestu k distribuci a automatické doplňování (1cb967c5a).

Opravy chyb

  • Opraveny zásadní problémy se sériovou komunikací 10násobným zvýšením časového limitu zastavení čtení sériové linky a zakázáním cesty pro odblokování založené na GET_STATE, která komolila text sériového terminálu (caeba6a16).

  • Opravena náhodná sériová odpojení u kamer založených na TinyUSB vydáním příkazu pro odemknutí frame-dump a přepracováním obsluhy zastavení čtení namísto odpojování (6cf122a3c).

  • Obsluha get_state kamery byla učiněna tolerantní vůči krátkým/částečným odpovědím a bylo zajištěno, že vyrovnaný text sériového terminálu je během obnovy po chybě vyprázdněn, aby se neztratil výstup logu (c8b4248a6, 247a779dd).

  • Opravena čísla flash oddílu/alt-setting DFU bootloaderu pro načítání firmwaru OpenMV Cam (a8700d12d).

  • Obnoveny všechny bootloadery respektováním nového příznaku desky hidden, přepnutím filtrování sériových čísel na inverzní filtry a přidělením funkční konfigurace picotool položce UF2 pro Arduino Nano RP2040 Connect (63cee629b).

  • Opraven dialog výběru typu desky bootloaderu, který si pamatoval nesprávnou hodnotu, použitím samostatných klíčů historie pro lidsky čitelné a IMX výběry typu desky (a3325af32).

  • Opraven výpočet časové značky/snímkové frekvence při překódování videa (Save Video) výpočtem průměrného intervalu mezi snímky v mikrosekundách, podporou nového časového formátu v21 ImageWriter a ochranou proti nulovým pixmapám během konverze (f5c75c749, f8f762b3e).

  • Opraven pád v zobrazení histogramu/framebufferu při přijetí prázdné (nulové) pixmapy ochranou pixmapUpdate() proti nulovým datům (622cf5ea8).

  • Obnoveny tooltipy s anotacemi při najetí v textovém editoru, takže najetí na textové značky opět zobrazuje tooltip s anotací (1852d18e1).

  • Zabráněno tomu, aby se informační dialogy GitHub Copilot a LED-colors objevovaly, zatímco je IDE zaneprázdněno připojováním nebo flashováním (f8f762b3e).

  • Přidána ochrana proti pádu v jazykovém klientovi, takže obsluha změny obsahu dokumentu již v okrajových případech nezpůsobuje pád IDE (7926ffe4c).

  • Opraveny kontroly jazykového serveru Python bránící čistému vypnutí IDE tím, že plugin Python před ukončením asynchronně čeká na probíhající kontroly (9ff6c7936).

  • Opraveno automatické doplňování Pythonu na Linuxu: jazykový klient se zakotvuje v zabudovaných micropython-headers a nadbytečná akce vyskakovacího okna doplňování na panelu nástrojů editoru je skryta (d37f66a9a, 56e748f9d, 016fa73eb).

  • Opravena obsluha dočasných/neuložených souborů tak, aby Save As používalo počáteční adresář dialogu souborů, a dialog Save Items a editor Diff již nezobrazují interní cesty k dočasným souborům (b7f0bb378, c8e7b6b8f, 6b128c34c).

  • Uložení nepojmenovaného/dočasného bufferu nyní v dialogu Save-As výchozí nastaví správný název souboru .py místo prázdného názvu (3001fdfff).

  • Dočasné/nepojmenované dokumenty jsou nyní při změně nabízeny k uložení, vyloučeny z automatického ukládání a správně směrovány přes Save-As (f87b71cf0).

  • Opraveno pořadí v menu Recent Files, takže opětovné otevření již uvedeného souboru jej již nepřeřazuje, a dialog souborů nyní výchozí nastaví na adresář projektů (d49c0c993).

  • Opraveno vykreslování textu v dialogovém okně se zprávou tím, že se již nevynucuje formát rich-text u zaškrtávatelných dialogů se zprávou, takže se nezpracovaný text zobrazuje správně (0c565502f).

  • Opraveny barvy tooltipů tak, aby se tooltipy ve světlém motivu vykreslovaly správně (35cbf077b).

  • Obecné opravy stability a vyčištění Qt Creator napříč jádrem nastavení, jazykovým klientem, toolchainem MSVC, průzkumníkem projektů a pluginy Python (836b163dc, 134f43cb8).

  • Opraven název složky zabudovaného firmwaru Arduino Nano 33 BLE Sense (b1d8ac227) a opraveno Linuxové udev pravidlo pro product ID DFU bootloaderu AE3 opravou 96E3 na malá písmena 96e3, aby fungovala shoda idProduct rozlišující velikost písmen v udev (2cd43c96b). Linuxové udev pravidlo DFU bootloaderu AE3 bylo také aktualizováno na product ID 37c5:afe3 pro symbolický odkaz openmvdfu (b99555637).

Podpora platforem a nástrojů

  • Základ Qt Creator: 14.0.2 (přepracováno z 10.0.1).

  • OpenMV Cam N6 je nyní podporována (VID:PID 37C5:1206, DFU bootloader 37C5:9206), včetně nastavení firmwaru, DFU ovladače pro Windows a Linuxového udev pravidla (000ed8a87, 1b950c8c6).

  • OpenMV Cam RT1062 je nyní podporována pod novým vlastním USB VID/PID (37C5:1060), včetně DFU ovladačů, udev pravidel a zachovaných starších položek 1209:ABD1 pro starší jednotky (f453bc945, d55d6441f).

  • OpenMV Cam AE3 je nyní podporována, včetně DFU ovladačů pro Windows, jejího stromu obrazů firmwaru/konfigurace a USB VID/PID (aktualizováno na 37C5:16E3 runtime / 37C5:96E3 bootloader) (4a16e04c2, cc52e76f5, 3f75e7de4, 8eb80b129).

  • Nový systém USB VID/PID: Kamery OpenMV přecházejí na vendor ID 37C5 s novými bootloader/DFU ID (např. 37C5:1202/9202 M4, 1203/9203 M7, 1204/9204 H7, 124A/924A H7 Plus, 1205/9205), přeznačují staré desky 1209:ABD1 jako Legacy a stále přitom podporují starý i nový firmware (6d78d6571, 6a6a9351d, 500b1a0bf).

  • Obrazový senzor PAG7936 přidán do seznamu rozpoznávaných senzorů (f9e3f3461).

  • Vestavěný interpreter Python 3.13 zabudovaný pro macOS, Linux x86_64, Linux arm64 a Linux arm (9133b1516), s nativními sdílenými knihovnami libpython3.13 a ujson (d3aa663d8, a2cb24e74).

  • Zabudovaný jazykový server: pylsp s astroid 3.3.5 na Windows, macOS a Linux x86_64 (257addee0). Sestavení pro Windows obsahuje vestavěný CPython s python-lsp-server 1.12.0, jedi 0.17.2, docstring_to_markdown 0.15, pip 24.2 a distlib 0.3.9 (9b6434602, 069807cd3, 5f2e45196, 3b6c6c312).

  • Zabudované běhové prostředí Node.js 20.18.0 „Iron“ LTS pro Windows, macOS, Linux arm64, Linux x64 a Linux armv7 pro povolení GitHub Copilot na všech platformách (bb07d582b, 6db78bf45, 1cb967c5a).

  • Alif Security Toolkit podepsané binární soubory boot/system-package a uživatelská příručka zabudované pro Windows, macOS a Linux x86_64 pro provisioning kamer OpenMV založených na Alif (např. AE3) (f63851be3).

  • Integrace s Linuxovou plochou je obnovena, instaluje položku desktopu aplikace a metadata AppStream a registruje MIME typ Python (.py) (3fa25f571).

Zásadní změny

Žádné skriptovací API se nezměnilo. Mohou být zaznamenány následující uživatelsky viditelné změny pracovního postupu a chování:

  • Nové USB vendor ID. Kamery OpenMV migrují na vendor ID 37C5 s novými produktovými a DFU bootloader ID; desky na starém VID 1209:ABD1 jsou nyní označeny jako „Legacy“. IDE podporuje starý i nový firmware současně, ale uživatelé Linuxu musí přeinstalovat aktualizovaná udev pravidla, aby byla nová ID rozpoznána.

  • Skryté položky starších desek. Starší varianty desek OpenMV Cam M4/M7/H7/H7 Plus/Pure Thermal jsou nyní potlačeny ze seznamu výběru firmwaru/desky pomocí nového příznaku desky legacy (odlišného od dříve existujícího příznaku hidden), takže uživatelé, kteří konkrétně potřebují položku starší desky, ji již v rozevíracím seznamu neuvidí (6d78d6571).

  • Kratší časové limity sériové komunikace. Výchozí časový limit čtení odpovědi klesá z 10000 ms na 5000 ms a časový limit zápisu z 6000 ms na 3000 ms (výchozí hodnota -override_read_timeout je nyní dokumentována jako 5000). Pomalé desky/spoje, které spoléhaly na delší výchozí hodnoty, mohou vypršet dříve.

Přechod na Qt Creator 14.0.2 je rozsáhlá interní modernizace, ale není narušující pro uživatelské projekty.