v4.8.11

v4.8.11 是一個著重於穩定性與正確性的版本,聚焦於 macOS 的穩健性、外部工具的序列化執行,以及韌體更新的可靠性。它建構於 Qt Creator 14.0.2(與前一版相同),且不包含任何會破壞使用者專案的變更。

重點項目

  • macOS 當機強化 — 消除了一個間歇性的靜默 NSRangeException 中止錯誤,此錯誤是因為在面板或彈出視窗尚未完整建構或正處於非同步重新整理過程中時,就更新樹狀/清單/下拉選單的選取項目所造成的,涵蓋大綱下拉選單、呼叫/型別階層、自動完成與定位器彈出視窗、專案樹狀檢視等多處。

  • 序列化的外部工具 — 載入器進度對話框現在為應用程式層級的強制回應視窗(application-modal),並會暫停所有裝置輪詢,因此執行 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.iocheck.phpinsert.phpregister.php)的請求現在會傳送各平台專屬的瀏覽器樣式 User-Agent,讓授權伺服器能夠辨識用戶端的作業系統(6bfd74b36)。

錯誤修正

  • 修正了一個間歇性的 macOS 當機問題(一個靜默的 NSRangeException 中止,且沒有任何當機對話框),此問題發生於在面板或彈出視窗仍處於隱藏狀態或非同步重新整理過程中時更新樹狀/清單/下拉選單的選取項目,導致索引存取到尚未建構的 Cocoa 輔助功能快取。選取、捲動與展開操作現在已在大綱下拉選單、呼叫/型別階層、程式碼自動完成彈出視窗、定位器彈出視窗、Save Items 對話框、專案樹狀檢視、資料夾導覽、Open DocumentsIssuesTasks 清單以及樹狀檢視下拉選單等處進行延後或加上防護(94c8f9defae40a3806ed23b5c60c6baf89cdd7b6f5838d8b70609c21740d9c29217fc8a9fe75924d59cc247ffb3ca71e915559b6005f)。

  • 修正了程式碼大綱下拉選單中另一個獨立的 macOS 當機問題(NSRangeExceptionSIGABRT),此問題是由於 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)。

  • 修正了一個回歸問題,原本有數個接收共用設定物件的對話框與輔助程式在設定根目錄進行裸鍵 I/O,而非在 OpenMV/ 底下,導致遺失 model zoo 的視窗幾何位置、分割器與展開狀態,以及六個載入器對話框(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 基礎之上的錯誤修正與改進;現有專案與工作流程不受影響。