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 на новий USB-ідентифікатор виробника 37C5. Зміна бази є великою внутрішньою модернізацією і не порушує роботу користувацьких проектів; дивіться Критичні зміни щодо невеликої кількості видимих для користувача змін у робочому процесі.

Основні можливості

  • Перехід на Qt Creator 14.0.2. IDE переходить з Qt Creator 10.0.1 на 14.0.2, з повним плагіном OpenMV та всіма // OPENMV-DIFF // налаштуваннями, перенесеними на нову базу (d6c895be8, 1fa75b397).

  • Вбудований мовний сервер Python. IDE тепер включає та автоматично використовує вбудований pylsp (з astroid 3.3.5), забезпечуючи автодоповнення коду Python/MicroPython в офлайн-режимі без окремого встановлення через pip на Windows, macOS та Linux x86_64 (257addee0, 5a2b3e72f, 94470798d).

  • GitHub Copilot на всіх платформах. Copilot інтегровано та увімкнено за замовчуванням, з вбудованим середовищем виконання Node.js 20.18.0 для Windows, macOS та Linux, тож він більше не обмежений окремими машинами; також додано діалог запуску для його активації (bb07d582b, 1cb967c5a, b37e48040).

  • Новий завантажувач OpenMV DFU. Повністю реалізований власний завантажувач openmv_dfu керує оновленнями мікропрограми з settings.json, включаючи діалог «виявлено плату в режимі DFU» з варіантами встановлення останнього релізу, завантаження конкретної мікропрограми та очищення файлової системи, а також резервний шлях завантажувача для відновлення пошкоджених камер (08b9d0676, 6a6a9351d, 6d78d6571).

  • Підтримка нових камер. Додано підтримку плат OpenMV Cam N6, RT1062 та AE3; камери переведено на новий USB-ідентифікатор виробника 37C5 з оновленими драйверами DFU та правилами udev (000ed8a87, f453bc945, 4a16e04c2, 6d78d6571).

  • Надійніша послідовна передача даних. Суттєві виправлення послідовного зв’язку усувають спотворення тексту в терміналі та випадкові відключення з камерами на базі TinyUSB (caeba6a16, 6cf122a3c).

Нові можливості

  • Завантажувач OpenMV DFU. Нова система завантажувача openmv_dfu з виділеними драйверами DFU та механізмом резервного завантажувача відновлює пошкоджені камери для різних типів мікропрограм (6a6a9351d, 6d78d6571). Процес керує оновленнями мікропрограми з settings.json та показує діалог «виявлено плату в режимі DFU» з варіантами встановлення останнього релізу, завантаження конкретної мікропрограми та очищення файлової системи (08b9d0676, ef19133b6, 9c59d113c).

  • Назва плати у виборі порту. Діалог вибору послідовного порту тепер перевіряє кожен порт і показує виявлену назву плати поруч із портом (наприклад, COM3: OpenMV Cam H7) замість голої назви порту (9837d6cb5).

  • Редактор із вкладками. Плагін редактора із вкладками відновлено: додано рядок вкладок документів над областю редактора для перемикання між відкритими файлами (c8519c09f); тепер також зберігається та відновлюється порядок вкладок між сеансами (55ccfb207).

  • Підсвічування синтаксису Python. Додано спеціальне визначення підсвічування синтаксису Python для редактора з правилами для форматування рядків, чисел з плаваючою комою та ключових слів (9be46c0c3).

