diff --git a/doc/changelogs/RELEASE_NOTES_v0.9.9.md b/doc/changelogs/RELEASE_NOTES_v0.9.9.md new file mode 100644 index 0000000000..7686f0cd52 --- /dev/null +++ b/doc/changelogs/RELEASE_NOTES_v0.9.9.md @@ -0,0 +1,45 @@ +# Snapmaker Orca FullSpectrum v0.9.9 + +Local-Z toolchange reduction, prime tower planning, and physical-color geometry fixes. + +## Quick Overview + +- Greatly reduces Local-Z toolchanges by batching same-plane work across objects and scheduling Local-Z passes with dependency chains. +- Reworks Local-Z prime tower behavior so Local-Z swaps are planned ahead of time instead of using oversized reserve slots. +- Fixes Local-Z prime tower correctness issues, including missing plan lookups, final-purge sentinel handling, and empty nominal-toolchange layers. +- Fixes classic Local-Z physical-color regions so ordinary physical filament zones stay at nominal layer height instead of inheriting mixed-row micro-heights. +- Keeps whole-object Local-Z behavior available, while giving physical-color zones a clean two-pass split instead of arbitrary mixed-row pass heights. + +## More Detailed Overview + +### Local-Z Toolchange Scheduling + +- Groups Local-Z phase-b perimeter work by shared micro-pass `print_z` across objects, instead of restarting optimization for each object layer. +- Adds dependency-chain metadata to Local-Z sublayer plans so independent swatches or mixed regions can be scheduled in a tool-friendly order without violating vertical pass dependencies. +- Extends dependency-chain tagging to single-row split intervals, which lets common calibration swatches use the optimized Local-Z scheduler instead of falling back to raw pass order. +- Uses the dependency scheduler in both G-code emission and Local-Z wipe-tower preplanning so the tower and object path agree on the same toolchange sequence. +- Carries the actual ending Local-Z tool into the nominal layer loop instead of forcing a restore to the pre-pass tool, removing a recurring unnecessary toolchange pattern. +- Improves Local-Z island assignment with more robust interior sampling so boundary-starting paths are less likely to be assigned to the wrong island bucket. + +### Local-Z Prime Tower + +- Preplans Local-Z wipe-tower swaps as real toolchange events instead of treating them as late, unplanned reserve-slot users. +- Replaces the old padded Local-Z reserve-band behavior with exact planned Local-Z tower toolchanges, making the tower denser and less wasteful. +- Keeps the old reserve-slot path as a fallback if runtime ever diverges from the preplanned sequence. +- Fixes Local-Z tower layers that contain only Local-Z toolchanges and no nominal tower toolchanges. +- Fixes final-purge sentinel handling so the tower does not mistake the final unload for a normal planned toolchange. +- Makes nominal wipe-tower generation consume exact planned toolchange entries directly, reducing fragile lookup behavior when the current tool state drifts. + +### Local-Z Geometry Correctness + +- Fixes classic Local-Z mode so pure physical-filament regions remain in the normal nominal layer instead of being pulled into mixed Local-Z micro-passes. +- Fixes overlapping thick/thin layer bands in physical-color zones caused by fixed physical masks inheriting mixed-row variable pass heights. +- Keeps Local-Z micro-height splitting focused on actual mixed-filament painted regions in classic mode. +- Updates whole-object Local-Z handling so physical-color regions can still participate when requested, but use a clean two-pass half-layer split rather than arbitrary mixed-row heights. +- Preserves fixed-color guard behavior around whole-object Local-Z mixed masks so painted mixed regions do not grow into neighboring physical-color caps. + +## Notes + +- macOS builds from this fork remain unsigned and not notarized. +- Release downloads for this fork are available here: https://github.com/ratdoux/OrcaSlicer-FullSpectrum/releases +- Use at your own risk. diff --git a/src/common_func/common_func.hpp b/src/common_func/common_func.hpp index 2fca41c26b..678458b829 100644 --- a/src/common_func/common_func.hpp +++ b/src/common_func/common_func.hpp @@ -7,7 +7,7 @@ #define SLIC3R_APP_KEY "Snapmaker_Orca" #define SLIC3R_VERSION "01.10.01.70" #define Snapmaker_VERSION "2.3.1" -#define FULLSPECTRUM_VERSION "0.9.8" +#define FULLSPECTRUM_VERSION "0.9.9" #define MIN_FIRM_VER "1.0.0" #ifndef GIT_COMMIT_HASH #define GIT_COMMIT_HASH "0000000" // 0000000 means uninitialized diff --git a/version.inc b/version.inc index f4453ba6e4..88604a393a 100644 --- a/version.inc +++ b/version.inc @@ -10,8 +10,8 @@ endif() if(NOT DEFINED BBL_INTERNAL_TESTING) set(BBL_INTERNAL_TESTING "0") endif() -set(Snapmaker_VERSION "0.9.8") -set(FULLSPECTRUM_VERSION "0.9.8") +set(Snapmaker_VERSION "0.9.9") +set(FULLSPECTRUM_VERSION "0.9.9") set(MIN_FIRM_VER "1.0.0") string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)" Snapmaker_VERSION_MATCH ${Snapmaker_VERSION})