Commit Graph

29190 Commits

Author SHA1 Message Date
viewit
8748d796fc feat(tools): verify_build.sh prüft KX-spezifische Strings vor Release-Upload 2026-06-06 22:26:36 +02:00
viewit
72f7f1dc08 feat: About-Dialog URL auf OrcaSlicer-KX Gitea-Branch aktualisiert 2026-06-04 10:09:17 +02:00
viewit
ad53b6d98e feat: Version auf 2.4.0-alpha-kx2 und KX-Bridge Hinweis im About-Dialog 2026-06-03 21:35:50 +02:00
viewit
cae3295d83 fix(preset): sync_ams_list auch User-Presets (P-Prefix IDs) berücksichtigen 2026-06-03 14:47:19 +02:00
viewit
7ebaf5c597 fix(preset): eigene filament_id beim Laden nicht durch Parent-ID überschreiben 2026-06-03 14:04:13 +02:00
viewit
1d6ec10c33 fix(preset): filament_id auch im parent_config-Branch von Preset::save() schreiben
Außerdem: sub_brands in AMS-Config übergeben damit sync_ams_list()
bei ID-Kollisionen (z.B. OGFL04 = Overture + eSUN) den korrekten
Hersteller per Namens-Prefix bevorzugt.
2026-06-03 11:15:59 +02:00
viewit
a2e6dbe67b fix(preset): filament_id für User-Presets generieren wenn keine P-Prefix-ID vorhanden 2026-06-03 11:10:04 +02:00
viewit
1f7cacfe76 fix(preset): filament_id auch generieren wenn sie vom Parent geerbt wurde (== base_id) 2026-06-02 22:07:50 +02:00
viewit
f7d880121d fix(moonraker): Pass 3 — auch unsichtbare Presets durchsuchen für uninstallierte Drucker-Hersteller 2026-06-02 20:09:37 +02:00
viewit
7fb33e490b fix(preset): filament_id auch im parent_config-Branch von Preset::save() schreiben 2026-06-02 20:06:55 +02:00
viewit
0080d7e743 fix(preset): type Feld statt type() Methode in Preset::save() 2026-06-02 19:21:59 +02:00
viewit
bb7497cf26 fix(preset): filament_id in Preset::save() generieren statt nur in save_current_preset()
Der vorherige Fix griff nur beim Umbenennen. Beim normalen Speichern
läuft Preset::save() — dort wird jetzt ebenfalls eine MD5-basierte ID
generiert wenn das User-Filament-Preset noch keine hat.
2026-06-02 18:33:17 +02:00
viewit
51aec8637c fix(preset): filament_id für User-Presets beim Speichern generieren (PR #13315 portiert)
Wenn ein Filament-User-Preset noch keine filament_id hat, wird beim
Speichern/Umbenennen automatisch eine MD5-basierte ID (P + 7 Zeichen)
generiert. Damit kann der Moonraker-Filament-Matcher das Preset korrekt
einem Slot zuordnen statt auf Generic PLA zurückzufallen.
2026-06-02 14:37:37 +02:00
viewit
b03a20f3dc fix(moonraker): User-Presets ohne filament_id per Namen matchen
Presets die via 'Save As' angelegt werden haben keine filament_id.
Statt sie zu überspringen werden sie per Namen gematcht und ihr
Preset-Name als Identifier zurückgegeben.
2026-06-02 13:26:10 +02:00
viewit
ea054995e3 Revert "Add unique filament_id for inherited user presets"
This reverts commit fe4c79cd27119ecbdd115b718cddf91e5fd9d411.
2026-06-02 13:25:34 +02:00
Felix Jen
72f25b6714 Add unique filament_id for inherited user presets
When a user creates a new filament preset by inheriting from an
existing one (e.g., "Brand ABS @BBL H2D" inheriting from "Generic
ABS @BBL H2D"), the resulting preset previously had no filament_id
of its own. This caused two problems:

1. The AMS sync pipeline could not distinguish the user preset from
   its parent, so syncing filaments from the printer always resolved
   to the generic base preset instead of the user's custom one.

2. External tools that rely on filament_id for preset identification
   (e.g., Bambuddy, see maziggy/bambuddy#1053) could not assign or
   recognize user-created inherited presets in AMS slots.

The root cause was twofold:

- No filament_id was generated during save_current_preset() for
  inherited filament presets. Only base (non-inheriting) presets
  received one via the CreatePresetsDialog flow.

- The AMS matching logic in sync_ams_list(), get_ams_cobox_infos(),
  and get_filament_presets() filtered candidates with
  `get_preset_base(f) == &f`, which by definition excludes any
  preset with a non-empty inherits() field.

This commit:

- Generates a unique filament_id (MD5 hash of preset name, prefixed
  with "P", truncated to 8 chars) when creating a new filament
  preset in PresetCollection::save_current_preset(). This matches
  the existing ID generation scheme used for base filaments in
  CreatePresetsDialog::get_filament_id().

- Persists filament_id into the JSON when saving inherited presets
  via Preset::save() and get_differed_values_to_update().

- Broadens the AMS filament matching predicates to also consider
  user presets that carry their own filament_id, rather than
  requiring them to be base presets.

Files changed:
  src/libslic3r/Preset.cpp       - ID generation, save, lookup
  src/libslic3r/PresetBundle.cpp - AMS sync matching predicates
2026-06-02 13:23:26 +02:00
viewit
ed88515a10 fix(moonraker): Zwei-Pass-Suche in filament_id_by_name — kompatibel first, dann alle sichtbaren
Pass 1: nur is_compatible Presets (wie bisher)
Pass 2: alle sichtbaren Presets unabhängig von is_compatible

Behebt: Hersteller wie eSUN, Eryone, Elegoo haben globale Base-Presets
aber keine druckerspezifischen Profile für den Kobra X →
is_compatible=false → bisher immer Generic PLA.
Mit Pass 2 werden diese Base-Presets als Fallback gefunden.
2026-06-02 12:43:57 +02:00
Florian Stamer
e16b5c7eac Improve Moonraker filament preset matching
Prefer vendor-scoped name matching from lane_data, add robust filament-name normalization, and keep material fallback for unmatched entries.
2026-06-01 13:32:07 +02:00
Florian Stamer
7ec07ee5a4 Matching for Filaments by Vendor Name, Material and Special Name 2026-06-01 13:32:07 +02:00
viewit
4ca3deebba fix(moonraker): Vendor-Match auch wenn tray_info_idx gesetzt aber inkompatibel
Wenn die Bridge eine tray_info_idx sendet (z.B. GFL99 für Bambu Lab PLA)
die kein kompatibler Preset für den aktiven Drucker hat, wird jetzt
trotzdem der Vendor+Type+Color-Match versucht statt direkt auf Generic
zurückzufallen.

Behebt: Bridge sendet GFL99 (Bambu-ID) für Slot mit vendor='Bambu Lab'
→ kein Kobra-X-kompatibler Preset für GFL99 → bisher Generic PLA
→ jetzt Vendor-Match → findet besten Bambu-Lab-PLA-Preset

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 21:18:48 +02:00
viewit
12f5d7b19c fix(moonraker): Vendor-Match auch für inkompatible/nicht-instantiierbare Base-Presets
Pass 1: kompatible + sichtbare Presets (wie bisher)
Pass 2 (neu): wenn Pass 1 leer → alle Base-Presets des Vendors + Typs
durchsuchen, unabhängig von is_compatible/is_visible.

Behebt: Elegoo PLA (@base, instantiation=false) und ähnliche Hersteller
die ein globales Base-Preset haben aber kein druckerspezifisches Profil
für den Kobra X → bisher immer "Generic PLA", jetzt "Elegoo PLA".

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 20:03:11 +02:00
viewit
3d0aeb3877 feat(moonraker): Bridge-Filament-Hint (tray_info_idx + vendor) respektieren
KX-Bridge sendet bereits konkrete Filament-IDs und Vendor-Hints im
AMS-JSON, aber MoonrakerPrinterAgent überschreibt sie unbedingt mit
filament_id_by_type() → erstes sichtbares Preset alphabetisch gewinnt.

Patch:
- AmsTrayData um filament_vendor erweitert
- Liest tray_info_idx + filament_vendor aus Bridge-JSON
- Wenn tray_info_idx leer + vendor vorhanden: Vendor+Type+Color-Match
  (gleiche Logik wie SnapmakerPrinterAgent)
- Sonst: alter filament_id_by_type-Fallback (unverändertes Verhalten)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 20:42:10 +02:00
tome9111991
00271d7130 Fix Moonraker Happy Hare AMS filament sync 2026-05-27 19:05:19 +02:00
tome9111991
9ccb4e125c Fix AMS filament preset switch crash 2026-05-27 19:05:19 +02:00
SoftFever
888384d7c4 bump flatpak version 2026-05-23 18:14:45 +08:00
SoftFever
706340a5c1 bump version to 2.4.0-alpha 2026-05-23 18:14:45 +08:00
Robert J Audas
bb058ea483 Bump printers version.txt to propagate X2D (N6.json) to existing users (#13806)
PR #13388 added resources/printers/N6.json for X2D support but did not
bump resources/printers/version.txt. PresetUpdater only copies files
from the install's resources/printers/ to the user's data_dir/printers/
when the resources version is newer than the user's stored version, so
every existing install stays at 02.00.00.29 and never receives N6.json.

At runtime, json_diff::load_compatible_settings("N6", "") reads from
data_dir/printers/N6.json; the silent file-missing failure leaves
is_support_bed_leveling, is_support_pa_calibration, and
SupportCalibrationNozzleOffset at their defaults, hiding the Bed
Leveling and Nozzle Offset Calibration checkboxes in the Send Print
Job dialog for the X2D.

Bumping the patch version triggers the existing propagation logic on
next startup.

Fixes #13780
Fixes #13794

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 18:12:14 +08:00
SoftFever
b16865f94a attemp to enhance network share experience for flatpak (#13809)
* attemp to enhance network share  experience for flatpak
2026-05-23 17:15:47 +08:00
SoftFever
5c37bd1724 fix flatpak crash on start issue (#13808)
fix flatpak crash issues
2026-05-23 16:19:26 +08:00
yw4z
203f3446a4 Fix glitches around TextInput & ComboBox controls after scrolling on scaled displays (#13805)
Update StaticBox.cpp

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-05-23 11:24:12 +08:00
SoftFever
df41a9b36f Feature/update flatpak 2.4 (#13799)
* update flatpak to reflect recent deps changes as well as upgrade runtime to 50

* support building from worktree
2026-05-22 23:52:36 +08:00
SoftFever
fa82c32e9c Fixes a possible null dereference in DeviceManager::check_pushing() when the selected machine is missing or stale during timer refresh. (#13802)
* Fix selected-machine null deref in device pushing check
2026-05-22 23:52:00 +08:00
Zuhaib Siddique
8896237d40 Ignore SIGPIPE at startup to prevent crashes on dropped printer connections (#13788)
Ignore SIGPIPE at startup to prevent crash on dropped printer connection

Writing to a closed printer network socket raised SIGPIPE, whose default
action terminated the whole process (exit 141, no crash report). Set
SIGPIPE to SIG_IGN once at main() entry (POSIX only) so such writes return
EPIPE to the existing networking error handling instead of killing the app.

Fixes #13787
2026-05-22 22:18:53 +08:00
Ian Chua
aae719c4b1 fix: detached presets not showing up (#13793)
* fix: detached presets not showing up

* slightly better code clarity

* remove cloud_prefix
2026-05-22 19:05:28 +08:00
yw4z
c5330a6355 Mode button fixes / improvements (#13795)
* init

* update thumb color
2026-05-22 19:04:03 +08:00
Ian Chua
ac25fec14a fix: 409 sync push on app start (#13796)
revert prev commits
2026-05-22 19:03:20 +08:00
SoftFever
538c1d97ed Fix crash for preset sync during startup (#13797) 2026-05-22 19:02:49 +08:00
Ioannis Giannakas
8d785941d1 Reduce Spiral Z generation segment density (#12564) 2026-05-22 10:46:00 +01:00
SoftFever
fe4569131f bump profile version 2026-05-22 02:27:34 +08:00
SoftFever
a2d5d1b523 update locale 2026-05-22 02:25:03 +08:00
Heiko Liebscher
721b73758d Update German localization for OrcaSlicer (#13785)
- Added missing translations for various UI elements and messages.
- Improved existing translations for clarity and accuracy.
- Ensured consistency in terminology across the localization file.
2026-05-22 01:35:22 +08:00
SoftFever
306eab8a05 Guard cloud logout on tagged HTTP errors 2026-05-22 01:15:54 +08:00
Ian Chua
9512a03973 fix: set a grace period for 401 api calls (#13781)
* fix: set a grace period for 401 api calls

* fix
2026-05-22 00:26:34 +08:00
Ian Chua
06c45d30b7 fix: h2d camera liveview (#13779) 2026-05-21 19:02:16 +08:00
Shantanu Joshi
d243ccdb0d Fix typo 'cancle' -> 'cancel' (#13769)
Co-authored-by: Shantanu Joshi <shan@example.com>
2026-05-21 13:18:52 +03:00
SoftFever
70e50dd13b fix: reflect synced preset values in UI without switching tabs (#13778)
After pulling the latest presets from the cloud, changed values such as Layer height kept showing the old value until the user switched tabs. Refresh the active settings tab on sync so updates appear immediately.
2026-05-21 17:16:24 +08:00
Noisyfox
1b652771fd fix(threads): bump worker thread stack to 16MB to survive CGAL emboss (#13772)
The Emboss text-cut workflow can crash with SIGBUS at a stack-guard page
on macOS (and equivalent on Linux) when CGAL's
Polygon_mesh_processing::corefine falls back from filtered interval
arithmetic (Epick) to exact rational arithmetic (Epeck / mpq_class).

On near-degenerate inputs -- coplanar triangles in the projection
footprint, very thin font stems, sharp edges or seams under the text --
CGAL's Filtered_predicate_with_state cascade ends up inside
Triangulation_2<Projection_traits_3<Epeck>>::march_locate_2D, whose
recursive walk plus mpq_class arithmetic frames overflows the worker's
4MB default stack. The fault address sits exactly inside the next
thread's guard page, which is the textbook macOS signature.

Crash trace (BambuStudio v02.07.00.55, macOS 26.4.1 arm64, embossing
text into a model):

  __gmpn_mul_1
  __gmpz_mul / __gmpq_mul
  CGAL::determinant<mpq_class>
  Projected_orientation_with_normal_3
  Filtered_predicate_with_state::operator()
  Triangulation_2<...>::orientation
  Triangulation_2<...>::march_locate_2D
  Surface_intersection_visitor::triangulate_intersected_faces
  Polygon_mesh_processing::corefine
  Slic3r::cut_surface
  Emboss::cut_surface_to_its
  Emboss::GenerateTextJob::get_text_mesh
  PlaterWorker::PlaterJob::process

The thread's stack region in the report was exactly 4128K -- the
default 4MB plus a small TLS overhead -- and the faulting address hit
the adjacent guard page. We have one observed reproducer; the 16 MB
value is chosen as 4x defensive headroom over that, not as a measured
upper bound. Future heavier emboss inputs may need more.

Cumulative cost on a 64-bit target. Slic3r::create_thread has 22
callsites across the codebase. Realistic peak concurrent live count is
on the order of 10-15 workers (Plater UI worker, slicing process, FDM-
support gizmo, STEP loader, network sync helpers, per-task sender
threads in TaskManager up to MaxSendingAtSameTime, per-machine info
threads in device-list dialogs, long-lived sync helpers in GUI_App).
At 16 MB reserve x ~15 = ~240 MB of address-space commitment in the
worst case, which is bounded on any 64-bit target.

Resident memory remains proportional to actual stack depth on all three
platforms: macOS / Linux mmap the thread stack and defer-commit pages on
touch, and Boost.Thread on Win32 passes STACK_SIZE_PARAM_IS_A_RESERVATION
to _beginthreadex (verified at libs/thread/src/win32/thread.cpp), so on
Windows the bumped value is the reserve, not the initial commit.

The 32-bit branch of the previous (sizeof(void*) == 4) ternary is
removed: BambuStudio doesn't ship a 32-bit build today, and the literal
makes the value easier to read at the callsite.

(cherry picked from commit e150b502b3d2afc98b83dcc9e5720e998f9eb79a)

Co-authored-by: Abdel Gomez-Perez <nabdel07@icloud.com>
2026-05-21 16:24:54 +08:00
Ian Chua
a2a3a7188c fix: update cloud error message (#13776)
# Description

Updated error message.

[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-05-21 16:07:01 +08:00
Ian Chua
9adc31336d fix: update cloud error message 2026-05-21 16:03:38 +08:00
SoftFever
64ffc09cd6 small tweaks (#13770)
* fix: update default values for FFF parameters and wipe tower wall type

* fix: show ModeSwitchButton in expert mode when develop mode is enabled
2026-05-21 14:22:49 +08:00