profiles: deterministic setting_id from vendor/type/name (#14432)

* 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
This commit is contained in:
SoftFever
2026-06-27 20:11:25 +08:00
parent 8ccae50e1b
commit 6d7eeb89dc
7876 changed files with 8152 additions and 6541 deletions

View File

@@ -3,7 +3,7 @@
"name": "Qidi Q1 Pro 0.2 nozzle",
"inherits": "Qidi Q1 Pro 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "wp17yJNXUGPUMl5m",
"instantiation": "true",
"nozzle_diameter": [
"0.2"

View File

@@ -3,7 +3,7 @@
"name": "Qidi Q1 Pro 0.4 nozzle",
"inherits": "fdm_qidi_x3_common",
"from": "system",
"setting_id": "GM001",
"setting_id": "U5MWs9u3tWvrlVwP",
"instantiation": "true",
"printer_model": "Qidi Q1 Pro",
"gcode_flavor": "klipper",

View File

@@ -3,7 +3,7 @@
"name": "Qidi Q1 Pro 0.6 nozzle",
"inherits": "Qidi Q1 Pro 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "hjj0vhFSNDg1t5V4",
"instantiation": "true",
"nozzle_diameter": [
"0.6"

View File

@@ -3,7 +3,7 @@
"name": "Qidi Q1 Pro 0.8 nozzle",
"inherits": "Qidi Q1 Pro 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "nC4aLix0qoflGLDK",
"instantiation": "true",
"nozzle_diameter": [
"0.8"

View File

@@ -3,7 +3,7 @@
"name": "Qidi Q2 0.2 nozzle",
"inherits": "Qidi Q2 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "xtu7540jmpjIWUjN",
"instantiation": "true",
"printer_model": "Qidi Q2",
"printer_variant": "0.2",

View File

@@ -3,7 +3,7 @@
"name": "Qidi Q2 0.4 nozzle",
"inherits": "fdm_q_common",
"from": "system",
"setting_id": "GM001",
"setting_id": "m9SR0PtzYpYRKgSB",
"instantiation": "true",
"box_id": "1",
"printer_model": "Qidi Q2",

View File

@@ -3,7 +3,7 @@
"name": "Qidi Q2 0.6 nozzle",
"inherits": "Qidi Q2 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "FL8T7GqmzobiHQ4N",
"instantiation": "true",
"default_filament_profile": [
"QIDI PLA Rapido"

View File

@@ -3,7 +3,7 @@
"name": "Qidi Q2 0.8 nozzle",
"inherits": "Qidi Q2 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "DrFTCJ0UXdEP6Zuo",
"instantiation": "true",
"default_filament_profile": [
"QIDI PLA Rapido"

View File

@@ -3,7 +3,7 @@
"name": "Qidi Q2C 0.2 nozzle",
"inherits": "Qidi Q2C 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "2uuRLbBZvLKjlVli",
"instantiation": "true",
"printer_model": "Qidi Q2C",
"printer_variant": "0.2",

View File

@@ -3,7 +3,7 @@
"name": "Qidi Q2C 0.4 nozzle",
"inherits": "fdm_q_common",
"from": "system",
"setting_id": "GM001",
"setting_id": "xMMjCIf1aSek99az",
"instantiation": "true",
"box_id": "1",
"printer_model": "Qidi Q2C",

View File

@@ -3,7 +3,7 @@
"name": "Qidi Q2C 0.6 nozzle",
"inherits": "Qidi Q2C 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "ThVecKGDfuhKDwQy",
"instantiation": "true",
"default_filament_profile": [
"QIDI PLA Rapido"

View File

@@ -3,7 +3,7 @@
"name": "Qidi Q2C 0.8 nozzle",
"inherits": "Qidi Q2C 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "U9m6kWHky7qHk9JL",
"instantiation": "true",
"default_filament_profile": [
"QIDI PLA Rapido"

View File

@@ -3,7 +3,7 @@
"name": "Qidi X-CF Pro 0.4 nozzle",
"inherits": "fdm_qidi_common",
"from": "system",
"setting_id": "GM001",
"setting_id": "WPVxrQhAgGqjT11Q",
"instantiation": "true",
"printer_model": "Qidi X-CF Pro",
"default_print_profile": "0.20mm Standard @Qidi XCFPro",

View File

@@ -3,7 +3,7 @@
"name": "Qidi X-Max 0.4 nozzle",
"inherits": "fdm_qidi_common",
"from": "system",
"setting_id": "GM001",
"setting_id": "xn5DRJ8PySGduKjg",
"instantiation": "true",
"printer_model": "Qidi X-Max",
"default_print_profile": "0.20mm Standard @Qidi XMax",

View File

@@ -3,7 +3,7 @@
"name": "Qidi X-Max 3 0.2 nozzle",
"inherits": "Qidi X-Max 3 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "w9xj6SBvIfjutls6",
"instantiation": "true",
"nozzle_diameter": [
"0.2"

View File

@@ -3,7 +3,7 @@
"name": "Qidi X-Max 3 0.4 nozzle",
"inherits": "fdm_qidi_x3_common",
"from": "system",
"setting_id": "GM001",
"setting_id": "6e68LcMl17yl7Ii8",
"instantiation": "true",
"printer_model": "Qidi X-Max 3",
"gcode_flavor": "klipper",

View File

@@ -3,7 +3,7 @@
"name": "Qidi X-Max 3 0.6 nozzle",
"inherits": "Qidi X-Max 3 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "zminbxV7Q04jQS05",
"instantiation": "true",
"nozzle_diameter": [
"0.6"

View File

@@ -3,7 +3,7 @@
"name": "Qidi X-Max 3 0.8 nozzle",
"inherits": "Qidi X-Max 3 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "gU4KypJqroWrTbDW",
"instantiation": "true",
"nozzle_diameter": [
"0.8"

View File

@@ -1,6 +1,6 @@
{
"type": "machine",
"setting_id": "GM008",
"setting_id": "QgiXsDkRCjIHtpEa",
"name": "Qidi X-Max 4 0.2 nozzle",
"from": "system",
"instantiation": "true",

View File

@@ -1,7 +1,7 @@
{
"box_id": "3",
"type": "machine",
"setting_id": "GM001",
"setting_id": "uzcPSO0U1ZQCXXNN",
"name": "Qidi X-Max 4 0.4 nozzle",
"from": "system",
"instantiation": "true",

View File

@@ -1,6 +1,6 @@
{
"type": "machine",
"setting_id": "GM008",
"setting_id": "Ict0ZAEiGgYeu7AJ",
"name": "Qidi X-Max 4 0.6 nozzle",
"from": "system",
"instantiation": "true",

View File

@@ -1,6 +1,6 @@
{
"type": "machine",
"setting_id": "GM008",
"setting_id": "pJbz2SGfvEar8cGh",
"name": "Qidi X-Max 4 0.8 nozzle",
"from": "system",
"instantiation": "true",

View File

@@ -3,7 +3,7 @@
"name": "Qidi X-Plus 0.4 nozzle",
"inherits": "fdm_qidi_common",
"from": "system",
"setting_id": "GM001",
"setting_id": "PNGBV9xF2DA17fi9",
"instantiation": "true",
"printer_model": "Qidi X-Plus",
"default_print_profile": "0.20mm Standard @Qidi XPlus",

View File

@@ -3,7 +3,7 @@
"name": "Qidi X-Plus 3 0.2 nozzle",
"inherits": "Qidi X-Plus 3 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "yJLmYnXCZesnYsUq",
"instantiation": "true",
"nozzle_diameter": [
"0.2"

View File

@@ -3,7 +3,7 @@
"name": "Qidi X-Plus 3 0.4 nozzle",
"inherits": "fdm_qidi_x3_common",
"from": "system",
"setting_id": "GM001",
"setting_id": "qupFKHV83yltlRMj",
"instantiation": "true",
"printer_model": "Qidi X-Plus 3",
"gcode_flavor": "klipper",

View File

@@ -3,7 +3,7 @@
"name": "Qidi X-Plus 3 0.6 nozzle",
"inherits": "Qidi X-Plus 3 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "vGNyS2kkmz1MEAGt",
"instantiation": "true",
"nozzle_diameter": [
"0.6"

View File

@@ -3,7 +3,7 @@
"name": "Qidi X-Plus 3 0.8 nozzle",
"inherits": "Qidi X-Plus 3 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "ctAgR8JLuCNonuS0",
"instantiation": "true",
"nozzle_diameter": [
"0.8"

View File

@@ -3,7 +3,7 @@
"name": "Qidi X-Plus 4 0.2 nozzle",
"inherits": "Qidi X-Plus 4 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "4w9IlgEciz4ITCHN",
"instantiation": "true",
"nozzle_diameter": [
"0.2"

View File

@@ -3,7 +3,7 @@
"name": "Qidi X-Plus 4 0.4 nozzle",
"inherits": "fdm_qidi_x3_common",
"from": "system",
"setting_id": "GM001",
"setting_id": "74ARpc1l6Vh7OYij",
"instantiation": "true",
"printer_model": "Qidi X-Plus 4",
"gcode_flavor": "klipper",

View File

@@ -3,7 +3,7 @@
"name": "Qidi X-Plus 4 0.6 nozzle",
"inherits": "Qidi X-Plus 4 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "j7rsk7qDSN6EAkX8",
"instantiation": "true",
"nozzle_diameter": [
"0.6"

View File

@@ -3,7 +3,7 @@
"name": "Qidi X-Plus 4 0.8 nozzle",
"inherits": "Qidi X-Plus 4 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "y7578aVMt4H1aVnW",
"instantiation": "true",
"nozzle_diameter": [
"0.8"

View File

@@ -3,7 +3,7 @@
"name": "Qidi X-Smart 3 0.2 nozzle",
"inherits": "Qidi X-Smart 3 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "y61rAluWLMdxyx7v",
"instantiation": "true",
"nozzle_diameter": [
"0.2"

View File

@@ -3,7 +3,7 @@
"name": "Qidi X-Smart 3 0.4 nozzle",
"inherits": "fdm_qidi_x3_common",
"from": "system",
"setting_id": "GM001",
"setting_id": "mS7RmjSwsNzkV6LT",
"instantiation": "true",
"printer_model": "Qidi X-Smart 3",
"gcode_flavor": "klipper",

View File

@@ -3,7 +3,7 @@
"name": "Qidi X-Smart 3 0.6 nozzle",
"inherits": "Qidi X-Smart 3 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "GlQr5TpSBRGEYgp5",
"instantiation": "true",
"nozzle_diameter": [
"0.6"

View File

@@ -3,7 +3,7 @@
"name": "Qidi X-Smart 3 0.8 nozzle",
"inherits": "Qidi X-Smart 3 0.4 nozzle",
"from": "system",
"setting_id": "GM008",
"setting_id": "GWRUzX26tWoJ5dlM",
"instantiation": "true",
"nozzle_diameter": [
"0.8"