v4.4.0

v4.4.0 は、OpenMV IDE を長年使用してきた Qt Creator 10.0.1 ベースから Qt Creator 14.0.2 へとリベースし、OpenMV プラグイン一式とすべてのフォークカスタマイズを新しいベース上に再適用した大規模な近代化リリースです。さらに本リリースでは、オフラインのコード補完のための組み込み Python 言語サーバーを同梱し、すべてのプラットフォームで GitHub Copilot を有効化し、新しいカスタム OpenMV DFU ブートローダーを導入し、OpenMV カメラを新しい 37C5 USB ベンダー ID へ移行しています。ベースの変更は大規模な内部近代化ですが、ユーザープロジェクトを壊すことはありません。ユーザーに見える数少ないワークフローの変更については 互換性に影響する変更 を参照してください。

ハイライト

  • Qt Creator 14.0.2 へのリベース。 IDE は Qt Creator 10.0.1 から 14.0.2 へ移行し、OpenMV プラグイン全体とすべての // OPENMV-DIFF // カスタマイズが最新のベース上に再適用されました(d6c895be81fa75b397)。

  • 組み込み Python 言語サーバー。 IDE は同梱の pylsp(astroid 3.3.5 を含む)を出荷し自動的に使用するようになり、Windows、macOS、Linux x86_64 上で別途 pip インストールすることなくオフラインの Python/MicroPython コード補完を提供します(257addee05a2b3e72f94470798d)。

  • 全プラットフォームでの GitHub Copilot。 Copilot が統合されデフォルトで有効化され、Windows、macOS、Linux 向けに Node.js 20.18.0 ランタイムが同梱されたため、特定のマシンに限定されなくなりました。加えて、有効化のための起動ダイアログも追加されています(bb07d582b1cb967c5ab37e48040)。

  • 新しい OpenMV DFU ブートローダー。 完全に実装されたカスタム openmv_dfu ブートローダーフローが settings.json からファームウェア更新を駆動します。これには、最新リリースのインストール、特定ファームウェアの読み込み、ファイルシステムの消去の選択肢を提示する「DFU モードのボードを検出しました」ダイアログ、さらに文鎮化したカメラを復旧するためのフォールバックブートローダー経路が含まれます(08b9d06766a6a9351d6d78d6571)。

  • 新しいカメラのサポート。 OpenMV Cam N6、RT1062、AE3 のボードを追加し、カメラを新しい 37C5 USB ベンダー ID へ移行するとともに、DFU ドライバーと udev ルールを更新しました(000ed8a87f453bc9454a16e04c26d78d6571)。

  • より信頼性の高いシリアル通信。 大規模なシリアル通信の修正により、TinyUSB ベースのカメラで発生していた端末テキストの文字化けやランダムな切断が解消されました(caeba6a166cf122a3c)。

新機能

  • OpenMV DFU ブートローダー。 専用の DFU ドライバーとフォールバックブートローダー機構を備えた新しい openmv_dfu ブートローダーシステムが、ファームウェアの種類を問わず文鎮化したカメラを復旧します(6a6a9351d6d78d6571)。このフローは settings.json からファームウェア更新を駆動し、最新リリースのインストール、特定ファームウェアの読み込み、ファイルシステムの消去のオプションを備えた「DFU モードのボードを検出しました」ダイアログを表示します(08b9d0676ef19133b69c59d113c)。

  • ポート選択でのボード名表示。 シリアルポート選択ダイアログが各ポートをプローブし、ポート名のみではなく、検出したボード名をポートの横に表示するようになりました(例: COM3: OpenMV Cam H7)(9837d6cb5)。

  • タブ式エディター。 タブ式エディタープラグインが復元され、開いているファイルを切り替えるためのドキュメントタブの列がエディター領域の上部に追加されました(c8519c09f)。さらに、セッションをまたいでタブの順序を保持・復元するようになりました(55ccfb207)。

  • Python シンタックスハイライト。 文字列フォーマット、浮動小数点数、キーワードのルールを備えた、エディター向けの専用 Python シンタックスハイライト定義を追加しました(9be46c0c3)。

