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 للوحات 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. أُخفيت مجموعة الإدارة لكل مفسّر وصفحة المفسّرات، وصُنّف "Language Server Configuration" ضمن فئة Python، وأُخفيت أزرار شريط أدوات REPL ومحدِّد المفسّر غير المستخدمة في محرّر Python (d89f5985f). على Windows، يسجّل الـ IDE الآن تلقائيًا python.exe المضمَّن المُحزَّم كمفسّر افتراضي، مع معاملة خادم اللغة المُحزَّم على أنه مُثبَّت بالفعل (1d9ca003e، d89f5985f).

  • دليل ملف تعريف أنظف. لم يعد الـ IDE يكتب ملفات إعدادات Qt Creator غير المستخدمة (الأجهزة، الأطقم، سلاسل الأدوات، إصدارات Qt) ويفتح الملفات مباشرة في المحرّر (3771b0107)، ولم يعد يفحص النظام بحثًا عن qmake/إصدارات Qt (42807f25f)، ويتجنّب تحميل آليات الأجهزة/سلاسل الأدوات/الأطقم غير المستخدمة وضجيج بدء التشغيل (902a357de، b2666a35b).

  • تحديثات أكثر أمانًا. لم يعد تحديث الـ IDE يطمس موارد المستخدم؛ تُزال فقط مجلدات الموارد المُدارة (الأمثلة، البرنامج الثابت، html، النماذج) ويُعاد نسخها، مع إزالة micropython-headers إضافيًا (يُثبَّت بشكل منفصل بدلًا من إعادة نسخه عبر هذا المسار)، وخطأ أوضح إذا كان firmware/settings.json مفقودًا أو غير صالح (b4b8c208d، 3255ba4fb).

  • اتصال DFU أسرع. تم تقليل زمن انتظار اتصال DFU بحيث صار التحميل والاتصال أسرع (11d8c9fe3، 4700bf678).

  • استعادة قائمة OpenMV وتخصيصات الواجهة. أُعيد تطبيق تخطيط قائمة OpenMV المبسّط، مع إخفاء قائمتي Build وDebug وإزالة إجراءات إدارة المشاريع (7503f2bec)؛ واستعاد محرّك إكمال الشيفرة الوعي بالأصناف/الدوال ونطاقات الكلمات المفتاحية العامة/الخاصة للإكمال التلقائي في MicroPython (55fc348ea)؛ وأُعيد تطبيق عرض ألوان ANSI في الطرفية مع قيم سطوع/خفوت متوافقة مع السمة ودعم محرف الهروب للرجوع بالمؤشر (c6787a27a)؛ وخُصّص شريط أدوات عارض الصور بتلميحات الدقة/التكبير وإجراء "Fit-to-Screen" منقول (734fec693).

  • استعادة الموارد المُحزَّمة. أُعيدت أدوات التحميل وبرامج تشغيل DFU والبرنامج الثابت وشجرة الأمثلة/البرامج النصية الكاملة إلى موارد المشاركة بعد تجريد إعادة البناء (33c8354bc)، وأُعيد تطبيق منطق بدء تشغيل تطبيق OpenMV المخصص: فهو يشترط بشكل صارم إضافة TextEditor (فحوص إضافتي OpenMV وTabbedEditor موجودة لكنها معطّلة)، ويثبّت معالج رسائل Qt مخصصًا، ويزيل خيارات سطر الأوامر -client/-pid/-block، ويفرض سلوك المثيل الوحيد (06c788f3d).

  • فشل الإضافة المفقودة. يفشل التطبيق الآن بشكل صارم مع خطأ واضح إذا كانت الإضافات المطلوبة مفقودة أو معطّلة، وحصلت إضافة OpenMV على تبعية Copilot، وأُخفيت عدة خيارات لمحرّر النصوص (Prefer single line comments ومحدِّد موضع التعليق في إعدادات Behavior، وHighlight selection في إعدادات Display) (1bc02b1f3).

  • مهلات تسلسلية أقصر. تم تقصير مهلات البروتوكول التسلسلي (القراءة من 10000 إلى 5000 مللي ثانية، الكتابة من 6000 إلى 3000 مللي ثانية) للحصول على ملاحظات فشل أسرع، مع تحديث الافتراضي الموثّق لـ -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 للكاميرا متسامحة مع الردود القصيرة/الجزئية، وضُمن تفريغ نص الطرفية التسلسلية المخزّن مؤقتًا أثناء استعادة الأخطاء بحيث لا يُفقد خرج السجل (c8b4248a6، 247a779dd).

  • صُحّحت أرقام قسم الفلاش/الإعداد البديل في محمّل إقلاع DFU لتحميل البرنامج الثابت لـ OpenMV Cam (a8700d12d).

  • استُعيدت جميع محمّلات الإقلاع باحترام راية لوحة hidden جديدة، وتبديل تصفية الرقم التسلسلي إلى مرشحات عكسية، ومنح إدخال UF2 الخاص بـ Arduino Nano RP2040 Connect تهيئة picotool عاملة (63cee629b).

  • أُصلحت مشكلة تذكّر مربع حوار اختيار نوع لوحة محمّل الإقلاع للقيمة الخاطئة باستخدام مفاتيح سجل منفصلة لاختيارات نوع اللوحة المقروءة بشريًا وتلك الخاصة بـ IMX (a3325af32).

  • أُصلح حساب الطابع الزمني/معدل الإطارات في تحويل ترميز الفيديو (Save Video) عبر حساب متوسط الفاصل الزمني بين الإطارات بالميكروثانية، ودعم تنسيق وقت v21 جديد لـ ImageWriter، والحماية من الصور النقطية الفارغة أثناء التحويل (f5c75c749، f8f762b3e).

  • أُصلح تعطّل في عرض المدرج التكراري/مخزن الإطارات عند استقبال صورة نقطية فارغة (null) عبر حماية pixmapUpdate() من البيانات الفارغة (622cf5ea8).

  • استُعيدت تلميحات شرح التمرير في محرّر النصوص بحيث يعرض التمرير فوق علامات النص تلميح الشرح مجددًا (1852d18e1).

  • مُنعت مربعات حوار معلومات GitHub Copilot وألوان LED من الظهور أثناء انشغال الـ IDE بالاتصال أو التحميل (f8f762b3e).

  • أُضيفت حماية من التعطّل في عميل اللغة بحيث لم تعد معالجة تغيّر محتوى المستند تُعطّل الـ IDE في الحالات الحدية (7926ffe4c).

  • أُصلحت فحوص خادم لغة Python التي كانت تمنع إغلاق الـ IDE بشكل نظيف عبر جعل إضافة Python تنتظر بشكل غير متزامن الفحوص الجارية قبل الخروج (9ff6c7936).

  • أُصلح الإكمال التلقائي لـ Python على Linux: يجعل عميل اللغة جذره عند micropython-headers المُحزَّم ويُخفى إجراء النافذة المنبثقة الزائد للإكمال في شريط أدوات المحرّر (d37f66a9a، 56e748f9d، 016fa73eb).

  • أُصلحت معالجة الملفات المؤقتة/غير المحفوظة بحيث يستخدم Save As الدليل الأولي لمربع حوار الملفات، ولم يعد مربع حوار Save Items ومحرّر Diff يعرضان مسارات الملفات المؤقتة الداخلية (b7f0bb378، c8e7b6b8f، 6b128c34c).

  • صار حفظ مخزن مؤقت بلا عنوان/مؤقت يضبط افتراضيًا مربع حوار Save-As على اسم ملف .py صحيح بدلًا من اسم فارغ (3001fdfff).

  • تُعرض الآن المستندات المؤقتة/بلا عنوان للحفظ عند تعديلها، وتُستثنى من الحفظ التلقائي، وتُوجَّه عبر Save-As بشكل صحيح (f87b71cf0).

  • أُصلح ترتيب قائمة الملفات الأخيرة بحيث لم تعد إعادة فتح ملف مدرَج بالفعل تعيد ترتيبه، ويضبط مربع حوار الملفات الآن افتراضيًا على دليل المشاريع (d49c0c993).

  • أُصلح عرض نص مربع الرسائل بعدم فرض تنسيق النص المنسّق على مربعات الرسائل القابلة للتحديد، بحيث يُعرض النص الخام بشكل صحيح (0c565502f).

  • أُصلحت ألوان التلميحات بحيث تُعرض التلميحات بشكل صحيح في السمة الفاتحة (35cbf077b).

  • إصلاحات عامة لاستقرار Qt Creator وتنظيفه عبر الإعدادات الأساسية وعميل اللغة وسلسلة أدوات MSVC ومستكشف المشاريع وإضافات Python (836b163dc، 134f43cb8).

  • صُحّح اسم مجلد البرنامج الثابت المُحزَّم لـ Arduino Nano 33 BLE Sense (b1d8ac227) وأُصلحت قاعدة udev على Linux لمعرّف منتج محمّل إقلاع AE3 DFU، بتصحيح 96E3 إلى 96e3 بأحرف صغيرة بحيث تعمل مطابقة idProduct الحساسة لحالة الأحرف في udev (2cd43c96b). كما حُدّثت قاعدة udev على Linux لمحمّل إقلاع AE3 DFU إلى معرّف المنتج 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 مدعومة الآن ضمن VID/PID مخصص جديد لـ USB (37C5:1060)، بما في ذلك برامج تشغيل DFU وقواعد udev والاحتفاظ بإدخالات 1209:ABD1 القديمة للوحدات الأقدم (f453bc945، d55d6441f).

  • OpenMV Cam AE3 مدعومة الآن، بما في ذلك برامج تشغيل DFU لـ Windows وشجرة صور البرنامج الثابت/التهيئة الخاصة بها وVID/PID لـ USB (مُحدَّث إلى 37C5:16E3 لوقت التشغيل / 37C5:96E3 لمحمّل الإقلاع) (4a16e04c2، cc52e76f5، 3f75e7de4، 8eb80b129).

  • نظام VID/PID جديد لـ USB: تنتقل كاميرات 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).

