v4.4.0

v4.4.0 to ważne wydanie modernizacyjne, które przenosi OpenMV IDE z jego wieloletniej bazy Qt Creator 10.0.1 na Qt Creator 14.0.2, ponownie nakładając pełną wtyczkę OpenMV oraz wszystkie modyfikacje forka na nowszej bazie. Ponadto to wydanie dostarcza wbudowany serwer języka Python do uzupełniania kodu w trybie offline, włącza GitHub Copilot na każdej platformie, wprowadza nowy niestandardowy bootloader OpenMV DFU oraz migruje kamery OpenMV na nowy identyfikator dostawcy USB 37C5. Zmiana bazy to duża wewnętrzna modernizacja, ale nie psuje projektów użytkowników; zobacz Breaking changes w celu poznania niewielkiej liczby widocznych dla użytkownika zmian w przepływie pracy.

Najważniejsze zmiany

  • Rebase na Qt Creator 14.0.2. IDE przechodzi z Qt Creator 10.0.1 na 14.0.2, z całą wtyczką OpenMV i wszystkimi modyfikacjami // OPENMV-DIFF // ponownie nałożonymi na nowoczesnej bazie (d6c895be8, 1fa75b397).

  • Wbudowany serwer języka Python. IDE dostarcza teraz i automatycznie używa dołączonego pylsp (z astroid 3.3.5), zapewniając offline’owe uzupełnianie kodu Python/MicroPython bez osobnej instalacji pip w systemach Windows, macOS i Linux x86_64 (257addee0, 5a2b3e72f, 94470798d).

  • GitHub Copilot na wszystkich platformach. Copilot jest zintegrowany i włączony domyślnie, z dołączonym środowiskiem uruchomieniowym Node.js 20.18.0 dla systemów Windows, macOS i Linux, więc nie jest już ograniczony do wybranych maszyn, oraz z okienkiem startowym pozwalającym go włączyć (bb07d582b, 1cb967c5a, b37e48040).

  • Nowy bootloader OpenMV DFU. W pełni zaimplementowany niestandardowy przepływ bootloadera openmv_dfu steruje aktualizacjami oprogramowania układowego na podstawie settings.json, w tym oknem dialogowym „board in DFU mode detected” oferującym opcje zainstalowania najnowszego wydania, wczytania konkretnego oprogramowania układowego oraz wymazania systemu plików, a także ścieżkę awaryjnego bootloadera do odzyskiwania uszkodzonych kamer (08b9d0676, 6a6a9351d, 6d78d6571).

  • Obsługa nowych kamer. Dodaje płytki OpenMV Cam N6, RT1062 i AE3 oraz migruje kamery na nowy identyfikator dostawcy USB 37C5 z zaktualizowanymi sterownikami DFU i regułami udev (000ed8a87, f453bc945, 4a16e04c2, 6d78d6571).

  • Bardziej niezawodna komunikacja szeregowa. Istotne poprawki komunikacji szeregowej rozwiązują problem zniekształconego tekstu w terminalu oraz losowych rozłączeń z kamerami opartymi na TinyUSB (caeba6a16, 6cf122a3c).

Nowe funkcje

  • Bootloader OpenMV DFU. Nowy system bootloadera openmv_dfu z dedykowanymi sterownikami DFU oraz mechanizmem awaryjnego bootloadera odzyskuje uszkodzone kamery niezależnie od typu oprogramowania układowego (6a6a9351d, 6d78d6571). Przepływ steruje aktualizacjami oprogramowania układowego na podstawie settings.json i prezentuje okno dialogowe „board in DFU mode detected” z opcjami zainstalowania najnowszego wydania, wczytania konkretnego oprogramowania układowego oraz wymazania systemu plików (08b9d0676, ef19133b6, 9c59d113c).

  • Nazwa płytki w selektorze portów. Okno dialogowe wyboru portu szeregowego teraz sonduje każdy port i wyświetla wykrytą nazwę płytki obok portu (np. COM3: OpenMV Cam H7) zamiast samej nazwy portu (9837d6cb5).

  • Edytor z kartami. Wtyczka edytora z kartami została przywrócona, dodając rząd kart dokumentów nad obszarem edytora do przełączania się między otwartymi plikami (c8519c09f), a teraz zachowuje i przywraca kolejność kart między sesjami (55ccfb207).

  • Podświetlanie składni Python. Dodaje dedykowaną definicję podświetlania składni Python dla edytora z regułami dla formatowania ciągów, liczb zmiennoprzecinkowych i słów kluczowych (9be46c0c3).

