v4.8.11

v4.8.11 to wydanie poprawiające stabilność i poprawność, skupione na odporności pod macOS, serializacji narzędzi zewnętrznych oraz niezawodności aktualizacji oprogramowania układowego. Jest oparte na Qt Creator 14.0.2 (bez zmian względem poprzedniego wydania) i nie wprowadza żadnych zmian łamiących zgodność dla projektów użytkowników.

Najważniejsze zmiany

  • Wzmocnienie odporności na awarie pod macOS — wyeliminowano sporadyczne ciche przerwanie NSRangeException powodowane przez aktualizowanie zaznaczeń w drzewach/listach/polach kombi, zanim panel lub okienko wyskakujące zostało w pełni zbudowane albo w trakcie asynchronicznego odświeżania, w polu kombi konspektu, hierarchii wywołań/typów, okienkach uzupełniania i lokalizatora, drzewie projektu i nie tylko.

  • Zserializowane narzędzia zewnętrzne — okno postępu ładowania jest teraz modalne na poziomie aplikacji i wstrzymuje całe odpytywanie urządzeń, więc działające dfu-util, bossac, picotool i pozostałe narzędzia nie mogą już zostać ponownie uruchomione przez strumień z kamery ani automatyczne ponowne połączenie.

  • Niezawodne aktualizacje oprogramowania układowego — automatyczne ponowne połączenie nie może już przejąć aktualizacji oprogramowania układowego w trakcie zapisu do pamięci flash, co wcześniej przerywało właściwą kontynuację i wyświetlało zbędne okno DFU.

  • Bezpieczeństwo programu Hello World — podłączenie płytki nie nadpisuje już sporadycznie programu Hello World, w który coś wpisano, dzięki porównywaniu z nienaruszonym zrzutem zamiast polegania na zawodnej fladze modyfikacji.

  • Czytelniejsze błędy DFU — błąd „no matching interface” podaje teraz wykrytą płytkę i nazwy plików oprogramowania układowego, które akceptuje, zamiast wyświetlać surowe VID/PID.

Nowe funkcje

  • ST Edge AI (STM32N6) generuje teraz przemieszczalny plik binarny sieci bezpośrednio za pomocą trybu --relocatable kompilatora, usuwając osobny krok przemieszczania w języku Python oraz dodatkowe pole Relocation CLI Options z okna dialogowego (7613135c5).

Pozostałe zmiany i ulepszenia

  • Błędy interfejsu DFU podają teraz wykrytą płytkę i wymieniają nazwy plików oprogramowania układowego, które ta płytka akceptuje, wraz ze wskazówką, aby zmienić nazwę lub wybrać właściwy plik, zamiast wyświetlać surowe VID/PID (ac509b369).

  • Skróty nawigacji po kartach pod macOS używają teraz dostępnych Cmd+Shift+[ / Cmd+Shift+] (poprz./nast.) oraz Cmd+Alt+[ / Cmd+Alt+] (przenoszenie) zamiast niemożliwych do wciśnięcia Ctrl+PageUp / Ctrl+PageDown; powiązania pod Windows i Linux pozostają bez zmian (6c09e10b1).

  • Żądania licencji/płytki do upload.openmv.io (check.php, insert.php, register.php) wysyłają teraz dostosowany do platformy nagłówek User-Agent w stylu przeglądarki, dzięki czemu serwer licencji może rozpoznać system operacyjny klienta (6bfd74b36).

