v4.4.0

v4.4.0 is een grote moderniseringsrelease die OpenMV IDE rebaset van zijn al lang bestaande Qt Creator 10.0.1-basis naar Qt Creator 14.0.2, waarbij de volledige OpenMV-plugin en elke fork-aanpassing opnieuw op de nieuwere basis worden toegepast. Daarnaast bundelt deze release een ingebedde Python-taalserver voor offline code-aanvulling, schakelt GitHub Copilot op elk platform in, introduceert een nieuwe aangepaste OpenMV DFU-bootloader, en migreert OpenMV-camera’s naar een nieuwe 37C5 USB-vendor-ID. De basiswijziging is een grote interne modernisering maar breekt geen gebruikersprojecten; zie Breaking changes voor het kleine aantal voor de gebruiker zichtbare workflow-wijzigingen.

Hoogtepunten

  • Qt Creator 14.0.2-rebase. De IDE gaat van Qt Creator 10.0.1 naar 14.0.2, met de volledige OpenMV-plugin en alle // OPENMV-DIFF //-aanpassingen opnieuw toegepast op de moderne basis (d6c895be8, 1fa75b397).

  • Ingebedde Python-taalserver. De IDE levert en gebruikt nu automatisch een gebundelde pylsp (met astroid 3.3.5), wat offline Python/MicroPython-code-aanvulling biedt zonder een aparte pip-installatie op Windows, macOS en Linux x86_64 (257addee0, 5a2b3e72f, 94470798d).

  • GitHub Copilot op alle platformen. Copilot is geïntegreerd en standaard ingeschakeld, met een gebundelde Node.js 20.18.0-runtime voor Windows, macOS en Linux, zodat het niet langer beperkt is tot bepaalde machines, plus een opstartdialoog om het in te schakelen (bb07d582b, 1cb967c5a, b37e48040).

  • Nieuwe OpenMV DFU-bootloader. Een volledig geïmplementeerde aangepaste openmv_dfu-bootloaderflow stuurt firmware-updates aan vanuit settings.json, inclusief een “board in DFU mode detected”-dialoog met keuzes voor install-latest-release, load-specific-firmware en erase-filesystem, plus een fallback-bootloaderpad voor het herstellen van bricked camera’s (08b9d0676, 6a6a9351d, 6d78d6571).

  • Nieuwe camera-ondersteuning. Voegt de OpenMV Cam N6-, RT1062- en AE3-borden toe, en migreert camera’s naar de nieuwe 37C5 USB-vendor-ID met bijgewerkte DFU-drivers en udev-regels (000ed8a87, f453bc945, 4a16e04c2, 6d78d6571).

  • Betrouwbaardere seriële communicatie. Belangrijke verbeteringen aan de seriële communicatie verhelpen vervormde terminaltekst en willekeurige verbroken verbindingen met op TinyUSB gebaseerde camera’s (caeba6a16, 6cf122a3c).

Nieuwe functies

  • OpenMV DFU-bootloader. Een nieuw openmv_dfu-bootloadersysteem met speciale DFU-drivers en een fallback-bootloadermechanisme herstelt bricked camera’s voor alle firmwaretypes (6a6a9351d, 6d78d6571). De flow stuurt firmware-updates aan vanuit settings.json en presenteert een “board in DFU mode detected”-dialoog met de opties install-latest-release, load-specific-firmware en erase-filesystem (08b9d0676, ef19133b6, 9c59d113c).

  • Bordnaam in poortkiezer. De seriële-poortselectiedialoog onderzoekt nu elke poort en toont de gedetecteerde bordnaam naast de poort (bijv. COM3: OpenMV Cam H7) in plaats van een kale poortnaam (9837d6cb5).

  • Editor met tabbladen. De tabbed-editor-plugin is hersteld, met een rij documenttabbladen boven het editorgebied om tussen geopende bestanden te wisselen (c8519c09f), en deze bewaart en herstelt nu de tabbladvolgorde over sessies heen (55ccfb207).

  • Python-syntaxismarkering. Voegt een speciale Python-syntaxismarkeringsdefinitie voor de editor toe met regels voor string-format, float en sleutelwoorden (9be46c0c3).

