- **File formats:**
- (Add) Transition layer count to the supported files and auto compute transition time on corresponding layers in software mode
- (Add) `HaveTransitionLayers`, `TransitionLayersType`, `BottomLayers`, `NormalLayers`, `TransitionLayers`, `TsmcLayers` properties
- (Add) Layer: `IsTransitionLayer` property
- (Add) SL1: Keyword `TransitionLayerCount_xxx` - Sets the number of transition layers
- (Improvement) CTB, PHZ, FDG: Implement the `ModifiedTimestampMinutes` field, it was the MysteriousId before as an unknown field
- (Fix) CWS: Open in partial mode will cause an exception and prevent file from load
- **CCode:**
- (Add) Allow inverse lifts to work as an retract
- (Fix) Parsing of WaitTimeAfterLift was incorrect when lacking a lift sequence
- (Fix) Layers lacking an exposure time was defaulting to global time, now defaults to 0
- (Fix) Layers without a LED ON (M106) was setting `LightPWM` to the max value (255), now defaults to 0
- **Tools:**
- **Timelapse:**
- (Add) Information: Raise Layer count equivalence
- (Add) Information: Additional lifts to be generated
- (Add) Option: Ensure the last layer - If enabled, it will generate an obligatory layer to cover the last layer
- (Improvement) Optimize lift for virtual layer mode, allowing set a slow and fast lift / retract by using another virtual layyer to emulate a lift
- (Improvement) Allow to define slow and fast speed for virtual layer mode even if TSMC isn't supported
- (Add) Fade exposure time: Setting 'Disable firmware transition layers' - Attempt to disable firmware strict transition layers in favor of this tool
- (Add) Calibration tests: Attempt to auto disable the firmware transifiton layers
- (Change) Edit print parameters: Allow set `BottomLiftHeight` and `LiftHeight` to 0mm
- **UI:**
- (Improvement) Disallow drop files into UI when is processing data / disabled and prevent crashing from that action
- (Improvement) Information tab visibility and MinHeight for data grids
- (Improvement) Hide/show GCode tab when necessary (dependent on file format)
- (Improvement) The 'save as' will show the new file into 'Open recent' files
- **PrusaSlicer printers:**
- (Add) Elegoo Jupiter
- (Add) EPAX X1 4KS
- (Add) EPAX DX1 Pro
- (Add) EPAX DX10 Pro 5K
- (Add) EPAX DX10 Pro 8K
- (Add) EPAX E10 8K
- (Add) EPAX X133 6K
- (Add) File - Terminal: Inject C# code into UVtools with an interactive terminal
- (Improvement) Modifiers: Better increment values for the spin up/down buttons
- (Improvement) Tool - Timelapse: Better lift and feeds for virtual layer, also allow to set custom lift speed for that mode
- (Fix) Tool - Edit print parameters: Disallow to change PositionZ in layers with an active alternating pattern
- (Fix) GCode: When generating layers higher than the next, it will not return to the correct position z
- **Core:**
- (Add) Utilities methods (`MinimumSpeed`, `MaximumSpeed`, `CreateMat`, `CreateMatWithDummyPixel`, `FileFormat.CopyParameters`)
- (Improvement) Issues - Print Height: Group all layers outside the valid print height
- **FileFormats:**
- (Add) Generic / Phrozen ZIP format
- (Add) Information/modifier to file formats to tell whatever is possible to use custom PositionZ per layer
- (Add) Safe checks in order to run some tools, related to the previous "PositionZ" point
- (Improvement) if blank, allow the previous layer to have a higher Z position than the successor layer
- (Improvement) SL1: Implement the missing keys from new features of PrusaSlicer 2.4.0
- (Fix) Calling a partial save action without a progress instance would cause a crash
- (Fix) GCode: Unable to parse the "Wait time after lift" when a second lift (TSMC) was present, leading to a sum on "Wait time before cure"
- **Tools:**
- (Add) Timelapse: Raise the build platform to a set position every odd-even height to be able to take a photo and create a time-lapse video of the print
- (Add) Scripting: ScriptToggleSwitchInput
- **Raise on print finish:**
- (Add) Reapply check and prevent run the tool in that case
- (Fix) It was incorrectly marked to be able to run in partial mode
- (Fix) The dummy pixel was beeing set to a wrong location
- **Layers:**:
- (Change) When set Wait times to a negative value, it will set the global wait time value accordingly
- (Change) Allow ExposureTime to be 0
- **Commandline arguments**
- (Add) --run-operation \<input_file\> \<operation_file.uvtop\>
- (Add) --run-script \<input_file\> \<script_file.cs\>
- (Add) --copy-parameters \<from_file\> \<to_file\>
- **UI:**
- (Add) When open a file with missing crucial information, prompt the user to fill in that information (Optional)
- (Add) Warn user about misfunction when open a file with invalid layer height of 0mm
- (Improvement) Layer information: Only show the "Exposure time" when its availiable on the file format
- (Improvement) When a file is about to get auto-converted once loaded and the output file already exists, prompt user for overwrite action
- (Improvement) Set default culture info at top most of the program to avoid strange problems with commandline arguments
- (Upgrade) .NET from 5.0.13 to 5.0.14
- (Downgrade) OpenCV from 4.5.5 to 4.5.4 due the crash while detecting islands (Linux and MacOS) (#411, #415, #416)