v4.8.11

v4.8.11 เป็นรุ่นที่เน้นความเสถียรและความถูกต้อง โดยมุ่งเน้นที่ความแข็งแกร่งบน macOS การทำงานแบบอนุกรมของเครื่องมือภายนอก และความน่าเชื่อถือในการอัปเดตเฟิร์มแวร์ สร้างบน Qt Creator 14.0.2 (ไม่เปลี่ยนแปลงจากรุ่นก่อนหน้า) และไม่มีการเปลี่ยนแปลงที่ส่งผลกระทบต่อโปรเจกต์ของผู้ใช้

สิ่งที่น่าสนใจ

  • การป้องกันการขัดข้องบน macOS — ขจัดปัญหา NSRangeException abort ที่เกิดขึ้นเป็นครั้งคราวโดยไม่มีการแจ้งเตือน ซึ่งเกิดจากการอัปเดตรายการ tree/list/combo ก่อนที่แผงหรือป๊อปอัปจะสร้างเสร็จหรือระหว่างการรีเฟรชแบบอะซิงค์ ครอบคลุม outline combo, ลำดับชั้นการเรียก/ประเภท, ป๊อปอัปการเติมคำและ locator, project tree และอื่นๆ

  • เครื่องมือภายนอกทำงานแบบอนุกรม — กล่องโต้ตอบแสดงความคืบหน้าของ loader ปัจจุบันเป็น application-modal และระงับการสำรวจอุปกรณ์ทั้งหมด ดังนั้นการเรียกใช้ dfu-util, bossac, picotool และเครื่องมืออื่นๆ จึงไม่สามารถถูก camera stream หรือการเชื่อมต่อใหม่อัตโนมัติเข้ามาขัดแทรกได้อีกต่อไป

  • การอัปเดตเฟิร์มแวร์ที่น่าเชื่อถือ — การเชื่อมต่อใหม่อัตโนมัติไม่สามารถแย่งชิงการอัปเดตเฟิร์มแวร์ระหว่างการแฟลชได้อีกต่อไป ซึ่งก่อนหน้านี้จะทำให้การดำเนินการต่อเนื่องจริงถูกยกเลิกและแสดงกล่องโต้ตอบ DFU ที่ไม่ถูกต้อง

  • ความปลอดภัยของ Hello World — การเชื่อมต่อบอร์ดจะไม่เขียนทับโปรแกรม Hello World ที่คุณพิมพ์ไว้อีกต่อไปโดยไม่ตั้งใจ โดยเปรียบเทียบกับสแนปช็อตต้นฉบับแทนการพึ่งพา modified flag ที่ไม่น่าเชื่อถือ

  • ข้อผิดพลาด DFU ที่ชัดเจนยิ่งขึ้น — ข้อผิดพลาด "no matching interface" ปัจจุบันระบุชื่อบอร์ดที่ตรวจพบและชื่อไฟล์เฟิร์มแวร์ที่รองรับแทนการแสดง VID/PID แบบดิบ

ฟีเจอร์ใหม่

  • ST Edge AI (STM32N6) ปัจจุบันสร้างไฟล์ไบนารีเครือข่ายแบบ relocatable โดยตรงผ่านโหมด --relocatable ของคอมไพเลอร์ โดยลบขั้นตอน Python relocation แยกต่างหากและช่อง Relocation CLI Options เพิ่มเติมออกจากกล่องโต้ตอบ (7613135c5)

การเปลี่ยนแปลงและการปรับปรุงอื่นๆ

  • ข้อผิดพลาด DFU interface ปัจจุบันระบุชื่อบอร์ดที่ตรวจพบและแสดงรายชื่อไฟล์เฟิร์มแวร์ที่บอร์ดนั้นรองรับ พร้อมคำแนะนำในการเปลี่ยนชื่อหรือเลือกไฟล์ที่ถูกต้อง แทนที่จะแสดง VID/PID แบบดิบ (ac509b369)

  • ปุ่มลัดการนำทางแท็บบน macOS ปัจจุบันใช้ Cmd+Shift+[ / Cmd+Shift+] (ก่อน/ถัดไป) และ Cmd+Alt+[ / Cmd+Alt+] (ย้าย) ที่เข้าถึงได้ แทน Ctrl+PageUp / Ctrl+PageDown ที่กดยาก ส่วนปุ่มลัดบน Windows และ Linux ไม่เปลี่ยนแปลง (6c09e10b1)

  • คำขอใบอนุญาต/บอร์ด ไปยัง upload.openmv.io (check.php, insert.php, register.php) ปัจจุบันส่ง User-Agent สไตล์เบราว์เซอร์แยกตามแพลตฟอร์ม เพื่อให้เซิร์ฟเวอร์ใบอนุญาตระบุ OS ของไคลเอนต์ได้ (6bfd74b36)

