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 のタブナビゲーション ショートカットは、押せない Ctrl+PageUp / Ctrl+PageDown の代わりに、操作しやすい Cmd+Shift+[ / Cmd+Shift+](前/次)と Cmd+Alt+[ / Cmd+Alt+](移動)を使用するようになりました。Windows と Linux のバインドは変更されていません(6c09e10b1)。

  • upload.openmv.io への ライセンス/ボードリクエストcheck.phpinsert.phpregister.php)は、ライセンスサーバーがクライアントの OS を識別できるよう、プラットフォームごとのブラウザ風 User-Agent を送信するようになりました(6bfd74b36)。

バグ修正

  • 断続的に発生していた macOS のクラッシュ(クラッシュダイアログを伴わないサイレントな NSRangeException による異常終了)を修正しました。これは、パネルやポップアップがまだ非表示の状態、または非同期更新の途中でツリー/リスト/コンボの選択を更新すると、まだ構築されていない Cocoa アクセシビリティキャッシュへインデックスアクセスしてしまうことが原因でした。選択、スクロール、展開の処理が、アウトラインコンボ、呼び出し/型の階層、コード補完ポップアップ、ロケーターポップアップ、Save Items ダイアログ、プロジェクトツリー、フォルダーナビゲーション、Open DocumentsIssues/Tasks リスト、ツリービューコンボボックス全体にわたって、遅延実行またはガードされるようになりました(94c8f9defae40a3806ed23b5c60c6baf89cdd7b6f5838d8b70609c21740d9c29217fc8a9fe75924d59cc247ffb3ca71e915559b6005f)。

  • Python 言語サーバーがシンボルを非同期で更新した際に、古い範囲外のインデックスが原因でコードアウトラインのコンボボックスに発生していた別の macOS クラッシュ(NSRangeException/SIGABRT)を修正しました。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 を行っており、モデルズーのウィンドウジオメトリ、スプリッター、展開状態、および 6 つのローダーダイアログ(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 ベースの上に重ねられたバグ修正と改善です。既存のプロジェクトとワークフローには影響しません。