التغييرات الكاسرة

لم تتغير أي واجهة برمجة نصية. قد تُلاحَظ التغييرات التالية في سير العمل والسلوك الظاهرة للمستخدم:

  • معرّف مورّد USB جديد. تنتقل كاميرات OpenMV إلى معرّف المورّد 37C5 مع معرّفات منتج ومحمّل إقلاع DFU جديدة؛ تُسمَّى الآن اللوحات على معرّف المورّد القديم 1209:ABD1 بـ "Legacy". يدعم الـ IDE البرنامجين الثابتين القديم والجديد في آن واحد، لكن على مستخدمي Linux إعادة تثبيت قواعد udev المُحدَّثة كي يُتعرَّف على المعرّفات الجديدة.

  • إخفاء إدخالات اللوحات القديمة. تُقمَع الآن المتغيرات القديمة من لوحات OpenMV Cam M4/M7/H7/H7 Plus/Pure Thermal من قائمة اختيار البرنامج الثابت/اللوحة عبر راية لوحة legacy جديدة (متميزة عن راية hidden الموجودة مسبقًا)، بحيث لن يرى المستخدمون الذين يحتاجون تحديدًا إلى إدخال لوحة قديمة هذا الإدخال في القائمة المنسدلة بعد الآن (6d78d6571).

  • مهلات تسلسلية أقصر. تنخفض مهلة قراءة الاستجابة الافتراضية من 10000 مللي ثانية إلى 5000 مللي ثانية ومهلة الكتابة من 6000 مللي ثانية إلى 3000 مللي ثانية (صار الافتراضي لـ -override_read_timeout موثّقًا الآن بـ 5000). قد تنتهي مهلة اللوحات/الوصلات البطيئة التي كانت تعتمد على الافتراضيات الأطول في وقت أبكر.

إعادة البناء على Qt Creator 14.0.2 هي تحديث داخلي كبير لكنها ليست كاسرة لمشاريع المستخدمين.