v4.8.11

v4.8.11 is a stability and correctness release focused on macOS robustness, external-tool serialization, and firmware-update reliability. It is built on Qt Creator 14.0.2 (unchanged from the previous release) and contains no breaking changes for user projects.

Highlights

  • macOS crash hardening — eliminated an intermittent silent NSRangeException abort caused by updating tree/list/combo selections before a panel or popup was fully built or mid-async-refresh, across the outline combo, call/type hierarchy, completion and locator popups, project tree, and more.

  • Serialized external tools — the loader progress dialog is now application-modal and suspends all device polling, so running dfu-util, bossac, picotool, and the other tools can no longer be re-entered by the camera stream or auto-reconnect.

  • Reliable firmware updates — auto-reconnect can no longer hijack a firmware update mid-flash, which previously dropped the real continuation and popped a spurious DFU dialog.

  • Hello World safety — connecting a board no longer occasionally overwrites a Hello World program you have typed into, by comparing against a pristine snapshot instead of the unreliable modified flag.

  • Clearer DFU errors — the “no matching interface” error now names the detected board and the firmware file names it accepts instead of dumping a raw VID/PID.

New features

  • ST Edge AI (STM32N6) now produces the relocatable network binary directly via the compiler’s --relocatable mode, removing the separate Python relocation step and the extra Relocation CLI Options field from the dialog (7613135c5).

Other changes and improvements

  • DFU interface errors now name the detected board and list the firmware file names that board accepts, with guidance to rename or pick the correct file, instead of dumping a raw VID/PID (ac509b369).

  • macOS tab navigation shortcuts now use reachable Cmd+Shift+[ / Cmd+Shift+] (prev/next) and Cmd+Alt+[ / Cmd+Alt+] (move) instead of the unpressable Ctrl+PageUp / Ctrl+PageDown; Windows and Linux bindings are unchanged (6c09e10b1).

  • License/board requests to upload.openmv.io (check.php, insert.php, register.php) now send a per-platform browser-style User-Agent so the license server can identify the client OS (6bfd74b36).

Bug fixes

  • Fixed an intermittent macOS crash (a silent NSRangeException abort with no crash dialog) where updating tree/list/combo selections while a panel or popup was still hidden or mid-async-refresh would index into an unbuilt Cocoa accessibility cache. Selection, scroll, and expand are now deferred or guarded across the outline combo, call/type hierarchy, code-completion popup, locator popup, Save Items dialog, project tree, folder navigation, Open Documents, the Issues/Tasks list, and the tree-view combobox (94c8f9def, ae40a3806, ed23b5c60, c6baf89cd, d7b6f5838, d8b70609c, 21740d9c2, 9217fc8a9, fe75924d5, 9cc247ffb, 3ca71e915, 559b6005f).

  • Fixed a separate macOS crash (NSRangeException/SIGABRT) in the code outline combobox caused by a stale out-of-range index when the Python language server refreshed symbols asynchronously; setCurrentIndex now re-validates row/column bounds against the live model (3e0ce89f1).

  • Hardened the ROMFS model editor and dataset editor against QFileSystemModel async races by deferring the tree pre-expand until the directory finishes loading and only selecting newly created files/folders/models once the model has a valid index for them (5eaa91aff).

  • External-tool operations (dfu-util, bossac, picotool, alif, imx, ST Cube, mpy-cross, vela, ST Edge AI, video convert) no longer let the camera stream or queued work re-enter a device operation behind the running tool: the loader progress dialog is now application-modal and device polling is fully suspended while it is shown (3069e8ec0).

  • Auto-reconnect no longer hijacks a firmware update mid-flash via a sticky firmware-update-in-progress flag latched for the whole forced/bootloader/erase operation that the reconnect timer now also checks (b7745484a).

  • Connecting a board no longer occasionally overwrites a Hello World program you have typed into, by comparing the live document against a pristine snapshot captured at open instead of relying on the unreliable modified flag before auto-syncing the per-sensor example (6f4539d44).

  • Scrolling up in the serial terminal during fast continuous output no longer yanks the view back to the bottom: the append paths now follow the sticky user-scroll-intent flag instead of re-deriving “at bottom” from a scrollbar position that each chunk had just re-pinned (9aea0f1a2).

  • Escape now reliably closes the Code Profiler dialog regardless of which child widget has focus (203ffd1e6).

  • On macOS, global menu and command keyboard shortcuts now work app-wide instead of only when the editor had focus, by parenting the hidden menu bar into the main window on every platform (6d52cbe73).

  • The bundled Python interpreter is now forced as the default on every launch, so a stale persisted default no longer silently disables the Python language server (completion and call hints) (1d5069a52).

  • Hardened OpenMV settings I/O against re-entrancy: beginGroup / endGroup on the shared global settings object (which spawn modal dialogs and run nested event loops) are replaced with full key paths, so a re-entrant settings access during a modal dialog can no longer misfile keys under the wrong group. On-disk paths are byte-identical, so existing users’ settings are preserved exactly (91e78a9e3, f4bb9f48c).

  • Fixed a regression where several dialogs and helpers that receive the shared settings object did bare-key I/O at the settings root instead of under OpenMV/, losing the model zoo’s window geometry, splitter, and expanded state and the six loader dialogs’ state (dfu-util, imx, bossac, alif, picotool, and ST Cube Programmer) along with the mpy-cross, vela, and ST Edge AI compiler options; the group is now baked into each key so the correct path is used (258448bdf).

Platform and tool support

  • Qt Creator base: 14.0.2.

  • OpenMV IDE version bumped to 4.8.11.

Breaking changes

None. All changes are bug fixes and improvements layered on the existing Qt Creator 14.0.2 base; existing projects and workflows are unaffected.