v4.8.11

v4.8.11 ist ein Stabilitäts- und Korrektheits-Release mit Schwerpunkt auf macOS-Robustheit, Serialisierung externer Tools und Zuverlässigkeit von Firmware-Updates. Es basiert auf Qt Creator 14.0.2 (unverändert gegenüber dem vorherigen Release) und enthält keine breaking changes für Benutzerprojekte.

Höhepunkte

  • Absicherung gegen macOS-Abstürze – ein sporadischer stiller NSRangeException-Abbruch wurde beseitigt, der dadurch entstand, dass Baum-/Listen-/Combobox-Auswahlen aktualisiert wurden, bevor ein Panel oder Popup vollständig aufgebaut war oder während eines asynchronen Refreshs – betroffen waren die Gliederungs-Combobox, die Aufruf-/Typhierarchie, Vervollständigungs- und Locator-Popups, der Projektbaum und mehr.

  • Serialisierte externe Tools – der Fortschrittsdialog des Loaders ist nun anwendungsmodal und unterbricht jegliches Geräte-Polling, sodass laufende Aufrufe von dfu-util, bossac, picotool und den übrigen Tools nicht mehr durch den Kamerastream oder die automatische Wiederverbindung erneut betreten werden können.

  • Zuverlässige Firmware-Updates – die automatische Wiederverbindung kann ein Firmware-Update nicht mehr mitten im Flash-Vorgang übernehmen, was zuvor die eigentliche Fortsetzung verwarf und einen fälschlichen DFU-Dialog auslöste.

  • Sicherheit beim Hello World – das Verbinden eines Boards überschreibt nun nicht mehr gelegentlich ein Hello-World-Programm, in das Sie etwas eingegeben haben, da nun gegen einen unveränderten Schnappschuss verglichen wird statt gegen das unzuverlässige Modified-Flag.

  • Deutlichere DFU-Fehler – der Fehler „no matching interface“ nennt nun das erkannte Board und die Firmware-Dateinamen, die es akzeptiert, anstatt eine rohe VID/PID auszugeben.

Neue Funktionen

  • ST Edge AI (STM32N6) erzeugt das relozierbare Netzwerk-Binary nun direkt über den --relocatable-Modus des Compilers, wodurch der separate Python-Relozierungsschritt und das zusätzliche Feld Relocation CLI Options im Dialog entfallen (7613135c5).

Weitere Änderungen und Verbesserungen

  • DFU-Interface-Fehler nennen nun das erkannte Board und listen die Firmware-Dateinamen auf, die dieses Board akzeptiert, mit dem Hinweis, die Datei umzubenennen oder die richtige auszuwählen, anstatt eine rohe VID/PID auszugeben (ac509b369).

  • macOS-Tab-Navigation verwendet nun die erreichbaren Tastenkürzel Cmd+Shift+[ / Cmd+Shift+] (vorheriger/nächster) und Cmd+Alt+[ / Cmd+Alt+] (verschieben) statt der nicht drückbaren Ctrl+PageUp / Ctrl+PageDown; die Tastenbelegungen unter Windows und Linux bleiben unverändert (6c09e10b1).

  • Lizenz-/Board-Anfragen an upload.openmv.io (check.php, insert.php, register.php) senden nun einen plattformspezifischen, browserähnlichen User-Agent, damit der Lizenzserver das Betriebssystem des Clients erkennen kann (6bfd74b36).

