Commit Graph

29470 Commits

Author SHA1 Message Date
thysson2701
5659a83c44 fix(profile): Kobra X bed_temperature_formula auf by_first_filament setzen
G9111 hat während des Auto-Levelings auf den höchsten Bett-Temp-Wert
aller Projekt-Filamente geheizt statt auf die Temp des aktiven Filaments.
Fixes #4 (OrcaSlicer-KX), related KX-Bridge-Release#96.
v2.4.2-kx1
2026-07-20 12:59:46 +02:00
thysson2701
bcc3f1eb44 fix(branding): KX-Logo in allen UI-Dialogen korrekt anzeigen
- Splash: SVG durch direktes PNG-Laden ersetzt (nanosvg rendert kein
  eingebettetes Raster-PNG)
- About-Dialog: Logo auf 125px skaliert statt unkontrolliert 192px
- TroubleshootDialog, UpdateDialogs, ReleaseNote, MsgDialog:
  OrcaSlicer.svg → OrcaSlicer_192px.png (bereits KX-Logo)
2026-07-20 12:59:05 +02:00
thysson2701
19998ae487 feat(updater): Versionsprüfung auf Gitea OrcaSlicer-KX Releases umleiten
Ersetzt die orcaslicer.com/latest URL durch die Gitea API:
  https://gitea.it-drui.de/api/v1/repos/viewit/OrcaSlicer-KX/releases/latest

Das Gitea-JSON hat dasselbe Format wie GitHub (tag_name, html_url,
prerelease) — der bestehende Parser in check_new_version_sf() funktioniert
ohne weitere Änderungen. Telemetrie-Query-Parameter und Upstream-Signaturen
werden nicht mehr angehängt.
2026-07-20 12:59:05 +02:00
thysson2701
d8190d474e fix(branding): About-Dialog lädt KX-Logo als PNG statt SVG
nanosvg unterstützt keine eingebetteten Rasterbilder (data:image/png).
Direkt OrcaSlicer_192px.png laden — bereits durch das KX-Logo ersetzt.
2026-07-20 12:59:04 +02:00
thysson2701
e75ae87295 feat(branding): OrcaKX-Logo als App-Icon und About/Splash-Logo einsetzen
Ersetzt alle OrcaSlicer-Logos durch das Orca-KX Fork-Logo (Kobra + Orca).
Betrifft: PNG-Icons (32/64/128/154/192px), Windows .ico, macOS .icns,
About-Dialog SVGs (light + dark) und Splash-Screen SVGs.
2026-07-20 12:59:04 +02:00
thysson2701
acc3db79f9 docs: README auf 2.4.1-kx1 aktualisieren 2026-07-20 12:59:04 +02:00
thysson2701
f64cb21f73 fix(ams): exclude empty placeholder slots from AMS filament mapping
Empty AMS slots (is_tray_info_ready()==false) were included in
tray_filaments with id=0. The distance-map then stored tray_id=0 for
those slots, causing the greedy mapper to assign real project filaments
to the placeholder entry instead of their actual physical slot. On a
6-slot ACS/ACE with Slot 1 empty this shifted all mapped filaments by
one position.

Fix: skip any tray that is not ready (no color/type) before calling
_parse_tray_info() so only loaded slots enter the mapping pool.

Also keep index-alignment in get_ams_cobox_infos(): empty AMS entries
(filament_id empty) now push placeholder strings instead of being
silently skipped. This prevents the Overwriting-mode tab from accessing
m_ams_combo_info.ams_filament_colors at a shifted index, which caused
an out-of-bounds read and subsequent crash when switching sync modes
while a placeholder slot was present.

Fixes KX-Bridge-Release issue #67 comment #480 (slot-index shift +
Overwriting crash).
2026-07-20 12:59:04 +02:00
thysson2701
ad4ac71be4 fix(moonraker): re-resolve host on user→user preset switch for AMS sync
Two Moonraker user presets on different ports (:7125, :7126) share the
same printer agent type. switch_printer_agent() only called select_machine()
when the agent *type* changed — not when the host changed within the same
agent. A user→user preset switch therefore left the MachineObject pointing
at the first connected printer, causing AMS sync to always query the wrong
host.

Fix: when the agent type stays the same (and is not the BBL agent),
also call select_machine() so the host is re-resolved from the current
preset and set_selected_machine() reconnects to the correct Moonraker
instance.