Pozostałe zmiany i ulepszenia

  • Refaktoryzacja wczytywania oprogramowania układowego. Kod wczytywania oprogramowania układowego został podzielony na osobne obsługi bootloadera dla poszczególnych typów (OpenMV DFU, Arduino DFU, BOSSAC, i.MX, picotool), dodając obsługę touch-to-reset PID dla płytek Arduino DFU oraz jawne warianty płytek „Legacy” dla urządzeń z alternatywnymi VID/PID (9f465f9f8).

  • Zabezpieczenia bootloadera ROM STM32. IDE teraz ostrzega lub blokuje wczytanie firmware.dfu/openmv.dfu do bootloadera odzyskiwania ROM STM32, zalecając wyłącznie bootloader.dfu, aby uniknąć uszkodzenia płytek STM32H7 dotkniętych błędem bootloadera ROM układu (c5ce0ae1a, e7cde1ec1).

  • Automatyczna, cicha konfiguracja Python LSP. Serwer języka Python teraz instaluje się i aktualizuje automatycznie bez monitów na pasku informacyjnym ani zaśmiecania konsoli komunikatami (d89f5985f), a system autouzupełniania Python / podpowiedzi dokumentacji przy najechaniu kursorem został przebudowany w dedykowany silnik dokumentacji OpenMV, który parsuje dołączoną dokumentację bibliotek w HTML, aby sterować podświetlaniem słów kluczowych i podpowiedziami (47e02873b, 4f9853f21, 82cefc931).

  • Wykrywanie interpretera Python w systemie Linux. Wykrywanie interpretera w systemie Linux jest teraz automatyczne, uwzględniając wyłącznie interpretery Python 3 z PATH i wybierając najnowszy jako jedyny domyślny (214fdc758).

  • Uporządkowanie ustawień Python. Grupa zarządzania poszczególnymi interpreterami oraz strona Interpreters są ukryte, Language Server Configuration jest umieszczona w kategorii Python, a nieużywane przyciski paska narzędzi REPL i selektora interpretera są ukryte w edytorze Python (d89f5985f). W systemie Windows IDE teraz automatycznie rejestruje dołączony wbudowany python.exe jako domyślny interpreter, traktując dołączony serwer języka jako już zainstalowany (1d9ca003e, d89f5985f).

  • Czystszy katalog profilu. IDE nie zapisuje już nieużywanych plików ustawień Qt Creator (urządzenia, zestawy, łańcuchy narzędzi, wersje Qt) i otwiera pliki bezpośrednio w edytorze (3771b0107), nie skanuje już systemu w poszukiwaniu wersji qmake/Qt (42807f25f) i unika ładowania nieużywanej maszynerii urządzeń/łańcuchów narzędzi/zestawów oraz szumu przy starcie (902a357de, b2666a35b).

  • Bezpieczniejsze aktualizacje. Aktualizowanie IDE nie nadpisuje już zasobów użytkownika; usuwane i ponownie kopiowane są wyłącznie zarządzane foldery zasobów (examples, firmware, html, models), przy czym micropython-headers jest dodatkowo usuwany (jest instalowany osobno, a nie kopiowany ponownie tą ścieżką), oraz pojawia się czytelniejszy komunikat o błędzie, jeśli firmware/settings.json brakuje lub jest nieprawidłowy (b4b8c208d, 3255ba4fb).

  • Szybsze łączenie DFU. Czas oczekiwania na połączenie DFU został skrócony, dzięki czemu flashowanie i łączenie są szybsze (11d8c9fe3, 4700bf678).

  • Przywrócone menu OpenMV i dostosowania interfejsu. Uproszczony układ menu OpenMV został ponownie zastosowany, ukrywając menu Build i Debug oraz usuwając akcje zarządzania projektami (7503f2bec); silnik uzupełniania kodu odzyskuje świadomość klas/metod oraz publicznych/prywatnych zakresów słów kluczowych dla autouzupełniania MicroPython (55fc348ea); renderowanie kolorów ANSI w terminalu zostało ponownie zastosowane z uwzględniającymi motyw wartościami bright/dim oraz obsługą sekwencji ucieczki cofania kursora (c6787a27a); a pasek narzędzi przeglądarki obrazów został dostosowany z podpowiedziami rozdzielczości/powiększenia oraz przeniesioną akcją Fit-to-Screen (734fec693).

  • Przywrócone dołączone zasoby. Narzędzia do flashowania, sterowniki DFU, oprogramowanie układowe oraz pełne drzewo przykładów/skryptów zostały przywrócone do zasobów współdzielonych po odchudzeniu związanym z rebase (33c8354bc), a niestandardowa logika startowa aplikacji OpenMV została ponownie zastosowana: bezwzględnie wymaga wtyczki TextEditor (sprawdzenia wtyczek OpenMV i TabbedEditor są obecne, lecz wyłączone), instaluje niestandardową obsługę komunikatów Qt, usuwa opcje wiersza poleceń -client/-pid/-block oraz wymusza tryb pojedynczej instancji (06c788f3d).

  • Awaria przy braku wtyczki. Aplikacja teraz kończy działanie z czytelnym błędem, jeśli wymagane wtyczki brakuje lub są wyłączone, wtyczka OpenMV zyskała zależność od Copilota, a kilka opcji edytora tekstu (Prefer single line comments i selektor pozycji komentarza w ustawieniach Behavior oraz Highlight selection w ustawieniach Display) jest ukrytych (1bc02b1f3).

  • Krótsze limity czasu komunikacji szeregowej. Limity czasu protokołu szeregowego zostały skrócone (odczyt z 10000 do 5000 ms, zapis z 6000 do 3000 ms) w celu szybszego sygnalizowania awarii, a udokumentowana wartość domyślna -override_read_timeout została odpowiednio zaktualizowana (641385af4).

  • Odzyskiwanie zablokowanego portu. Porty szeregowe zablokowane w trakcie polecenia są teraz odzyskiwane przy użyciu zapytania GET_STATE (konfigurowalnego poprzez ustawienie get-state) zamiast zapytania o uruchomienie skryptu (a8598f550).

  • Kolejność w oknie ustawień. Okno dialogowe ustawień ukrywa pole wyboru alfabetycznego sortowania kategorii, dzięki czemu lista stron pozostaje w zamierzonej przez OpenMV kolejności (1cb967c5a).

  • Uproszczone ustawienia Copilota. Strona ustawień Copilota została ograniczona wyłącznie do logowania/uwierzytelniania oraz kontrolek proxy, ukrywając opcje włączenia Copilota, ścieżki Node.js, ścieżki dist oraz autouzupełniania (1cb967c5a).

