Added custom gcode job header auto generation and editing as a gcode block.
Custom gcode can now have escaped text sequences.
Make G20/G21 modals editable gcode blocks for custom gcode.
Support Dxf Export for AC1009 & AC1021
Split out Control Units from Device Units
Added toggle switch to disable KT332N U - Z axis mapping
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
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
Show Custom GCode Flavor in Device List
Support for Duet / RepRap GCode Flavor
Overlay capture uses Warm-up Frames setting when camera previews are paused
Ezcad2 Galvo Z Control will return in Avengers Doomsday
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
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
Give stacked buttons a bit of forced extra width to allow side clicking
Move “library” buttons under the lib 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
Reduced cut setting window 10 pixels more by reducing the dither preview size
Mood sensor added. Will generate more bugs when user is angry
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
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
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
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
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
Allow for extra ok’s from 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
Allow support height for Custom GCode
Save & restore Undo History position & size
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]
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
Created outlined labs icon with white border for visibility on dark device logos
Bug Fixes
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
Fixed a rare crash caused by a perfect storm of geometry, timing, and user confidence
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 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
Kerf was not behaving like before, and not correct re inner and outer direction.
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
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.
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.
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.
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 “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 LB 1.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
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.
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.
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
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
Un-grouping native shapes after mirror transform caused flip
Removing tiny prims could cause open shapes
Grayscale preview showed black until the power changed
Several fixes to get the latest camera upgrades in a reliable state for Lightburn 2.1 release
Custom GCode CanZeroAxis was not always returning a value for less used flavors
Unprintable escaped characters in Custom GCode example blocks were appending odd HTML characters
Fixed crash in Find My Laser when e-stop is engaged. WaitForCompletion and TerminateExecution now check doQuit for graceful thread shutdown.
Fixed device discovery polling sleeping 20 seconds instead of 20 milliseconds in ConnectJCZDevice, ConnectEZC3Device, and ConnectBSLDevice.
Head Cameras “Single Capture” was not returning to scan height
Save Background Capture was flipped
Resolved ALL ongoing legal issues from the 6th incident.
Rename Falcon A1 to Falcon A1 Pro
Split line and fill settings into tabs
Setting selected_camera_type properly now
Defer abs coords warning on alignment widget to first next press
Clamping the tool’s movement to be within the workspace.
Fixed typos in Quick Nest messages
Elevated Incorrect Alignment Calibration to Error
Circle-check-solid.svg - circle-check-solid.png for proper pixmap on mac
Fixed potential memory leak when validating custom gcode settings.
Miscellaneous
Update Darkly Labs links and logo
Add ZhiYuan wrapper for Ruida-compliant UDP protocol
Update Mach and UCCNC gcode profiles
As always, if something looks wrong in Preview, believe Preview. It has seen things
Add Skip this Version option for updates
Allow overriding of G54 with other coordinate system in Custom GCode
Added “flibertigibiting” as a new laser mode for the vibe coders to feel comfortable