.. _changelog_ide_v4_4_0: v4.4.0 ====== v4.4.0 is a major modernization release that rebases OpenMV IDE from its long-standing Qt Creator 10.0.1 base onto Qt Creator 14.0.2, reapplying the full OpenMV plugin and every fork customization on top of the newer base. On top of that, this release bundles an embedded Python language server for offline code completion, enables GitHub Copilot on every platform, introduces a new custom OpenMV DFU bootloader, and migrates OpenMV cameras to a new ``37C5`` USB vendor ID. The base change is a large internal modernization but does not break user projects; see *Breaking changes* for the small number of user-visible workflow changes. .. contents:: On this page :backlinks: none :local: :depth: 1 Highlights ---------- - **Qt Creator 14.0.2 rebase.** The IDE moves from Qt Creator 10.0.1 to 14.0.2, with the entire OpenMV plugin and all ``// OPENMV-DIFF //`` customizations reapplied on the modern base (`d6c895be8 `__, `1fa75b397 `__). - **Embedded Python language server.** The IDE now ships and auto-uses a bundled ``pylsp`` (with astroid 3.3.5), giving offline Python/MicroPython code completion without a separate pip install on Windows, macOS, and Linux x86_64 (`257addee0 `__, `5a2b3e72f `__, `94470798d `__). - **GitHub Copilot on all platforms.** Copilot is integrated and enabled by default, with a bundled Node.js 20.18.0 runtime for Windows, macOS, and Linux so it is no longer limited to selected machines, plus a startup dialog to turn it on (`bb07d582b `__, `1cb967c5a `__, `b37e48040 `__). - **New OpenMV DFU bootloader.** A fully-implemented custom ``openmv_dfu`` bootloader flow drives firmware updates from ``settings.json``, including a "board in DFU mode detected" dialog offering install-latest-release, load-specific-firmware, and erase-filesystem choices, plus a fallback-bootloader path for recovering bricked cameras (`08b9d0676 `__, `6a6a9351d `__, `6d78d6571 `__). - **New camera support.** Adds the OpenMV Cam N6, RT1062, and AE3 boards, and migrates cameras to the new ``37C5`` USB vendor ID with updated DFU drivers and udev rules (`000ed8a87 `__, `f453bc945 `__, `4a16e04c2 `__, `6d78d6571 `__). - **More reliable serial.** Major serial-communication fixes resolve garbled terminal text and random disconnects with TinyUSB-based cameras (`caeba6a16 `__, `6cf122a3c `__). New features ------------ - **OpenMV DFU bootloader.** A new ``openmv_dfu`` bootloader system with dedicated DFU drivers and a fallback-bootloader mechanism recovers bricked cameras across firmware types (`6a6a9351d `__, `6d78d6571 `__). The flow drives firmware updates from ``settings.json`` and presents a "board in DFU mode detected" dialog with install-latest-release, load-specific-firmware, and erase-filesystem options (`08b9d0676 `__, `ef19133b6 `__, `9c59d113c `__). - **Board name in port picker.** The serial-port selection dialog now probes each port and shows the detected board name next to the port (e.g. ``COM3: OpenMV Cam H7``) instead of a bare port name (`9837d6cb5 `__). - **Tabbed editor.** The tabbed-editor plugin is restored, adding a row of document tabs above the editor area for switching between open files (`c8519c09f `__), and it now persists and restores tab ordering across sessions (`55ccfb207 `__). - **Python syntax highlighting.** Adds a dedicated Python syntax-highlighting definition for the editor with string-format, float, and keyword rules (`9be46c0c3 `__). Other changes and improvements ------------------------------ - **Firmware-loading refactor.** Firmware-loading code was split into separate per-type bootloader handlers (OpenMV DFU, Arduino DFU, BOSSAC, i.MX, picotool), adding touch-to-reset PID handling for Arduino DFU boards and explicit "Legacy" board variants for alternate VID/PID devices (`9f465f9f8 `__). - **STM32 ROM-bootloader safeguards.** The IDE now warns or blocks loading ``firmware.dfu``/``openmv.dfu`` onto the STM32 ROM recovery bootloader, recommending only ``bootloader.dfu`` to avoid bricking STM32H7 boards affected by a chip ROM bootloader bug (`c5ce0ae1a `__, `e7cde1ec1 `__). - **Automatic, silent Python LSP setup.** The Python language server now installs and updates automatically without infobar prompts or console message spam (`d89f5985f `__), and the Python autocomplete/documentation hover system was reworked into a dedicated OpenMV doc engine that parses the bundled HTML library docs to drive keyword highlighting and tooltips (`47e02873b `__, `4f9853f21 `__, `82cefc931 `__). - **Linux Python interpreter detection.** Interpreter detection on Linux is now automatic, considering only Python 3 interpreters from ``PATH`` and selecting the newest as the single default (`214fdc758 `__). - **Python settings cleanup.** The per-interpreter management group and Interpreters page are hidden, the Language Server Configuration is filed under a ``Python`` category, and the unused REPL and interpreter-selector toolbar buttons are hidden in the Python editor (`d89f5985f `__). On Windows, the IDE now auto-registers the bundled embedded ``python.exe`` as the default interpreter, with the bundled language server treated as already installed (`1d9ca003e `__, `d89f5985f `__). - **Cleaner profile directory.** The IDE no longer writes unused Qt Creator settings files (devices, kits, toolchains, Qt versions) and opens files directly in the editor (`3771b0107 `__), no longer scans the system for qmake/Qt versions (`42807f25f `__), and avoids loading unused device/toolchain/kit machinery and startup noise (`902a357de `__, `b2666a35b `__). - **Safer updates.** Updating the IDE no longer clobbers user resources; only the managed resource folders (examples, firmware, html, models) are removed and recopied, with ``micropython-headers`` additionally removed (it is installed separately rather than recopied via this path), and a clearer error if ``firmware/settings.json`` is missing or invalid (`b4b8c208d `__, `3255ba4fb `__). - **Faster DFU connect.** The DFU connection wait time was reduced so flashing and connecting are faster (`11d8c9fe3 `__, `4700bf678 `__). - **Restored OpenMV menu and UI customizations.** The streamlined OpenMV menu layout is reapplied, hiding the Build and Debug menus and removing project-management actions (`7503f2bec `__); the code-completion engine regains class/method awareness and public/private keyword scopes for MicroPython autocomplete (`55fc348ea `__); terminal ANSI color rendering is reapplied with theme-aware bright/dim values and cursor-back escape support (`c6787a27a `__); and the image viewer toolbar is customized with resolution/zoom tooltips and a relocated Fit-to-Screen action (`734fec693 `__). - **Restored bundled resources.** Flashing tools, DFU drivers, firmware, and the full example/script tree are restored into the share resources after the rebase strip-down (`33c8354bc `__), and OpenMV's custom application startup logic is reapplied: it hard-requires the ``TextEditor`` plugin (the OpenMV and TabbedEditor plugin checks are present but disabled), installs a custom Qt message handler, removes the ``-client``/``-pid``/``-block`` command-line options, and forces single-instance behavior (`06c788f3d `__). - **Missing-plugin failure.** The app now hard-fails with a clear error if the required plugins are missing or disabled, the OpenMV plugin gained a Copilot dependency, and several text-editor options (``Prefer single line comments`` and the comment-position selector in Behavior settings, and ``Highlight selection`` in Display settings) are hidden (`1bc02b1f3 `__). - **Shorter serial timeouts.** Serial protocol timeouts were shortened (read 10000 to 5000 ms, write 6000 to 3000 ms) for faster failure feedback, with the documented ``-override_read_timeout`` default updated to match (`641385af4 `__). - **Stuck-port recovery.** Serial ports stuck mid-command are now recovered using a ``GET_STATE`` query (configurable via the get-state setting) instead of a script-running query (`a8598f550 `__). - **Settings dialog order.** The settings dialog hides the alphabetical category sort checkbox so the page list stays in OpenMV's intended order (`1cb967c5a `__). - **Copilot settings simplified.** The Copilot settings page is reduced to just the sign-in/auth and proxy controls, hiding the enable-Copilot, Node.js-path, dist-path, and auto-complete options (`1cb967c5a `__). Bug fixes --------- - Fixed major serial-communication issues by increasing the serial read stall timeout 10x and disabling a ``GET_STATE``-based unstuck path that was garbling serial-terminal text (`caeba6a16 `__). - Fixed random serial disconnects with TinyUSB-based cameras by issuing a frame-dump unlock command and reworking read-stall handling instead of disconnecting (`6cf122a3c `__). - Made the camera ``get_state`` handling tolerant of short/partial replies and ensured buffered serial-terminal text is flushed during error recovery so log output is not lost (`c8b4248a6 `__, `247a779dd `__). - Corrected DFU bootloader flash partition/alt-setting numbers for OpenMV Cam firmware loading (`a8700d12d `__). - Restored all bootloaders by honoring a new ``hidden`` board flag, switching serial-number filtering to inverse filters, and giving the Arduino Nano RP2040 Connect UF2 entry a working picotool configuration (`63cee629b `__). - Fixed the bootloader board-type selection dialog remembering the wrong value by using separate history keys for human-readable and IMX board-type selections (`a3325af32 `__). - Fixed video transcoding (Save Video) timestamp/frame-rate calculation by computing the average frame interval in microseconds, supporting a new v21 ``ImageWriter`` time format, and guarding against null pixmaps during conversion (`f5c75c749 `__, `f8f762b3e `__). - Fixed a crash in the histogram/framebuffer view when an empty (null) pixmap was received by guarding ``pixmapUpdate()`` against null data (`622cf5ea8 `__). - Restored hover annotation tooltips in the text editor so hovering over text marks shows the annotation tooltip again (`1852d18e1 `__). - Prevented the GitHub Copilot and LED-colors info dialogs from popping up while the IDE is busy connecting or flashing (`f8f762b3e `__). - Added crash protection in the language client so document-content-change handling no longer crashes the IDE on edge cases (`7926ffe4c `__). - Fixed Python language-server checks preventing a clean IDE shutdown by making the Python plugin wait asynchronously for in-flight checks before exiting (`9ff6c7936 `__). - Fixed Python autocomplete on Linux: the language client roots itself at the bundled ``micropython-headers`` and the redundant editor-toolbar completion popup action is hidden (`d37f66a9a `__, `56e748f9d `__, `016fa73eb `__). - Fixed handling of temporary/unsaved files so Save As uses the file-dialog initial directory, and the Save Items dialog and Diff editor no longer show internal temporary file paths (`b7f0bb378 `__, `c8e7b6b8f `__, `6b128c34c `__). - Saving an untitled/temporary buffer now defaults the Save-As dialog to a proper ``.py`` filename instead of an empty name (`3001fdfff `__). - Temporary/untitled documents are now offered for save when modified, excluded from autosave, and routed through Save-As correctly (`f87b71cf0 `__). - Fixed Recent Files menu ordering so re-opening an already-listed file no longer reorders it, and the file dialog now defaults to the projects directory (`d49c0c993 `__). - Fixed message-box text rendering by no longer forcing rich-text format on checkable message boxes, so raw text displays correctly (`0c565502f `__). - Fixed tooltip colors so tooltips render correctly in the light theme (`35cbf077b `__). - General Qt Creator stability and cleanup fixes across core settings, the language client, MSVC toolchain, project explorer, and Python plugins (`836b163dc `__, `134f43cb8 `__). - Corrected the Arduino Nano 33 BLE Sense bundled firmware folder name (`b1d8ac227 `__) and fixed the Linux udev rule for the AE3 DFU bootloader product ID, correcting ``96E3`` to lowercase ``96e3`` so udev's case-sensitive ``idProduct`` match works (`2cd43c96b `__). The AE3 DFU bootloader Linux udev rule was also updated to the ``37c5:afe3`` product ID for the ``openmvdfu`` symlink (`b99555637 `__). Platform and tool support ------------------------- - **Qt Creator base:** 14.0.2 (rebased from 10.0.1). - **OpenMV Cam N6** is now supported (VID:PID 37C5:1206, DFU bootloader 37C5:9206), including firmware settings, a Windows DFU driver, and a Linux udev rule (`000ed8a87 `__, `1b950c8c6 `__). - **OpenMV Cam RT1062** is now supported under a new custom USB VID/PID (37C5:1060), including DFU drivers, udev rules, and retained legacy 1209:ABD1 entries for older units (`f453bc945 `__, `d55d6441f `__). - **OpenMV Cam AE3** is now supported, including Windows DFU drivers, its firmware/config image tree, and USB VID/PID (updated to 37C5:16E3 runtime / 37C5:96E3 bootloader) (`4a16e04c2 `__, `cc52e76f5 `__, `3f75e7de4 `__, `8eb80b129 `__). - **New USB VID/PID system:** OpenMV cameras move to vendor ID ``37C5`` with new bootloader/DFU IDs (e.g. 37C5:1202/9202 M4, 1203/9203 M7, 1204/9204 H7, 124A/924A H7 Plus, 1205/9205), relabeling old 1209:ABD1 boards as Legacy while still supporting both old and new firmware (`6d78d6571 `__, `6a6a9351d `__, `500b1a0bf `__). - **PAG7936** image sensor added to the recognized sensor list (`f9e3f3461 `__). - **Embedded Python 3.13** interpreter bundled for macOS, Linux x86_64, Linux arm64, and Linux arm (`9133b1516 `__), with native ``libpython3.13`` and ``ujson`` shared libraries (`d3aa663d8 `__, `a2cb24e74 `__). - **Bundled language server:** ``pylsp`` with astroid 3.3.5 on Windows, macOS, and Linux x86_64 (`257addee0 `__). The Windows build ships an embedded CPython with python-lsp-server 1.12.0, jedi 0.17.2, docstring_to_markdown 0.15, pip 24.2, and distlib 0.3.9 (`9b6434602 `__, `069807cd3 `__, `5f2e45196 `__, `3b6c6c312 `__). - **Bundled Node.js 20.18.0** "Iron" LTS runtime for Windows, macOS, Linux arm64, Linux x64, and Linux armv7 to enable GitHub Copilot on all platforms (`bb07d582b `__, `6db78bf45 `__, `1cb967c5a `__). - **Alif Security Toolkit** signed boot/system-package binaries and user guide bundled for Windows, macOS, and Linux x86_64 for provisioning Alif-based OpenMV cameras (e.g. AE3) (`f63851be3 `__). - **Linux desktop integration** is restored, installing an application desktop entry and AppStream metadata and registering the Python (``.py``) MIME type (`3fa25f571 `__). Breaking changes ---------------- No scripting API changed. The following user-visible workflow and behavior changes may be noticed: - **New USB vendor ID.** OpenMV cameras migrate to vendor ID ``37C5`` with new product and DFU bootloader IDs; boards on the old ``1209:ABD1`` VID are now labeled "Legacy". The IDE supports both old and new firmware simultaneously, but Linux users must reinstall the updated udev rules for the new IDs to be recognized. - **Legacy board entries hidden.** Legacy variants of the OpenMV Cam M4/M7/H7/H7 Plus/Pure Thermal boards are now suppressed from the firmware/board selection list via a new ``legacy`` board flag (distinct from the pre-existing ``hidden`` flag), so users who specifically need a legacy board entry will no longer see it in the dropdown (`6d78d6571 `__). - **Shorter serial timeouts.** The default response read timeout drops from 10000 ms to 5000 ms and the write timeout from 6000 ms to 3000 ms (the ``-override_read_timeout`` default is now documented as 5000). Slow boards/links that relied on the longer defaults may time out sooner. The Qt Creator 14.0.2 rebase is a large internal modernization but is not breaking for user projects.