Fixes: AMS Sync locked to first printer in multi-printer sessions (SirPeroples)
2026-07-20 12:59:04 +02:00
thysson2701
05cb4ecf48 fix(compat): add aliases for wall_filament → outer_wall_filament_id; fix verify_build.sh
Adds .aliases = { "wall_filament", "wall_filament_id", "outer_wall_filament",
"perimeter_extruder" } to outer_wall_filament_id and .aliases = { "inner_wall_filament" }
to inner_wall_filament_id in PrintConfig.cpp so that old .3mf files using these legacy
keys do not throw UnknownOptionException on load.

Also corrects verify_build.sh CHECKS to search for "tray_sub_brands" (the actual binary
string) instead of the stale "filament_sub_brands".
2026-07-20 12:59:04 +02:00
thysson2701
f5b71de932 chore: alle Upstream-Workflows deaktivieren (on: {}) 2026-07-20 12:59:04 +02:00
8d48947b8e docs: README auf 2.4.0-kx1 aktualisieren 2026-07-20 12:59:04 +02:00
thysson2701
514cd26bca fix(preset): Legacy-Aliases durch korrekte _id-Keys in s_Preset_print_options ersetzen
wall_filament, sparse_infill_filament, solid_infill_filament waren
unregistrierte Legacy-Aliases die beim Start UnknownOptionException
in apply_only() verursachten. Durch die korrekten registrierten Keys
(outer/inner_wall_filament_id, sparse/internal_solid/top/bottom_surface
_filament_id) ersetzt. Ausserdem fehlende Upstream-2.4.0-Keys ergaenzt:
lightning_*, bridge_line_width, relative_bridge_angle,
support_parallel_printheads, parallel_printheads_*, flashforge_serial_number.
2026-07-20 12:59:04 +02:00
thysson2701
c02df26328 feat(v2.4): KX-Linie auf Upstream 2.4.0 konsolidieren (2.4.0-kx1)
Neue 2.4-stable-Linie auf frischem orca-upstream/release/v2.4 (2.4.0):
- KX-Moonraker-Bridge (MoonrakerPrinterAgent.cpp/.hpp) übernommen
- Preset.cpp: KX-filament_id-Patches per 3way auf neuen Upstream appliziert
  (Upstream-Fixes 10.-21.06. erhalten)
- Issue #52: Vendor-Filter bei User-Presets überspringen
- AMS-Leerslot-Fix (DevFilaSystem.cpp + AMSItem.cpp): leerer Slot zeigt
  kein altes Filament mehr
