# 2.0.04 - Updated BSL library for MacOS - Fix for XTool position query # 2.0.03 - Empty shape could crash gcode generation - Bundle import could crash application - Fixes for macro panel issues - Fixes for single line font issues - Better handling of Enter key in Repeat Marking - Fixes for intersection snaps - Fix for BSL "Done Marking" signal issue - Fixes for shape docking issues - Further High DPI scaling fixes - Remove clamping for discrete jogging - Fix for continuous jogging in G54 mode - Fix for head mounted camera unit conversion - Fix for Mac OS Ruida rate limit issue - Fix for synchronous mode serial transmission issues - Updating displayed position to 0,0 after homing on Ruida - Fix for hotkey and menu conflicts in translations - SVG 's' command didn't work for sequences of points - Fix for Mac OS framing hang - Fix for a regression with newer Trocen hardware - 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. - Global fix for Qt image size limitations - Fix for glitches with font chooser on Mac - Fix for Stop button not properly reseting laser state to off - Updating the logic & text of the device size mismatch warning - Fix for BSL lens correction ### Existing Feature Updates - Move "library" buttons under the lib to allow shorter vertical (#1170) - Move "library" buttons into a menu to allow shorter vertical - Choose initial device units that make sense on manual create - Updated dash pattern to scale with DPI, made 1-pixel pen the default draw width - Updated BSL grayscale mode, 2nd source analog output switch - Allow Shift + RClick to flash layer # 2.0.02 - Fix for 3D slice crash - Fix for certain zoom levels causing performance issues - Fix for possible Ruida file corruption - Fix for barcode text rendering - Fix for some SVG import issues - Ability to create "Flash Layer Shapes" hotkey - Minor Tweaks to Cut Settings height # 2.0.01 - Fix for issues with High DPI scaling modes - Fix for XTool jogging back to zero between cuts - Fix for Go to Origin - Fix for dragging nodes in node-edit mode - Fix for Fire button power setting - Fix for galvo cut settings dialog layout - Fix for masked images when using 3D Slice mode - Fixes for various jogging issues - Fix for rotary mode not showing the enable indicator - Show error message when failing to load image due to memory limits - Display an error message when imported PDF has unsupported stream content - Enable relative arrow-jogs with ruida # 2.0 ### Design Tools - 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 ### UI Updates - 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 - 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 - 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 - 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 - 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 - Added missing translation context to backup browser - Tweaks to EmblaserPro menu options - Updates to initial EmblaserPro settings - EmblaserPro 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 - 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 - 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 co… - 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 - 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 - 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