Overige wijzigingen en verbeteringen

  • Refactor van firmware-laden. De code voor het laden van firmware is opgesplitst in afzonderlijke bootloader-handlers per type (OpenMV DFU, Arduino DFU, BOSSAC, i.MX, picotool), met toevoeging van touch-to-reset PID-afhandeling voor Arduino DFU-borden en expliciete “Legacy”-bordvarianten voor apparaten met afwijkende VID/PID (9f465f9f8).

  • STM32 ROM-bootloaderbeveiligingen. De IDE waarschuwt nu of blokkeert het laden van firmware.dfu/openmv.dfu op de STM32 ROM-herstelbootloader, en beveelt alleen bootloader.dfu aan om het bricken van STM32H7-borden te voorkomen die worden getroffen door een bug in de chip-ROM-bootloader (c5ce0ae1a, e7cde1ec1).

  • Automatische, stille Python-LSP-installatie. De Python-taalserver installeert en updatet nu automatisch zonder infobar-prompts of console-berichtenspam (d89f5985f), en het Python-autocomplete/documentatie-hoversysteem is herwerkt tot een speciale OpenMV-documentatie-engine die de gebundelde HTML-bibliotheekdocumentatie parseert om sleutelwoordmarkering en tooltips aan te sturen (47e02873b, 4f9853f21, 82cefc931).

  • Detectie van Linux Python-interpreter. Interpreterdetectie op Linux is nu automatisch, waarbij alleen Python 3-interpreters uit PATH worden overwogen en de nieuwste als enige standaard wordt gekozen (214fdc758).

  • Opschoning van Python-instellingen. De beheergroep per interpreter en de pagina Interpreters zijn verborgen, de Language Server Configuration is ondergebracht onder een Python-categorie, en de ongebruikte REPL- en interpreterkeuze-werkbalkknoppen zijn verborgen in de Python-editor (d89f5985f). Op Windows registreert de IDE nu automatisch de gebundelde ingebedde python.exe als de standaardinterpreter, waarbij de gebundelde taalserver als reeds geïnstalleerd wordt beschouwd (1d9ca003e, d89f5985f).

  • Schonere profielmap. De IDE schrijft niet langer ongebruikte Qt Creator-instellingenbestanden (devices, kits, toolchains, Qt-versies) en opent bestanden direct in de editor (3771b0107), scant het systeem niet langer op qmake/Qt-versies (42807f25f), en vermijdt het laden van ongebruikte device-/toolchain-/kit-machinerie en opstartruis (902a357de, b2666a35b).

  • Veiligere updates. Het bijwerken van de IDE overschrijft niet langer gebruikersbronnen; alleen de beheerde resourcemappen (examples, firmware, html, models) worden verwijderd en opnieuw gekopieerd, waarbij micropython-headers daarnaast wordt verwijderd (het wordt apart geïnstalleerd in plaats van via dit pad opnieuw gekopieerd), met een duidelijkere foutmelding als firmware/settings.json ontbreekt of ongeldig is (b4b8c208d, 3255ba4fb).

  • Snellere DFU-verbinding. De wachttijd voor de DFU-verbinding is verkort zodat flashen en verbinden sneller gaan (11d8c9fe3, 4700bf678).

  • Herstelde OpenMV-menu- en UI-aanpassingen. De gestroomlijnde OpenMV-menu-indeling is opnieuw toegepast, waarbij de Build- en Debug-menu’s worden verborgen en projectbeheeracties worden verwijderd (7503f2bec); de code-aanvulling-engine krijgt weer klasse-/methodebewustzijn en public/private-sleutelwoordbereiken voor MicroPython-autocomplete (55fc348ea); de ANSI-kleurweergave in de terminal is opnieuw toegepast met thema-bewuste heldere/gedimde waarden en cursor-back-escape-ondersteuning (c6787a27a); en de werkbalk van de afbeeldingsviewer is aangepast met resolutie-/zoom-tooltips en een verplaatste Fit-to-Screen-actie (734fec693).

  • Herstelde gebundelde bronnen. Flash-tools, DFU-drivers, firmware en de volledige example-/script-boom zijn na de uitkleding bij de rebase hersteld in de gedeelde bronnen (33c8354bc), en OpenMV’s aangepaste opstartlogica voor de applicatie is opnieuw toegepast: het vereist hard de TextEditor-plugin (de controles voor de OpenMV- en TabbedEditor-plugins zijn aanwezig maar uitgeschakeld), installeert een aangepaste Qt-berichtenhandler, verwijdert de opdrachtregelopties -client/-pid/-block, en forceert gedrag met één instantie (06c788f3d).

  • Ontbrekende-plugin-fout. De app faalt nu hard met een duidelijke foutmelding als de vereiste plugins ontbreken of zijn uitgeschakeld, de OpenMV-plugin kreeg een Copilot-afhankelijkheid, en diverse teksteditor-opties (Prefer single line comments en de commentaarpositiekeuze in de Behavior-instellingen, en Highlight selection in de Display-instellingen) zijn verborgen (1bc02b1f3).

  • Kortere seriële time-outs. De seriële-protocol-time-outs zijn verkort (lezen 10000 naar 5000 ms, schrijven 6000 naar 3000 ms) voor snellere foutfeedback, waarbij de gedocumenteerde standaardwaarde van -override_read_timeout is bijgewerkt om overeen te komen (641385af4).

  • Herstel van vastgelopen poort. Seriële poorten die midden in een opdracht vastlopen, worden nu hersteld met een GET_STATE-query (configureerbaar via de get-state-instelling) in plaats van een script-running-query (a8598f550).

  • Volgorde van instellingendialoog. De instellingendialoog verbergt het selectievakje voor alfabetische categoriesortering zodat de paginalijst in de door OpenMV bedoelde volgorde blijft (1cb967c5a).

  • Copilot-instellingen vereenvoudigd. De Copilot-instellingenpagina is teruggebracht tot alleen de aanmeld-/auth- en proxy-besturingselementen, waarbij de opties enable-Copilot, Node.js-pad, dist-pad en auto-complete zijn verborgen (1cb967c5a).