- About-Hinweis, verify_build.sh, Filament-Bridge-Doku, README
- Version 2.4.0-kx1
2026-07-20 12:59:04 +02:00
SoftFever
8500fcdcca Fix version was not properly updated on non windows OS (#14617)
Fixed an issue where on non-Windows systems, the version was not properly written to the appconfig.
2026-07-06 22:18:06 +08:00
SoftFever
c95887a93f one time bump microsoft appstore version to 2.4.3 2026-07-06 17:37:47 +08:00
SoftFever
d3405cf461 bump version to 2.4.2 2026-07-06 12:31:54 +08:00
SoftFever
a524ec7dde Fixes invalid inherits/compatible_printers/compatible_prints references that point at a deleted or renamed preset. (#14595)
* 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
2026-07-06 12:31:54 +08:00
SoftFever
55d0108cd3 Show preset name in cloud sync conflict and error messages (#14592)
The 409 conflict notification, the force-push confirmation dialog, and the payload-too-large (413) dialog now name the affected preset. The name was already parsed from the conflict body but never surfaced. The account-level preset-limit message stays generic since it isn't about one specific preset.
2026-07-06 12:27:47 +08:00
SoftFever
d91972e576 Fix reload from disk for STEP models after reopening a project (#12992) (#14591)
* Fix reload from disk for STEP models after reopening a project (#12992)

reload_from_disk matched reloaded source volumes with an exact
source.input_file string comparison. After a project is saved and
reopened, the stored source path is only the filename (the default,
non-full-path save) while a freshly re-imported volume carries a full
path, so the comparison never matched: reload fell into fail_list and
the "locate file" dialog was effectively useless for STEP models.

Fall back to a case-insensitive filename comparison when the exact
paths differ, so the existing same-folder source lookup (and the
locate dialog) can reload the model. Projects that stored absolute
source paths still match exactly as before; no 3mf format change.

* Add Preferences option to store full source paths in projects

Expose the existing export_sources_full_pathnames setting (previously
only editable in the config file) as a checkbox under Preferences >
General > Project. Enabling it stores absolute source paths in saved
projects, so "Reload from disk" works when the source file is kept in
a different folder than the project (companion to #12992).
2026-07-06 12:27:47 +08:00
Valerii Bokhan
ccf28f394b Adding the add:north filament profiles to OrcaFilamentLibrary (#13366)
* Adding add:north filament profiles to OrcaFilamentLibrary

* addnorth filament profiles: moving the files to the BBL folder

* addnorth filament profiles: fixing filenames and setting ids

* addnorth filament profiles: updated settings (baseed on 26-06-2026 version)

* addnorth filament profiles: removed unsupported printers

* bump version

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-07-06 12:27:47 +08:00
SoftFever
6888f9d806 fix: use scalar config accessors in PA calibration for release/v2.4
#14447 backported main's array-based calib.hpp accessors, which call
DynamicPrintConfig::get_abs_value_at() — a coFloats/coFloatsOrPercents-only
method that does not exist on release/v2.4. Here outer_wall_speed,
outer_wall_acceleration and initial_layer_speed are still scalar coFloat,
so the method is undefined and, if backported, would throw at runtime on
these scalar options. This broke the build (calib.hpp is included widely
via AppConfig.hpp).

Revert speed_first_layer/speed_perimeter/accel_perimeter to the scalar
option<ConfigOptionFloat>()->value form used before #14447. The actual
#14447 crash fix (line_width_first_layer zero-width fallback in calib.cpp)
is unaffected.
2026-07-06 12:27:47 +08:00
SoftFever
07a87b4129 fix gcode time estimiation error (#14573)
fix gcode estimiation error
2026-07-06 12:27:47 +08:00
ExPikaPaka
23555f8df2 Preserve disabled filament overrides (nil) through cloud sync (#14550) 2026-07-06 12:27:47 +08:00
Ian Chua
116658de29 fix: add logging for refresh token flow and use local os keychain as source of truth. (#14531) 2026-07-06 12:27:47 +08:00
raistlin7447
a8f2fea5e2 fix: crash in Measure tool when a plain edge is the first selection (#14538)
* fix: crash in Measure tool when a plain edge is the first selection

The SPHERE_2 gripper raycaster called get_feature_offset() on
.first.feature instead of .second.feature (copy-pasted from the SPHERE_1
block). Plain planar-border edges store no extra point, so the Edge
branch dereferenced an empty optional behind a release-stripped assert,
aborting on Flatpak and undefined behavior elsewhere.

Point the SPHERE_2 raycaster at .second.feature and fall the Edge branch
back to the edge midpoint.

Fixes #14018
2026-07-06 12:27:47 +08:00
raistlin7447
7c80ea1fc1 feat: add {first_object_name} filename placeholder (#14497)
{input_filename_base} is meant to be the saved project's file name. Before
saved; #13753 fixed it to use the project name. Some users relied on the old
behavior to get the part name into their output file name and had no
placeholder to recover it ({model_name} is the 3mf designer metadata, blank
for plain STL imports).

Add {first_object_name} as a dedicated placeholder for the first printable
object on the current plate, populated in update_object_placeholders()
independently of {input_filename_base}.

Closes #14493
2026-07-06 12:27:47 +08:00
raistlin7447
b5d46a3e7c fix: crash when rotating the prime tower (#14499)
Selecting the prime tower and rotating it (PageUp/PageDown) crashed.
Selection::notify_instance_update() indexed m_model->objects with the
wipe tower's synthetic id (>= 1000), which is not a ModelObject index,
so the lookup returned garbage and dereferencing it segfaulted.

do_rotate/do_scale/do_mirror already skip the wipe tower in their own
loops but all call this shared helper, so scale and mirror hit the same
fault. Selection::drop() had the same latent bug via a direct index.
Guard both with the >= 1000 check already used throughout the file.

Fixes #14498
2026-07-06 12:27:47 +08:00
Noisyfox
fa0a08d8f3 Support accessing coFloatsOrPercents values in gcode template (#14526)
* Support accessing `coFloatsOrPercents` values in gcode template (OrcaSlicer/OrcaSlicer#14522)

* Vector option values are separated by comma

* Fix wrong cast used for checking nullability
2026-07-06 12:27:47 +08:00
ExPikaPaka
a38d9ccb21 Fix "plug-in file may be in use" install failure when migrating from older versions (#14373) (#14528)
Fix network plug-in install failing when the plug-in DLL is in use (#14373)

Switching or reinstalling the Bambu network plug-in from a running
OrcaSlicer failed with "The plug-in file may be in use". install_plugin()
deleted each existing file before extracting the new one, and on Windows a
currently-loaded DLL (BambuSource.dll, or the legacy networking library)
cannot be removed or overwritten in place, so the whole install aborted.

Rename an in-use file aside to "<name>.old" before writing the new one: the
running module keeps mapping the renamed file while the new version is
extracted, so the install succeeds without having to unload the plug-in
first. Stale ".old" files are cleaned up at the start of on_init_network(),
before the plug-in is (re)loaded, so they do not accumulate.
2026-07-06 12:27:47 +08:00
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
SoftFever
2c029402d7 fix build errors 2026-07-06 12:27:46 +08:00
SoftFever
f8dc94ab7f Fix issue that Orca keeps asking for re-install Bambu network plugin (#14511)
# Description

There is a bug that if user used to use legacy plugin, the
`NetworkAgent::use_legacy_network` will not be properly reset after user
install a newer plugin version through the plugin update dialog (ie, not
from selecting a plugin version from Preference screen). And in that
case Orca will download the legacy plugin but instead installing it with
a newer version suffix. So on next start up Orca can't find the plugin
because it tries to load using legacy version suffix instead.

This PR fixes it by getting rid of that error-prone static variable,
instead it always use the version number directly.

Fix #14373
Fix #14441

# Screenshots/Recordings/Graphs

<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->

## Tests

<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->

<!--
> A guide for users on how to download the artifacts from this PR.
-->

[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-07-06 12:27:46 +08:00
yw4z
76e16d8db4 Preferences Dialog fixes & improvements (Wiki link support) (#13857)
* init

* update

* update

* Update Preferences.cpp

* Update Preferences.cpp

* Update Preferences.cpp

* Update Preferences.cpp

* move filament sync mode next to auto sync

* move auto backup next to load behaviour
2026-07-06 12:27:46 +08:00
SoftFever
feeea3e651 fix: treat renamed printer presets as compatible aliases (#14504)
# Description

Fixes user filament presets that reference an old printer preset name in
`compatible_printers`, even when the current system printer preset
correctly declares that old name in `renamed_from`.

## Core Issue

`PresetCollection::find_preset()` was updated to resolve `renamed_from`,
but this specific failure does not go through `find_preset()`.

For root user filament presets with empty `inherits`, Orca infers
`compatible_printers` from the filament name suffix after `@`. For
example:

```json
"ELEGOO PLA Base @Elegoo Neptune 4 Pro (0.4 nozzle)"
```

loads with:

```json
"compatible_printers": ["Elegoo Neptune 4 Pro (0.4 nozzle)"]
```

The current system printer preset is named:

```text
Elegoo Neptune 4 Pro 0.4 nozzle
```

and has:

```json
"renamed_from": "Elegoo Neptune 4 Pro (0.4 nozzle)"
```

However, filament compatibility was doing a direct string comparison
against the active printer name. Since that compatibility path does not
call `find_preset()`, the `renamed_from` mapping was never considered.

## Fix

Teach printer compatibility checks to treat
`active_printer.preset.renamed_from` entries as aliases of the active
printer name.

This preserves existing user preset JSON and avoids rewriting
`compatible_printers`, while allowing old printer suffixes to remain
compatible with renamed system printer presets.

## Tests

<!--
> A guide for users on how to download the artifacts from this PR.
-->

[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-07-06 12:27:46 +08:00
Ian Chua
128068cb65 fix: fix type name from preset to process in the preset bundle dialog (#14481)
# Description

The type field for process presets is wrong. It should be process
instead of preset

<img width="2532" height="1576" alt="image"
src="https://github.com/user-attachments/assets/ef73f895-8ce9-4b04-957d-c12cdbaf8f9b"
/>

[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-07-06 12:27:46 +08:00
raistlin7447
2f13fd82b1 fix: slicing fails when filament_end_gcode uses layer_z with a wipe tower (#14462)
WipeTowerIntegration::append_tcr processed filament_end_gcode with only
layer_num in its placeholder config, so a filament_end_gcode referencing
{layer_z} could not be evaluated and slicing aborted. This affects any
multi-filament print that routes tool changes through the prime/wipe tower
(for example a support filament on a Bambu printer); the same macro works
in machine_end_gcode and on the non-wipe-tower set_extruder path, which
both define layer_z.

Set layer_z to tcr.print_z, the value this function already provides to its
change_filament_gcode and tcr_rotated_gcode placeholders.

Fixes #10119
2026-07-06 12:27:46 +08:00
raistlin7447
dafc223d1a fix: PA pattern calibration crash with first layer line width 0 (#14447)
CalibPressureAdvancePattern::line_width_first_layer() returned the raw
initial_layer_line_width, so a value of 0 (which means "use the default")
fed 0 into the Flow spacing math and threw FlowErrorNegativeSpacing,
crashing the whole app when slicing a PA pattern calibration.

Mirror the guard already present in the sibling line_width(): when the
configured width is non-positive, fall back to auto_extrusion_width.

Add a libslic3r regression test covering the width resolution.

Fixes #13188
2026-07-05 13:33:13 +08:00
SoftFever
19db9aa9c3 Preventing removal of old networking plugins on app version update as Orca allow user to pin the plugin version 2026-06-28 13:26:46 +08:00
yw4z
73aaeaa549 Fix: Missing inherited filaments on vendor profiles cannot found on OrcaFilamentLibrary (#12060)
* init

* ix: resolve OFL filament inherits in printer creation via base_bundle

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-06-28 13:26:40 +08:00
SoftFever
d1369e45c8 validator: detect ambiguous (duplicate) filament subtypes per printer (#14459)
* 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>
2026-06-28 01:42:55 +08:00
Ian Chua
3808f95a26 fix: update .info base_id if it is mismatched or empty (#14430)
* fix: update .info base_id if it is mismatched or empty

* Merge branch 'main' into fix/update-base-id-on-mismatch-or-missing

* early return
2026-06-28 01:42:50 +08:00
Ian Chua
2a1fdcc0b9 fix: old preset names should resolved renamed_from field (#14429)
* fix: old preset names should resolved renamed_from field

* chore: remove misleading comments

* Merge branch 'main' into fix/consider_renamed_from

* normalize_inherits

* improve find_preset2 performace
2026-06-28 01:42:44 +08:00
Ioannis Giannakas
66d4850399 Introduce minimal chamber temperature field (gcode chamber_min_temperature (#14340)
Introduce minimal chamber temperature field (gcode chamber_min_temperature)
2026-06-28 01:42:35 +08:00
SoftFever
6d7eeb89dc 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
2026-06-28 01:42:16 +08:00
ExPikaPaka
8ccae50e1b Fix missing filament profiles in Filament Selection dialog (#14398)
* Resolve preset type based on nozle diameter if printer_variant is empty

* Fix incorectly resolving plastic type (PLA, ABS, etc.)

* Revert default print-variant handling as it can be not only nozzle diameter

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-06-28 01:42:04 +08:00
SoftFever
148228f67c CI: add _x64 suffix to Windows installer/portable names for consistency with arm64 2026-06-26 16:39:51 +08:00
SoftFever
e3eca45f3d update locale 2026-06-26 11:56:44 +08:00
SoftFever
98831ac27f bump version to 2.4.1 2026-06-26 02:35:29 +08:00
Myself
c7d1331991 CrealityPrint: remove hardcoded :4408 from Device WebView URL (#14326)
* CrealityPrint: use printhost_port for WebView URL instead of hardcoded :4408

Fixes #4408 — when printhost_port is configured, use that port in the
Device WebView URL instead of always defaulting to :4408.

* CrealityPrint: remove hardcoded :4408 from Device WebView URL

Drop the CrealityPrint-specific get_print_host_webui override that
unconditionally appended :4408. The generic fallback in PrintHost
already uses print_host_webui/print_host config — users who need
Mainsail on port 4408 should set print_host_webui explicitly.

Fixes #4408
2026-06-26 02:27:03 +08:00
SoftFever
f344cf78f3 CI: download profile validator from nightly release 2026-06-26 02:26:58 +08:00