Poprawki błędów

  • Naprawiono poważne problemy z komunikacją szeregową, dziesięciokrotnie zwiększając limit czasu zatrzymania odczytu szeregowego oraz wyłączając opartą na GET_STATE ścieżkę odblokowywania, która zniekształcała tekst w terminalu szeregowym (caeba6a16).

  • Naprawiono losowe rozłączenia szeregowe z kamerami opartymi na TinyUSB poprzez wysyłanie polecenia odblokowania zrzutu ramki oraz przebudowanie obsługi zatrzymania odczytu zamiast rozłączania (6cf122a3c).

  • Uodporniono obsługę get_state kamery na krótkie/częściowe odpowiedzi oraz zapewniono, że buforowany tekst terminala szeregowego jest opróżniany podczas odzyskiwania po błędzie, aby dane wyjściowe dziennika nie były tracone (c8b4248a6, 247a779dd).

  • Poprawiono numery partycji flash / alt-setting bootloadera DFU dla wczytywania oprogramowania układowego OpenMV Cam (a8700d12d).

  • Przywrócono wszystkie bootloadery poprzez uwzględnienie nowej flagi płytki hidden, przełączenie filtrowania numerów seryjnych na filtry odwrotne oraz nadanie wpisowi UF2 Arduino Nano RP2040 Connect działającej konfiguracji picotool (63cee629b).

  • Naprawiono okno dialogowe wyboru typu płytki bootloadera zapamiętujące błędną wartość, używając osobnych kluczy historii dla czytelnych dla człowieka oraz IMX wyborów typu płytki (a3325af32).

  • Naprawiono obliczanie znacznika czasu / liczby klatek na sekundę przy transkodowaniu wideo (Save Video) poprzez obliczanie średniego odstępu między klatkami w mikrosekundach, obsługę nowego formatu czasu v21 ImageWriter oraz zabezpieczenie przed pustymi pixmapami podczas konwersji (f5c75c749, f8f762b3e).

  • Naprawiono awarię widoku histogramu/bufora ramki, gdy otrzymano pustą (null) pixmapę, zabezpieczając pixmapUpdate() przed danymi null (622cf5ea8).

  • Przywrócono podpowiedzi adnotacji wyświetlane przy najechaniu kursorem w edytorze tekstu, dzięki czemu najechanie na znaczniki tekstu ponownie pokazuje podpowiedź adnotacji (1852d18e1).

  • Zapobieżono wyskakiwaniu okien informacyjnych GitHub Copilot oraz kolorów LED, gdy IDE jest zajęte łączeniem lub flashowaniem (f8f762b3e).

  • Dodano zabezpieczenie przed awarią w kliencie języka, dzięki czemu obsługa zmiany zawartości dokumentu nie powoduje już awarii IDE w przypadkach brzegowych (7926ffe4c).

  • Naprawiono sprawdzenia serwera języka Python uniemożliwiające czyste zamknięcie IDE, sprawiając, że wtyczka Python czeka asynchronicznie na trwające sprawdzenia przed zakończeniem (9ff6c7936).

  • Naprawiono autouzupełnianie Python w systemie Linux: klient języka zakorzenia się w dołączonym micropython-headers, a zbędna akcja wyskakującego okienka uzupełniania na pasku narzędzi edytora jest ukryta (d37f66a9a, 56e748f9d, 016fa73eb).

  • Naprawiono obsługę plików tymczasowych/niezapisanych, tak aby Save As używało katalogu początkowego okna dialogowego plików, a okno dialogowe Save Items oraz edytor Diff nie pokazywały już wewnętrznych ścieżek plików tymczasowych (b7f0bb378, c8e7b6b8f, 6b128c34c).

  • Zapisanie bezimiennego/tymczasowego bufora teraz domyślnie ustawia w oknie dialogowym Save-As poprawną nazwę pliku .py zamiast pustej nazwy (3001fdfff).

  • Dokumenty tymczasowe/bezimienne są teraz proponowane do zapisania po modyfikacji, wykluczane z autozapisu oraz poprawnie kierowane przez Save-As (f87b71cf0).

  • Naprawiono kolejność menu Recent Files, dzięki czemu ponowne otwarcie już wymienionego pliku nie zmienia jego pozycji, a okno dialogowe plików domyślnie wskazuje teraz katalog projektów (d49c0c993).

  • Naprawiono renderowanie tekstu w oknach komunikatów, nie wymuszając już formatu rich-text w zaznaczanych oknach komunikatów, dzięki czemu surowy tekst wyświetla się poprawnie (0c565502f).

  • Naprawiono kolory podpowiedzi, dzięki czemu podpowiedzi renderują się poprawnie w jasnym motywie (35cbf077b).

  • Ogólne poprawki stabilności i porządkowe Qt Creator obejmujące podstawowe ustawienia, klienta języka, łańcuch narzędzi MSVC, eksplorator projektów oraz wtyczki Python (836b163dc, 134f43cb8).

  • Poprawiono nazwę folderu dołączonego oprogramowania układowego Arduino Nano 33 BLE Sense (b1d8ac227) oraz naprawiono regułę udev systemu Linux dla identyfikatora produktu bootloadera AE3 DFU, poprawiając 96E3 na małe litery 96e3, aby uwzględniające wielkość liter dopasowanie idProduct w udev działało poprawnie (2cd43c96b). Reguła udev systemu Linux dla bootloadera AE3 DFU została również zaktualizowana do identyfikatora produktu 37c5:afe3 dla dowiązania symbolicznego openmvdfu (b99555637).

