* Store user session information along with refresh token, to allow offline use once user is logged in
* Don't bother with avatar because we won't see it when offline anyway
* Fix offline Sync Presets freezing the UI on repeat clicks
Ignore restart_sync_user_preset() while a manual sync's progress dialog is on screen, so a second app-modal dialog can't stack on the first. Offline the dialog blocks on a long, uncancellable HTTP timeout; on macOS the global menu stays live while the window is disabled, so a second click otherwise wedges the app (force-quit only).
* Skip redundant user-secret re-write on startup
set_user_session() always re-encrypts and writes the secret to disk; on the startup restore path that just rewrites the bytes it was loaded from. Add a persist flag so the restore path skips it. Also drop an unused catch binding and a stray blank line.
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Don't show unsupported presets in drop down list, since it's not useful
* Add option to show unsupported presets
* Explicitly set the default value to `false`
* update filament list without restart on preference change
---------
Co-authored-by: yw4z <ywsyildiz@gmail.com>
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>
# Description
Fixes a macOS object-list filament editor crash/glitch where the
filament column could enter Cocoa native text editing and expose
`wxCustomRendererObject: 0x...` or crash while committing an invalid
`DataViewBitmapText` value.
The visible `wxCustomRendererObject` glitch was observed on macOS
through Cocoa `wxDataViewCtrl` editing. The underlying unsafe
assignment/variant/editor assumptions are not inherently macOS-only, so
the defensive data-path fixes are cross-platform.
Changes:
- Adds an explicit `DataViewBitmapText` assignment operator that avoids
copying the `wxObject` base, matching the existing copy constructor.
- Rejects unexpected variant types before reading object-list
name/filament values as `DataViewBitmapText`.
- Hardens filament editor value extraction against unexpected editor
controls.
- On macOS, routes filament-column editing through the custom
bitmap-choice renderer instead of `wxDataViewCtrl::EditItem()`, avoiding
native text editing of `wxCustomRendererObject`.
Fixes https://github.com/OrcaSlicer/OrcaSlicer/issues/13682
Previous PR with conversation:
[#13684](https://github.com/OrcaSlicer/OrcaSlicer/pull/13684)
This should fix the crash observed by @Noisyfox as we're addressing the
underlying problem of presenting the `wxCustomRendererObject`.
## Tests
Validated on macOS arm64. Repeated double-click/edit attempts on an
unselected object's filament cell no longer show
`wxCustomRendererObject` and no crash reproduced.
<!--
> 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)
[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
This can be enabled in Preference->Developer->Keep painted feature after
mesh change.
<img width="731" height="633" alt="init"
src="https://github.com/user-attachments/assets/8b195486-538e-4eda-9e77-bfdf1a794306"
/>
TODO:
- [ ] Bug fixes
- [ ] Make it faster
- Keep painting after other mesh operations such as reload from
disk/simplify/boolean operation etc:
- [x] Planar cut
- [x] Dovetail cut
- [x] Cut with part assigned to other side
- [x] Split to parts
- [x] Split to objects
- [x] Mesh boolean gizmo
- [x] Mesh boolean in right click
- [x] Reload from disk/replace stl (won't work well if mesh changed too
much)
- [x] Fix model
- [x] Simplify/smooth (this two won't work well due to too much mesh
changes)
- [x] Add options in settings since I think this will be experimental
for a long time until being tested by a lot of ppl
Fix issue that printer name disappear if profile (other than the first one among its variants) is modified
for printers that have multiple variants with different nozzle size
Fix a regression that second extruder settings not properly handled for H2D/X2D (OrcaSlicer/OrcaSlicer#13559)
The problem here is how it deals with comparasion between signed & unsigned unmbers. It will convert both into unsigned then do the comparasion,
which means when `extruder_id` is `-1` (which is a valid value, means all extruders), it will be treated as `0xFFFFFFFF` which is obviously greater than `nozzle_volumes->size()`
then be reset to `0`. So when the parameter dialog is built (which will call this function with `extruder_id=-1`), only the first extruder will be set to the correct variant index.
* Clean up code
* Filament mapping select ext slot automatically when no AMS filament inserted (OrcaSlicer/OrcaSlicer#13103)
* Show warning if external filament type does not match the one in sliced file
# Description
<!--
> Please provide a summary of the changes made in this PR. Include details such as:
> * What issue does this PR address or fix?
> * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be considered?
-->
# 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.
-->
* ConfigOptionDef: min/max values type are changed from INT to FLOAT.
(cherry picked from commit f277bc80c22e0c9a067481a4301922e2c96aed47)
* Fix infinite loop and crash when `fuzzy_skin_point_distance` = 0 (SoftFever/OrcaSlicer#11069)
* Fix Linux build issue
* Fix float comparison due to precision loss
* Automatically generate extruder id & printer extruder variant mappings for non-BBL multi-extruder printers
* Support different layer height limit for non-bbl multi-extruder printer
* Add script with VS version auto detection
* Add msvc145 toolset support
* Fix issue when build slicer only
* Fix vs2026 OpenCV build
* Set github action to use new build script
* Get vs version from `msbuild --version` so it works for github action