LightBurn 2.0 is here! Along with the shiny new major version number, it’s got several added features, updates, and UI improvements, making LightBurn better than ever.
Going from 1.7 to 2.0 is a big jump, so you might be wondering — why?
It’s mostly due to some significant under the hood changes — we updated the development framework that LightBurn is built on. This update greatly expands the range of features and UI changes that our developers can implement. While most of that work is invisible, you’ll notice our entire interface has a (subtle) new look — don’t worry, everything is still right where you left it.
Of course, 2.0 also has lots of exciting new features, including Dark Mode, additional Shape Creation tools, an Edit Nodes toolbar, an improved Camera Calibration option, and more. Read on for additional information, and our full changelog.
Download LightBurn 2.0 here.
If your license expired before the release of 2.0, visit our website to add another year of updates to your license, and get access to all the latest features.
Important note on system compatibility:
Starting in 2.0, LightBurn supports only Windows 10 (and higher) or macOS11 (and higher) operating systems. Linux operating systems are no longer supported.
We are providing a final legacy release of LightBurn 2.0 for users with phased-out Windows or macOS operating systems. Download the legacy release here: Windows and Mac ← Click to start download.
This download is only for users that cannot run the official release on their system.
Introducing Labs Features
Starting in 2.0, we’re introducing Labs features into LightBurn. These features are new tools that are currently in development, but are very close to completion, and ready for public testing.
We’ll be marking all Labs features with a new icon in-software:
If you see this icon and the label “(Labs)” following the name of a tool, you’re looking at a Labs feature. Please experiment with caution, and report any unexpected results on our forum.
The first Labs feature is our new Camera Calibration process featuring AprilTags tracking. Read more about it below!
Dark Mode
You can now select from three Application Themes in the Display tab of the Settings window: System Theme, Classic Dark, and Classic Light. Important note: switching themes requires a restart.
New Built-in Shapes
You can now select and create Triangles, Pentagons, Octagons, Stars, and Dual Stars, from a stacked menu of shape creation tools.
Click the arrow in the corner of the shape creation icon, or click anywhere on the icon and hold, to open the Shape Creation submenu and select the shape you’d like to create.
Edit and Select Shapes After Creation
After creating a new shape, you can now immediately use the handles to Move, Size, Rotate, or Shear it, while the Draw Shapes tool remains active.
Enable Switch to Select mode after drawing a shape in the Editor Settings tab of your Settings to immediately exit the Draw Shapes tool after creating a shape and enable Selection mode instead.
Edit Nodes Toolbar
Activating the Edit Nodes tool now expands a toolbar with buttons for each node editing option. Click a button to activate an option, then click over a node or path to perform that action.
Keyboard shortcuts still work just as they did in previous versions.
Camera Control Window: New Tabs and Options
The Camera Control Window has been updated with new tabs separating tools to Capture and Adjust overlays. Windows users will see additional tabs to control Exposure , Brightness , Contrast , White Balance , Hue , and Focus .
Camera Calibration (Labs)
We’ve implemented a new Camera Calibration wizard with an improved — and easier! — flow. This wizard uses live tracking of an AprilTags pattern to calibrate your camera’s lens.
To access it, right-click in the Camera Control Window and select Calibrate Camera Lens (experimental).
Stacked Boolean Operations Buttons
All Boolean operations are now stacked into a single button. The Boolean Assistant is now the default option, and clicking once will open it.
Click the arrow in the bottom left, or click anywhere on the icon and hold, to open a submenu with individual operations. Selecting an option will perform that operation, and will also make it the button’s active operation, meaning you can subsequently click the button once to perform that operation again.
Cuts / Layers Window: New Icons and Context Menus
We’ve updated the icons in the Cuts / Layers Window so they better indicate the actions each button performs.
You can now right-click any layer to open a context menu with options to disable, hide, flash, or select objects on that layer (or objects not on that layer in the case of disable and hide).
Right-clicking anywhere over the column headers opens a context menu with options for enabling, showing, and sorting layers.
Independent Design and Machine Units
Design Units and Machine Units are now independently adjustable settings.
- Design Units are used in your Workspace, where you create and edit graphics. You can change Design Units in the Settings window or by pressing the mm/in toggle in the Numeric Edits Toolbar.
- Machine Units are used when entering layer settings through the Cuts/Layers Window or Cut Settings Editor. You can change Machine Units in the Device Settings window.
Other Notable Changes
- The Copy Along Path window now has a Select Results toggle.
- The Galvo Rotary Marking window now allows you to visually adjust Output Center.
- Head mounted camera alignment has a new wizard and now uses an AprilTags pattern.
- Macro functions have been moved from the Console Window to a new Macros Window.
Changelog
Design Tools
Expand
New built-in shape types: Triangles, Pentagons, Octagons, Stars, and Dual Stars
- Simple shape creation now also allows select / move / scale / rotate
- Added “Select result” to Copy Along Path
- Text shapes now have an option to remove newline if a variable text CSV field is empty
- Added support for alpha channels in RGB and CMYK images in AI files
- AprilTag and ArUco types added to barcode tool
- Allow temporary undo/redo in Warp/Deform for movements
- Setting to revert back to Select mode after drawing a shape
- Added Tools > Multi-File Trace Image
User Interface Updates
Expand
- Dark mode
- Edit nodes toolbar
- Move to Qt 6 framework
- Added context menu to Cuts/Layers window for toggles
- Stacked button for simple shape operations (Rect, Ellipse, Polygon, Star, etc)
- Stacked button for boolean operations
- Removed decimal points in Speed / Power display if not significant (makes it easier to read from a distance)
- Display Core or Pro in window title
- Force Light Color Scheme for Windows Qt6 and MacOS Qt5 & Qt6 versions
- Application UI theme framework. Enables proper support for dark mode with white icons.
- Added new expanding (accordion) container widget to allow for UI design with less clutter.
- Galvo rotary window now lets you visually adjust the Output Center value
- Updated Cut Settings Editor dialog resize method, allowing it to adapt to UI font size and desktop scaling, while also attempting to keep the dialog height limited for smaller screens.
- Move devices management tools under Laser Tools menus
- Material library icons now use theme colors.
- Revert Dark theme preview colors to default.
- Tweak labs theming for camera calibration
- Add real icons to camera settings
- Changed dark red text on “Additional” tab of Device Settings window to an appropriate theme color to improve readability on dark themes.
- Improved margins, spacing and text styling for Custom GCode Options in Device Settings.
- Fixed bug causing partial theme change if Windows theme is changed while app is running.
Camera
Expand
- Expanded camera control options
- Independent design and machine units
- Faster camera calibration option
- Camera Preview and Capture FPS
- Case-insensitive camera ID matching
- Shut down active cameras when monitor is asleep
- Expanded camera controls
- “Choose Camera First” requirement for camera wizards
- Head camera alignment scaling allowed down to 1% to support microscopes over large beds
- Apriltag pattern generator for head camera alignment wizard
- AprilTag automated head-mounted camera alignment
- New camera calibration process with live apriltag tracking
- Camera control preview will now pause when the tab/window is not visible
- Save Z height above material during head camera alignment
- Faster lens calibration solver
- Allow creating and loading extended camera lens calibrations
Optimizations and Improvements
Expand
- Increased rendering speed of edit window by 20% for complex files
- Increased speed of AI and DXF imports by about 50%
- Added a check for duplicates on same layer when running a job
- Added “Ignore Text” option for DXF imports
Setup Improvements
Expand
- Added --devname (device name) command line argument to choose device on launch
- Added LASER:LaserName command to UDP socket interface
- Added ‘Focus Light’ button for BSL lasers to enable 2nd focus dot
- Automatically load the most recent prefs backup if failed to load prefs.ini on startup
- Allow setting of units during device creation
- Added support for dragging between Art Libraries
- Added ‘Focus Light’ button for BSL lasers to enable 2nd focus dot
- Added a setting to specify you have an RF tube, to disable the “min power == 0” warning.
- Reconnect the device after updating machine settings
- Add Send to Laser option for Material Test
- Allow the user to select whether a GCode device should be regularly polled for the tool position
- Allow dual laser source in Custom GCode
- Emblaser Pro laser focus calibration wizard
- Emblaser Pro firmware upload process requires manual reset step
- Improve IP input control
Existing Feature Updates
Expand
- Added Groupbox, RadioButton and Spinbox Widgets to ProtocolSettings.
- Auto-init sim parameters for galvos, allow “Read from controller” (faked, but good settings)
- Tweaked DXF spline simplifier to do less damage to small shapes
- Added variable power / constant power to XTool protocol
- Restore file load was no longer happening at the right time
- Improved performance of Warp / Deform by not rebuilding Cuts/Layers with every update
- Faster Taper Warp tool update (don’t redraw Cuts/Layers constantly)
- Allow up to 5000 mm/sec for reverse interval speeds
- BSL SDK update, freq limit fix
- Added BSL connection message
- Typo fix in BSL update
- BSL libraries update to stop crash on disconnect
- Changes for Emblaser3
- BSL libraries update to fix unplug crash on Mac / Linux
- Allow decimals in firmware filename for E3 upload
- Removed old API call from BSL proto
- Added missing translation context to backup browser
- Tweaks to Emblaser Pro menu options
- Updates to initial Emblaser Pro settings
- Emblaser Pro WIFI connect now functional
- Tweaks for Emblaser3 GCode output & menu
- Added support for CO2 analog output to BSL protocol
- Minor Emblaser wording tweak
- Minor compilation speedup
- Re-ordered windows in the “Window” menu to make more sense
- EZCad device isn’t “busy” if not connected.
- Material test speed limit upped to 15k for galvos
- Add support for 2nd laser source to JCZ device
- Changed “set laser source” command to streamed version
- Detect support for dual-source JCZ auto-switch
- Sort material test swatches by “heat” output
- Double click macro in manager to edit.
- Offsetter can now show progress for Offset fills, faster offset sorting
- Improved handling for XTool D1 with homing command
- Fixed “simple mode” to not suppress galvo features, like alt source on Sculpfun
- Don’t keep empty flattened shapes
- Faster deform output for bitmaps
- Updated rotary images for Boss lasers
- Node edit now highlights closed paths with a bright green start/end node
- Emblaser Pro updates
- Change Emblaser3 to use new camera lens calibration
- Added grayscale support for BSL devices
- Save background size / shift values with camera settings
- Added support for ‘week of year’ in ISO-8061
- Remember galvo rotary jog step between runs
- Taper Warp now supports inches
- Finally got the language / system locale to play nice together
- All numeric labels now use locale settings
- Added ability to move layers up/down with hotkeys
- Spacing tweaks for “license expiring soon” pop-up
- Enable ability to rescale galvo field
- Improved rendering of bent RTL text
- License flow fix for new renew notice callback system
- License flow fix for new system
- Remove the network option for XTool specific protocol (for now)
- Disable controls if optimizations disabled
- Added ‘Auto Center Imported Files’ option
- Allow more precision for camera align/scale
- Tell users that importing their config is really important.
- Added automatic SVG DPI setting for Illustrator / Inkscape files
- Do not clamp laser Z moves
- Optimize GRBL device framing to the same standard as generic GCode devices
- Increase allowed CO2 freq setting to 200khz
- Press F1 on galvo framing to cycle through the three modes (bound, hull, contour)
- Frame and Start behaved differently with uncommitted changes
- Added info to invalid proxy warning
- Update “position laser” tool to change cursor to indicate snapping
- Allow un-modified media buttons as hotkeys
- Initial support for RD8445
Bug Fixes
Expand
- Get Controller Info wasn’t being called properly.
- Colors of the Legend in the Preview are off if "…
- Colors of the Legend in the Preview are off if “Invert” is enabled
- Recognize Emblaser Pro “Cannot run External GCode while a Job is queued or running” error code
- Fixed font scaling bug that can occur while adjusting the font size slider, located in the Display tab of the settings window.
- Preview wasn’t displaying wobble
- Make fonts saved in 2.0 compatible with older versions
- Fix Show Last Position
- Network Address is validated even for non DSP controllers
- Fix the GoTo button functionality on GCode devices.
- Head camera alignment was not using entered tag size
- 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
- Galvo auto-rotate scan angle was not being reset between jobs
- Handle cancel of Offset Fill
- Invalid custom GCode blocks were getting hidden
- When framing first, job was continuing if canceled after out of bounds warning
- Large images might not load with Qt6 build
- ENG.Tool.pos was set to WPOS instead of MPOS
- Missing LB_LASER definition
- ArtLibrary replace and rename were swapped
- XTool GCode output in mm only
- Galvo rotary / continuous marking would freeze because of an incomplete state setting
- ToolState (jog speed, dist, etc) weren’t being restored properly
- Spelling & Grammar fix for Messagebox when attempting to adjust image with pass-through enabled.
- Jogging from move/control panel now works in relative and absolute mode
- Prevented “Use Selection Origin” setting being shown when in beginner mode.
- Converting float to String missing in Protocol_Gcode_Base::JogStart.
- Grouped masks when grouped with the masked image didn’t save correctly
- Tabs in grouped shapes were not immediately generated
- BSL corfile wasn’t being correctly loaded
- Make sure Move panel always shows up by default
- Changed the way Message boxes determine which option was selected so the correct result is returned in both Qt5 and Qt6.
- Ensure settings dialog always opens on first tab
- Virtual Camera on MacOS were crashing
- Jogging checks for GCode devices
- ShowTwoChoices was configured only for Qt5 responses
- Barcode shape was leaking memory
- Extreme perspective overhead cameras were breaking new overlay reprojection
- Fixed crash from UCCNC not having a comms thread
- Preload sound effects and just trigger them when needed
- Live font update while selecting in combo box for Qt6
- Parse GRBL position correctly when reporting in inches.
- When parsing a DXF, handle CR/LF in either order, BUT properly handle blank lines (2nd instance is not skipped)
- Prevent crash when setting freq > 1000kHz on BSL cards
- Don’t try to remove overlapping lines on offset fills
- xTool’s parser is broken, so always emit X & Y values when cutting
- Ctrl+Click for node edit is more consistent, double-click no longer deselects all, removed some debug output
- Fixed settings and cut settings layouts
- Multi-action button timer-popup would leave button un-checked if the user cancelled out of the menu
- Fixed some spacing issues with Device Settings window
- Fill core_machinecontrol for spindle, coolant, and vacuum
- Lazy fix backup text path orientation so sharing works
- Fixed column spacing for frame dialog
- Reverted New Device Wizard style setting back to Aero
- Added support for AI / PDF files with null objects
- Don’t allow Trim (scissors) on locked shapes
- DXF inline MTEXT height was not applying unit scaling (wrong font height sometimes)
- Using cylinder correction with global passes could cause part of the path to be skipped
- Dev units were not always getting properly set on first app launch
- Incorrect jogging behavior in head camera wizard
- Enable word-wrap in evaluated label of barcode text, so dialog doesn’t widen
- Extra camera streams were being started unnecessarily
- App was crashing when trying to manage saved positions
- App was crashing when trying to manage saved positions without being connected
- Emblaser was not returning to correct Z-height for head camera scan
- Necessary imageformats module was not installed for Qt6
- Custom GCode framing was not in constant power mode
- Framing was sometimes turning off the laser afterwards even though Fire button is pressed
- Material Test center value was not saving
- Fixed crash in BSL protocol during Find My Laser
- Force galvo grayscale to output per-pixel commands
- Emblaser Pro was not reporting position status correctly
- Emblaser Pro protocol was not reporting position status correctly
- Show “System Theme” if user has not set a theme.
- Optimize shapes was wrapping around on open shapes
- Cut Builder path clustering was crashing (fixed / reported on forum)
- Pressing enter in some camera dialog distance spinboxes would activate nearby buttons
- Fix switching between metric and imperial in EasyFloatWidget
- Fix edgecase crash in prim/vert cache loading
- UI Style change for; New Device Wizard, USB Device Wizard, Bridge Discovery Wizard to ensure they respect application theme and all text is readable.
- Better detection of shared nodes in Trim / Scissor tool (now handles intersections at nodes correctly)
- Fixing GRBL error 24 on pause/resume.
- Prevent download from crashing on DNS fail
- Pause resume checks were overzealous and causing issues.
- Fixing late night bugfix that introduced another bug on pause/resume for GRBL.
- FillCameraFPS was crashing, possibly when unusual cameras had no valid modes
- Theming and Icon Recolor bug fixes
- Allow device size mismatch to work correctly when imperial dev units are selected
- Fix “Disable alllayers” typo
- Allow disabling G53 being emitted in Custom GCode.
- Added missing unit conversion for the GoTo position inputs in the move laser widget.
- Remove null-terminator from strings before using “endswith”
- Machine size mismatch logic failed with swapped X/Y axis
- Fixing theme related bugs reported in LightBurn 2.0 RC2.
- Screensaver would pause camera preview in wizards but not resume afterwards
- Memory leak in camera overlay
- Camera FPS selection list sometimes had a 0 option, and was not clearing when no camera was selected
- Clarifying and updating behavior of the device size mismatch dialog
- Using Go To X=0 Y=0 would not move X/Y coordinates if using non-relative movement.
- Select smaller than shouldn’t include locked or hidden shapes
- Red-light always on wasn’t triggered on connect for BSL devices
- Correctly update sizing of Node Edit toolbar
- Fixed preview line color visibility.
- Doing a crosshair update when pressing the “Get Position” or “Go To” buttons.
- Cut settings overscan value now updates correctly as overscan % spinbox value is changed.
- Isolated variables when doing a simple command query instead of using the templating for custom GCode.
- Image resampler wasn’t handling a couple out-of-bounds cases
- Hide all panels on F12
- Move the tool indicator in the edit window when jogging with buttons and not just keyboard moves.
- Preview color for Traverse/Move does not match previous LightBurn versions.
- Fixed issue with saving theme selection on MacOS.
- Custom GCode string variables access was incorrect.
- When editing an existing virtual array, need to set the shape copy callback
- PointIntersectsCurve() had precision issues and could false trigger
- PointIntersectsCurve had precision issues and could false trigger
- Attempting to resolve the signing issue again.
- Consistency check was firing when running debug builds
- Display name of device was getting nuked in wizard when changing other values
- Bundle import would warn if the file was created by a later Major Version Number, but not Minor.
- Fixed taper warp parallelogram case, also tripled the speed
- Star shapes wouldn’t select if grouped and moved
- Keeping the laser fire state while using the Go To button
- Adding missing key adjustments for the jogging distance on Z axis
- Trim tool could mangle open compound paths
- Auto-Join now also tries to close shapes, Close() wasn’t setting the “ClosedDirty” flag
- Fixing the jogging issues for GCode machines
- Fixed directory creation issue on MacOS.
- Fix initialization of device units in device settings
- Fixing XTool protocol homing and jogging behavior.
- Fixing the ToolModel to return WPOS instead of MPOS in LightBurn
- Prevent app hang on close when network Ruida device selected
- Prevent app hang on open/close projects when network Ruida device selected
- Updated drag string behavior to show both line ends correctly
- Fixed speed output units in Variable Text Cut Setting mode
- Remove Qt version check from Connection_UDP::GetMaxPacketSize
- HSpace value messed up alignment
- Baking variable text didn’t update shape bounds
- Don’t render shapes with zero prims as a single dot
- Trace shouldn’t crash if given an empty image
- QT bug on importing SVG hex-based colors
- Correctly handle comma vs period numeric separator for different locales
- Patterned vector fills could crash the AI file importer
- Click or drag selection of a node could add to the list multiple times
- Logic for grid array total size was not working for total width/height calculations
- Fixed text centering / alignment
- Fixed issue causing Laser Move window to overwrite the users Jog Speed and Distance values if the Laser Power was set above 0%.
- Grouped images framed wrong after moving
- Double-click + drag now shows drag rect
- Numbers with group separators broke the parser
- Unnamed/unused DXF insert blocks weren’t cleaned up properly
- Cancelling 3D slice would continue to burn
- Device settings “query regularly for device position” label widened
- Material test size wasn’t based on visible output
- Linked material layers would retain layer index when edited with galvo profile
- Added an error message if export failed
- Sketch trace was inverted
- Camera preview vertical alignment
- Occasional GCode protocol crash when editing and exporting devices
- Don’t allow two modeless dialogs to open at the same time
- DSP position query wasn’t updating WPOS
- Support Height should be a per-device preference, not a global preference
- Head camera alignment wizard Support Height and Material Height control behavior fixed
- Head camera Z position was being double-converted on imperial machines
- Resolve LB crash-on-exit introduced in earlier fix
- Head mounted camera overlay progress dialog fixes
- Fixed issue with cut settings window being too large for smaller monitors.
- Page scale no longer includes shapes from hidden layers when printing.
- Use Selection Origin should be disabled in ‘Absolute’ mode
- Show barcode cursor while in create mode, disallow creation while the pop-up is displayed
- Custom GCode dual tool was not always outputting tool on
- Ellipse tool ovals are not exporting properly to DXF.
- Save Ellipse EndParam with double precision as float value is rounded up by qt and is > 2Pi
- Fixed “Port failed to open - already in use?” messages when reconnecting to same device
- Allow importing vendor bundles from devices import
- On emblaser, save and restore extra head camera preferences to lensdata.txt
- New camera lens calibration wizard was not storing resolution
- Include cameraHeadZStart in camera settings export/import
- Was not saving/restoring cameraSizeX/Y settings to Emblaser lensdata.txt
- Cut Shapes didn’t always work at node intersections
- Instanced shapes with no units were positioned incorrectly
- Don’t allow any barcode create / drag / select if a dialog is up
- Suppress kerf warning on filled shapes
- GCode settings were not being shown for LinuxCNC and Custom GCode
- Show save GCode button even in beginner mode for LinuxCNC
- Head-mounted Cameras would crash after Trace
- Don’t use infinite timeout for Ruida serial send
- Ruida auto-home flags were wrong
- Fixed a bug in the Ruida setting for limits enable
Miscellaneous
Expand
- Added bundle text to Import Preferences button in devices dialog
- Fix zstd license typo
- Emblaser Pro changes
- Filter out system default serial ports on Mac OS
- Added forced EULA acceptance on application start
- Title case consistency
- Display warning to user when configured machine size doesn’t match reported machine size
- Wrong app name used in crash message
- Change Log now automatically downloaded and displayed to the user when a new version is available
- Keep track of Imperial vs Metric mode internally
- BSL Config page said EZCad
- Allow full GS1 barcode support
- Only allow exporting bundles from devices dialog
- Allow importing bundles from devices dialog
- Prevent update notification popup from showing until after new project dialog
- Minor tweak to self check
- Save Cylinder Correction and Rotary configs to project
- Remove Grbl M3 and LPC as options from Find My Laser
- Remove the Emblaser specific first run popup
- Update references to FTDI driver in installers
- Limit installer from running on unsupported Windows versions
- Added consistency check comments
- Emit the entered license key to debug because sometimes it has incorrect characters
- Implement proper tooltips for all image mode controls
- Warn user if rotary config loaded while using Ruida device
- Fixed “Require Framing” galvo tooltip
- Do not show rotary axis config for Custom GCode devices
- Cleaned up some runtime debug warnings