v4.8.11

v4.8.11 是一个稳定性和正确性版本,重点改进了 macOS 上的健壮性、外部工具的串行化执行以及固件更新的可靠性。该版本基于 Qt Creator 14.0.2 构建(与上一版本相同),且不包含任何会破坏用户项目的变更。

重点更新

  • macOS 崩溃加固 —— 修复了一个间歇性的静默 NSRangeException 中止问题,该问题由在面板或弹出窗口尚未完全构建好或处于异步刷新过程中时更新树/列表/组合框选择项所引起,涉及大纲组合框、调用/类型层次结构、补全和定位器弹窗、项目树等多个位置。

  • 外部工具串行化 —— 加载器进度对话框现在为应用程序模态,并会暂停所有设备轮询,因此运行 dfu-util、bossac、picotool 以及其他工具时,不再会被摄像头视频流或自动重连重新进入。

  • 可靠的固件更新 —— 自动重连不再会在固件更新的刷写过程中将其劫持,此前这会丢弃真正的后续操作并弹出一个虚假的 DFU 对话框。

  • Hello World 安全防护 —— 连接开发板时不再会偶尔覆盖你已经输入内容的 Hello World 程序,方法是与原始快照进行比较,而不是依赖不可靠的修改标志。

  • 更清晰的 DFU 错误信息 —— “no matching interface”错误现在会指出检测到的开发板以及它所接受的固件文件名,而不是直接输出原始的 VID/PID。

新功能

  • ST Edge AI(STM32N6) 现在通过编译器的 --relocatable 模式直接生成可重定位的网络二进制文件,从而移除了单独的 Python 重定位步骤以及对话框中额外的 Relocation CLI Options 字段(7613135c5)。

其他变更与改进

  • DFU 接口错误 现在会指出检测到的开发板,并列出该开发板所接受的固件文件名,同时提供重命名或选择正确文件的指引,而不是直接输出原始的 VID/PID(ac509b369)。

  • macOS 标签页导航 快捷键现在使用可达的 Cmd+Shift+[ / Cmd+Shift+](上一个/下一个)和 Cmd+Alt+[ / Cmd+Alt+](移动),而不是无法按下的 Ctrl+PageUp / Ctrl+PageDown;Windows 和 Linux 的按键绑定保持不变(6c09e10b1)。

  • 向 ``upload.openmv.io`` 发起的许可证/开发板请求check.phpinsert.phpregister.php)现在会发送一个按平台区分的浏览器风格 User-Agent,以便许可证服务器识别客户端的操作系统(6bfd74b36)。

Bug 修复

  • 修复了一个间歇性的 macOS 崩溃(一个无崩溃对话框的静默 NSRangeException 中止),其原因是在面板或弹出窗口仍处于隐藏状态或异步刷新过程中更新树/列表/组合框选择项,从而索引到了尚未构建的 Cocoa 辅助功能缓存。现在选择、滚动和展开操作在大纲组合框、调用/类型层次结构、代码补全弹窗、定位器弹窗、Save Items 对话框、项目树、文件夹导航、Open DocumentsIssues/Tasks 列表以及树视图组合框中都已延迟执行或加以保护(94c8f9defae40a3806ed23b5c60c6baf89cdd7b6f5838d8b70609c21740d9c29217fc8a9fe75924d59cc247ffb3ca71e915559b6005f)。

  • 修复了代码大纲组合框中一个独立的 macOS 崩溃(NSRangeException/SIGABRT),其原因是当 Python 语言服务器异步刷新符号时存在一个过期的越界索引;现在 setCurrentIndex 会针对实时模型重新校验行/列边界(3e0ce89f1)。

  • 加固了 ROMFS 模型编辑器数据集编辑器,使其能够抵御 QFileSystemModel 异步竞态:将树的预展开延迟到目录加载完成之后,并且只有在模型为新创建的文件/文件夹/模型生成有效索引后才选中它们(5eaa91aff)。

  • 外部工具操作(dfu-util、bossac、picotool、alif、imx、ST Cube、mpy-cross、vela、ST Edge AI、视频转换)不再允许摄像头视频流或排队任务在正在运行的工具背后重新进入设备操作:加载器进度对话框现在为应用程序模态,并且在其显示期间设备轮询被完全暂停(3069e8ec0)。

  • 自动重连不再会在固件更新的刷写过程中将其劫持,方法是引入一个在整个强制/引导加载程序/擦除操作期间锁存的固件更新进行中标志,重连定时器现在也会检查该标志(b7745484a)。

  • 连接开发板时不再会偶尔覆盖你已经输入内容的 Hello World 程序,方法是将实时文档与打开时捕获的原始快照进行比较,而不是在自动同步各传感器示例之前依赖不可靠的修改标志(6f4539d44)。

  • 在快速连续输出期间向上滚动串口终端不再会把视图猛地拉回底部:追加路径现在会遵循锁定的用户滚动意图标志,而不是根据每个数据块刚刚重新固定的滚动条位置去重新推断“是否在底部”(9aea0f1a2)。

  • 无论哪个子控件拥有焦点,Escape 现在都能可靠地关闭 Code Profiler 对话框(203ffd1e6)。

  • 在 macOS 上,全局菜单和命令的键盘快捷键现在在整个应用范围内都能生效,而不再仅在编辑器拥有焦点时生效,方法是在每个平台上都将隐藏的菜单栏作为主窗口的子级(6d52cbe73)。

  • 捆绑的 Python 解释器现在会在每次启动时被强制设为默认,因此过期的持久化默认值不再会静默地禁用 Python 语言服务器(补全和调用提示)(1d5069a52)。

  • 加固了 OpenMV 设置的 I/O 以防止重入:共享全局设置对象上的 beginGroup / endGroup(它们会生成模态对话框并运行嵌套事件循环)被替换为完整的键路径,因此在模态对话框期间发生的重入式设置访问不再会把键错误地归档到错误的分组下。磁盘上的路径逐字节相同,因此现有用户的设置被完整保留(91e78a9e3f4bb9f48c)。

  • 修复了一个回归问题:几个接收共享设置对象的对话框和辅助函数在设置根目录而非 OpenMV/ 下进行了裸键 I/O,导致丢失模型库窗口几何位置、分隔条和展开状态,以及六个加载器对话框(dfu-util、imx、bossac、alif、picotool 和 ST Cube Programmer)的状态,还有 mpy-cross、vela 和 ST Edge AI 的编译器选项;现在分组已被嵌入到每个键中,因此会使用正确的路径(258448bdf)。

平台与工具支持

  • Qt Creator 基础版本: 14.0.2。

  • OpenMV IDE 版本号升级至 4.8.11。

破坏性变更

无。所有变更均为在现有 Qt Creator 14.0.2 基础之上叠加的 Bug 修复和改进;现有项目和工作流不受影响。