その他の変更と改善

  • ファームウェア読み込みのリファクタリング。 ファームウェア読み込みコードが種類ごとの個別ブートローダーハンドラー(OpenMV DFU、Arduino DFU、BOSSAC、i.MX、picotool)に分割され、Arduino DFU ボード向けのタッチトゥリセット PID 処理と、代替 VID/PID デバイス向けの明示的な「Legacy」ボードバリアントが追加されました(9f465f9f8)。

  • STM32 ROM ブートローダーの保護機能。 IDE は、チップの ROM ブートローダーのバグの影響を受ける STM32H7 ボードの文鎮化を避けるため、firmware.dfu/openmv.dfu を STM32 ROM リカバリーブートローダーに読み込むことを警告またはブロックし、bootloader.dfu のみを推奨するようになりました(c5ce0ae1ae7cde1ec1)。

  • 自動かつ静かな Python LSP のセットアップ。 Python 言語サーバーが、情報バーのプロンプトやコンソールメッセージの大量出力なしに自動でインストール・更新されるようになりました(d89f5985f)。また、Python のオートコンプリート/ドキュメントホバーシステムが、同梱の HTML ライブラリドキュメントを解析してキーワードハイライトとツールチップを駆動する専用の OpenMV ドキュメントエンジンへと作り直されました(47e02873b4f9853f2182cefc931)。

  • Linux での Python インタープリター検出。 Linux 上でのインタープリター検出が自動化され、PATH 内の Python 3 インタープリターのみを対象とし、最も新しいものを単一のデフォルトとして選択するようになりました(214fdc758)。

  • Python 設定の整理。 インタープリターごとの管理グループと Interpreters ページが非表示になり、Language Server Configuration が Python カテゴリの下に分類され、Python エディターでは未使用の REPL とインタープリター選択ツールバーボタンが非表示になりました(d89f5985f)。Windows では、IDE が同梱の組み込み python.exe をデフォルトのインタープリターとして自動登録し、同梱の言語サーバーをインストール済みとして扱うようになりました(1d9ca003ed89f5985f)。

  • よりクリーンなプロファイルディレクトリ。 IDE は未使用の Qt Creator 設定ファイル(デバイス、キット、ツールチェーン、Qt バージョン)を書き込まなくなり、ファイルをエディターで直接開くようになりました(3771b0107)。また、qmake/Qt バージョンをシステムからスキャンしなくなり(42807f25f)、未使用のデバイス/ツールチェーン/キット機構の読み込みと起動時のノイズを回避します(902a357deb2666a35b)。

  • より安全な更新。 IDE の更新がユーザーリソースを上書きしなくなりました。管理対象のリソースフォルダー(examples、firmware、html、models)のみが削除・再コピーされ、micropython-headers は追加で削除されます(この経路で再コピーされるのではなく別途インストールされます)。また、firmware/settings.json が存在しないか無効な場合のエラーメッセージがより明確になりました(b4b8c208d3255ba4fb)。

  • より高速な DFU 接続。 DFU 接続の待機時間が短縮され、フラッシュと接続がより高速になりました(11d8c9fe34700bf678)。

  • OpenMV メニューと UI カスタマイズの復元。 簡素化された OpenMV メニューレイアウトが再適用され、Build と Debug メニューを非表示にし、プロジェクト管理アクションを削除しました(7503f2bec)。コード補完エンジンは MicroPython のオートコンプリート向けにクラス/メソッドの認識と public/private キーワードスコープを取り戻し(55fc348ea)、端末の ANSI カラー描画がテーマに応じた明暗値とカーソルバックエスケープのサポートとともに再適用され(c6787a27a)、画像ビューアのツールバーが解像度/ズームのツールチップと移設された Fit-to-Screen アクションでカスタマイズされました(734fec693)。

  • 同梱リソースの復元。 リベースによる削減後、フラッシュツール、DFU ドライバー、ファームウェア、および完全な examples/script ツリーが share リソースに復元されました(33c8354bc)。また、OpenMV のカスタムアプリケーション起動ロジックが再適用されました。これは TextEditor プラグインを必須とし(OpenMV および TabbedEditor プラグインのチェックは存在しますが無効化されています)、カスタム Qt メッセージハンドラーをインストールし、-client/-pid/-block コマンドラインオプションを削除し、単一インスタンス動作を強制します(06c788f3d)。

  • プラグイン欠落時の失敗。 必須プラグインが欠落または無効化されている場合、アプリは明確なエラーとともにハードフェイルするようになりました。OpenMV プラグインには Copilot への依存関係が追加され、いくつかのテキストエディターオプション(Behavior 設定の Prefer single line comments とコメント位置セレクター、および Display 設定の Highlight selection)が非表示になりました(1bc02b1f3)。

  • より短いシリアルタイムアウト。 より高速な失敗フィードバックのため、シリアルプロトコルのタイムアウトが短縮され(読み取り 10000 から 5000 ms、書き込み 6000 から 3000 ms)、ドキュメント記載の -override_read_timeout のデフォルトもそれに合わせて更新されました(641385af4)。

  • スタックしたポートの復旧。 コマンドの途中でスタックしたシリアルポートが、スクリプト実行クエリではなく GET_STATE クエリ(get-state 設定で構成可能)を使用して復旧されるようになりました(a8598f550)。

  • 設定ダイアログの順序。 設定ダイアログがカテゴリのアルファベット順ソートチェックボックスを非表示にし、ページ一覧が OpenMV の意図した順序のまま保たれるようになりました(1cb967c5a)。

  • Copilot 設定の簡素化。 Copilot 設定ページが、サインイン/認証とプロキシのコントロールのみに縮小され、Copilot の有効化、Node.js パス、dist パス、オートコンプリートのオプションが非表示になりました(1cb967c5a)。