Obsługa platform i narzędzi

  • Baza Qt Creator: 14.0.2 (po rebase z 10.0.1).

  • OpenMV Cam N6 jest teraz obsługiwana (VID:PID 37C5:1206, bootloader DFU 37C5:9206), wraz z ustawieniami oprogramowania układowego, sterownikiem DFU dla systemu Windows oraz regułą udev dla systemu Linux (000ed8a87, 1b950c8c6).

  • OpenMV Cam RT1062 jest teraz obsługiwana pod nowym niestandardowym USB VID/PID (37C5:1060), wraz ze sterownikami DFU, regułami udev oraz zachowanymi starszymi wpisami 1209:ABD1 dla starszych egzemplarzy (f453bc945, d55d6441f).

  • OpenMV Cam AE3 jest teraz obsługiwana, wraz ze sterownikami DFU dla systemu Windows, jej drzewem obrazów firmware/config oraz USB VID/PID (zaktualizowanym do 37C5:16E3 runtime / 37C5:96E3 bootloader) (4a16e04c2, cc52e76f5, 3f75e7de4, 8eb80b129).

  • Nowy system USB VID/PID: kamery OpenMV przechodzą na identyfikator dostawcy 37C5 z nowymi identyfikatorami bootloadera/DFU (np. 37C5:1202/9202 M4, 1203/9203 M7, 1204/9204 H7, 124A/924A H7 Plus, 1205/9205), przeklasyfikowując stare płytki 1209:ABD1 jako Legacy, jednocześnie nadal obsługując zarówno stare, jak i nowe oprogramowanie układowe (6d78d6571, 6a6a9351d, 500b1a0bf).

  • Sensor obrazu PAG7936 dodany do listy rozpoznawanych sensorów (f9e3f3461).

  • Wbudowany interpreter Python 3.13 dołączony dla systemów macOS, Linux x86_64, Linux arm64 oraz Linux arm (9133b1516), wraz z natywnymi bibliotekami współdzielonymi libpython3.13 oraz ujson (d3aa663d8, a2cb24e74).

  • Dołączony serwer języka: pylsp z astroid 3.3.5 w systemach Windows, macOS oraz Linux x86_64 (257addee0). Wersja dla systemu Windows dostarcza wbudowany CPython z python-lsp-server 1.12.0, jedi 0.17.2, docstring_to_markdown 0.15, pip 24.2 oraz distlib 0.3.9 (9b6434602, 069807cd3, 5f2e45196, 3b6c6c312).

  • Dołączone środowisko uruchomieniowe Node.js 20.18.0 „Iron” LTS dla systemów Windows, macOS, Linux arm64, Linux x64 oraz Linux armv7, aby umożliwić GitHub Copilot na wszystkich platformach (bb07d582b, 6db78bf45, 1cb967c5a).

  • Alif Security Toolkit — podpisane binaria boot/system-package oraz przewodnik użytkownika dołączone dla systemów Windows, macOS oraz Linux x86_64 do udostępniania kamer OpenMV opartych na Alif (np. AE3) (f63851be3).

  • Integracja z pulpitem Linux została przywrócona, instalując wpis aplikacji desktop oraz metadane AppStream i rejestrując typ MIME Python (.py) (3fa25f571).

