* validator: detect duplicate filament subtype per printer (opt-in)
A filament is matched from the AMS by (filament_id + printer compatibility);
if two compatible filament presets for one printer share a filament_id, the
match is ambiguous and the runtime silently picks whichever loads first.
Add PresetBundle::check_duplicate_filament_subtypes(), gated behind a new
has_errors(check_duplicate_filament_subtypes) parameter and the validator's
-f/--check_filament_subtypes flag (off by default). For each system printer it
groups its vendor's compatible filament presets by filament_id and errors on
any group of 2+, reporting each preset as a clickable file:// URI with a single
"how to fix" hint. CI runs it for BBL only (-v BBL -f) until the other vendors'
profiles are cleaned up.
* profiles: fix ambiguous BBL filament matches
Resolve the duplicate-filament-subtype errors flagged by the validator:
- align compatible_printers with Bambu Studio where Orca over-claimed a nozzle
that already has a dedicated preset (Bambu PLA Basic/Matte/ABS @BBL H2DP;
Bambu ASA/PETG HF @BBL H2DP 0.6 nozzle; Fiberon PETG-ESD @BBL X1)
- fix a copy-pasted printer name in Overture Matte PLA @BBL A1M 0.2 nozzle
- fix a wrong inherits in Panchroma PLA Silk @BBL X1C 0.2 nozzle (was inheriting
Panchroma PLA @base, giving it filament_id GFPM001 instead of GFPM004)
Bump BBL profile version.
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* profiles: enforce globally-unique, per-vendor-namespaced setting_id
Many non-Bambu vendors copied Bambu's generic setting_ids (GFSA04 alone
appeared in 1557 files), so setting_id was not globally unique. This
namespaces every vendor's ids and reserves Bambu/OrcaFilamentLibrary space.
- Reserve "G*" (Bambu) and "O*" (OrcaFilamentLibrary) id spaces.
- Assign each other vendor a 2-char prefix (first+last letter, collision
resolved) and renumber every instantiated preset to <PREFIX><NNNN>.
- Strip setting_id from base profiles (instantiation:false) per Bambu's
convention; assign one to instantiated presets that lacked it.
- Remove the pre-existing misspelled "settings_id" key (91 files).
- filament_id is left untouched (it is a per-material id).
- Add one-time migration script scripts/assign_vendor_setting_ids.py with a
persisted registry resources/profiles/vendor_prefixes.json. Re-runs freeze
existing ids; only new vendors/profiles get new ids.
- Bump version in each changed vendor index file.
- Extend scripts/orca_extra_profile_check.py with a CI guard: global
uniqueness, in-namespace, no base setting_id, no gaps, no settings_id typo.
7425 profile files changed across 61 vendors; 0 cross-vendor collisions;
validator clean; migration idempotent. BBL and OrcaFilamentLibrary id spaces
untouched.
* profiles: add setting_id authoring guide for new vendors / profiles
* profiles: drop in-repo README; setting_id guide now lives in the wiki
* profiles: derive setting_id deterministically from vendor/type/name
* bump profile version
Enable air filtration support in affected system printer profiles
Some system printer profiles that support air filtration had the feature
incorrectly disabled in the printer settings.
This caused the related filament settings to be hidden, making the feature
unavailable to users even though it is supported by the printer.
Enable "support_air_filtration" in affected system printer profiles and
bump profile version thus forcing Orca to refresh cached settings.
This ensures air filtration settings are visible and usable on printers
that support the feature.
* Disable arc fitting by default on BBL P2S
* Update BBL P2S printer profile
* bump the version so that it automatically update the cache
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
Reduce the size of current and new JSONs by standardising them with 1 tab indentation instead of 4 spaces.
This effectively reduces the size by almost 20 MB.
| Current | New |
|---|---|
| 85.2 Mib | 67 Mib |
Used [JQ](https://jqlang.org/) `--tab` to automatically format every current JSON.
> [!NOTE]
> Some profiles had the arrays on the same line, but those created by Orca were in the standard format (each object below the previous one). In some cases, this increases the number of tabs due to the new lines, but the increase is negligible, and this way both the base profiles and those created by Orca maintain the same style.
# Description
* What issue does this PR address or fix?
1. Refactor Polymaker folder within Snapmaker profile directory, so that the structure is more clear.
2. Add more Polymaker filament presets for Snapmaker printers.
* What new features or enhancements does this PR introduce?
1. None
* Are there any breaking changes or dependencies that need to be considered?
1. None
* Add ability to disable Power Loss Recovery
* Fix typo in PrintConfig.hpp for power loss recovery
* Attempt to resolve Unknown option exception: disable_power_less_recovery
Add disable_power_loss_recovery property to any json which had scan_first_layer
* Revert "Attempt to resolve Unknown option exception: disable_power_less_recovery"
This reverts commit ddaf34b317.
* Fix typo
* Change attribution from BBS to Orca in PrintConfig.cpp
* Mini refactor power loss recovery handling in GCode export
- Moved power loss recovery G-code generation to a new method in GCodeWriter.
- Support Marlin 2
* Update comments and power loss recovery handling
* Implement power loss recovery G-code commands
Added functions to start and end power loss recovery with appropriate G-code commands and comments.
* Add power loss recovery methods to GCodeWriter
* refactor and fix build errors
---------
Co-authored-by: Michael Rook <michael@rook.id.au>
Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
This reverts commit 4c091e4ab9ee55990eab8c72ef4e9acbbea65641.
Reason for revert: <miss one patch>
Change-Id: Ieb56c2dba1ead206489cecc3b25f136a00fea8b2
(cherry picked from commit 7632fe1dfa452c3a0e2c1d49aef0308100479c3a)