Files
OrcaSlicer/resources/profiles/BBL/process/0.20mm Standard @BBL X1C.json
SoftFever 92ea1ce57e Feat/update preset validator (#14507)
# Description

This PR expands profile validation so we can catch backward
compatibility issues with custom presets generated by older OrcaSlicer
releases. It also adds missing `renamed_from` metadata for presets that
were renamed or moved, so older user presets can resolve their original
parent names against the current system profiles.

## Background

Many users have reported missing preset issues after upgrading past
2.4.1. Investigation showed two common causes:

- preset lookup and compatibility checks did not always account for
`renamed_from`
- some renamed base presets were missing the old preset name in their
`renamed_from` metadata

The existing profile workflow validates the current system profile tree
and a single nightly-generated custom preset bundle. That is useful for
catching current profile errors, but it does not validate user presets
generated by older OrcaSlicer versions against the current system
profiles. As a result, older missing-parent compatibility gaps can slip
through.

## Changes

- Update `check_profiles.yml` to validate historical custom preset
fixtures from `OrcaSlicer/OrcaSlicer-profile-validator`.
- Download the fixture manifest from the public `fixture-archive`
release.
- Validate each `orca_custom_presets_<version>.zip` fixture
independently against the current PR's `resources/profiles`.
- Generate per-version validation logs and upload them as workflow
artifacts.
- Fail profile validation if any historical fixture version fails.
- Add missing `renamed_from` aliases for renamed/moved presets found by
the historical fixture validation.

## Profile Compatibility Fixes

This PR adds aliases for older parent names including:

- `0.20mm Bambu Support W @BBL X1C` -> `0.20mm Standard @BBL X1C`
- `Bambu PLA Impact @BBL X1C` -> `Bambu PLA Impact @System`
- `Ginger Generic rPLA` -> `Ginger Generic PLA`
- `Ginger Generic rPETG` -> `Ginger Generic PETG`
- legacy `Panchroma PLA Stain` BBL filament names -> current `Panchroma
PLA Satin` names
- legacy Elegoo casing/name variants such as `Elegoo RAPID PLA+`,
`Elegoo RAPID PETG`, `Elegoo RAPID PETG+`, and `Elegoo PETG Pro @System`

## Validation Flow

The custom preset validation step now:

1. Downloads `manifest.json` from the `fixture-archive` release.
2. Iterates over every fixture listed in the manifest.
3. Copies the current branch's `resources/profiles` into a temporary
profile tree.
4. Removes any existing `user` directory from that temporary tree.
5. Unzips exactly one historical fixture into the temporary tree.
6. Runs `OrcaSlicer_profile_validator -p <temp profile tree> -l 2`.
7. Writes a version-specific log and a consolidated summary.

This keeps validation scoped per fixture version and avoids mixing
generated user presets from different OrcaSlicer releases.

## Fixture Source

Historical fixtures are stored as public release assets in:

`OrcaSlicer/OrcaSlicer-profile-validator`, release tag `fixture-archive`

Each release asset is expected to be named like:

```text
orca_custom_presets_v2.4.1.zip
```

## Testing

Validated locally with:

- current system profile validation
- BBL filament subtype validation
- historical custom preset fixture validation
- extra profile JSON check in a clean profile tree

The affected historical fixture set passed after adding the missing
`renamed_from` aliases.

The release manifest controls which fixture versions are validated.
[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-07-06 12:27:47 +08:00

174 lines
2.4 KiB
JSON

{
"type": "process",
"name": "0.20mm Standard @BBL X1C",
"renamed_from": "0.20mm Bambu Support W @BBL X1C",
"inherits": "fdm_process_single_0.20",
"from": "system",
"setting_id": "GP004",
"instantiation": "true",
"description": "It has a general layer height, and results in general layer lines and printing quality. It is suitable for most general printing cases.",
"bridge_speed": [
"50",
"50"
],
"default_acceleration": [
"10000",
"10000"
],
"enable_overhang_speed": [
"1",
"1"
],
"enable_height_slowdown": [
"0",
"0"
],
"gap_infill_speed": [
"250",
"250"
],
"initial_layer_infill_speed": [
"105",
"105"
],
"initial_layer_speed": [
"50",
"50"
],
"inner_wall_speed": [
"300",
"300"
],
"internal_solid_infill_speed": [
"250",
"250"
],
"initial_layer_acceleration": [
"500",
"500"
],
"inner_wall_acceleration": [
"0",
"0"
],
"initial_layer_travel_acceleration": [
"6000",
"6000"
],
"outer_wall_speed": [
"200",
"200"
],
"outer_wall_acceleration": [
"5000",
"5000"
],
"overhang_1_4_speed": [
"0",
"0"
],
"overhang_2_4_speed": [
"50",
"50"
],
"overhang_3_4_speed": [
"30",
"30"
],
"overhang_4_4_speed": [
"10",
"10"
],
"overhang_totally_speed": [
"10",
"10"
],
"print_extruder_id": [
"1",
"1"
],
"print_extruder_variant": [
"Direct Drive Standard",
"Direct Drive High Flow"
],
"smooth_coefficient": "150",
"sparse_infill_speed": [
"270",
"270"
],
"slowdown_start_height": [
"0",
"0"
],
"slowdown_start_speed": [
"1000",
"1000"
],
"slowdown_start_acc": [
"100000",
"100000"
],
"slowdown_end_height": [
"400",
"400"
],
"slowdown_end_speed": [
"1000",
"1000"
],
"slowdown_end_acc": [
"100000",
"100000"
],
"small_perimeter_speed": [
"50%",
"50%"
],
"small_perimeter_threshold": [
"0",
"0"
],
"sparse_infill_acceleration": [
"100%",
"100%"
],
"support_speed": [
"150",
"150"
],
"support_interface_speed": [
"80",
"80"
],
"top_surface_acceleration": [
"2000",
"2000"
],
"top_surface_speed": [
"200",
"200"
],
"travel_speed": [
"500",
"500"
],
"travel_speed_z": [
"0",
"0"
],
"travel_acceleration": [
"10000",
"10000"
],
"vertical_shell_speed": [
"80%",
"80%"
],
"compatible_printers": [
"Bambu Lab X1 Carbon 0.4 nozzle",
"Bambu Lab X1 0.4 nozzle",
"Bambu Lab P1S 0.4 nozzle",
"Bambu Lab X1E 0.4 nozzle"
]
}