# Change Log for MillMage-v0.9.00-RC-3 ## Changes Since MillMage-v0.9.00-RC-2 ### User Interface Updates - Changed layout of probe settings dialog from portrait to landscape so it will fit correctly on smaller displays. ### Bug Fixes - Initial 3D relief plunge with Z-bottom bug - For all cut types warn in the GUI if startDepth is below the stock depth. For Texturing warn in GUI and if generated cut is below the stock depth. - Fixed inability to enter start or final depth percentage above 12% when units in inches - Fixed Sync Views toggle to save state - Fixed issue where framing could use the wrong origin offset - Custom GCode was not using custom header when framing - Duet / RRF HTTP "You are currently streaming to your device" on shutdown when unconnected - Removing spiral entry type for 3D roughing passes - Fixed RestoreDefaultLayout to work in Qt 6.11 ## Other Changes Since MillMage-v0.8.02 ### Existing Feature Updates - Start point drawing improvement - Map3D faster rendering - Made 'Units' toggle clearer - Another ~6% speedup - More optimal raster pocket traversal - Added Relief operation - Cached operation outputs - much faster cut build / preview cycle - Better patrial redraw logic for preview/sim - Added new controllers to drop down menu, with updated gcode defaults as a result. - Adding project out of bounds checks to account for being over the machine limits with the project depending on the coordinate offsets. - Control Mode drawing improvements - Created a dialog To edit Workpiece Origin Coordinates from the Move Widget - Allow read of simulation values for custom gcode machines if they are GRBL flavour. - Cleanup code for improper use of CutBuilder Pointer in the static sim widget - Improvement to Operations View to show warnings and errors and hint info. - Added tool drawing to 3d preview - Improve preview interaction rate - Optimize Fluting paths - Improved depth sim speed for tapered bits - Allow Cut Settings values Start Depth and Final Depth to be entered and kept as a percentage instead of in specific units. - Changed the Light Mode, Preview Travel Move - Line Color to the same blue as in Dark mode to be more consistent and different from Cut moves. - Select when pasting from other apps - Change Framing to handle Tool Offsets for Framing according to Cut Type Used and added ability to frame selected shapes. - Save & restore Undo History position & size - Changed QNumEntry to allow comma or dot for the decimal place and ignore previous commas and dots, show thousands separator as thin space. - Show 'Cmd/Ctrl-Arrow:' instead of 'Ctrl-Arrow:' in settings to indicate Mac command. - Filter path & weird chars out of the document title in exported AI files - Save simulation quality setting with project - For V-carve, if startDepth is not zero, drop slower - Increase the font preview limit to 4000 fonts, speed be damned - Control Mode, added GCode search options and jump to start of Operation in the right click menu of the GCode List. - Allow cut, copy and paste of CNC Operations in the Ops Panel - Allow cut, copy and paste of CNC Operations in the Ops Panel. - Update to latest VC Redist and remove unneeded version from installer - Break apart and Auto-join now preserve tabs - Improve error message when running Preview or Control Mode or job, and there is nothing to output. - Added custom shortcut keys for user defined macros. - Don't validate numeric fields on each typed character - Add app version number to prefs - Change the Export GCode "Tool" column to use the tool's Display Name instead of diameter/type - Double-click in node edit to convert to path - Highlight the current preview texture - Improve theme so selected items and progress bars retain part of their original blue color instead of turning white for light theme and black for dark theme. - Warp and Deform weren't retaining bitmap properties - Improved path generation of large-stepover 'missing regions' pass - More optimal v-carve output ordering - NewDeviceWizard shows a message that user does not need to edit comms settings except when resolving problems - Added Z Block probe type to probe wizard - Ensure consistent G-code in messages and gui, capitalize Error: in console. - If user runs probe wizard after run start, show a warning before starting the job to remove the probe and wires. - New comm status of Not Responding so error message can distinguish between disconnected and not responding. - Changes to License dialog to be more clear and have links to web pages for help - Auto un-cache pro op errors - Auto-exclude bitmaps from pocket operations ### Bug Fixes - 3d preview multithread ARM issue - New project with no devices would crash - Choosing the SAME texture shouldn't modify the project - Fix to allow Ctrl-Q to close MM even when in Control Mode. - Prevent "Missing GCode For selected settings" warning in Device Settings dialog when inherited placeholder is valid - Fix confusing Troubleshooting Dialog by formatting all messages as simply as possible - Machine size warning was backwards - Chamfer wasn't properly using start/final depth values - Ops without shapes would get assigned to shape 0 - Add space after emitting G53 - Handle malformed xml data better and report more issues without crashing when loading a damaged or incorrect file. - Fixing the machine boundary calculations for the project out of bounds warning. - Fixed the Tool and GCode cursor positions when device units are in inches. - 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 - Remove unnecessary M9 coolant off command at end of jobs - 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 - Cleaned up duplicated mode & Z outputs - Zero Axis buttons were incorrectly greyed out for some protocol flavors - Fluting Start Point wasn't respected - Fix texture spelling - Removing the annoy-a-tron warning until we have a better solution to convey the problem. - Suppress Operations Export ATC warning when only one tool in use - Fixing minor syntax problem. - Deform tool issues with grouped base shapes - Limit ramp angle to 1 to 89 degrees - Removing the remaining annoy-a-tron warnings. - Custom gcode rotary diameter setting was never emitted - Don't escape tab characters in the console log - Fixed failure to read xml file if ANY unexpected key exists in the file, and key name case mismatch for tool VendorURL and Notes. - 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 - Removing tiny prims could cause open shapes - Fix error with drill tip measurement - Add unit modal to the beginning of the probe commands during the wizard. - Add/remove shapes in an op didn't work with grouped shapes - Texture op didn't work with Z-Bottom origin - 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 - Rest Pocket could fail on very tight tolerance areas - Tab changes didn't clear op cache - 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. - Fix start depth & top/bottom for relief - Don't set file type association in pre-release mode - Fixed typos in Quick Nest messages - Fixed potential memory leak when validating custom gcode settings. - Don't intercept the numpad while edits are active - Fixed loading units when coming from older versions - ZigZag ramp didn't work for vcarve with start depth != 0 - Closed shapes *could* become open during tiny line removal if the line connected to the first node in a shape - Closed shapes *could* become open during tiny line removal in - Select Results option on Copy Along Path would crash - A change to SpatialPrimQuery for cut optimizer broke ramp fill - Output toggles were changing when outputting gcode - Ungrouping text that was bent distorts or loses the bend - Check for last control units was using the wrong parameter - Fix issue with automatically enabling tabs on add - Ensure web files are always loaded - Show correct offset table when reading scanning offsets - Fixed MessageBox display of Rich Text vs Regular Text messages. - Fixed title casing in probe configuration - Some Custom Gcode values were getting unit conversions when they shouldn't - Removing SSL certificate generation and usage for the API to be HTTPS - Exporting to SVG could crash with inner shapes that had no operation - Launching and immediately closing could cause a crash in the webtool loader - Make virtual keyboard show when using tablet and touching a spin box or custom num editor (Windows only) - Changing device (even on startup) set modified flag - Medial offsetter should make closed shapes - Fix Bitmaps with invalid XFORM causing crashes and problems loading and in UI - Bitmap relief transform was incorrect if grouped - Fixed title casing in require control mode toggle - Virtual array caused problems with cached ops - Stale pointer could cause crash when switching units - Cached operation errors prevented op from rebuilding - Cached tool info not updated on tool change - Fixed issue causing viewport of 3D import dialog not rendering. - Tell QSerialPort not to restore the pre-open DCB on close so closing the port no longer reverts DTR back to - Further hardening against race condition crash - Fixed typo in depth map converter - WebTools was only generating a timestamped URL once at start - Fixing the Buy MillMage button wrongly displaying "Buy LightBurn" on first start. - Medial offset missed some segments - Layer names were not being copied to cut library - Min tabs was not alwayws being respected - Apply Mask allowed reusing a shape already applied as a mask - Engrave Acceleration Z in Additional Device Settings was being read from the controller as incorrect units - Default tool def should be marked as a project tool - Fix numeric entry equation parsing issue with comma vs period - Probe definition dialog had different input limits that probe execute. - Probing allowed 0 value for XYZ search distance. Changed to sensible minimum. - Prevent probing from trying to continue sequence if failure occured. - Updated dogbone tool to use double-precision math to reduce failure cases - Keep edited workpiece dimensions when switching device profiles in the project wizard. - Handle new text width properly after a copy paste to prevent font position changes. - Renderbuffer being rebuilt constantly due to incorrect comparison. - Coordinate pocketing parameters in UI - Fix double jpg extension on export - Set Qt::AA_DontShowIconsInMenus to false - Fix title case across all entries in the right click menus. - Fix framing bounds computation to be more accurate to selected outputs. - Bad slot virtuals caused some update functions to not be called in the operations UI - Fix to trim tool not working for some cases. - Select all shapes for an operation accidentally included shapes from other pages. - Select all shapes for an operation accidentally grabbed shapes from other pages. - Relief roughing / finishing issues - Toggle Panel visibility was missing toggling the Pages panel. - Pocket lift retracts were checking the wrong bounds - Final offset pass bug - Fixed issue causing all library tools to be treated as project tools, preventing tool deletion and certain modifications. - Roughing shapes with holes that contained other shapes could repeat some areas - Solve error generating shapes after deleting shapes or pages. - Fixed issue causing device settings dialog to cutoff custom gcode options. - Removed limit 50% maximum from stepover in tool library. - Fixed a bug causing the preview window texture tooltip to display the same image for all textures. ### User Interface Updates - New Warning icon added with better contrast at smaller sizes. - Tab key now changes focus on Tool Library notes text input instead of indenting. - Tool Library Feeds and Speeds layout rows now have uniform heights. - Created outlined labs icon with white border for visibility on dark device logos - Added checks to ensure the Tool Library dialog window is not drawn outside the screen boundaries. - Improved visibility of toolbar drag handles and overflow arrows. - Added padding between items in the main toolbar. ### New Features - Show Custom GCode Flavor in Device List - Marlin 2.1 support in MillMage - Support for Duet / RepRap GCode Flavor - DragonDrop file transfer wizard - initial iteration - Ability to wrap web-based tools into integrated app features - Center Line Trace - Adding a local & network-available REST API. - Adding DragonDrop support per device profile. - Adding target buffer override for gcode devices in case the firmware doesn't or incorrectly reports the buffer size. - Added 3D model import feature. - Added depth map creation from imported 3D models. - Add filtering for FluidNC flavor to clean [MSG] spam in the Console - New Duet/RRF HTTP flavor for Custom GCode - Support for Duet/RRF M291 message box commands - Added AcceLaser hybrid Gantry + Galvo device support. - Added LiDAR surface scanning with height-compensated engraving. ### Code Refactors - 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 - Cleaning out some warnings - Initial import of WebApi library and creation of connection type - Modified device shutdown logic to cleanly release device resources - Disallow LaserEvents after mainwindow has already closed - Added GCodeDisplayFlavors and UserGCodeBlockManager::FillFlavorComboBox - Split or reassign protocol destructors to Release methods ### Infrastructure - Added core_icontools to build system via CoreGui.pri and core_code.cpp ### Miscellaneous - Allow trialing Pro mode with a valid Core license - Update Buy and Upgrade links to be ready for MM Pro - Allow pasting of valid URLs into Web Tool browser - Added legal warning that must be accepted before SVGNest can be used - Added 'Paste in Place' to right click context menu