The fourth release candidate for LightBurn v2.1.00 is now available to download here:
Note: Not all generated RC’s make it to public, this creates gaps in RC numbers - RC3, RC4, RC5, RC7, and RC8 for 2.1.00 never made it to public release.
Change Log for LightBurn-v2.1.00-RC-9
Changes Since LightBurn-v2.1.00-RC-6
New Features
- DragonDrop file transfer wizard - initial iteration
- Ability to wrap web-based tools into integrated app features
- Overlay capture uses Warm-up Frames setting when camera previews are paused
- Added isLabs flag and checkIsLabs method to ProtocolDescriptor for centralized Labs status checks
Bug Fixes
- Deform tool issues with grouped base shapes
- Fixed all-zero command blocks sent when listSize is a multiple of 256
- Fixed coordinate scaling - wire coordinates are mm, board uses kxy to convert to DAC counts
- Fixed correction table memcpy only copying half the data
- Fixed corFieldSize not being set when importing .cor file during device setup
- Added missing scanner type 1 to protocol switch for prot=0x3FFF
- Custom gcode rotary diameter setting was never emitted
- Crash on closing Devices window with Emblaser device active
- Don’t escape tab characters in the console log
- Laser source errors no longer disconnect - errors during marking cleanly stop the job, errors during idle block new marking jobs but allow framing.
- Some new camera UI fixes
- Custom GCode was double-scaling imperial position queries when $13=1
- Ungrouping an array with mirrored objects looses the mirror transform
- Ungrouping an array with mirrored objects looses the mirror transform.
- Un-grouping native shapes after mirror transform caused flip
Existing Feature Updates
- Allow for extra ok’s from buggy WeCreat firmware
- Coordinate clamp is now calculated from field size instead of hardcoded
- Laser source error status is now displayed in the laser controls panel.
- Increased Z jog distance maximum from 500mm to 1000mm
- Select when pasting from other apps
- Allow read/write of laser 2 offsets for Ruida
- Changes for hydra/GT5 Ruida
- Update machine settings for new Ruida laser configs
Infrastructure
- Added core_icontools to build system via CoreGui.pri and core_code.cpp
User Interface Updates
- Created outlined labs icon with white border for visibility on dark device logos
Other Changes Since LightBurn-v2.0.05
Summary
Bug Fixes
- Prevent extreme fisheye projection infinities in head-mounted camera wizard
- Prevent extreme fisheye projection infinities from crashing the diagram in the head mounted camera wizard
- Handle cancel of Offset Fill
- Galvo auto-rotate scan angle was not being reset between jobs
- Invalid custom gcode blocks were getting hidden
- 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
- Restore geometry after previously zeroed values
- Better handle device units for people upgrading from older versions
- Enable relative arrow-jogs with ruida
- Increase epsilon distance on Trim checks
- If an image fails to import, show an error message about file size (if greater than 100MB) or possible corruption.
- If a very large image fails to import, show an error message about file size or corruption.
- Adding origin type to Go to Origin
- Node editing was not undoing properly because the selected node got removed from the undo.
- Fixing the fire power setting when the Fire button is already enabled.
- 3D slice masked / transparent pixels shouldn’t be negated
- Proper handling of click-drag of multiple nodes
- 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
- 3DSlice resampler crash caused by temp variable going out of scope
- 3DSlice resampler crash caused by temp variable going out of scope early
- Fix file ‘Start’ corruption after using Send
- 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
- BSL ‘Done Marking’ signal wasn’t emitted
- 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
- Bundle Import from device window was broken
- 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.
- Removing discrete jogging clamping, fixing continuous jog for G54-configured machines.
- Fix synchronous-mode timing regression.
- MacOS rate limit for Ruida, + variable packet size limit
- Forcefully truncating float numeric error for position down to 1 micron.
- Fail gracefully on DXF SPLINE objects with fit points
- 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
- 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.
- MacOS could hang or crash when framing
- Font skips around and reverts on Mac
- Qt6 set a 256mb max image size. No thank you.
- 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.
- Ellipse tool ovals are not exporting properly to DXF
- Stop button didn’t properly reset spindle/laser state to off.
- Updating the logic & text of the device size mismatch warning.
- BSL libraries don’t apply lens correction to jump moves
- PDF - Crash - Pack Tokens
- 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.
- 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.
- Prevent text shapes from commit when only whitespace
- 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
- Fix the escape sequence logic flaw for custom gcode.
- XTool device position query was broken
- 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.
- Inverted SHX Fonts in FontManager
- Inverted SHX Fonts
- Replacing the broken truncate function for negative numbers.
- Material library combo box was too wide
- Emblaser WiFi wizard dark mode issues on Windows due to Aero theme
- Deform on an image could glitch on parallel lines
- Fixing rotary CCW jog switching directions
- Importing SVG with ungrouped DEF shapes could crash
- Double-click to launch if unconfigured would crash
- 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.
- 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.
- 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
- Auto-join could crash in extremely rare cases from a float rounding issue
- Tab drawing wasn’t saving/restoring drawing color
- 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
- Undo History displayed backwards
- Invalid DXF color indices could crash on import
- Rotary slices weren’t always merged correctly with Run Whole Shapes
- Set Zero on BSL could hang the hardware
- Trim would fail if snipping a shape scaled to zero in X or Y
- Windows camera driver could get stuck (wouldn’t reconnect properly) if there were USB connection problems
- Prevent thread contention of JCZ command buffers
- 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.
- OffsetFill was ignoring PWM override
- Optimizations couldn’t be completely disabled
- Fonts jump in Listview
- 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
- Quick Nest acting up if Device Origin is top left.
- 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
- Fixed issue with some numeric input boxes not displaying unit values when units are set to metric.
- Fixing punctuation in dialog messages.
- Fixed the Tab wizard when using tab count, building one less tab than expected.
- Fixed the Tab wizard when using tab count, building one less tab than expected
- Fix for incorrect WeCreate disconnect message
- 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
- Nested bitmaps could cause infinite loop when merged
- Font Dropdown Box displays font headers
- Font Dropdown Box displays “Favorites” as a selected font
- Camera alignment pattern designer not properly converting zone size to/from Imperial units
- Quick Nest - Support for Text and Group objects
- Quick Nest - Not respecting move as group and lock inner objects
- Font + Paths grouped scaling Bug
- Fix program stall on update for FilletTool
- Unsaved changes indictor in window title fixed for change of device.
- Jog distance and speed were not being restored properly on program start due to unintended events.
- Tool layers weren’t collected if framing something too complex
- When undoing a deleted layer (or undo delete last shape in a layer) ensure the layer returns to original priority (order) in the layer list.
- Scanning Offset units were entered as Control Units but shown as Device Units
- Laser 1 and 2 are exclusive on GCode. Don’t show 2 laser power boxes
- Click to remove fillet didn’t always work
- X/YPos values with apostrophe not recognised
- Fixing the move toggle off not preventing unselected shapes from being dragged in the workspace.
- Fixed theme bug that would cause the settings dialog to think a restart is required if the app theme is set to “System Theme” even if no settings have been changed.
- Very old camera settings files (from before 1.6) could crash on import
- SVG Import crashes when use references another use in defs
- Uninitialized “insert” state caused a crash
- Fixed issue causing layer palette icons to be larger than the tool buttons with certain combinations of ToolButton and Font Size.
- Fixed issue with minimum font size setting increasing some UI font sizes when High DPI Scaling is enabled.
- Fixed issue causing incorrect icon showing for selected layer in Cut Settings dialog layer list.
- Trying to increase flexibility of Custom Gcode for non-standard GRBL firmwares.
- Allow unlimited custom gcode alarm or error codes with buttons to add more rows when needed.
- Job complete sound plays for BSL when using rotary or repeat marking
- No job complete sound on BSL rotary
- LicenseExpiringSoonDialog changed ‘will expire soon’ to ‘expires today’ on last day.
- Bundle Export section titles were English-only and not being translated.
- Galvo Z accel was stored / retrieved wrong
- Repeat Marking, show proper Increment units to match axis type, added tooltips to the Test button.
- AutoGroup was failing with trivial type of shapes like Rectangles.
- AutoGroup was failing with trivial type of shapes.
- Radius Tool Needs 4 decimals when using inches to behave like LB1.7.08
- Radius Tool Needs 4 decimals for inches to behave like LB1.7.08
- Update License ‘expiring soon’ text to ‘expires today’ on final day.
- New Camera Presets for Thunder Vision network cameras had ports swapped
- BSL crash on USB pull
- Added missing blank icons to main window menus
- Max Power label was disabled
- Parse console lines for instant commands that shouldn’t end with a newline.
- Fixed MacOS Hotkey modifiers for Rotation of Selection not working for 1.5 degrees (Ctrl+Shift+ , or .)
- Fixed MacOS Hotkey modifiers for Rotation of Selection to use the Ctrl key instead of the Command key.
- Shape Rotation for 1.5 degrees using Ctrl+shift+ , or . fixed.
- GCode Real-Time Commands now send without newlines for compatible protocols
- Custom GCode Marlin flavor preset had “?” GetStatus but should be “M114”
- Show Q Value instead of Power% for Galvo Devices in the Cuts list
- Show Q Value instead of Power% for Galvo Devices in the Cuts list.
- Clean up Start Pt arrow rendering
- Prevent infinite loop trying to build tabs in a shape that is too small.
- Only show Q-pulse instead of power for UV galvos
- Control units were not defaulting to reasonable metric value
- Custom GCode was not properly using rotary mode
- Fixed crash by using a lowercase @p or @t in a pause message.
- File path used by Operations Export Wizard not sanitized in Bundles
- Support extended real-time commands for GRBL and grblHAL
- Send real-time console commands even when busy
- Combine repetitions of real-time commands in console log
- Shape properties would not populate correctly when switching between certain shape types directly.
- Operations Library view was not being refreshed by units change
- Fixed protocol type checks using DisplayName instead of protocol identifier
- Fixed laser PWM count clock threshold (was comparing kHz value against 1000000 instead of 1000)
- Fixed scan delay calculation missing LaserOff time component
- Fixed COR file header offset causing incorrect field parsing
- BSL fiber Z homing was using ZMotorIndex instead of ZAccelTime for acceleration
- Prevent “Missing GCode For selected settings” warning in Device Settings dialog when inherited placeholder is valid
- Add space after emitting G53
- Handle malformed xml data better and report more issues without crashing when loading a damaged or incorrect file.
- Some escaped characters were causing strings to visually repeat in the console log
- New Device Wizard should reset Dwell when a new Flavor is chosen
- GRBL M3 Flavor jog panel got broken when switching from another Flavor that had continuous jog
- FluidNC support was missing some connections
- Updated GRBL-STM GCode Flavor to enable continuous jog and probing
- SVG with OffsetFill didn’t export correctly
- Fixed some galvo framing issues
- Zero Axis buttons were incorrectly greyed out for some protocol flavors
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.
- 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]
- Added shortcut for device manager [Alt+Shift+D]
- Hide other bundle controls when editing vendor info
- 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.
- Added startup checks for common issues that cause ui elements to grow too large for the screen.
- Added prompt to automatically restart when settings are changed that require an application restart to apply.
- Macro Edit text input now correctly strips formatting from pasted text.
- Fixed Focus Light tooltip for BSL Fiber
- New Warning icon added with better contrast at smaller sizes.
- Renamed Reverse Z checkbox to Invert Z Galvo to clarify it controls galvo coordinate direction
Existing Feature Updates
- Certain zoom levels were slow because of transparent grid
- Add ‘Flash Layer Shapes’ action so it can have a hotkey
- Minor Tweaks to Cut Settings height
- Better handling of Enter key in Repeat Marking
- Major improvements to reduce direction changes, choose best direction
- Major improvements to reduce dir changes, choose best dir
- Don’t auto-weld single line fonts, only classify SLF-OPF as Single Line
- Added RunLengthDecode support to PDF import
- Allow ‘Bake’ variable text work on selection
- Allow ‘Bake’ variable text to commit a
- Give stacked buttons a bit of forced extra width to allow side clicking
- Move “library” buttons under the lib to allow shorter vertical
- 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
- 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
- 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
- Smaller galvo settings window for Devil’s Resolution
- “Remove fillet” preview
- 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.
- Reduced cut setting window 10 pixels more by reducing the dither preview size
- Raised acceleration limits for gantry simulation
- Show warning if using 3DSlice with a single pass
- Drill files with Z drop + Z lift in place will generate 1mm circles
- Export hidden lb/mm layers to svg as hidden entities in SVG
- Regenerate the color swatches when font scale is changed
- Store/restore the repeat mark jog distance
- Galvo framing now gracefully handles when you have too many shapes
- Auto-select laser1 / 2 if appropriate
- Handle 16 bit maps with pre-multiplied alpha
- Add rotary diameter as a custom gcode variable
- 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
- Remove the null at the end of Adobe’s SVG paste data
- When logging enabled, write SVG content to file
- 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.
- 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
- 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
- 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
- Force “Flood Fill” to fill shapes individually, to enforce order
- 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
- Changed Connection type ‘Ethernet’ to be ‘Ethernet or Wifi’ for clarity.
- Show rotary icon on the Start button if active
- 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.
- 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
- 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
- Improved compatibility for Thunder Vision camera streams
- Swap ‘add camera’ and ‘migrate from 2.0’ button order
- Sub-layer remove/hide logic improvements
- Increase printer line width resolution to three decimal places
- Better framing for 9-pt correction mode
- New Community Page link added to Vendor Bundles Info & Menu
- Automatic display setting adjustment updated to find best UI Font and Toolbar Icon size for the screen instead of forcing smallest sizes.
- Updated BSL libraries
- Added external motor current settings
- Remove hard-coded Emblaser Pro exhaust fan commands from job start/end
- Support for 2 motors for rotary, Z, etc
- Increased max galvo speed to 40k mm/sec
- Hide max and min power for galvo instead of just disabling.
- Laser & Cuts/Layers windows smaller
- 9-point calibration framing improvements
- Made ‘Units’ toggle clearer
- Expanded MarkCfg0 parameter parsing with approximately 30 new fields
- Removed Tilted Model terms from Extended Camera Calibrations
- Consolidated GetListStatus/IsListDone into a single polling path with new IsProcessingList member parsed from 0x0051 (GetListStatus()) response.
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
- Camera widget menus rearranged for clarity and consistency
- Reworked Vendor Bundle Info into a GridLayout so it will center properly
- Bundle manifest JSON had some extra useless fields leaking in, they have been suppressed.
- Make printed line width behavior of PrintShapes match standard Document Print function
- Replace uses of ENG.pUserDevice with pDevicePtr in protocol classes
- Uninitialized values in ParseProbe
- Moved extra commands from Protocol_GCode_Custom::GetAbortCommand() to Stop()
- Remove repeated code in Protocol_XTool
- Further fixes to Position Queries on both real-time and command-line gcode protocols
- Faster quit from gcode thread loops
- Deprecate old camera lens calibration wizard
- Add LE_DeviceReconnect and send event from device settings dialog
- GCode Thread protocol checks
- SupportsToolProbe() query method added to GCode Protocols
- WaitForProbeParse() modified for Marlin
New Features
- Added custom gcode job header auto generation and editing as a gcode block.
- Add font management dialog
- Custom gcode can now have escaped text sequences.
- Make G20/G21 modals editable gcode blocks for custom gcode.
- Support Dxf Export for AC1009 & AC1021
- Added Undo History window to MM / LB
- Split out Control Units from Device Units
- Added toggle switch to disable KT332N U - Z axis mapping
- Develop 2D Tangent Circle Generator for Triple Circle Input
- Renaming Dxf Export File Filters
- Added the ability to save/load template project files
- 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
- QuickNest
- Camera Lens Calibration wizard sample thumbnails and percentage scores
- Vendor Links Menu for Devices imported from Vendor Bundles
- Add support for M73 percent and time remaining estimates for Custom GCode Machines.
- Updating correct Masso gcode defaults after feedback from their support
- Console log improved status query and syntax coloring
- Camera lens calibration Reframe View option (labs)
- Camera lens calibration AprilTag detector subpixel corner refinement (labs)
- Show Custom GCode Flavor in Device List
- Marlin 2.1 support in MillMage
- Support for Duet / RepRap GCode Flavor
Miscellaneous
- Update Darkly Labs links and logo
- Add ZhiYuan wrapper for Ruida-compliant UDP protocol
- Update Mach and UCCNC gcode profiles
- Add Skip this Version option for updates
- Allow overriding of G54 with other coordinate system in Custom GCode
- Tweak code for fetching buy license URLs
- Make Quick Nest available to Core licenses