Bugfixes

  • Belangrijke problemen met seriële communicatie verholpen door de stall-time-out voor seriële leesbewerkingen 10x te verhogen en een op GET_STATE gebaseerd unstuck-pad uit te schakelen dat de tekst in de seriële terminal vervormde (caeba6a16).

  • Willekeurige verbroken seriële verbindingen met op TinyUSB gebaseerde camera’s verholpen door een frame-dump-unlock-opdracht uit te geven en de afhandeling van read-stall te herwerken in plaats van de verbinding te verbreken (6cf122a3c).

  • De get_state-afhandeling van de camera tolerant gemaakt voor korte/gedeeltelijke antwoorden en ervoor gezorgd dat gebufferde tekst in de seriële terminal wordt doorgespoeld tijdens foutherstel zodat loguitvoer niet verloren gaat (c8b4248a6, 247a779dd).

  • De flashpartitie-/alt-setting-nummers van de DFU-bootloader gecorrigeerd voor het laden van OpenMV Cam-firmware (a8700d12d).

  • Alle bootloaders hersteld door een nieuwe hidden-bordvlag te respecteren, de filtering op serienummer over te schakelen naar inverse filters, en het Arduino Nano RP2040 Connect UF2-item een werkende picotool-configuratie te geven (63cee629b).

  • De dialoog voor bordtypeselectie van de bootloader die de verkeerde waarde onthield verholpen door aparte geschiedenissleutels te gebruiken voor leesbare en IMX-bordtypeselecties (a3325af32).

  • De timestamp-/framesnelheidberekening van videotranscodering (Save Video) verholpen door het gemiddelde frame-interval in microseconden te berekenen, een nieuw v21 ImageWriter-tijdformaat te ondersteunen en te beschermen tegen null-pixmaps tijdens conversie (f5c75c749, f8f762b3e).

  • Een crash in de histogram-/framebufferweergave verholpen wanneer een lege (null) pixmap werd ontvangen, door pixmapUpdate() te beschermen tegen null-data (622cf5ea8).

  • Hover-annotatie-tooltips in de teksteditor hersteld zodat het zweven over tekstmarkeringen weer de annotatie-tooltip toont (1852d18e1).

  • Voorkomen dat de info-dialogen van GitHub Copilot en LED-kleuren verschijnen terwijl de IDE bezig is met verbinden of flashen (f8f762b3e).

  • Crashbescherming toegevoegd in de language client zodat de afhandeling van document-content-change de IDE in randgevallen niet langer laat crashen (7926ffe4c).

  • Python-taalservercontroles die een schone afsluiting van de IDE verhinderden verholpen door de Python-plugin asynchroon te laten wachten op lopende controles voordat wordt afgesloten (9ff6c7936).

  • Python-autocomplete op Linux verholpen: de language client wortelt zichzelf bij de gebundelde micropython-headers en de overbodige werkbalkactie voor de aanvulpopup in de editor is verborgen (d37f66a9a, 56e748f9d, 016fa73eb).

  • De afhandeling van tijdelijke/niet-opgeslagen bestanden verholpen zodat Save As de beginmap van het bestandsdialoogvenster gebruikt, en de dialoog Save Items en de Diff-editor niet langer interne tijdelijke bestandspaden tonen (b7f0bb378, c8e7b6b8f, 6b128c34c).

  • Bij het opslaan van een naamloze/tijdelijke buffer wordt de Save-As-dialoog nu standaard ingesteld op een juiste .py-bestandsnaam in plaats van een lege naam (3001fdfff).

  • Tijdelijke/naamloze documenten worden nu aangeboden voor opslaan wanneer ze gewijzigd zijn, uitgesloten van autosave, en correct via Save-As gerouteerd (f87b71cf0).

  • De volgorde van het menu Recent Files verholpen zodat het opnieuw openen van een al vermeld bestand de volgorde niet langer wijzigt, en het bestandsdialoogvenster gebruikt nu standaard de projectmap (d49c0c993).

  • De tekstweergave van berichtvensters verholpen door op aanvinkbare berichtvensters niet langer rich-text-formaat te forceren, zodat onopgemaakte tekst correct wordt weergegeven (0c565502f).

  • Tooltipkleuren verholpen zodat tooltips correct worden weergegeven in het lichte thema (35cbf077b).

  • Algemene stabiliteits- en opschoningsfixes voor Qt Creator in de core-instellingen, de language client, de MSVC-toolchain, de project explorer en de Python-plugins (836b163dc, 134f43cb8).

  • De mapnaam van de gebundelde firmware voor de Arduino Nano 33 BLE Sense gecorrigeerd (b1d8ac227) en de Linux udev-regel voor het product-ID van de AE3 DFU-bootloader verholpen, waarbij 96E3 is gecorrigeerd naar kleine letters 96e3 zodat de hoofdlettergevoelige idProduct-match van udev werkt (2cd43c96b). De Linux udev-regel voor de AE3 DFU-bootloader is ook bijgewerkt naar het product-ID 37c5:afe3 voor de openmvdfu-symlink (b99555637).

