Commit Graph

28841 Commits

Author SHA1 Message Date
Ian Bassi
709ec51712 Remove validation for Disabled Small area compensation (#12528)
Do not check if disabled
2026-04-23 00:22:34 +08:00
Rodrigo Faselli
e99382da68 💥Fix crash svg use surface (#13262)
* Fix crash svg use surface

* unnecesarry header
2026-04-23 00:21:19 +08:00
yogihybo
5b05b6104a Fix first layer speed and layer slow down handling with rafts (#13224)
Adjust initial- and slowdown-layer speed logic to correctly account for raft layers. Replace the previous layer checks with object_layer_over_raft(), simplify initial-layer speed selection, and split the slow_down_layers interpolation into separate branches for configurations with and without rafts so the lerp uses the correct layer offset. Also avoid applying overhang speed adjustments to object layers that are over rafts.
2026-04-23 00:02:12 +08:00
HYzd766
3611903b8d QIDI: Disable Reduce infill retraction (#13267)
* 关掉减小填充回抽功能

* 关掉减小填充回抽功能

* Update Qidi X-Max 4 0.4 nozzle.json

Optimize the starting code of MAX4
2026-04-23 00:00:18 +08:00
Alexandre Folle de Menezes
1cc38cda06 Remove the wrong "c-format, boost-format" marker from non-format string (#13251)
# Description
Ditto.
2026-04-22 23:29:09 +08:00
Misterff1
81d81da08c Add more granular control over exhaust fan speed during print and on completion (#13228)
# Description

This commit adds the enhancement of https://github.com/OrcaSlicer/OrcaSlicer/issues/13116

- Adds checkboxes to enable or disable the fan speed override during print or after printing is completed. This allows users to, for example, only override the fan speed during printing whilst leaving the fan speed as is set in the machine gcode at the end. 
- Two new flags are added for this: `activate_air_filtration_during_print[extruder]` and `activate_air_filtration_on_completion[extruder]`. These can be used to more finely control machine gcode
- Current filament settings remain as they are: `activate_air_filtration[extruder]` settings are unaffected and by default both new flags are set to true, ensuring the same set behavior as before.

# Screenshots/Recordings/Graphs

<img width="856" height="208" alt="Screenshot From 2026-04-09 18-57-14" src="https://github.com/user-attachments/assets/e71e7de3-2def-4046-b5dc-55bf3b516ce5" />

As you can see there are now checkboxes left of the fan speeds. They have their own tooltip too, which also helps identify the correct flags for users who want to adjust their machine gcode.


## Tests
I have thoroughly tested this on my own computer (CachyOS) and on my printer. I have also carefully checked the gcode in every possible state this is in and ensured that the unsaved changes dialog properly displays the labels for these settings. Flags are set properly, sliced files properly use the flags if you check for them in machine gcode and default behavior is unaffected for those who have already changed settings for air filtration. From what I can see, this does exactly what it should be doing without any issues.
2026-04-22 23:28:18 +08:00
Ian Bassi
ec20a02fa5 Initial travel jerk/accell wiki + desc (#13324) 2026-04-22 12:09:41 -03:00
Neko.vecter
eba1769edd i18n: fix local in zh_CN (#13235) 2026-04-22 23:05:23 +08:00
Kiss Lorand
d76da458bc Update HU language (#13321)
Update the HU language file with the newly message IDs introduced by PR #11674.
2026-04-22 10:51:54 -03:00
Kiss Lorand
1267801de9 PR #11674 follow-up - toggle first layer accel&jerk (#13320)
Toggle initial layer accel&jerk
2026-04-22 10:04:13 -03:00
Richard Copra
00704c368f make initial layer travel move acceleration and jerk configurable (#11674)
* make initial layer travel move acceleration and jerk configurable

* Update spelling to match UI pattern

* Update min integer and re-order to match patterns

---------

Co-authored-by: Thomas Scheiblauer <tom@sharkbay.at>
Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
2026-04-22 09:55:24 +08:00
Kiss Lorand
a2cff48a46 Extend short-travel smoothing to external overhang walls (#11975) 2026-04-21 20:40:17 -03:00
Kiss Lorand
2e61d9eab2 Correct gap fill width bounds in outer-only and mixed-wall cases (#12057) 2026-04-21 18:08:55 -03:00
Ian Bassi
f70d30bf79 W10 double window fix (#13074)
Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
2026-04-20 19:27:38 -03:00
Ian Bassi
bfb70c598c CalibUtils: Center mesh models (#13252) 2026-04-20 19:18:14 -03:00
Ian Bassi
6244510b25 Fallback to per-move validation when bbox outside (#13179) 2026-04-20 19:18:03 -03:00
Valerii Bokhan
31c1c29325 Fix: Globally fixing the "milimeters" typo in the code (#13295) 2026-04-19 20:28:13 -03:00
Rodrigo Faselli
b742068426 fix seams glitch linux (#13233)
Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
Co-authored-by: yw4z <yw4z@outlook.com>
2026-04-19 18:47:19 -03:00
Rodrigo Faselli
298dbb6f72 Fix Filltrapezoidal layer rotation with infill combination (#13276) 2026-04-19 18:40:37 -03:00
Eyal Levin
43da0f7d9a Fix crash when selecting or moving wipe tower (#13243) 2026-04-18 07:42:54 +01:00
Ian Bassi
84011e232e Restrict label bot to external PRs (#13263) 2026-04-17 19:03:32 -03:00
Ian Bassi
51589035e0 Update JD calib limits (#13253) 2026-04-17 10:42:39 -03:00
Angus Gratton
b88a314763 deps builld: Try to honour CMAKE_BUILD_PARALLEL_LEVEL (#13158)
* deps: Use CMAKE_BUILD_PARALLEL_LEVEL for dependency builds.

If set when initial CMake is run, don't hard-code the number of CPUs for all the
recursive child builds.

* build_linux: Pass -j1 for dependency build.

This is recommended by the comment at the top of deps/CMakeLists.txt, and makes
sense as the recursive build steps will pick up
CMAKE_BUILD_PARALLEL_LEVEL (otherwise the number of parallel jobs is squared).
2026-04-17 12:34:35 +08:00
Argo
a394ba696c Tree support "on build plate only" no interface layers fix (#13192) 2026-04-17 12:27:42 +08:00
Ian Bassi
3816a519ae JD profiles from Marlin repo (#13241) 2026-04-16 21:19:16 -03:00
Ian Bassi
80ef058aaa Bambu H2D: Filament group wiki fix (#12880)
Co-authored-by: yw4z <yw4z@outlook.com>
Co-authored-by: yw4z <ywsyildiz@gmail.com>
2026-04-16 14:38:26 -03:00
Ian Bassi
30265e4f98 Refine PR label bot (#13245) 2026-04-16 14:04:27 -03:00
Ian Bassi
883c3f82cd ZBOLT indentation (#13242)
Reformatted new (#13240) Zbolt profiles to match new 1 tab indentation.
2026-04-16 12:07:20 -03:00
Vlad
deef9d1fa9 Improved Z-Bolt Profiles (#13240)
# Description
- Changing the filament name from Z-Bolt PLA (ABS, ABS HT, PETG, PA) to Generic PLA @Z-Bolt (etc);
- Increased size of g-code thumbnails for S800 Dual and S1000/S1000 Dual;
- The profile structure has been optimized to reduce the variety of profiles for each printer model;
- Extruder temperatures for all filaments have been increased for hardened steel nozzles;
- New process profiles have been added for the 0.6mm nozzle (0.16mm High Quality and 0.20mm High Quality);
- Disabling multicolor printing for single-head printers;
- The "_BEFORE_LAYER_CHANGE" and "_AFTER_LAYER_CHANGE" macros have been added to printer profiles.

<!--
> 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
<img width="762" height="257" alt="изображение" src="https://github.com/user-attachments/assets/b5c2ef09-343f-47e8-adb5-fcf682866882" />
<img width="731" height="361" alt="изображение" src="https://github.com/user-attachments/assets/b3259fed-7698-4ab2-89d7-b6b00d974b02" />
<img width="736" height="889" alt="изображение" src="https://github.com/user-attachments/assets/be79822a-da82-4715-a5c0-c393f0cb98b7" />

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

## Tests
OrcaSlicer_profile_validator.py
<img width="1053" height="84" alt="изображение" src="https://github.com/user-attachments/assets/a3427a51-e77f-40f3-a7b4-efbd62992290" />

check_profiles.yml
<img width="2203" height="681" alt="изображение" src="https://github.com/user-attachments/assets/994d0423-660a-4e0e-be4f-4b1c72b653f3" />

orca_extra_profile_check.py
<img width="1024" height="142" alt="изображение" src="https://github.com/user-attachments/assets/ddd8e3bf-b845-48fc-b736-ca80c138ce64" />

<!--
> Please describe the tests that you have conducted to verify the changes made in this PR.
-->
2026-04-16 22:05:05 +08:00
sparkleHazard
492df37e5c Fix segfault in CLI mode when extruder/filament options absent (P1S profiles) (#13193)
Fix segfault in CLI mode when extruder/filament options absent

When slicing via CLI (--slice) with a BBL printer profile such as the
P1S, update_values_to_printer_extruders and
update_values_to_printer_extruders_for_multiple_filaments dereference
option pointers without checking for nullptr first, causing a SIGSEGV.

Root cause: printer profiles that have different_extruder=true (e.g.
P1S variants) trigger these code paths even in single-extruder CLI
invocations where filament_map, extruder_type, and nozzle_volume_type
options may not be present in the resolved config.

Fix: add null guards before dereferencing option<> / dynamic_cast<>
results, consistent with the pattern used in PR #12719. Log a warning
and return early rather than crashing.

Fixes CLI --slice segfault (exit 139) with P1S profiles.

Related: #12426, #12719
2026-04-16 15:28:08 +08:00
Ian Bassi
0122e16e2c PR LabelBot: allow users to tag their PRs (#13182)
* Add PR label bot workflow

Co-Authored-By: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>

* LabelBot add to bot add-label

---------

Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
2026-04-16 12:43:52 +08:00
SoftFever
09c7ab665c fix some appimage issues (#13210) 2026-04-16 12:43:09 +08:00
GlauTech
bea09de087 Update TURKISH translations (#13155) 2026-04-16 12:38:51 +08:00
Noisyfox
a162e3f031 Fix macos crash on close (#13215)
# 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.
-->
2026-04-15 23:03:59 +08:00
Neko.vecter
4a7145894b i18n: fix local issue in zh_CN (#13225)
# i18n: fix local issue in zh_CN

fix i18n issue in zh_CN

fix translate key `msgid "On"`

```diff
msgid "On"
-msgstr "在"
+msgstr "开"
```

<img width="700" height="113" alt="f2d0371adaf47f0cf4402be9a1a50954" src="https://github.com/user-attachments/assets/bb53f77f-362d-4b83-b589-e54e66620b93" />

fix Filament in i18n from `细丝` to `耗材`

fix view cube

<img width="172" height="158" alt="image" src="https://github.com/user-attachments/assets/53b07fb7-be54-4dbd-9634-73e9f236d387" />
2026-04-15 23:02:53 +08:00
Ian Bassi
16727644bb Reduce size by Json Fromatting (#13163)
Reduce the size of current and new JSONs by standardising them with 1 tab indentation instead of 4 spaces.
This effectively reduces the size by almost 20 MB.

| Current | New |
|---|---|
| 85.2 Mib | 67 Mib |

Used [JQ](https://jqlang.org/) `--tab` to automatically format every current JSON.

> [!NOTE]
> Some profiles had the arrays on the same line, but those created by Orca were in the standard format (each object below the previous one). In some cases, this increases the number of tabs due to the new lines, but the increase is negligible, and this way both the base profiles and those created by Orca maintain the same style.
2026-04-15 22:58:12 +08:00
Hanno Witzleb
f7ef8a14bd Add Feature to disable snapping to buildplate (#11801)
* identified code for snapping to buidlplate

* rename internal name to ensure_on_bed to be consistent, saves option in 2mf, finish Move UI, use in both ensure_on_bed() functions

* makes auto_drop a per-object setting, removes global setting

* remove adUndef, add auto_drop to constructor/serialize

* fixes drop() button

* add "auto_drop" checkmark to "load as single object" dialog,
nothing changes if auto_drop == yes || "load as single object",
if auto_drop == false and "load as single object" == false the objects now retain their relative position to each other

* retains auto_drop (and printable) state when assembling or splitting objects,
adds ObjectList::printable_state_changed()  overload to be able to only provide ModelObject* vector

* adds dialog when splitting to ask if auto_drop should be disabled,
only shows when auto_drop enabled and atleast one volume  floating

* adds arrow indicator on bounding box if auto_drop == false

* removes unneeded code, keeps "auto_drop" naming consistent

* makes for loop simpler in set_printable, set_auto_drop and get_auto_drop,
makes get_auto_drop const,
fixes wording in Snapshot text

---------

Co-authored-by: Hanno Witzleb <hannowitzleb@gmail.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
2026-04-15 22:36:25 +08:00
yw4z
f02aa7200e Fix over scaled controls on windows (#13117)
init
2026-04-14 22:48:38 +08:00
SoftFever
3e4af2c723 WIP: Add native Wayland support for Linux (#13197)
* Add runtime display backend detection for Wayland support

Add LinuxDisplayBackend utility to detect X11 vs Wayland at runtime
using GDK_IS_X11_DISPLAY / GDK_IS_WAYLAND_DISPLAY macros. This is
the foundation for removing the forced GDK_BACKEND=x11 and enabling
native Wayland support.

- New files: LinuxDisplayBackend.hpp/.cpp with get_linux_display_backend(),
  is_running_on_wayland(), and is_running_on_x11()
- Propagate wxHAVE_GDK_X11 / wxHAVE_GDK_WAYLAND from FindGTK3.cmake
  as compile definitions to libslic3r_gui
- No-op on non-Linux platforms (returns Unknown / false)

* Fix Phase 1 code quality: pragma once, source ordering, static cache

* Make X11 initialization conditional for Wayland support

Remove the unconditional GDK_BACKEND=x11 force that blocked native
Wayland. Replace with conditional logic:

- EGL safety fallback: re-force X11 only when wxUSE_GLCANVAS_EGL is
  off and WAYLAND_DISPLAY is set, with a warning log
- XInitThreads() only called when DISPLAY is set (X11 in use)
- __GLX_VENDOR_LIBRARY_NAME only set when DISPLAY is present (GLX-specific)
- WEBKIT_DISABLE_COMPOSITING_MODE only set under XWayland (both
  DISPLAY and WAYLAND_DISPLAY present)
- Guard X11/Xlib.h include with __has_include for robustness
- Restore display validation to accept either DISPLAY or WAYLAND_DISPLAY

This is Phase 2 of the Wayland support plan.

* Fix Phase 2: safer EGL macro check, add clarifying comments

* Add GLAD2 library and replace GLEW linkage in build system

Set up GLAD2 as a static library to replace GLEW for OpenGL loading.
GLAD2 supports both GLX and EGL, which is required for Wayland support.

- Create src/glad/ with pre-generated GLAD2 sources (GL 4.6 compat)
- Add src/glad/CMakeLists.txt building glad as a static library
- Wire glad into src/CMakeLists.txt before libvgcode
- Modify libvgcode to use shared glad for GL path (keeps local copy
  only for GLES2/Emscripten) to avoid duplicate symbol conflicts
- Replace GLEW::GLEW with glad in libslic3r_gui link libraries

Note: GLEW is kept in deps for OpenCSG. Code migration from GL/glew.h
to glad/gl.h headers will follow in Phase 3B+3C.

* Fix Phase 3A+3D: libvgcode GLAD include, dead files, dlopen dep, OpenGL link var

* Migrate from GLEW to GLAD: replace headers and API calls across codebase

Replace all #include <GL/glew.h> with <glad/gl.h> across 49 source files.
Migrate GLEW API calls to GLAD equivalents:
- glewInit/glewExperimental -> gladLoaderLoadGL()
- GLEW_EXT_* / GLEW_ARB_* extension checks -> GLAD_GL_EXT_* / GLAD_GL_ARB_*
- Remove GLEW-specific EGL/GLX mismatch #error guards (not needed with GLAD)
- Replace unavailable EXT symbols with core GL equivalents in
  GLCanvas3D.cpp (GL_MAX_SAMPLES, glRenderbufferStorageMultisample,
  glBlitFramebuffer, GL_READ/DRAW_FRAMEBUFFER)
- Update log messages from glewInit to gladLoadGL

* Fix Phase 3B+3C: remove GLEW find, clean EXT symbols, update attribution

- Remove find_package(GLEW) block from root CMakeLists.txt since GLEW
  is no longer linked by any main application code
- Remove "glew" from SLIC3R_STATIC option description
- Replace all remaining EXT framebuffer symbols with core equivalents
  in render_thumbnail_framebuffer_ext and _rectangular_selection_picking_pass
- Update AboutDialog credits from GLEW to GLAD

* Enable EGL in wxWidgets and add runtime GLX/EGL selection for Wayland

- Set wxUSE_GLCANVAS_EGL=ON in wxWidgets build and Flatpak manifest
- Add PreferGLX() call on X11 sessions for driver compatibility
- Remove Phase 2 safety fallback (EGL is now always compiled in)
- Guard SwapBuffers against hidden canvases to prevent Wayland stalls

* Fix Phase 4: move PreferGLX to app startup, fix FPS counter guard

Move wxGLCanvas::PreferGLX() from OpenGLManager::create_wxglcanvas()
(static initializer) to GUI_App::on_init_inner() before any wxGLCanvas
is constructed. This prevents a race where SkipPartCanvas could trigger
wxGLBackend::Init() before the GLX preference is set. The new location
also adds explicit is_running_on_wayland() detection with a warning for
unknown backends.

Move increment_fps_counter() inside the IsShownOnScreen() guard so FPS
is only counted when a frame is actually swapped.

* Update GLFW from 3.3.7 to 3.4 for runtime Wayland/X11 backend selection

Replace the compile-time GLFW_USE_WAYLAND flag (which locked to a single
backend) with GLFW 3.4's GLFW_BUILD_WAYLAND + GLFW_BUILD_X11 flags that
build both backends and auto-select at runtime based on the available
display server. This enables the CLI thumbnail renderer to work on both
Wayland and X11 sessions without separate builds.

* wayland: Fix UI call sites that rely on global screen coordinates

On Wayland, wxGetMousePosition() returns (0,0) and SetPosition() is a
no-op for top-level windows. Fix the highest-impact call sites:

- GLCanvas3D: Use cached m_mouse.position from event handlers instead
  of wxGetMousePosition() + ScreenToClient() in get_local_mouse_position()
- Plater: Use event-relative coords via ClientToScreen(e.GetPosition())
  instead of wxGetMousePosition() in 3 leave-window handlers
- BBLTopbar: Use event.GetPosition() and FindToolByPosition() directly
  in mouse handlers instead of wxGetMousePosition()/FindToolByCurrentPosition()
- Search: Use focus-based dismiss logic on Wayland instead of
  wxGetMousePosition()-based rect checks in SearchDialog and
  SearchObjectDialog
- GUI_App: Skip SetPosition() in window_pos_restore() on Wayland where
  it is a no-op; still restore size and maximize state
- Button: Position tooltip relative to button widget via ClientToScreen
  instead of wxGetMousePosition()

* Fix SearchDialog Wayland dismiss: guard against search_line focus

* flatpak: Add Wayland socket permission for native Wayland support

* spec

* Fix crash on Wayland when wxWidgets lacks EGL support

Restore the safety fallback that forces GDK_BACKEND=x11 when wxWidgets
was not built with wxUSE_GLCANVAS_EGL=ON. Without this, the GLX backend
tries to access a non-existent X11 display on native Wayland, crashing
in wxGLCanvas::IsDisplaySupported() with SIGSEGV at offset 0xe4.

Also add a defense-in-depth guard in detect_multisample() that skips
the IsDisplaySupported call entirely on Wayland without EGL.

Root cause: deps/wxWidgets must be rebuilt after enabling EGL. The
compile-time check in OrcaSlicer.cpp detects the mismatch and falls
back safely.

* Fix EGL detection: use wxHAS_EGL instead of wxUSE_GLCANVAS_EGL

wxUSE_GLCANVAS_EGL is a CMake build option, NOT a C++ preprocessor
macro. The actual macro defined in wxWidgets setup.h is wxHAS_EGL.
All compile-time EGL checks were using the wrong macro, causing
the safety fallback to always trigger even with a properly built
EGL-enabled wxWidgets.

* Fix GL function pointers invalidated on Wayland/EGL

gladLoaderLoadGL() dlopen's libGL.so.1 to resolve GL function pointers
via dlsym, then immediately dlclose's the handle. On X11/GLX this is
fine because the GLX context keeps libGL.so mapped. On Wayland/EGL,
nothing else holds libGL.so open, so dlclose unmaps it and all function
pointers become dangling — causing SIGSEGV on the first GL call.

Fix: on Wayland, use gladLoadGL(eglGetProcAddress) which resolves
function pointers through the EGL loader without opening/closing
libGL.so.

* fix crash on start and various rendering issues

* fix crash on close

* small refactor

* move GPU selection to desktop file

* clean up a bit

* clean up more

* fix appimage error
2026-04-13 19:45:39 +08:00
SoftFever
2553d37236 cherry pick Linux specific changes from 2.3 (#13205)
- add a new mode to build in docker
- Improve AppImage
 1. fix  libbz2 soname differeence issue on appimage
 2. Downgrade to 22.04 for better compatibility
 3. improve appimage overall
2026-04-13 17:21:05 +08:00
Ocraftyone
3c1cba1849 Add persistent cookie storage for PrinterWebView on WebKitGTK (#13135) 2026-04-13 14:07:40 +08:00
peterm-m
7526812944 Fix typo in Spanish translation: G-Cpde → G-code (#13196) 2026-04-12 16:44:30 +03:00
SoftFever
15c1dbfab6 fix file name (#13184) 2026-04-11 09:53:30 +08:00
Ian Bassi
5b29fef9e5 Bump GitHub Actions: Node 20 deprecation (#13173)
Bump GitHub Actions action versions

Update workflow action versions: upgrade geekyeggo/delete-artifact from v5 to v6 and microsoft/setup-msbuild from v2 to v3 across .github/workflows/build_all.yml, build_deps.yml, and build_orca.yml. This brings workflows to newer action releases for compatibility and fixes.
2026-04-10 15:10:45 -03:00
Anson Liu
2033e60052 Auto hide/show the ironing angle settings if the selected ironing pattern does not use the user specified angles (#11451)
Co-authored-by: yw4z <ywsyildiz@gmail.com>
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
2026-04-09 19:23:09 -03:00
Eldenroot
984178ac29 Add fallback when color was not specified (crash fix) (#13002) 2026-04-08 17:21:22 -03:00
yw4z
a9741b5274 Improve readability of "Only one wall on.." parameters (#13121) 2026-04-08 17:18:46 -03:00
Miki
71a84def1a Fix single-instance IPC by preserving "OrcaSlicer" suffix in Win32 title (#13017) 2026-04-08 17:15:43 -03:00
David Martínez Moreno
47b28ee969 Update Spanish translation, remove fuzzies. (#12981)
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
2026-04-08 17:04:21 -03:00
Ian Bassi
d715dfc966 Wiki link fix and update (#13152) 2026-04-08 15:06:28 -03:00