Інші зміни та покращення

  • Рефакторинг завантаження мікропрограми. Код завантаження мікропрограми розділено на окремі обробники завантажувача для кожного типу (OpenMV DFU, Arduino DFU, BOSSAC, i.MX, picotool), з додаванням обробки PID для touch-to-reset для плат Arduino DFU та явних варіантів «Legacy» для пристроїв з альтернативними VID/PID (9f465f9f8).

  • Захист завантажувача ROM STM32. IDE тепер попереджає або блокує завантаження firmware.dfu/openmv.dfu на завантажувач відновлення ROM STM32, рекомендуючи лише bootloader.dfu для уникнення «цеглинізації» плат STM32H7, уражених помилкою завантажувача ROM мікросхеми (c5ce0ae1a, e7cde1ec1).

  • Автоматичне, тихе налаштування Python LSP. Мовний сервер Python тепер встановлюється та оновлюється автоматично без запитів інформаційної панелі або спаму повідомлень у консолі (d89f5985f); систему автодоповнення/підказок документації Python переписано у спеціальний рушій документації OpenMV, який аналізує вбудовану HTML-документацію бібліотек для підсвічування ключових слів і підказок (47e02873b, 4f9853f21, 82cefc931).

  • Виявлення інтерпретатора Python на Linux. Виявлення інтерпретатора на Linux тепер автоматичне: враховуються лише інтерпретатори Python 3 з PATH, і найновіший вибирається як єдиний стандартний (214fdc758).

  • Очищення налаштувань Python. Група керування інтерпретаторами та сторінка «Інтерпретатори» приховані; «Конфігурація мовного сервера» перенесена до категорії Python; кнопки REPL та вибору інтерпретатора на панелі інструментів приховані в редакторі Python (d89f5985f). На Windows IDE тепер автоматично реєструє вбудований python.exe як стандартний інтерпретатор, а вбудований мовний сервер вважається вже встановленим (1d9ca003e, d89f5985f).

  • Чистіший каталог профілю. IDE більше не записує невикористовувані файли налаштувань Qt Creator (пристрої, набори інструментів, ланцюжки, версії Qt) і відкриває файли безпосередньо в редакторі (3771b0107), більше не сканує систему на наявність qmake/Qt (42807f25f) та уникає завантаження невикористовуваних пристроїв/ланцюжків/наборів і зайвого шуму під час запуску (902a357de, b2666a35b).

  • Безпечніші оновлення. Оновлення IDE більше не перезаписує ресурси користувача: видаляються та копіюються лише керовані папки ресурсів (examples, firmware, html, models), причому micropython-headers також видаляється (встановлюється окремо, а не копіюється через цей шлях); додано чіткіше повідомлення про помилку, якщо firmware/settings.json відсутній або недійсний (b4b8c208d, 3255ba4fb).

  • Швидше підключення DFU. Час очікування з’єднання DFU скорочено, завдяки чому прошивка та підключення відбуваються швидше (11d8c9fe3, 4700bf678).

  • Відновлено меню OpenMV та налаштування інтерфейсу. Спрощений макет меню OpenMV відновлено: приховано меню «Збірка» та «Налагодження» і видалено дії керування проектами (7503f2bec); рушій автодоповнення коду знову розуміє класи/методи та публічні/приватні ключові слова для MicroPython (55fc348ea); відображення кольорів ANSI у терміналі відновлено з урахуванням теми (яскраві/тьмяні значення) та підтримкою escape-послідовності переміщення курсору назад (c6787a27a); панель інструментів переглядача зображень налаштовано з підказками роздільної здатності/масштабу та переміщеною дією «Вмістити на екрані» (734fec693).

  • Відновлено вбудовані ресурси. Інструменти прошивки, драйвери DFU, мікропрограма та повне дерево прикладів/скриптів відновлено в ресурси share після очищення під час переходу на нову базу (33c8354bc); логіка запуску програми OpenMV також відновлена: суворо вимагається плагін TextEditor (перевірки плагінів OpenMV та TabbedEditor присутні, але відключені), встановлюється власний обробник повідомлень Qt, видаляються параметри командного рядка -client/-pid/-block та примусово встановлюється однопримірникова поведінка (06c788f3d).

  • Збій при відсутності плагіна. Програма тепер аварійно завершується з чітким повідомленням про помилку, якщо необхідні плагіни відсутні або вимкнені; плагін OpenMV отримав залежність від Copilot; деякі параметри текстового редактора (Prefer single line comments і вибір позиції коментарів в налаштуваннях «Поведінка», а також Highlight selection в налаштуваннях «Відображення») приховано (1bc02b1f3).

  • Коротші тайм-аути послідовного зв’язку. Тайм-аути протоколу послідовного зв’язку скорочено (читання з 10000 до 5000 мс, запис з 6000 до 3000 мс) для швидшого отримання зворотного зв’язку про помилки; задокументоване значення за замовчуванням -override_read_timeout оновлено відповідно (641385af4).

  • Відновлення зависших портів. Послідовні порти, що зависли в середині команди, тепер відновлюються за допомогою запиту GET_STATE (налаштовується через параметр get-state) замість запиту виконання скрипту (a8598f550).

  • Порядок у діалозі налаштувань. Діалог налаштувань приховує прапорець алфавітного сортування категорій, щоб список сторінок залишався в порядку, визначеному OpenMV (1cb967c5a).

  • Спрощені налаштування Copilot. Сторінка налаштувань Copilot скорочена до лише елементів входу/аутентифікації та керування проксі; параметри «увімкнути Copilot», «шлях до Node.js», «шлях до dist» та «автодоповнення» приховано (1cb967c5a).