Poprawki błędów

  • Naprawiono sporadyczną awarię pod macOS (ciche przerwanie NSRangeException bez okna awarii), w której aktualizowanie zaznaczeń w drzewach/listach/polach kombi, gdy panel lub okienko wyskakujące było jeszcze ukryte albo w trakcie asynchronicznego odświeżania, prowadziło do indeksowania niezbudowanej pamięci podręcznej dostępności Cocoa. Zaznaczanie, przewijanie i rozwijanie są teraz odraczane lub zabezpieczane w polu kombi konspektu, hierarchii wywołań/typów, okienku uzupełniania kodu, okienku lokalizatora, oknie Save Items, drzewie projektu, nawigacji po folderach, Open Documents, liście Issues/Tasks oraz polu kombi widoku drzewa (94c8f9def, ae40a3806, ed23b5c60, c6baf89cd, d7b6f5838, d8b70609c, 21740d9c2, 9217fc8a9, fe75924d5, 9cc247ffb, 3ca71e915, 559b6005f).

  • Naprawiono osobną awarię pod macOS (NSRangeException/SIGABRT) w polu kombi konspektu kodu, powodowaną przez nieaktualny indeks spoza zakresu, gdy serwer języka Python asynchronicznie odświeżał symbole; setCurrentIndex ponownie weryfikuje teraz granice wiersza/kolumny względem aktualnego modelu (3e0ce89f1).

  • Wzmocniono edytor modeli ROMFS oraz edytor zbiorów danych przed asynchronicznymi wyścigami QFileSystemModel, odraczając wstępne rozwinięcie drzewa do zakończenia wczytywania katalogu i zaznaczając nowo utworzone pliki/foldery/modele dopiero wtedy, gdy model ma dla nich prawidłowy indeks (5eaa91aff).

  • Operacje narzędzi zewnętrznych (dfu-util, bossac, picotool, alif, imx, ST Cube, mpy-cross, vela, ST Edge AI, konwersja wideo) nie pozwalają już strumieniowi z kamery ani zakolejkowanej pracy na ponowne wejście w operację na urządzeniu za działającym narzędziem: okno postępu ładowania jest teraz modalne na poziomie aplikacji, a odpytywanie urządzeń jest w pełni wstrzymane na czas jego wyświetlania (3069e8ec0).

  • Automatyczne ponowne połączenie nie przejmuje już aktualizacji oprogramowania układowego w trakcie zapisu do pamięci flash, dzięki trwałej fladze „aktualizacja oprogramowania w toku” zatrzaśniętej na czas całej operacji wymuszonej/bootloadera/wymazywania, którą sprawdza teraz również licznik czasu ponownego połączenia (b7745484a).

  • Podłączenie płytki nie nadpisuje już sporadycznie programu Hello World, w który coś wpisano, dzięki porównywaniu aktualnego dokumentu z nienaruszonym zrzutem przechwyconym przy otwarciu zamiast polegania na zawodnej fladze modyfikacji przed automatyczną synchronizacją przykładu dla danego sensora (6f4539d44).

  • Przewijanie w górę w terminalu szeregowym podczas szybkiego ciągłego wyjścia nie szarpie już widoku z powrotem na dół: ścieżki dopisywania danych podążają teraz za trwałą flagą intencji przewijania przez użytkownika zamiast ponownie wyznaczać „na dole” na podstawie pozycji paska przewijania, którą każdy fragment dopiero co przypiął (9aea0f1a2).

  • Escape niezawodnie zamyka teraz okno Code Profiler niezależnie od tego, który widżet potomny ma fokus (203ffd1e6).

  • Pod macOS globalne skróty klawiaturowe menu i poleceń działają teraz w całej aplikacji, a nie tylko gdy edytor miał fokus, dzięki podporządkowaniu ukrytego paska menu oknu głównemu na każdej platformie (6d52cbe73).

  • Dołączony interpreter Python jest teraz wymuszany jako domyślny przy każdym uruchomieniu, więc nieaktualny zapisany domyślny interpreter nie wyłącza już po cichu serwera języka Python (uzupełnianie i podpowiedzi wywołań) (1d5069a52).

  • Wzmocniono operacje wejścia/wyjścia ustawień OpenMV przed ponownym wejściem: beginGroup / endGroup na współdzielonym obiekcie ustawień globalnych (które otwierają okna modalne i uruchamiają zagnieżdżone pętle zdarzeń) zostały zastąpione pełnymi ścieżkami kluczy, więc ponowny dostęp do ustawień podczas okna modalnego nie może już błędnie umieścić kluczy w niewłaściwej grupie. Ścieżki na dysku są identyczne co do bajtu, więc ustawienia istniejących użytkowników są zachowane dokładnie (91e78a9e3, f4bb9f48c).

  • Naprawiono regresję, w której kilka okien i pomocników otrzymujących współdzielony obiekt ustawień wykonywało operacje wejścia/wyjścia gołymi kluczami w korzeniu ustawień zamiast pod OpenMV/, tracąc geometrię okna, podział i stan rozwinięcia model zoo oraz stan sześciu okien ładowania (dfu-util, imx, bossac, alif, picotool i ST Cube Programmer) wraz z opcjami kompilatorów mpy-cross, vela i ST Edge AI; grupa jest teraz wpisana w każdy klucz, dzięki czemu używana jest właściwa ścieżka (258448bdf).

Obsługa platform i narzędzi

  • Baza Qt Creator: 14.0.2.

  • Wersja OpenMV IDE podniesiona do 4.8.11.

Zmiany łamiące zgodność

Brak. Wszystkie zmiany to poprawki błędów i ulepszenia nałożone na istniejącą bazę Qt Creator 14.0.2; istniejące projekty i przepływy pracy nie są naruszone.