- (Add) Layer preview - Outline: Skeletonize
- (Add) Actions - Export layers to skeleton: Export a layer range to a skeletonized image that is the sum of each layer skeleton
- (Add) Pixel editor - Text: Allow to rotate text placement by any angle (#206)
- (Add) Calibrate - XYZ Accuracy: Drain hole diameter (#205)
- (Add) Tool - Light bleed compensation: Compensate the over-curing and light bleed from clear resins by dimming the sequential pixels
- (Add) Infill: Honeycomb infill type
- (Upgrade) MessageBox from 1.2.0 to 1.3.1 to fix the small size messages
- **Shortcuts:**
- (Add) (Ctrl + Shift + R) to turn on and cycle the Rotate modes
- (Add) (Ctrl + Shift + F) to turn on and cycle the Flip modes
- (Add) (Ctrl + Shift + B) to select the build volume as ROI
- **GUI:**
- (Add) Allow to drag and drop '.uvtop' files into UVtools to sequential show and load operations from files
- (Change) Rotate icon on layer preview
- (Upgrade) AvaloniaUI from 0.10.3 to 0.10.4
- **Tools:**
- (Add) 'Reset to defaults' button on every dialog
- (Improvement) Window size and position handling
- (Improvement) Constrain profile box width to not stretch the window
- (Improvement) ROI section design
- **Dynamic lift:**
- (Add) View buttons to show the largest/smallest layers
- (Add) Light-off mode: Set the light-off with an extra delay
- (Add) Light-off mode: Set the light-off without an extra delay
- (Add) Light-off mode: Set the light-off to zero
- (Improvement) Disable bottom and/or normal layer fields when the selected range is outside
- (Add) Settings - Automations: Light-off delay set modes
- (Fix) Exposure time finder: Add staircase, bullseye and counter triangles to feature count at thumbnail
- **Tools:**
- (Add) Pixel Arithmetic
- (Add) Layer arithmetic: Operator $ to perform a absolute difference
- (Add) Allow to save and auto restore operation settings per session (#195)
- (Add) Allow to auto select the print volume ROI
- (Add) Allow to export and import operation settings from files
- (Improvement) Calculator - LightOff delay: Hide the bottom properties or the tab if the file format don't support them (#193)
- (Change) 'Arithmetic' to 'Layer arithmetic'
- (Remove) 'Threshold pixels'
- (Fix) Solidfy was unable to save profiles
- (Fix) A redo operation (Ctrl + Shift + Z) wasn't restoring the settings when a default profile is set
- **Operations:**
- (Fix) Passing a roi mat to `ApplyMask` would cause unwanted results
- (Improvement) Allow pass a full/original size mask to `ApplyMask`
- **Scripting:**
- (Add) an script to create an printable file to clean the VAT (#170)
- (Improvement) Allow to change user input properties outside the initialization
- (Improvement) Auto format numerical input box with the fixed decimal cases
- (Add) Settings: Section 'Tools'
- (Improvement) GUI: The 'Lift, Retract and Light-off' at status bar now only shows for the supported formats
- (Fix) Print time estimation calculation was wrong since v2.9.3 due a lacking of parentheses on the logic
- **Exposure time finder:**
- Add a enable option for each feature
- Add a staircase: Creates an incremental stair at top from left to right that goes up to the top layer
- Add a section dedicated to the bullseye and revamp the design
- Add a section for counter triangles (this will take the space of the old bullseye)
- Allow negative fence offset for zebra bars
- Allow to preview the exposure time information
- Changed some defaults
- (Add) Layer actions - Export layers to animated GIF
- **Note:** Non Windows users must install 'libgdiplus' dependency in order to use this tool
- (Add) Tools - Dynamic lifts: Generate dynamic lift height and speeds for each layer given it mass
- (Improvement) File formats using json files are now saved with human readable indentation
- (Fix) GCode builder: Raise to top on completion command was not being sent when feedrate units are in mm/min
- (Fix) Tools - Layer Range Selector: Fix the 'to layer' minimum to not allow negative values and limit to 0
- (Upgrade) AvaloniaUI from 0.10.2 to 0.10.3
- (Change) PrusaSlicer printers: Set 'Light-Off Delay' and 'Bottom Light-Off Delay' to 0 as default to allow UVtools auto-compute the right value once open the file in
- **Exposure time finder:**
- Optimize layers by merge same position/exposure layers
- Add a fence option to the zebra bars
- Add a option to pattern the loaded model and generate multiple exposures on that
- Allow to generate tests without the holes feature
- Prevent from using more chamfers than the base height
- Removed two of the largest holes
- Hide not so often used 'Multiple brightness' and 'Multiple layer height' by default
- Disable Anti-Aliasing by default
- Change 'Part margin' from 1.5mm to 2.0mm
- Change 'Multiple exposures - Bottom exposure step' default to 0
- Fix a error when generating tests with multiple exposures
- Fix some typos
- **XYZ accuracy test:**
- Change 'Wall thickess' default from 2.5mm to 3.0mm
- (Improvement) Allow compute print time without a lift sequence
* **File formats:**
* PhotonS: Implement the write/encode method to allow to use this format and fix the thumbnail
* VDT: Allow to auto convert the .vdt to the target printer format using the Machine - Notes, using a flag: FILEFORMAT_YourPrinterExtension, for example: FILEFORMAT_CTB
* (Fix) Unable to convert files with no thumbnails to other file format that requires thumbnails
* **Tools:**
* (Add) Re-height: Option to Anti-Aliasing layers
* (Fix) Morph and Blur: The combobox was not setting to the selected item when preform a redo operation (Ctrl+Shift+Z)
* **GUI:**
* (Change) Progress window to be a grid element inside MainWindow, this allow to reuse the graphics and its elements without the need of spawning a Window instance everytime a progress is shown, resulting in better performance and more fluid transaction
* (Improvement) Clear issues when generating calibration tests
* File formats: Sanitize and check layers on encoding/saving file, will thrown a error and prevent the save if found any
* GCode Parser: Do not sanitize the lack of lift height on a file to allow read files back with no lift's on the layers
* CWS: Zips containing files without numbers was interrupting the decode method on first cath (#180)
* Tool - Change resolution: Only manipulate the layer image if the new resolution is different from the image resolution
* **Operations:**
* Force validate all operations on execute if they haven't been before, if validation fails it will show the message error
* Add some utility functions to ease layer and mat allocation in the file
* Layer remove: Disallow to select and remove all layers
* Tool - Edit print parameters: Retract speed wasn't propagating the value to normal layers
* File formats: Better control, set and checking for null/empty thumbnails
* **Scripting:**
* Add scripting capability, this allow to run external scripts inside the GUI and take advantage of visual layout to display user input fields
* Scripts run under the "Roslyn Scripting API" and can make use of the whole C# language, this mean a huge boost compared to PowerShell scripts
* Scripts are written in the same way UVtools is, by learning and programing scripts you are learning the UVtools core
* For more information see the script sample: https://github.com/sn4k3/UVtools/tree/master/UVtools.ScriptSample
* To run scripts go to: Tools - Scripting
* **File formats:**
* Add a check and warning when opening an file that have a diferent layer and file resolution
* **Issues:**
* Add "Print height" as new type of issue detection, all layers that goes beyond maximum printer Z height will be flagged as PrintHeight issue
* Print height issues will not be automatical fixed, however user can fix it by remove some layers to counter the problem, still is recommended to resize object on slicer
* Fix unable to compute issues when only islands or overhangs are selected to be detected alone (#177)
* **Settings:**
* Add default directory for scripts on "General - File dialogs"
* Add checkbox on "Issues - Compute - Print height" to enable or disable this type of detection
* Add numerical on "Issues - Print height - Offset" to define a custom offset from Z top
* Fix default directories input width to not grow with text, it was overflowing on large strings
* **Menu - Help:**
* Add web link to "Wiki & tutorials"
* Add web link to "Facebook group"
* Add web link to "Report a issue"
* Add web link to "Ask a question"
* Add web link to "Suggest an improvement or new features"