Zmiany łamiące zgodność

Żadne API skryptowe nie uległo zmianie. Mogą zostać zauważone następujące widoczne dla użytkownika zmiany w przepływie pracy i zachowaniu:

  • Nowy identyfikator dostawcy USB. Kamery OpenMV migrują na identyfikator dostawcy 37C5 z nowymi identyfikatorami produktu oraz bootloadera DFU; płytki na starym VID 1209:ABD1 są teraz oznaczone jako „Legacy”. IDE obsługuje zarówno stare, jak i nowe oprogramowanie układowe jednocześnie, ale użytkownicy systemu Linux muszą ponownie zainstalować zaktualizowane reguły udev, aby nowe identyfikatory zostały rozpoznane.

  • Ukryte wpisy starszych płytek. Starsze warianty płytek OpenMV Cam M4/M7/H7/H7 Plus/Pure Thermal są teraz pomijane na liście wyboru firmware/płytki za pomocą nowej flagi płytki legacy (odrębnej od istniejącej wcześniej flagi hidden), więc użytkownicy, którzy konkretnie potrzebują wpisu starszej płytki, nie zobaczą go już na liście rozwijanej (6d78d6571).

  • Krótsze limity czasu komunikacji szeregowej. Domyślny limit czasu odczytu odpowiedzi spada z 10000 ms do 5000 ms, a limit czasu zapisu z 6000 ms do 3000 ms (wartość domyślna -override_read_timeout jest teraz udokumentowana jako 5000). Wolne płytki/łącza, które polegały na dłuższych wartościach domyślnych, mogą szybciej przekroczyć limit czasu.

Rebase na Qt Creator 14.0.2 to duża wewnętrzna modernizacja, ale nie łamie zgodności projektów użytkowników.