Fehlerbehebungen

  • Ein sporadischer macOS-Absturz wurde behoben (ein stiller NSRangeException-Abbruch ohne Absturzdialog), bei dem das Aktualisieren von Baum-/Listen-/Combobox-Auswahlen, während ein Panel oder Popup noch verborgen war oder sich mitten in einem asynchronen Refresh befand, in einen noch nicht aufgebauten Cocoa-Accessibility-Cache indexierte. Auswahl, Scrollen und Aufklappen werden nun verzögert oder abgesichert über die Gliederungs-Combobox, die Aufruf-/Typhierarchie, das Code-Vervollständigungs-Popup, das Locator-Popup, den Dialog Save Items, den Projektbaum, die Ordnernavigation, Open Documents, die Liste Issues/Tasks und die Baumansicht-Combobox (94c8f9def, ae40a3806, ed23b5c60, c6baf89cd, d7b6f5838, d8b70609c, 21740d9c2, 9217fc8a9, fe75924d5, 9cc247ffb, 3ca71e915, 559b6005f).

  • Ein separater macOS-Absturz (NSRangeException/SIGABRT) in der Code-Gliederungs-Combobox wurde behoben, der durch einen veralteten, außerhalb des gültigen Bereichs liegenden Index verursacht wurde, wenn der Python-Sprachserver Symbole asynchron aktualisierte; setCurrentIndex validiert nun die Zeilen-/Spaltengrenzen erneut gegen das aktive Modell (3e0ce89f1).

  • Der ROMFS-Modell-Editor und der Datensatz-Editor wurden gegen asynchrone Race Conditions von QFileSystemModel abgesichert, indem das Vorab-Aufklappen des Baums verzögert wird, bis das Verzeichnis fertig geladen ist, und neu erstellte Dateien/Ordner/Modelle erst dann ausgewählt werden, wenn das Modell einen gültigen Index für sie besitzt (5eaa91aff).

  • Operationen externer Tools (dfu-util, bossac, picotool, alif, imx, ST Cube, mpy-cross, vela, ST Edge AI, Videokonvertierung) lassen es nun nicht mehr zu, dass der Kamerastream oder eingereihte Aufgaben hinter dem laufenden Tool eine Geräteoperation erneut betreten: der Fortschrittsdialog des Loaders ist nun anwendungsmodal und das Geräte-Polling ist vollständig ausgesetzt, solange er angezeigt wird (3069e8ec0).

  • Die automatische Wiederverbindung übernimmt ein Firmware-Update nicht mehr mitten im Flash-Vorgang, dank eines persistenten Flags „firmware update in progress“, das für die gesamte erzwungene/Bootloader-/Lösch-Operation gesetzt bleibt und das der Wiederverbindungs-Timer nun ebenfalls prüft (b7745484a).

  • Das Verbinden eines Boards überschreibt nun nicht mehr gelegentlich ein Hello-World-Programm, in das Sie etwas eingegeben haben, da das aktive Dokument gegen einen beim Öffnen erfassten unveränderten Schnappschuss verglichen wird, anstatt sich vor dem automatischen Synchronisieren des sensorspezifischen Beispiels auf das unzuverlässige Modified-Flag zu verlassen (6f4539d44).

  • Das Hochscrollen im seriellen Terminal während schneller kontinuierlicher Ausgabe zieht die Ansicht nicht mehr an den unteren Rand zurück: die Anhänge-Pfade folgen nun dem persistenten Flag der Benutzer-Scroll-Absicht, anstatt „am unteren Rand“ aus einer Scrollbalken-Position neu abzuleiten, die jeder Datenblock gerade wieder fixiert hatte (9aea0f1a2).

  • Escape schließt nun zuverlässig den Dialog Code Profiler, unabhängig davon, welches untergeordnete Widget den Fokus hat (203ffd1e6).

  • Unter macOS funktionieren globale Menü- und Befehls-Tastenkürzel nun anwendungsweit statt nur, wenn der Editor den Fokus hatte, indem die verborgene Menüleiste auf jeder Plattform in das Hauptfenster eingebettet wird (6d52cbe73).

  • Der gebündelte Python-Interpreter wird nun bei jedem Start als Standard erzwungen, sodass ein veralteter persistierter Standard den Python-Sprachserver (Vervollständigung und Aufrufhinweise) nicht mehr stillschweigend deaktiviert (1d5069a52).

  • Die OpenMV-Einstellungs-I/O wurde gegen Re-Entrancy abgesichert: beginGroup / endGroup am gemeinsam genutzten globalen Einstellungsobjekt (die modale Dialoge erzeugen und verschachtelte Event-Loops ausführen) wurden durch vollständige Schlüsselpfade ersetzt, sodass ein wiedereintretender Einstellungszugriff während eines modalen Dialogs keine Schlüssel mehr unter der falschen Gruppe ablegen kann. Die Pfade auf der Festplatte sind byte-identisch, sodass die Einstellungen bestehender Benutzer exakt erhalten bleiben (91e78a9e3, f4bb9f48c).

  • Eine Regression wurde behoben, bei der mehrere Dialoge und Helfer, die das gemeinsam genutzte Einstellungsobjekt erhalten, eine I/O mit nacktem Schlüssel an der Einstellungswurzel statt unter OpenMV/ durchführten, wodurch die Fenstergeometrie, der Splitter und der aufgeklappte Zustand des Model Zoo sowie der Zustand der sechs Loader-Dialoge (dfu-util, imx, bossac, alif, picotool und ST Cube Programmer) zusammen mit den Compiler-Optionen von mpy-cross, vela und ST Edge AI verloren gingen; die Gruppe ist nun in jeden Schlüssel eingebacken, sodass der korrekte Pfad verwendet wird (258448bdf).

Plattform- und Tool-Unterstützung

  • Qt Creator-Basis: 14.0.2.

  • OpenMV IDE-Version auf 4.8.11 angehoben.

Breaking Changes

Keine. Alle Änderungen sind Fehlerbehebungen und Verbesserungen auf der bestehenden Qt Creator 14.0.2-Basis; bestehende Projekte und Arbeitsabläufe sind nicht betroffen.