バグ修正

  • シリアル読み取りストールのタイムアウトを 10 倍に増やし、シリアル端末テキストを文字化けさせていた GET_STATE ベースのスタック解除経路を無効化することで、主要なシリアル通信の問題を修正しました(caeba6a16)。

  • 切断する代わりにフレームダンプのアンロックコマンドを発行し、読み取りストール処理を作り直すことで、TinyUSB ベースのカメラで発生していたランダムなシリアル切断を修正しました(6cf122a3c)。

  • カメラの get_state 処理を短い/部分的な応答に対して寛容にし、エラー復旧中にバッファリングされたシリアル端末テキストがフラッシュされるようにすることで、ログ出力が失われないようにしました(c8b4248a6247a779dd)。

  • OpenMV Cam のファームウェア読み込みにおける DFU ブートローダーのフラッシュパーティション/alt-setting 番号を修正しました(a8700d12d)。

  • 新しい hidden ボードフラグを尊重し、シリアル番号フィルタリングを反転フィルターに切り替え、Arduino Nano RP2040 Connect の UF2 エントリに動作する picotool 構成を与えることで、すべてのブートローダーを復元しました(63cee629b)。

  • 人間が読める形式と IMX のボードタイプ選択に別々の履歴キーを使用することで、ブートローダーのボードタイプ選択ダイアログが誤った値を記憶する問題を修正しました(a3325af32)。

  • 平均フレーム間隔をマイクロ秒で計算し、新しい v21 ImageWriter 時刻フォーマットをサポートし、変換中の null ピクスマップを防御することで、ビデオトランスコーディング(Save Video)のタイムスタンプ/フレームレート計算を修正しました(f5c75c749f8f762b3e)。

  • pixmapUpdate() を null データに対して防御することで、空(null)のピクスマップを受信した際のヒストグラム/フレームバッファビューでのクラッシュを修正しました(622cf5ea8)。

  • テキストエディターのホバー注釈ツールチップを復元し、テキストマークにカーソルを合わせると注釈ツールチップが再び表示されるようにしました(1852d18e1)。

  • IDE が接続またはフラッシュで処理中の間に、GitHub Copilot および LED カラーの情報ダイアログがポップアップしないようにしました(f8f762b3e)。

  • 言語クライアントにクラッシュ保護を追加し、ドキュメント内容変更の処理がエッジケースで IDE をクラッシュさせなくなりました(7926ffe4c)。

  • Python プラグインが終了前に処理中のチェックを非同期で待機するようにすることで、IDE のクリーンなシャットダウンを妨げていた Python 言語サーバーのチェックを修正しました(9ff6c7936)。

  • Linux での Python オートコンプリートを修正しました。言語クライアントが同梱の micropython-headers を起点とするようになり、冗長なエディターツールバーの補完ポップアップアクションが非表示になりました(d37f66a9a56e748f9d016fa73eb)。

  • 一時/未保存ファイルの処理を修正し、Save As がファイルダイアログの初期ディレクトリを使用するようにし、Save Items ダイアログと Diff エディターが内部の一時ファイルパスを表示しないようにしました(b7f0bb378c8e7b6b8f6b128c34c)。

  • 無題/一時バッファを保存する際、Save-As ダイアログが空の名前ではなく適切な .py ファイル名をデフォルトにするようになりました(3001fdfff)。

  • 一時/無題のドキュメントが、変更されている場合は保存対象として提示され、自動保存から除外され、Save-As を通じて正しく処理されるようになりました(f87b71cf0)。

  • Recent Files メニューの順序を修正し、すでに一覧にあるファイルを再度開いても順序が変わらないようにし、ファイルダイアログがプロジェクトディレクトリをデフォルトにするようにしました(d49c0c993)。

  • チェック可能なメッセージボックスにリッチテキスト形式を強制しないようにすることで、メッセージボックスのテキスト描画を修正し、生のテキストが正しく表示されるようにしました(0c565502f)。

  • ツールチップの色を修正し、ライトテーマでツールチップが正しく描画されるようにしました(35cbf077b)。

  • コア設定、言語クライアント、MSVC ツールチェーン、プロジェクトエクスプローラー、Python プラグインにわたる、Qt Creator 全般の安定性とクリーンアップの修正を行いました(836b163dc134f43cb8)。

  • Arduino Nano 33 BLE Sense の同梱ファームウェアフォルダー名を修正し(b1d8ac227)、AE3 DFU ブートローダーのプロダクト ID に対する Linux udev ルールを修正して、udev の大文字小文字を区別する idProduct マッチが機能するよう 96E3 を小文字の 96e3 に訂正しました(2cd43c96b)。AE3 DFU ブートローダーの Linux udev ルールも、openmvdfu シンボリックリンク向けにプロダクト ID 37c5:afe3 へ更新されました(b99555637)。

