# Change Log for LightBurn-v2.1.00-RC-1

## Other Changes Since LightBurn-v2.0.05

### Bug Fixes
- prevent extreme fisheye projection infinities from crashing the diagram in the head mounted camera wizard
- Handle cancel of Offset Fill (#1057)
- galvo auto-rotate scan angle was not being reset between jobs (#1063)
- Invalid custom gcode blocks were getting hidden (#1053)
- Tabs not created properly on spiral cut when wraptab necessary
- When framing first, job was continuing if canceled after out of bounds warning
- Large images might not load with Qt6 build (#1065)
- Restore geometry after previously zeroed values DEV-955  (#1051)
- DEV-955 Restore geometry after previously zeroed values
- Better handle device units for people upgrading from older versions
- Enable relative arrow-jogs with ruida (#1076)
- Increase epsilon distance on Trim checks (#1068)
- If an image fails to import, show an error message about file size (if greater than 100MB) or possible corruption. (#1069)
- If a very large image fails to import, show an error message about file size or corruption.
- Adding origin type to Go to Origin (#1075)
- Node editing was not undoing properly because the selected node got removed from the undo. (#1073)
- Fixing the fire power setting when the Fire button is already enabled. (#1077)
- 3D slice masked / transparent pixels shouldn't be negated (#1079)
- Proper handling of click-drag of multiple nodes (#1080)
- Fixed Windows DPI scaling bug that could increase the size of UI elements to a degree that made application unusable.
- Fixes a few laser-specific jog issues.
- Rotary enable icon was not showing correctly in some cases (#1085)
- 3DSlice resampler crash caused by temp variable going out of scope early
- Fix file 'Start' corruption after using Send (#1086)
- Switching user start script and header positions for custom gcode.
- Fixed DPI scaling issue causing blurry / pixelated setting switches and list item icons when display scale is above 100%.
- Properly parse firmware hold state for GRBL-like firmwares if triggered by the machine.
- Changed single line font prefix to SLF, instead of SLF-
- Intersection snaps fixed (#1128)
- BSL 'Done Marking' signal wasn't emitted (#1132)
- Ruida ignored focus command if Z-speed wasn't set
- Extend Docking outside workspace, to fix rounding error bugs
- Relax distance requirements on Docking
- Do not allow user to toggle laser FIRE while framing or busy.
- Fixed comparison calculations causing CutShapes to leave bits behind.
- Empty shape could crash gcode generation (#1141)
- Bundle Import from device window was broken (#1140)
- Head mounted camera wizard AprilTag pattern was not working if device units were imperial
- Use error dialog in case of error reading controller info, use warning icon otherwise. (#1113)
- Removing discrete jogging clamping, fixing continuous jog for G54-configured machines. (#1110)
- Fix synchronous-mode timing regression.
- MacOS rate limit for Ruida, + variable packet size limit (#1144)
- Forcefully truncating float numeric error for position down to 1 micron.
- Fail gracefully on DXF SPLINE objects with fit points (#1149)
- Adding a parsing in the connection info to check for G54 offsets with a warning dialog.
- SVG 's' command didn't work for sequences of points (#1160)
- Fixed bug causing bottom of main window to appear off screen on load.
- Fixed incorrect maximum size limit on MacOS toolbar buttons.
- Fixed issue with toolbar icons having edges cut off.
- Fixed issue that could cause main window to load on incorrect screen, sometimes many times larger than the screen.
- Prevent top level menu keys from conflicting with hotkeys.
- Updating displayed position to 0,0 after homing on Ruida. (#1165)
- MacOS could hang or crash when framing
- DEV-1881 Font skips around and reverts on Mac
- Qt6 set a 256mb max image size.  No thank you. (#1181)
- When pasting a copy of a PathShape, do not create Tabs unless the source cut had Tabs enabled.
- Fixed issue with docks resetting to default layout every time app is started.
- Fixed issue causing docks to consume entire window if operating system display scale is changed.
- DEV-1445 Ellipse tool ovals are not exporting properly to DXF
- Stop button didn't properly reset spindle/laser state to off. (#1174)
- Updating the logic & text of the device size mismatch warning. (#1193)
- BSL libraries don't apply lens correction to jump moves (#1198)
- DEV-1944 PDF - Crash - Pack Tokens (#1203)
- Allow zero spindle speed operations with new Tool Type of Scribe.
- Kerf was not behaving like before, and not correct re inner and outer direction. (#1202)
- Missing check on empty strings and missing default custom gcode blocks for LightBurn compared to MillMage.
- Icon theme is sourced from correct path for pre release builds.
- Fixing the parsing for metric or imperial modal checks. (#1213)
- Prevent text shapes from commit when only whitespace (#1224)
- Prevent crash when trying to load a malformed text backup path
- Prevent MaxOS keyboard bug, paste into new folder dialog incorrectly causes the text to paste into the current project.
- Updated BSL library for MacOS (#1237)
- Fix the escape sequence logic flaw for custom gcode.
- XTool device position query was broken (#1238)
- fixed reversal of RTL text when applying bend.
- tested with SHX font, fixed mistake in last checkin.
- For Marlin Devices, force the FeedRate to be sent for G1 whenever the mode changes to G1.
- DEV-2025 Inverted SHX Fonts in FontManager (#1225)
- Replacing the broken truncate function for negative numbers. (#1255)
- material library combo box was too wide (#1254)
- Emblaser WiFi wizard dark mode issues on Windows due to Aero theme (#1253)
- Deform on an image could glitch on parallel lines (#1262)
- Fixing rotary CCW jog switching directions
- Importing SVG with ungrouped DEF shapes could crash (#1278)
- Double-click to launch if unconfigured would crash (#1272)
- Device units could sometimes get corrupted for galvo devices
- when switching devices using the device combo box, if the CutOrigin has been saved for a device then use that setting instead of the UI prefs setting. (#1269)
- if the CutOrigin has been saved for a device, then use that setting instead of the UI prefs setting when switching devices using the device combo box..
- Fixes for issues seen in testing. (#1290)
- fixed some missing cases for scissor tool, Bézier curve at nodes, and line segments that are not terminations.
- Fixed issue with device settings incorrectly sizing custom gcode options tab contents.
- Fixed Bezier Cubic Root function missing a case that caused scissor cut to fail.
- Art library crashed if files dropped when no library selected (#1338)
- Auto-join could crash in extremely rare cases from a float rounding issue (#1335)
- Tab drawing wasn't saving/restoring drawing color (#1345)
- Prevent a null pointer crash when closing the program.
- Fixed recursive draw error.  Show Progress dialog when switching to Ops Mode.
- When choosing different units in settings dialog, convert the arrow move distances immediately to show the converted values, and ensure the range limit works in each control.
- Fix ScissorTool bug that caused duplications during cuts and crashes during undo (#1369)
- Undo History displayed backwards
- Invalid DXF color indices could crash on import (#1376)
- Rotary slices weren't always merged correctly with Run Whole Shapes (#1377)
- Set Zero on BSL could hang the hardware
- Trim would fail if snipping a shape scaled to zero in X or Y (#1383)
- windows camera driver could get stuck (wouldn't reconnect properly) if there were USB connection problems
- Prevent thread contention of JCZ command buffers (#1389)
- Fixed issue causing toolbar icons to double in size when a dialog is on a different screen to the main window.
- Fixed bug that can occasionally set all console text to the color red.
- svg import can now handle tspan elements with arrays of xy coordinates. (#1411)
- OffsetFill was ignoring PWM override (#1425)
- Optimizations couldn't be completely disabled (#1423)
- DEV-2308 Fonts jump in Listview (#1420)
- Fixed variable text was not restoring the last settings when loading a project.
- Custom Gcode syntax highlighter was stripping out special characters and hex codes.
- Fixed Custom escape character causing string corruption.
- Emit laser2 freq setting (#1446)
- DEV-2309 Quick Nest acting up if Device Origin is top left. (#1443)
- Fixed fatal crash when applying a radius to a line segment.
- catch illegal memory access to prevent crash, and show properties correctly for multi shape.
- Overscan distance value wasn't updating in image mode (#1463)
- Fixed issue with some numeric input boxes not displaying unit values when units are set to metric.
- Fixing punctuation in dialog messages. (#1468)
- Fixed the Tab wizard when using tab count, building one less tab than expected
- Fix for incorrect WeCreate disconnect message (#1478)
- Fixing the G54 offset warning not being shown.
- Fixing the Marlin-related crash on "Go To Origin" button generating "G53G1" without a space.
- Fixing the need to turn off and on again the Show All toggle in the Console for gcode if a connection is reset or device changed.
- Don't show overrides panel during jogging (#1479)
- Nested bitmaps could cause infinite loop when merged (#1487)
- DEV-2403 Font Dropdown Box displays "Favorites" as a selected font

### User Interface Updates
- Fixed vertical spacing and minimum height for tabs for the galvo cutsettings dialog
- Set the Radius tool to have 2 decimal places when in mm units. (#1097)
- In the layers form, Spd_Pwr column, show the Power to 1 decimal (if value is under 100 so user will see the fractional power setting they expect)
- Change Radius to show 2 decimals in mm units. Changed the min max Radius mm to equal the converted inches so conversion back and forth at the maximum is consistent.
- Dramatically improved quality of UI when High DPI scaling is enabled.
- Fix the AirAssist and Marlin Laser Commands groups boxes getting squished when form is reduced vertically.
- Selected shape / item dash length now scaled for screen dpi.
- Better message for PDF Import Error to suggest converting to image before import.
- Improvement to probe wizard to deal with zero Tool Diameter better.
- New icons for diamond scribe
- Added shortcut for device manager [Alt-Shift-M]
- Hide other bundle controls when editing vendor info (#1248)
- Applied correct DPI scale to message box icons when display scale is above 100%.
- Updated MessageBox icon set.
- Prevent app title bar from appearing off screen when stored window position offsets are incorrect.
- Added higher resolution images for unidirectional and offset fill types.
- Console colors are now set from the application theme.
- Added "Workspace DPI Scaling" display setting. This allows higher resolution drawing / previews to be switched off to improve line visibility on very high resolution display (eg. Apple Retina), or to improve performance on low powered devices.
- Changed console and custom GCode settings font from "Courier" to "Consolas" if available on Windows devices.

### Existing Feature Updates
- certain zoom levels were slow because of transparent grid (#1090)
- Add 'Flash Layer Shapes' action so it can have a hotkey (#1087)
- Minor Tweaks to Cut Settings height (#1101)
- better handling of Enter key in Repeat Marking (#1126)
- Major improvements to reduce direction changes, choose best direction (#1122)
- Don't auto-weld single line fonts, only classify SLF-OPF as Single Line
- Added RunLengthDecode support to PDF import (#1134)
- Allow 'Bake' variable text to commit a
- Give stacked buttons a bit of forced extra width to allow side clicking (#1151)
- Move "library" buttons under the lib to allow shorter vertical (#1170)
- Move "library" buttons into a menu to allow shorter vertical
- Show a message if the user tries to calibrate axis while rotary mode is on (gantry)
- Icons for Material Library functions (#1186)
- Material test, allow boxes as large as 400mm, limit max font size depending on laser type.
- Keep cuts list position when list changes, keep selection in view when moving up/down (#1222)
- forgot to check in new themes for gcode
- show tool position during cuts using the linecount sent.
- turned off extra comments that were incorrect for custom gcode
- Increased galvo rotary size limits to 20 meters
- Updated rotary runner screen limits to match setup screen
- Shrink the cut settings window
- Double-click to Adjust Image (#1279)
- Smaller galvo settings window for Devil's Resolution (#1288)
- "Remove fillet" preview (#1289)
- Made MillMage use ToolLibraries variable and keyname instead of reusing Lightburns MaterialLibraries var and key name to avoid conflicts in the prefs and bundles files. (#1287)
- Reduced cut setting window 10 pixels more by reducing the dither preview size (#1291)
- Raised acceleration limits for gantry simulation (#1302)
- Show warning if using 3DSlice with a single pass (#1303)
- Drill files with Z drop + Z lift in place will generate 1mm circles (#1300)
- Export hidden lb/mm layers to svg as hidden entities in SVG
- Regenerate the color swatches when font scale is changed (#1311)
- store/restore the repeat mark jog distance (#1324)
- Galvo framing now gracefully handles when you have too many shapes (#1321)
- Auto-select laser1 / 2 if appropriate (#1323)
- Handle 16 bit maps with pre-multiplied alpha
- Add rotary diameter as a custom gcode variable (#1332)
- Large performance improvement for Operations Mode, and fix to recursive drawing warning.
- New Scissor Tool operation uses shift key to send the clippings to the active layer.
- New optimizer wasn't special casing filled shapes (#1372)
- Remove the null at the end of Adobe's SVG paste data (#1373)
- When logging enabled, write SVG content to file (#1370)
- Write available paste formats to debug log
- Fixed multicameras head-scan going out-of-bounds when the camera offset was too big
- Added Thunder Laser presets to New Camera list
- Automatic TabBuilder fixed to prevent having first and last tabs closer than the minimum requested distance. (#1385)
- TabWizard fixed to prevent having first and last tabs closer than the minimum requested distance.
- head-mounted camera scans were not being limited by the DPM settings
- emblaser shared cameras required some settings to be tweaked
- modified Emblaser Pro Stop command to suppress duplicate newline
- Added "air protect" setting for Thunder (#1401)
- Camera Preview Quality is now a global preference
- fiducial markers modified to not overdraw crosshair line when demicircle is not filled
- some emblaser commands were missing newlines (#1409)
- another missing newline for Emblaser Pro and strip upload terminals
- modified EPro firmware upload to wait for completion rather than depend on timer
- When using 'Negative' with 3D slice, reverse the slice order (#1418)
- Force "Flood Fill" to fill shapes individually, to enforce order (#1429)
- Redirect main toolbar 'Update background' action to multicameras
- Network camera download limits & faster shutdown
- New Camera wizard improvements and modified camera prefs
- added a checkbox to job control to Ask for Send Name so it can be disabled.
- improved Add New Camera URL entry UX
- accept PNG images for HTTP camera sources
- Changed Connection type 'Ethernet' to be 'Ethernet or Wifi' for clarity.
- Show rotary icon on the Start button if active (#1421)
- Update Overlay could crash during homing if changing device from a bigger machine
- camera wizards UX pass
- renamed "Undistorted" Camera Image capture menu action to "Calibrated"
- Camera alignment wizard manual process had old extra step when going back
- rare multicamera async crash when changing device
- fixed HTTP camera bug that was corrupting some mjpeg streams
- memory leaks in New Camera Wizard
- HTTP camera compatibility improvements
- Scissor Tool with shift-click should move entire shape to current layer just like trimming a section does. (#1445)
- Limit outgoing TCP queue size to 8K
- Fix Emblaser Pro file upload progress
- New Camera presets updated
- Clear ToolState on device disconnect
- Changed text in 2 places to License Management to be consistent .
- fix multicameras head-mounted alignment when using manual 'circles' alignment target.
- position query was interfering with emblaser GetFileContents
- device-level LastCamera prefs needed to remain
- new camera wizard was not setting reconnection properties correctly

### Code Refactors
- moved code to calc the width hint for the qNumEntry control to a function because it is needed to be called from any place that changes the space required to display the number.
- Bundle wizards & Zip lib refactored from .cpp to .inc
- GameController.cpp converted to .inc
- added vision.inc to gather moc_ include files
- idle job queue and Protocol::IsReady
- mods to emblaser 2 and 3 protocol file transfers
- found a potential bug in the emblaser 3 protocol where we were sending extra newlines that were required by the 2, but not anymore?
- moved faceClearancePcnt into cut_face class from cut_cnc.
- Camera alignment pattern classes moved out of Multi-Alignment wizard and into new utility file.
- Aspect ratio controls moved out of Multi-Camera widget and into new utility file.
- split many vision classes into .h and .inc
- Single-camera system Emblaser Pro network camera deprecated
- moved most control mode code out of mainWindow into staticSimulationWidget.
- fix MacOS compiler warnings in camera classes
- rearranged New Camera Wizard to simplify inter-object comms
- deprecate single-camera functions and menu actions
- The Allow G53 toggle was only affecting position queries. This now prevents sending it in any circumstance.
- fix warnings and log messages
- translate new camera connection status strings
- modify camera shutdown logic to wait for full stop
- always reapply camera widget list mode after device change

### New Features
- Added custom gcode job header auto generation and editing as a gcode block.
- DEV-78 Add font management dialog (#1007)
- Custom gcode can now have escaped text sequences.
- Make G20/G21 modals editable gcode blocks for custom gcode.
- DEV-2012 Support Dxf Export for AC1009 & AC1021 (#1223)
- Added Undo History window to MM / LB
- Split out Control Units from Device Units (#1268)
- Added toggle switch to disable KT332N U -> Z axis mapping (#1310)
- Develop 2D Tangent Circle Generator for Triple Circle Input (#1309)
- DEV-2171 Renaming Dxf Export File Filters (#1331)
- Added the ability to save/load template project files (#1327)
- Multi-Cameras
- Print Line Width is now a user setting in Import/Export
- Direct Raw and Undistorted image capture from all camera types
- Add ability to name lasers sources when dual lasers enabled (#1406)
- DEV-2259 QuickNest (#1394)

### Miscellaneous
- Update Darkly Labs links and logo (#1168)
- Add ZhiYuan wrapper for Ruida-compliant UDP protocol (#1156)
- Update Mach and UCCNC gcode profiles (#830)
- Add Skip this Version option for updates (#1252)
- Allow overriding of G54 with other coordinate system in Custom GCode (#1251)