Виправлення помилок

  • Виправлено серйозні проблеми послідовного зв’язку шляхом десятикратного збільшення тайм-ауту зупинки читання послідовного порту та відключення шляху розблокування на основі GET_STATE, який спотворював текст у послідовному терміналі (caeba6a16).

  • Виправлено випадкові відключення з камерами на базі TinyUSB шляхом видачі команди розблокування дампу кадру та перероблення обробки зупинки читання замість відключення (6cf122a3c).

  • Зроблено обробку get_state камери стійкою до коротких/часткових відповідей та забезпечено очищення буферизованого тексту послідовного терміналу під час відновлення після помилок, щоб виведення журналу не губилося (c8b4248a6, 247a779dd).

  • Виправлено номери розділів флеш-пам’яті/альтернативних налаштувань завантажувача DFU для завантаження мікропрограми OpenMV Cam (a8700d12d).

  • Відновлено всі завантажувачі шляхом підтримки нового прапорця плати hidden, зміни фільтрування за серійним номером на зворотні фільтри та надання запису UF2 Arduino Nano RP2040 Connect робочої конфігурації picotool (63cee629b).

  • Виправлено запам’ятовування неправильного значення в діалозі вибору типу плати завантажувача шляхом використання окремих ключів історії для читабельного та IMX вибору типу плати (a3325af32).

  • Виправлено обчислення мітки часу/частоти кадрів при перекодуванні відео (Save Video) шляхом обчислення середнього інтервалу між кадрами в мікросекундах, підтримки нового формату часу ImageWriter v21 та захисту від нульових піксельних карт під час конвертації (f5c75c749, f8f762b3e).

  • Виправлено збій у вікні гістограми/кадрового буфера при отриманні порожньої (нульової) піксельної карти шляхом захисту pixmapUpdate() від нульових даних (622cf5ea8).

  • Відновлено підказки з анотаціями при наведенні курсора в текстовому редакторі: при наведенні на текстові мітки знову відображається відповідна підказка (1852d18e1).

  • Заблоковано появу інформаційних діалогів GitHub Copilot та кольорів LED під час підключення або прошивки IDE (f8f762b3e).

  • Додано захист від збоїв у мовному клієнті: обробка змін вмісту документа більше не призводить до аварійного завершення IDE в граничних випадках (7926ffe4c).

  • Виправлено блокування завершення роботи IDE перевірками мовного сервера Python шляхом переходу плагіна Python на асинхронне очікування поточних перевірок перед виходом (9ff6c7936).

  • Виправлено автодоповнення Python на Linux: мовний клієнт тепер базується на вбудованому micropython-headers, а зайва дія спливаючого автодоповнення на панелі інструментів редактора прихована (d37f66a9a, 56e748f9d, 016fa73eb).

  • Виправлено обробку тимчасових/незбережених файлів: «Зберегти як» тепер використовує початковий каталог файлового діалогу; діалог «Зберегти елементи» та редактор Diff більше не показують шляхи до внутрішніх тимчасових файлів (b7f0bb378, c8e7b6b8f, 6b128c34c).

  • При збереженні безіменного/тимчасового буфера діалог «Зберегти як» тепер пропонує належне ім’я файлу .py замість порожнього імені (3001fdfff).

  • Тимчасові/безіменні документи тепер пропонуються для збереження при модифікації, виключаються з автозбереження та правильно перенаправляються через «Зберегти як» (f87b71cf0).

  • Виправлено порядок у меню «Недавні файли»: повторне відкриття вже наявного файлу більше не змінює його позицію; файловий діалог тепер відкривається в каталозі проектів (d49c0c993).

  • Виправлено відображення тексту в діалогах повідомлень: більше не примусово встановлюється формат RTF для перевірюваних діалогів повідомлень, тому звичайний текст відображається коректно (0c565502f).

  • Виправлено кольори підказок: підказки тепер правильно відображаються у світлій темі (35cbf077b).

  • Загальні виправлення стабільності та очищення Qt Creator в основних налаштуваннях, мовному клієнті, ланцюжку MSVC, провіднику проектів та плагінах Python (836b163dc, 134f43cb8).

  • Виправлено назву папки з вбудованою мікропрограмою для Arduino Nano 33 BLE Sense (b1d8ac227); виправлено правило udev Linux для ідентифікатора продукту завантажувача DFU AE3: 96E3 замінено на малі 96e3, оскільки idProduct у udev чутливий до регістру (2cd43c96b). Правило udev Linux для завантажувача DFU AE3 також оновлено до ідентифікатора продукту 37c5:afe3 для символічного посилання openmvdfu (b99555637).