Platform- en toolondersteuning

  • Qt Creator-basis: 14.0.2 (gerebaset vanaf 10.0.1).

  • OpenMV Cam N6 wordt nu ondersteund (VID:PID 37C5:1206, DFU-bootloader 37C5:9206), inclusief firmware-instellingen, een Windows DFU-driver en een Linux udev-regel (000ed8a87, 1b950c8c6).

  • OpenMV Cam RT1062 wordt nu ondersteund onder een nieuwe aangepaste USB VID/PID (37C5:1060), inclusief DFU-drivers, udev-regels en behouden legacy 1209:ABD1-items voor oudere apparaten (f453bc945, d55d6441f).

  • OpenMV Cam AE3 wordt nu ondersteund, inclusief Windows DFU-drivers, zijn firmware-/config-imageboom en USB VID/PID (bijgewerkt naar 37C5:16E3 runtime / 37C5:96E3 bootloader) (4a16e04c2, cc52e76f5, 3f75e7de4, 8eb80b129).

  • Nieuw USB VID/PID-systeem: OpenMV-camera’s gaan over naar vendor-ID 37C5 met nieuwe bootloader-/DFU-ID’s (bijv. 37C5:1202/9202 M4, 1203/9203 M7, 1204/9204 H7, 124A/924A H7 Plus, 1205/9205), waarbij oude 1209:ABD1-borden als Legacy worden gelabeld terwijl zowel oude als nieuwe firmware nog worden ondersteund (6d78d6571, 6a6a9351d, 500b1a0bf).

  • PAG7936-afbeeldingssensor toegevoegd aan de lijst met herkende sensoren (f9e3f3461).

  • Ingebedde Python 3.13-interpreter gebundeld voor macOS, Linux x86_64, Linux arm64 en Linux arm (9133b1516), met native libpython3.13- en ujson-gedeelde bibliotheken (d3aa663d8, a2cb24e74).

  • Gebundelde taalserver: pylsp met astroid 3.3.5 op Windows, macOS en Linux x86_64 (257addee0). De Windows-build levert een ingebedde CPython met python-lsp-server 1.12.0, jedi 0.17.2, docstring_to_markdown 0.15, pip 24.2 en distlib 0.3.9 (9b6434602, 069807cd3, 5f2e45196, 3b6c6c312).

  • Gebundelde Node.js 20.18.0 “Iron” LTS-runtime voor Windows, macOS, Linux arm64, Linux x64 en Linux armv7 om GitHub Copilot op alle platformen mogelijk te maken (bb07d582b, 6db78bf45, 1cb967c5a).

  • Alif Security Toolkit met ondertekende boot-/system-package-binaries en gebruikershandleiding gebundeld voor Windows, macOS en Linux x86_64 voor het provisioneren van op Alif gebaseerde OpenMV-camera’s (bijv. AE3) (f63851be3).

  • Linux desktop-integratie is hersteld, waarbij een desktop-applicatievermelding en AppStream-metadata worden geïnstalleerd en het Python (.py)-MIME-type wordt geregistreerd (3fa25f571).