การแก้ไขบั๊ก

  • แก้ไขการขัดข้องบน macOS ที่เกิดขึ้นเป็นครั้งคราว (การ abort NSRangeException โดยไม่มีกล่องโต้ตอบการขัดข้อง) ซึ่งเกิดขึ้นเมื่อการอัปเดตรายการ tree/list/combo ขณะที่แผงหรือป๊อปอัปยังซ่อนอยู่หรืออยู่ระหว่างการรีเฟรชแบบอะซิงค์ ทำให้เกิดการเข้าถึง Cocoa accessibility cache ที่ยังไม่ได้สร้าง ขณะนี้การเลือก การเลื่อน และการขยายถูกเลื่อนออกหรือมีการป้องกันครอบคลุม outline combo, ลำดับชั้นการเรียก/ประเภท, ป๊อปอัปการเติมโค้ด, ป๊อปอัป locator, กล่องโต้ตอบ Save Items, project tree, การนำทางโฟลเดอร์, Open Documents, รายการ Issues/Tasks และ tree-view combobox (94c8f9def, ae40a3806, ed23b5c60, c6baf89cd, d7b6f5838, d8b70609c, 21740d9c2, 9217fc8a9, fe75924d5, 9cc247ffb, 3ca71e915, 559b6005f)

  • แก้ไขการขัดข้องบน macOS อีกกรณี (NSRangeException/SIGABRT) ใน code outline combobox ที่เกิดจาก index ที่ล้าสมัยและอยู่นอกช่วงเมื่อ Python language server รีเฟรชสัญลักษณ์แบบอะซิงค์ ขณะนี้ setCurrentIndex จะตรวจสอบขอบเขต row/column ใหม่เทียบกับโมเดลที่ใช้งานอยู่ (3e0ce89f1)

  • เพิ่มความแข็งแกร่งให้กับ ROMFS model editor และ dataset editor เพื่อป้องกัน QFileSystemModel async race โดยเลื่อนการขยาย tree ล่วงหน้าออกไปจนกว่าไดเรกทอรีจะโหลดเสร็จ และเลือกไฟล์/โฟลเดอร์/โมเดลที่สร้างใหม่เฉพาะเมื่อโมเดลมี index ที่ถูกต้องสำหรับรายการนั้น (5eaa91aff)

  • การดำเนินการของเครื่องมือภายนอก (dfu-util, bossac, picotool, alif, imx, ST Cube, mpy-cross, vela, ST Edge AI, video convert) ไม่อนุญาตให้ camera stream หรืองานที่รอคิวเข้ามาทำการดำเนินการอุปกรณ์ซ้ำๆ ขณะที่เครื่องมือกำลังทำงานอยู่อีกต่อไป กล่องโต้ตอบแสดงความคืบหน้าของ loader เป็น application-modal และการสำรวจอุปกรณ์จะถูกระงับอย่างสมบูรณ์ขณะแสดงอยู่ (3069e8ec0)

  • การเชื่อมต่อใหม่อัตโนมัติไม่สามารถแย่งชิงการอัปเดตเฟิร์มแวร์ระหว่างการแฟลชได้อีกต่อไป ผ่าน flag ที่ระบุว่ากำลังอัปเดตเฟิร์มแวร์อยู่ ซึ่ง latch ไว้สำหรับการดำเนินการ forced/bootloader/erase ทั้งหมด และ reconnect timer จะตรวจสอบด้วยเช่นกัน (b7745484a)

  • การเชื่อมต่อบอร์ดจะไม่เขียนทับโปรแกรม Hello World ที่คุณพิมพ์ไว้โดยไม่ตั้งใจอีกต่อไป โดยเปรียบเทียบเอกสารที่ใช้งานอยู่กับสแนปช็อตต้นฉบับที่บันทึกไว้ตอนเปิด แทนการพึ่งพา modified flag ที่ไม่น่าเชื่อถือก่อนการซิงค์ตัวอย่างต่อ sensor อัตโนมัติ (6f4539d44)

  • การเลื่อนขึ้นใน serial terminal ระหว่างที่มีการแสดงผลอย่างต่อเนื่องอย่างรวดเร็วจะไม่ดึงมุมมองกลับมาที่ด้านล่างอีกต่อไป เส้นทาง append ปัจจุบันติดตาม flag ความตั้งใจการเลื่อนของผู้ใช้แทนการคำนวณ "ที่ด้านล่าง" ใหม่จากตำแหน่ง scrollbar ที่แต่ละ chunk เพิ่งปักหมุดไว้ (9aea0f1a2)

  • Escape ปัจจุบันปิดกล่องโต้ตอบ Code Profiler ได้อย่างน่าเชื่อถือไม่ว่า child widget ใดจะมี focus (203ffd1e6)

  • บน macOS เมนูและปุ่มลัดคีย์บอร์ดระดับ global ปัจจุบันทำงานได้ทั่วทั้งแอปแทนที่จะทำงานเฉพาะเมื่อ editor มี focus โดยกำหนดให้ menu bar ที่ซ่อนอยู่เป็น parent ของหน้าต่างหลักในทุกแพลตฟอร์ม (6d52cbe73)

  • ตัวแปลภาษา Python แบบ bundle ปัจจุบันถูกบังคับให้เป็นค่าเริ่มต้นทุกครั้งที่เปิด ดังนั้นค่าเริ่มต้นที่บันทึกไว้ที่ล้าสมัยจะไม่ปิดใช้งาน Python language server (การเติมคำและคำใบ้การเรียก) โดยไม่มีการแจ้งเตือนอีกต่อไป (1d5069a52)

  • เพิ่มความแข็งแกร่งให้กับ OpenMV settings I/O เพื่อป้องกัน re-entrancy: beginGroup / endGroup บน shared global settings object (ซึ่งสร้าง modal dialog และรัน nested event loop) ถูกแทนที่ด้วย full key path ดังนั้นการเข้าถึง settings แบบ re-entrant ระหว่าง modal dialog จะไม่สามารถบันทึก key ผิด group ได้อีกต่อไป เส้นทางบนดิสก์เหมือนกันทุก byte ดังนั้น settings ของผู้ใช้ที่มีอยู่จะถูกเก็บรักษาอย่างสมบูรณ์ (91e78a9e3, f4bb9f48c)

  • แก้ไข regression ที่ dialogs และ helpers หลายตัวที่รับ shared settings object ทำ bare-key I/O ที่ settings root แทนที่จะอยู่ใต้ OpenMV/ ทำให้สูญเสียรูปทรงหน้าต่าง, splitter และสถานะการขยายของ model zoo และสถานะของ loader dialog ทั้งหก (dfu-util, imx, bossac, alif, picotool และ ST Cube Programmer) รวมถึงตัวเลือกคอมไพเลอร์ mpy-cross, vela และ ST Edge AI ขณะนี้ group ถูกฝังอยู่ใน key แต่ละตัวเพื่อให้ใช้เส้นทางที่ถูกต้อง (258448bdf)

การรองรับแพลตฟอร์มและเครื่องมือ

  • Qt Creator base: 14.0.2.

  • OpenMV IDE อัปเดตเวอร์ชันเป็น 4.8.11

การเปลี่ยนแปลงที่ส่งผลกระทบ

ไม่มี การเปลี่ยนแปลงทั้งหมดเป็นการแก้ไขบั๊กและการปรับปรุงที่ต่อยอดจากฐาน Qt Creator 14.0.2 ที่มีอยู่ โปรเจกต์และขั้นตอนการทำงานที่มีอยู่ไม่ได้รับผลกระทบ