# Change Log for LightBurn-v2.0.00-RC-2

## Changes Since LightBurn-v2.0.00-RC-1

### Infrastructure
- Fix changelog generation for new tags in type

### Existing Feature Updates
- 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 (#750)

### Bug Fixes
- 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
- Remove unused icon theme system from Qt5 builds of LightBurn and MillMage to prevent application crash on MacOS.
- Theming and Icon Recolor bug fixes
- Allow device size mismatch to work correctly when imperial dev units are selected (#754)

### Miscellaneous
- minor tweak to self check
- Save Cylinder Correction and Rotary configs to project (#745)
- Remove Grbl M3 and LPC as options from Find My Laser (#757)
- Remove the Emblaser specific first run popup (#755)



## Other Changes Since LightBurn-v1.7.06

### Bug Fixes
- ENG.Tool.pos was set to WPOS instead of MPOS (#606)
- missing LB_LASER definition
- ArtLibrary replace and rename were swapped
- XTool gcode output in mm only (#621)
- 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 (#630)
- Prevented Use Selectoion 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 (#640)
- Tabs in grouped shapes were not immediately generated
- BSL corfile wasn't being correctly loaded
- Make sure Move panel always shows up by default (#643)
- 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 DEV-824
- 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 (#662)
- 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
- Call ENG.Initialize() after construction to connect signals
- Fixed some spacing issues with Device Settings window
- fill core_machinecontrol for spindle, coolant, and vacuum (#682)
- Lazy fix backup text path orientation so sharing works (#681)
- 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 (#703)
- 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 (#716)
- lbcli was not using --qt-version option for depends or pre-build (#717)
- 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 (#715)
- 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 (#723)
- 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 (#726)
- 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. (#743)

### 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 (#616)
- Added forced EULA acceptance on application start (#619)
- Tool changes will be emitted if tool hash is different if not ATC
- Temporarily disable dark theme until UI fixes are implemented.
- Fixed typo
- Title case consistency (#673)
- cleanup Qt lupdate warnings
- 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 (#706)
- Change Log now automatically downloaded and displayed to the user when a new version is available
- Keep track of Imperial vs Metric mode internally (#711)
- BSL Config page said EZCad
- Allow full GS1 barcode support (#735)
- Only allow exporting bundles from devices dialog (#730)
- Allow importing bundles from devices dialog
- Prevent update notification popup from showing until after new project dialog (#742)

### Infrastructure
- Separate files names for each Qt version
- Split change log for each app and updated versions (#615)
- memory diagnostics
- memory diagnostic changes
- Cancellables, camera async fixes, driver fixes
- Various updates and fixes to language tooling
- Added option to fix title case translations in lupdate
- adding a few analysis tools for languages
- Add retry logic for stupid stupid Apple notarization (#701)
- Add language comment analysis command
- trying to fix webp format loading for MM (#720)
- Only build qt 6.5 except for dev
- Fixing job Qt version setup

### User Interface Updates
- Move devices management tools under Laser/CNC Tools menus (#617)

### Code Refactors
- Added Shape->GetLayerPriority() function, so less code needs #ifdefs
- Use new GetLayerPriority() function to avoid crashes in MM with shared code
- QSVector adapted for Qt 6.5 and 6.8
- msvc linker and qt deprecation project options
- remove pQCam reference
- updated .pro files with Qt6 compatible MacOS build options
- patched up ModelShape::GetScene for Qt6
- enabled Qt backfill camera drivers instead of WinRT
- cleanup comments prior to push
- Using optionals in toolstate instead of float
- sync up vision classes from QtCameraTest
- add /bigobj to cmake flags to fix C1128
- initial hack at cameracap to support new Vision classes
- deviceChange event
- added L8 and RGBA frametypes to both WinRT and AVF drivers
- HTTP Cameras and mode selection
- AV Video driver L8 frame type fixes
- QLBFontComboBox::highlighted
- compatibility and fixes for Qt5 and MM
- reference to AVVisionDeviceSource
- initial head mounted camera alignment wizard update
- reintegration of QtCameraTest changes
- explicit shutdown of camera sources
- Formalizes ToolModel, ToolSettings, ToolState. Adds OriginType.
- Use OriginType as part of the protocol and correct behavior of jog widgets.
- Resume button wasn't always sending the resume command for gcode devices.
- Migrated update checker to use Core_Download
- framing now goes clockwise
- all framing goes through TraceTightFrame now
- remove deprecated ShowFrame methods
- Material Test classes were still named for galvo even though they are now generic

### 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 (#659)
- Restore file load was no longer happening at the right time. Consolidated code between apps
- Improved performance of Warp / Deform by not rebuilding Cuts/Layers with every update
- Faster Taper Warp tool update (don't redraw Cuts/Layers constantly)
- Don't auto-revert to select mode for Text, add auto-switch to select mode to MM
- Cleaned up a bunch of compiler warnings
- Cleaned up a bunch of compiler warnings
- Allow up to 5000 mm/sec for reverse interval speeds
- BSL SDK update, freq limit fix (#699)
- 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

### New Features
- Qt6 Dark Mode and Cameras (#620)
- Dark Mode
- dark mode splash screen
- Add Has ATC option
- Add Has Tool Probe option
- Added new expanding (accordion) container widget to allow for UI design with less clutter.
- Automatically load the most recent prefs backup if failed to load prefs.ini on startup
- Camera Preview and Capture FPS
- new CameraPreferencesChanged event
- case-insensitive camera ID matching
- shut down active cameras when monitor is asleep
- display Core or Pro in window title
- decouple design units from machine units (#663)
- allow setting of units during device creation (#672)
- Added support for dragging between Art Libraries (#674)
- Added 'Focus Light' button for BSL lasers to enable 2nd focus dot
- Force Light Color Scheme for Windows Qt6 and MacOS Qt5 & Qt6 versions
- Allow temporary undo/redo in Warp/Deform for movements (#679)
- Added a setting to specify you have an RF tube, to disable the "min power == 0" warning.
- Setting to revert back to Select mode after drawing a shape (#683)
- 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
- Reconnect the device after updating machine settings (#705)
- new camera calibration process with live apriltag tracking
- Application UI theme framework. Enables proper support for dark mode with white icons.
- add Send to Laser option for Material Test (#738)
- Allow the user to select whether a gcode device should be regularly polled for the tool position

### Language Updates
- fixing title case translations
- Fix translations that should not have been marked as unfinished
- reconcile some mismatched translations
- update all languages
- Fix wording for rubber band outline DEV-821
- Fix wording in bundle dialogs DEV-861
- Remove incorrect tool tip DEV-870
- Fix capitalization in center finder DEV-942
- Start on adding Ukrainian language
- Update translations