Підтримка платформ та інструментів

  • База Qt Creator: 14.0.2 (перехід з 10.0.1).

  • OpenMV Cam N6 тепер підтримується (VID:PID 37C5:1206, завантажувач DFU 37C5:9206), включаючи налаштування мікропрограми, драйвер DFU для Windows та правило udev для Linux (000ed8a87, 1b950c8c6).

  • OpenMV Cam RT1062 тепер підтримується з новим власним USB VID/PID (37C5:1060), включаючи драйвери DFU, правила udev та збережені записи Legacy 1209:ABD1 для старіших пристроїв (f453bc945, d55d6441f).

  • OpenMV Cam AE3 тепер підтримується, включаючи драйвери DFU для Windows, дерево зображень мікропрограми/конфігурації та USB VID/PID (оновлено до 37C5:16E3 для режиму виконання / 37C5:96E3 для завантажувача) (4a16e04c2, cc52e76f5, 3f75e7de4, 8eb80b129).

  • Нова система USB VID/PID: камери OpenMV переходять на ідентифікатор виробника 37C5 з новими ідентифікаторами завантажувача/DFU (наприклад, 37C5:1202/9202 M4, 1203/9203 M7, 1204/9204 H7, 124A/924A H7 Plus, 1205/9205), старі плати 1209:ABD1 перейменовано в Legacy з підтримкою як старої, так і нової мікропрограми (6d78d6571, 6a6a9351d, 500b1a0bf).

  • PAG7936 — датчик зображення додано до списку розпізнаних датчиків (f9e3f3461).

  • Вбудований Python 3.13 включено для macOS, Linux x86_64, Linux arm64 та Linux arm (9133b1516), з нативними бібліотеками libpython3.13 та ujson (d3aa663d8, a2cb24e74).

  • Вбудований мовний сервер: pylsp з astroid 3.3.5 для Windows, macOS та Linux x86_64 (257addee0). Збірка для Windows включає вбудований CPython з python-lsp-server 1.12.0, jedi 0.17.2, docstring_to_markdown 0.15, pip 24.2 та distlib 0.3.9 (9b6434602, 069807cd3, 5f2e45196, 3b6c6c312).

  • Вбудований Node.js 20.18.0 «Iron» LTS для Windows, macOS, Linux arm64, Linux x64 та Linux armv7 для увімкнення GitHub Copilot на всіх платформах (bb07d582b, 6db78bf45, 1cb967c5a).

  • Alif Security Toolkit — підписані бінарні файли завантаження/системних пакетів та посібник користувача включено для Windows, macOS та Linux x86_64 для підготовки камер OpenMV на основі Alif (наприклад, AE3) (f63851be3).

  • Інтеграція з робочим столом Linux відновлена: встановлюється запис робочого столу програми та метадані AppStream, а також реєструється MIME-тип Python (.py) (3fa25f571).

Критичні зміни

Жодних змін у API скриптів не відбулося. Можуть спостерігатися такі зміни у видимому для користувача робочому процесі та поведінці:

  • Новий USB-ідентифікатор виробника. Камери OpenMV переходять на ідентифікатор виробника 37C5 з новими ідентифікаторами продукту та завантажувача DFU; плати зі старим VID 1209:ABD1 тепер позначаються як «Legacy». IDE підтримує одночасно стару і нову мікропрограму, але користувачам Linux потрібно перевстановити оновлені правила udev для розпізнавання нових ідентифікаторів.

  • Приховано записи Legacy плат. Варіанти Legacy для плат OpenMV Cam M4/M7/H7/H7 Plus/Pure Thermal тепер приховано зі списку вибору мікропрограми/плати за допомогою нового прапорця legacy (окремо від існуючого прапорця hidden), тож користувачі, яким конкретно потрібен запис Legacy, більше не бачитимуть його у випадаючому списку (6d78d6571).

  • Коротші тайм-аути послідовного зв’язку. Стандартний тайм-аут читання відповіді скорочено з 10000 мс до 5000 мс, а тайм-аут запису — з 6000 мс до 3000 мс (значення за замовчуванням -override_read_timeout тепер задокументовано як 5000). Повільні плати/з’єднання, що розраховували на довші стандартні тайм-аути, можуть завершуватися раніше.

Перехід бази на Qt Creator 14.0.2 є великою внутрішньою модернізацією, але не є критичним для користувацьких проектів.