プラットフォームとツールのサポート

  • Qt Creator ベース: 14.0.2(10.0.1 からリベース)。

  • OpenMV Cam N6 がサポートされるようになりました(VID:PID 37C5:1206、DFU ブートローダー 37C5:9206)。ファームウェア設定、Windows DFU ドライバー、Linux udev ルールを含みます(000ed8a871b950c8c6)。

  • OpenMV Cam RT1062 が新しいカスタム USB VID/PID(37C5:1060)の下でサポートされるようになりました。DFU ドライバー、udev ルール、および旧ユニット向けに保持されたレガシー 1209:ABD1 エントリを含みます(f453bc945d55d6441f)。

  • OpenMV Cam AE3 がサポートされるようになりました。Windows DFU ドライバー、そのファームウェア/構成イメージツリー、および USB VID/PID(37C5:16E3 ランタイム / 37C5:96E3 ブートローダーに更新)を含みます(4a16e04c2cc52e76f53f75e7de48eb80b129)。

  • 新しい USB VID/PID システム: OpenMV カメラがベンダー ID 37C5 へ移行し、新しいブートローダー/DFU ID を持つようになりました(例: 37C5:1202/9202 M4、1203/9203 M7、1204/9204 H7、124A/924A H7 Plus、1205/9205)。旧 1209:ABD1 のボードは Legacy として再ラベル付けされますが、旧ファームウェアと新ファームウェアの両方を引き続きサポートします(6d78d65716a6a9351d500b1a0bf)。

  • PAG7936 画像センサーが認識センサー一覧に追加されました(f9e3f3461)。

  • 組み込み Python 3.13 インタープリターが macOS、Linux x86_64、Linux arm64、Linux arm 向けに同梱されました(9133b1516)。ネイティブの libpython3.13 および ujson 共有ライブラリを含みます(d3aa663d8a2cb24e74)。

  • 同梱の言語サーバー: Windows、macOS、Linux x86_64 上の astroid 3.3.5 を含む pylsp257addee0)。Windows ビルドは、python-lsp-server 1.12.0、jedi 0.17.2、docstring_to_markdown 0.15、pip 24.2、distlib 0.3.9 を含む組み込み CPython を出荷します(9b6434602069807cd35f2e451963b6c6c312)。

  • 同梱の Node.js 20.18.0 「Iron」LTS ランタイムが、全プラットフォームで GitHub Copilot を有効化するため、Windows、macOS、Linux arm64、Linux x64、Linux armv7 向けに同梱されました(bb07d582b6db78bf451cb967c5a)。

  • Alif Security Toolkit の署名済みブート/システムパッケージバイナリとユーザーガイドが、Alif ベースの OpenMV カメラ(例: AE3)のプロビジョニングのため、Windows、macOS、Linux x86_64 向けに同梱されました(f63851be3)。

  • Linux デスクトップ統合 が復元され、アプリケーションのデスクトップエントリと AppStream メタデータをインストールし、Python(.py)MIME タイプを登録します(3fa25f571)。

互換性に影響する変更

スクリプト API に変更はありません。次のユーザーに見えるワークフローと動作の変更が認められる場合があります:

  • 新しい USB ベンダー ID。 OpenMV カメラが、新しいプロダクト ID と DFU ブートローダー ID を持つベンダー ID 37C5 へ移行します。旧 1209:ABD1 VID のボードは「Legacy」とラベル付けされるようになりました。IDE は旧ファームウェアと新ファームウェアを同時にサポートしますが、Linux ユーザーは新しい ID を認識させるために更新された udev ルールを再インストールする必要があります。

  • レガシーボードエントリの非表示。 OpenMV Cam M4/M7/H7/H7 Plus/Pure Thermal ボードのレガシーバリアントが、新しい legacy ボードフラグ(既存の hidden フラグとは異なる)によってファームウェア/ボード選択一覧から抑制されるようになりました。そのため、特にレガシーボードエントリが必要なユーザーは、ドロップダウンでそれを見られなくなります(6d78d6571)。

  • より短いシリアルタイムアウト。 デフォルトの応答読み取りタイムアウトが 10000 ms から 5000 ms に、書き込みタイムアウトが 6000 ms から 3000 ms に短縮されました(-override_read_timeout のデフォルトは現在 5000 とドキュメント化されています)。長いデフォルト値に依存していた低速なボード/リンクは、より早くタイムアウトする場合があります。

Qt Creator 14.0.2 へのリベースは大規模な内部近代化ですが、ユーザープロジェクトの互換性を壊すものではありません。