* Run every profile maintenance job from one tool
orca_id_tool.py becomes orca_profile_tool.py, and orca_extra_profile_check.py
and orca_filament_lib.py fold into it as subcommands: check, generate-id, fix,
trim, update-index and update-snapshot. The three scripts already overlapped --
the checker imported half of its rules from the id tool, which in turn kept a
copy-pasted set of output helpers to avoid the resulting import cycle -- while
disagreeing on how a vendor is enumerated, how a JSON file is read and what the
exit code means. One file settles all three.
check, normalize, trim and update-index reproduce their predecessors exactly; normalize and
update-index were diffed byte-for-byte against the old scripts over a copy of
the whole tree. Deliberate changes: the compatible-printers check no longer
switches itself off when --check-materials is passed, an error exits 1 rather
than -1, update-index honours --profile-type and reports a profile it cannot
place instead of dropping it from the index, fix and update-index gained
--dry-run, trim keeps an unindexed file some surviving profile still inherits
from, and vendors are enumerated as directories with an index -- which is why
blacklist.json, a data file that an unscoped index rebuild once wrote four empty
list sections into, loses them here and will not collect them again. The dead
rename_filament_system() helper is gone.
The suite under scripts/tests now covers the maintenance commands too, and CI
runs it; nothing there ran in CI before. No shipped profile data changes apart
from those four keys.
* update vendor index files with "python3 ./scripts/orca_profile_tool.py update-index" and "python3 ./scripts/orca_profile_tool.py normalize"
Brings in 560 commits (merge base 2026-07-04 .. origin/main af9fd10d7a).
19 conflicts resolved; the other 138 touched files auto-merged.
Conflict resolutions
- Snapmaker/Polymaker (7): main normalised JSON key order in #15039 while this
branch inserted filament_id/filament_vendor. Took main's key order and kept
this branch's values, inserting a single filament_id key rather than letting
git's line merge leave duplicate "from"/"instantiation" keys.
- re3D rPETG @0.8/@1.75 nozzle (2): main renamed these from "re3D Greengate
rPETG @*" and re-vendored GreenGate3D -> re3D (#15169). Git's rename-aware
merge produced a file with two filament_vendor keys; took main's version
wholesale instead. The id is reconciled by the tooling, not by hand.
- re3D rPP (1): kept main's inherits change (fdm_filament_pet -> fdm_filament_pp,
local filament_type override dropped) and its widened compatible_printers.
The flattened type is still PP, so the product triple and id OFfHGM1D are
unchanged.
- re3D Greengate rPETG.json, Afinia {ABS+,ABS,PLA,TPU,Value ABS,Value PLA}.json
(7 modify/delete): accepted main's deletions. The Afinia ids are not orphaned
- the surviving @HS presets resolve the same triple and already carry the
same ids, so nothing is retired.
- .github/workflows/check_profiles.yml: kept both main's new "validate slice"
step and this branch's tree-wide filament-subtype check.
- tests/libslic3r/CMakeLists.txt: kept both test_filament_id_succession.cpp and
main's test_preset_diff.cpp.
Verified
- No conflict markers; all 12795 profile JSONs parse with no duplicate keys.
- All branch artifacts (tooling, snapshot, ledger, doc, tests) intact and
unmodified by the merge.
- The succession-ledger C++ call sites survived main's refactors; audited
Preset.{cpp,hpp}, PresetBundle.cpp, DeviceManager.cpp, PresetComboBoxes.cpp,
CaliHistoryDialog.cpp, MoonrakerPrinterAgent.cpp against base/ours/theirs.
- scripts/tests: 115/116 pass.
Known follow-up: assign_filament_ids.py --check reports 243 errors, all from
filament data main added in the last month (BBL/addnorth, Qidi X5/Plus 5,
Snapmaker U1, re3D). The single failing unit test is the live-tree conformance
test asserting that count is zero. Reconciliation lands separately.
* fix profile reference for Creality
* fix profile reference for Blocks
* fix profile reference for OrcaArena
* fix profile reference for re3D
* fix profile reference for Chuanying
* fix profile reference for Prusa
* fix profile reference for Wanhao France
* fix profile reference for MagicMaker
* fix profile reference for Afinia
Remove the ABS/ABS+/PLA/TPU/Value ABS/Value PLA filament presets that referenced the non-existent "Afinia H400 Pro" printer. The real printer is "Afinia H+1(HS)", already served by the @HS filament variants.
* fix profile reference for Comgrow
Remove the orphaned "0.20mm Standard @Comgrow T500 1.0" process preset and its process_list entry. Its only compatible printer "Comgrow T500 1.0 nozzle" never existed (the T500 model defines nozzle diameters 0.4/0.6/0.8 only).
* always run check_preset_references
Phase 2 of the filament_id cleanup (31 collision groups, all one mechanism:
material-class ids on shared fdm_filament_* templates collapsing HF/-CF/
Prusament lines onto one id, plus 3 overclaims). 18 new @base family roots
(owner generic keeps the legacy id, 12 impostor families get deterministic
mints), 72 config-neutral inherits repoints, 6 template filament_id keys
removed (only where every id-less inheritor is covered by a new root;
fdm_filament_asa/pc keep theirs for the frozen Prusament @XL riders),
3 compatible_printers trims on MINIIS printers covered by dedicated @MINIIS
variants. Frozen name-shaped and _NN per-variant ids stay byte-identical.
Verified: config-equivalence gate zero unexpected diffs; extra check exit 0;
--check exit 0; validator -l 2 exit 0; extended -f -v Prusa exit 0 (was 31
groups / 1035 printer-level errors on the pre-apply copy).
* 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
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.
* bugfix for TPU filament overrides
* higher voluemetric flow
* bugfix for to high speed at internal solid infill
* Update Prusa.json
* updated firmware check and nozzle settings
* bugfix speed and standard for 0,15mm profiles of the 0.4mm nozzle
* variables not defined in orcaslicer
* bug fix volumetric speed, wrong value
* added high flow base process
* added highflow base process
* added first full draft of high flow profiles, further tests are necessary
* changed 0.35mm to 0.32mm for 0.6mm nozzle
* minor changes to initial layer speeds
* changed 0.35mm to 0.32mm for 0.6mm nozzle
* furcer changes on accelartion and speed
* added 0.35mm Standard @MK3.5 again for not breaking anythin for current users
* Update 0.35mm Standard @MK3.5.json
forgot to set the layer_height after creation of the 0.35mm profile
* minor fixes in filament overrides
* added profiles for high flow nozzles on the Prusa MINIIS
* added fan_speedup_time for MINIIS and MK3.5
* changes to support interface, pattern and distance
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
* Replace prusa printer images with standard sizes and aspect ratio
* Rename Prusa Mini IS to specify the IS in the name
* Add missing prusa CORE One in the preset dialog and reorder prusa printers
* updated pictures to 320px
* bugfix for TPU filament overrides
* higher voluemetric flow
* bugfix for to high speed at internal solid infill
* Update Prusa.json
* updated firmware check and nozzle settings
* bugfix speed and standard for 0,15mm profiles of the 0.4mm nozzle
* variables not defined in orcaslicer
* bug fix volumetric speed, wrong value
* added high flow base process
* added highflow base process
* added first full draft of high flow profiles, further tests are necessary
* changed 0.35mm to 0.32mm for 0.6mm nozzle
* minor changes to initial layer speeds
* changed 0.35mm to 0.32mm for 0.6mm nozzle
* furcer changes on accelartion and speed
* added 0.35mm Standard @MK3.5 again for not breaking anythin for current users
* Update 0.35mm Standard @MK3.5.json
forgot to set the layer_height after creation of the 0.35mm profile
* First set of fixes
* Add FLEX filament to PrintConfig.cpp
* Add new FLEX filament profiles to main Prusa json
* Comment out M104.1 code
* Revert "Comment out M104.1 code"
This reverts commit 831414adb7.
* bugfix for TPU filament overrides
* higher voluemetric flow
* bugfix for to high speed at internal solid infill
* Update Prusa.json
* updated firmware check and nozzle settings
* bugfix speed and standard for 0,15mm profiles of the 0.4mm nozzle
* variables not defined in orcaslicer
* Whitespace cleanup in Prusa profile
```
$ diff -u Prusa.json <(jq --indent 4 < Prusa.json) | wc -l
0
```
* Add Prusa MK4S profiles
There were generated from the PrusaSlicer profiles[0] using some scripts
which try to faithfully convert the profiles[1]. The high flow nozzle
settings have been modeled as a separate printer model.
A few things I'm aware of that haven't been converted:
- Filament multi-material settings (eg loading speeds)
- High-flow and abrasive nozzle check in gcode, which, as far as I
know, isn't available in the current firmware anyways
I've also found that disabling z-hop on layer change in OrcaSlicer seems
more similar to the behavior in PrusaSlicer (which allows travel
distance limitations to override that setting), so I've disabled that.
Fixes#7391
[0]: https://github.com/prusa3d/PrusaSlicer/blob/0bca90da1338f0bf31e3a820a9e6e69f3a4dc2c9/resources/profiles/PrusaResearch.ini
[1]: https://github.com/rcloran/SuperSlicer_to_Orca_scripts/tree/20d2881
* added Prusa Mini with Input Shaper to profiles
* refactoring to more reusable settings
* added more processes, changed settings
* Update 0.15mm Speed @MINIIS.json
* Update 0.10mm Speed @MINIIS.json
* changed to cubic because of speed
* further changes after reviewing prusa slicer settings
* simplified machine settings
* retraction speeds according to prusa slicer
* changed max flow according to prusa slicer
* after clearification at the prusaslicer repository M900 got removed
* precise wall per default
* enable reverse overhang on odd by default
* added settings from prusa slicer
* changed cooling setings
* changed default to inner-outer-inner wall
inner-outer-inner gives pretty good overhangs with better surface
* new profiles for bigger nozzles, changed some cooling settings according to prusaslicer
* profiles for different nozzles sizes, better speed settings
* initial layer height was wrong
* wrong initial layer height
* set the correct accelerations
* changed firmware version number
* using pressure advance UI setting instead of custom filament g-code
* Update Prusa Generic PC.json
* Update Prusa Generic PC.json
* changed max flow for PC
* added PVA filament profiles
* bug fix in filament loading
* changed line width according to prusa slicer
* changed heatbed temperature for Minis capabilities
* added Prusa Mini with Input Shaper to profiles
* refactoring to more reusable settings
* added more processes, changed settings
* Update 0.15mm Speed @MINIIS.json
* Update 0.10mm Speed @MINIIS.json
* changed to cubic because of speed
* further changes after reviewing prusa slicer settings
* simplified machine settings
* retraction speeds according to prusa slicer
* changed max flow according to prusa slicer
* after clearification at the prusaslicer repository M900 got removed
* precise wall per default
* enable reverse overhang on odd by default
* added settings from prusa slicer
* changed cooling setings
* Ender 3 - All nozzles and Quality Profiles
Ender 3 Profiles.
0.20 Nozzle
0.40 Nozzle
0.60 Nozzle
0.80 Nozzle
0.12 to 0.24 Quality Profiles for every Nozzle in Process Folder
* all
all
* Ender 3 Profiles
Ender 3 Profiles for: 0,2;0,4;0,6;0,8
5 Different and independent Quality profiles for each Nozzle.
Fine, Optimal, Standard, Draft and Superdraft
* aa
aa
* aa
aa
* aa
aa
* Prusa Mk3s Profiles
Prusa Mk3s Profiles
* Mk3s FIXED
mk3s FIXED
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>