Commits
- e596227: Add FirmwareFilter for faceted firmware manifest selection (Claude) #3821
- 977551b: Replace Xamarin firmware selection with a WinForms dialog (Claude) #3821
- cf84656: Move Xamarin FirmwareSelection page into the Xamarin app project (Claude) #3821
- 344c487: Remove Xamarin.Forms and Xamarin.Essentials from the desktop app (Claude) #3821
- don't preselect a row when several match #3821 (Claude)
- e300080: Use CRLF line endings for lines added to CRLF files (Claude) #3821
- b91e361: Keep original end-of-file in Program.cs (Claude) #3821
- offer vehicle type for a detected board when there is a choice #3821 (Claude)
- a83abdd: Address review: trim only a -BL suffix, test BootloaderStr, Array.Empty (Claude) #3821
- sort unparseable versions after real ones #3821 (Claude)
- restore the note to pick a file (.apj) to upload #3821 (Claude)
- load the saved list once and skip duplicate entries #3799 (Evan)
- retry a failed load, never overwrite an unread file, draw on every page #3799 (Evan)
- log a failed load, share the coordinate text between SaveFile and the duplicate key #3799 (Evan)
- treat an unreadable saved file as a failed read, not a missing one #3799 (Evan)
- redraw after loading even when rewriting the file fails #3799 (Evan)
- 3e75756: SSHTerminal, SocksHttpWebRequest: use ordinal search for control characters (Michael Oborne) #3830
- df67c7b: Remove unused BinaryFormatter code (Michael Oborne) #3834
- register the code pages encoding provider on .NET #3833 (Michael Oborne)
- 2b812f3: Replace Encoding.Default with explicit encodings (Michael Oborne) #3832
- b9c2839: Set UseShellExecute explicitly where Process.Start opens a URL or file (Michael Oborne) #3831
- allow stopping mirrors started from the list #3800 (Artur Khylskyi)
- save deleted rows and close the replaced TCP client #3800 (Artur Khylskyi)
- fix TCP Host mirror crashing when a client connects #3800 (Artur Khylskyi)
- legacy mirror properties must not modify Mirrors in place #3800 (Evan)
- legacy mirror properties use their own entry #3800 (Evan)
- add and remove mirrors under one lock #3800 (Evan)
- accept callback state is the TcpSerial, legacy setters lock #3800 (Evan)
- Dispose replaces the mirror list under the lock #3800 (Evan)
- 478a568: Reduce a vehicle-supplied MAVFTP file name to a file name before writing it (nicholasaleks) #3774
- fb2c465: Harden COM port enumeration to avoid Bluetooth-driven startup/dropdown crashes (#3740) (Copilot) #3740
- 29f6888: Remove Altitude Angel (Michael Oborne) #3835
- update inf2cat.bat for current WDK/SDK and re-sign only what changed #3836 (Michael Oborne)
- add Pixhawk 6C (3162:0053) to Holybro.inf and re-sign #3836 (Michael Oborne)
- 7b796c3: MissionPlanner.Drawing: match System.Drawing signatures for prebuilt assemblies (Michael Oborne) #3837
- b0c1c35: Update desktop SkiaSharp to 3.119.4 (Michael Oborne) #3838
- ship the 3.119.4 native libSkiaSharp #3839 (Michael Oborne)
- 97a7c06: MissionPlanner.Drawing: reuse the DrawImage paint (Michael Oborne) #3841
- ff23b53: MissionPlanner.Drawing: cache the text paint and measure only when needed (Michael Oborne) #3841
- 59f9ba9: MissionPlanner.Drawing: reuse one SKPath for shape drawing (Michael Oborne) #3841
- 4c6030c: MissionPlanner.Drawing: build Pens, Brushes and SystemFonts once (Michael Oborne) #3841
- 54d5c11: MissionPlanner.Drawing: cache gradient paints and dash effects (Michael Oborne) #3841
- 143f228: MissionPlanner.Drawing: report image pixel memory to the GC (Michael Oborne) #3841
- 9bfeb2b: MissionPlanner.Drawing: mark decoded images immutable (Michael Oborne) #3841
- ca7afb6: Remove logging from per-call and per-event paths (Michael Oborne) #3841
- 8a7ae4b: MissionPlanner.Drawing: fix use-after-free converting Graphics to Image (Michael Oborne) #3841
- c68b5e2: MissionPlanner.Drawing: use the font's family, and match Korean UI (Michael Oborne) #3841
- 80c8126: MissionPlanner.Drawing: keep a pen's alpha (Michael Oborne) #3841
- 826dc0b: MissionPlanner.Drawing: draw DashStyle patterns like GDI+ (Michael Oborne) #3841
- 1001b0c: MissionPlanner.Drawing: draw unchanged images without copying them (SkiaSharp 3) (Michael Oborne) #3841
- c5cc77f: MissionPlanner.Drawing: no draw cache for bitmaps on caller-owned pixels (Michael Oborne) #3841
- f7a1d81: MissionPlanner.Drawing: rebuild a gradient paint freed by Dispose (Michael Oborne) #3841
- e782fc9: MissionPlanner.Drawing: make the shared system pens read-only (Michael Oborne) #3841
- 54b5863: MissionPlanner.Drawing: free cached dash effects and text paints (Michael Oborne) #3841
- 4e83e03: MissionPlanner.Drawing: fix the memory-pressure doc comment (Michael Oborne) #3841
- drop the discarded rasterization in XplatUIMine.PaintEventEnd #3842 (Michael Oborne)
- event-driven idle wait, narrower paintlock, typed message-hold key #3842 (Michael Oborne)
- composite the windows' retained images #3842 (Michael Oborne)
- one window-table pass per composite, clip and cull children #3842 (Michael Oborne)
- draw straight into the paint Graphics on the Skia (LIB) path #3842 (Michael Oborne)
- no control back buffers under XplatUIMine #3842 (Michael Oborne)
- 82dd96d: Skia WinForms: draw the borders of plain controls (Michael Oborne) #3844
- make the parachute action release the parachute #3854 (Peter Barker)
- add MAVLink camera custom settings #3827 (Andrew Tridgell)
- address camera custom settings review #3827 (Andrew Tridgell)
- show active camera parameter range choices #3827 (Andrew Tridgell)
- targetSdkVersion 36 #3858 (Michael Oborne)
- compile a cached plugin again for each Mission Planner build #3847 (Evan)
- support MAV_CMD_NAV_FENCE_HOME_CIRCLE_INCLUSION #3855 (Peter Barker)
- add a map menu item for a fence circle around home #3855 (Peter Barker)
- keep the home circle out of the fence vertex editor #3855 (Peter Barker)
- send param3 as 0 for generic actions #3853 (Peter Barker)
- f459bcd: CoT output: send ellipsoid heights in metres, only for vehicles (Evan) #3850
- show EKF status from ESTIMATOR_STATUS #3846 (Peter Barker)
- correct post-flight hover gain guidance #3829 (Alex)
- tick column and Verify WP Height button #3814 (Evan)
- header tick check stops early, clearer Default Alt message #3814 (Evan)
- Verify Height rounds the altitude instead of truncating it #3814 (Evan)
- Verify Height skips rows without a global position #3814 (Evan)
- Verify Height measures relative altitudes from the home altitude #3814 (Evan)
- Verify WP Height leaves DO and CONDITION commands alone #3814 (Evan)
- Verify Height drag waits for terrain and rounds; button feedback #3814 (Evan)
- df8b9a7: MissionPlanner.Drawing: add Image, Icon and Font type converters (Michael Oborne) #3860
- only check BLUETOOTH_CONNECT on Android 12 and later #3861 (Michael Oborne)
- restore control double buffering under XplatUIMine #3862 (Michael Oborne)
- pinch to zoom the map through simulated WM_GESTURE #3863 (Michael Oborne)
- fix terrain not rendering, mesh density and GL errors #3865 (Michael Oborne)
- Modernize Python 2 code to get ready for Python 3 #3568 (Christian Clauss)
- ee61384: Shebang must be the first line (Christian Clauss) #3568
- index and read binary logs from memory, smaller index #3867 (Michael Oborne)
- read one field of a message without converting the others #3867 (Michael Oborne)
- look up message info by msgid, read packet targets from the buffer #3866 (Michael Oborne)
- MAVLinkParamList remembers where a name was found #3866 (Michael Oborne)
- less work for each packet received #3866 (Michael Oborne)
- status tab and photo markers do less work per update #3866 (Michael Oborne)
- dispose the font used to measure the arm status text #3866 (Michael Oborne)
- MAVLinkParamList drops its name lookups when a param is renamed #3866 (Michael Oborne)