Breaking changes

Er is geen scripting-API gewijzigd. De volgende voor de gebruiker zichtbare workflow- en gedragswijzigingen kunnen worden opgemerkt:

  • Nieuwe USB-vendor-ID. OpenMV-camera’s migreren naar vendor-ID 37C5 met nieuwe product- en DFU-bootloader-ID’s; borden op de oude 1209:ABD1 VID worden nu gelabeld als “Legacy”. De IDE ondersteunt zowel oude als nieuwe firmware tegelijk, maar Linux-gebruikers moeten de bijgewerkte udev-regels opnieuw installeren om de nieuwe ID’s te laten herkennen.

  • Legacy-borditems verborgen. Legacy-varianten van de OpenMV Cam M4/M7/H7/H7 Plus/Pure Thermal-borden worden nu onderdrukt in de firmware-/bordselectielijst via een nieuwe legacy-bordvlag (onderscheiden van de bestaande hidden-vlag), zodat gebruikers die specifiek een legacy-borditem nodig hebben het niet langer in de vervolgkeuzelijst zien (6d78d6571).

  • Kortere seriële time-outs. De standaard leestime-out voor antwoorden daalt van 10000 ms naar 5000 ms en de schrijftime-out van 6000 ms naar 3000 ms (de standaardwaarde van -override_read_timeout wordt nu gedocumenteerd als 5000). Trage borden/verbindingen die op de langere standaardwaarden vertrouwden, kunnen eerder een time-out krijgen.

De Qt Creator 14.0.2-rebase is een grote interne modernisering maar is niet breaking voor gebruikersprojecten.