Commit Graph

29485 Commits

Author SHA1 Message Date
SoftFever
7fc1e109c5 delete misshaped profiles 2026-05-19 14:35:20 +08:00
SoftFever
374e4ad8a9 Follow up update for PR #13724: improve GC and shorten comments 2026-05-19 14:32:18 +08:00
SoftFever
d0fbda3af1 Fix Linux segfault when loading Fluidd/Mainsail printer hosts (#7210) (#13724)
* Fix Linux segfault when loading Fluidd/Mainsail printer hosts (#7210)

Co-authored-by: VittC <58783944+VittC@users.noreply.github.com>

* narrow down the changes

---------

Co-authored-by: VittC <58783944+VittC@users.noreply.github.com>
2026-05-19 14:26:34 +08:00
Andrew
f78836bef4 Stop tracking .idea files (#13735) 2026-05-19 11:20:04 +08:00
SoftFever
d8369e5f75 Fix faint toolbar icons on Wayland (#13723)
Use glBlendFuncSeparate in GLTexture::render_sub_texture so destination
  alpha stays at 1.0. The Wayland compositor honors framebuffer alpha for     window compositing; the previous straight-alpha blend reduced dst alpha
  at anti-aliased icon edges, making them semi-transparent against the
  desktop. RGB blending is unchanged, so X11/Windows/macOS are unaffected.
2026-05-19 01:38:37 +08:00
SoftFever
88b4a63228 Fix Linux data-view dropdown popup parenting (#13721)
Delay opening the object-list filament dropdown on wxGTK until the editor
  window is mapped, avoiding popup creation without a valid native toplevel.
  Also set the GTK transient parent for dropdown popups created from data-view
  cell editors.
2026-05-19 01:01:53 +08:00
yw4z
dc12126b78 Fix 2 Linux assertation errors on gtk_window_resize() (#13718)
Update DropDown.cpp
2026-05-18 19:01:42 +03:00
yw4z
054a173af7 Fix possible crash on startup because of low max volumetric speed on profiles (#13716)
* Update fdm_filament_common.json

* update

* Update fdm_filament_common.json
2026-05-18 19:00:48 +03:00
Kappa971
248a55abd0 Update Italian translation (#13674) 2026-05-18 10:29:38 -03:00
yw4z
b4aa070c40 MultiChooseDialog & CheckList class & improvements for Profile Dependencies (#9971)
* init

* fix

* fix

* update

* update

* update

* Update Tab.cpp

* Update CheckList.cpp
2026-05-18 19:46:47 +08:00
Thomas Henauer
b9ff15054f Fix wxGTK submenu popup parenting and sizing on Wayland (#13707) 2026-05-18 18:01:19 +08:00
CSLRDoesntGameDev
ddeaa4ba82 Add patches to the Anycubic Kobra X machine json (#13677)
add patched anycubic kobra x machine json

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-05-18 16:57:24 +08:00
Ian Chua
b333b04815 log: add logs surrounding logout to potentially catch any unwanted logouts or errors (#13713)
# Description

Currently, there is some suspicious behavior going on with the logout
flow, adding some logs to potentially catch any unwanted logouts or
unintentional behaviors.


[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-05-18 16:39:59 +08:00
Ioannis Giannakas
e5ca01ba9e Fix per-volume "Only one wall" overrides being ignored on assembly parts (#13714) 2026-05-18 09:24:28 +01:00
Ian Chua
6a06b63d6f add logs to http_get/post/put/delete 2026-05-18 16:12:03 +08:00
Ian Chua
d0701b9597 Merge branch 'main' into fix/network-logs 2026-05-18 15:41:50 +08:00
Igor Mammedov
4e4dd708b9 CrealityPrint: use spool holder print protocol when Ext selected
When the spool holder is selected for printing, use the opGcodeFile
command with enableSelfTest instead of colorMatch + multiColorPrint.
This matches the protocol used by CrealityPrint desktop for spool
holder prints.

- Detect spool holder mode: any colorMatch entry with box_id 0
- Spool holder: send opGcodeFile + enableSelfTest (single command)
- CFS: send colorMatch + multiColorPrint (existing behavior)

Signed-off-by: Igor Mammedov <niallain@gmail.com>
2026-05-18 09:41:32 +02:00
Igor Mammedov
1608af485f CrealityPrint: add spool holder support to filament mapping
Show the spool holder (external filament roll) as a selectable option
in the K2 Plus filament mapping dialog. Previously only CFS slots were
shown because the box state filter excluded the spool holder.

- Only skip inactive CFS boxes (type 0, state != 1); spool holder
  (type 1) is always available
- Label spool holder slots as "Ext - {type}" in the dropdown
- Auto-match priority is now:
  1. CFS exact (type + color)
  2. CFS type-only
  3. Ext exact (type + color)
  4. Ext type-only
  5. Positional default
- When Ext is selected (by user or auto-match), disable other combos
  since firmware does not support mixing CFS and spool holder

Signed-off-by: Igor Mammedov <niallain@gmail.com>
2026-05-18 09:41:32 +02:00
Igor Mammedov
0f55fbbb68 CrealityPrint: auto-match gcode filaments to CFS slots by color and type
When the filament mapping dialog opens, automatically select the best
matching CFS slot for each gcode filament by comparing color and type.
Falls back to positional index if no exact match is found.

Signed-off-by: Igor Mammedov <niallain@gmail.com>
2026-05-18 09:41:32 +02:00
Igor Mammedov
838e544d07 CrealityPrint: add filament mapping UI for K2 Plus
Query CFS material slots and show colored dropdowns to map gcode
filaments to physical printer slots. Color mapping is passed through
extended_info as colorMatch entries for the multi-color print protocol.

Signed-off-by: Igor Mammedov <niallain@gmail.com>
---
v4:
- Use gcode tool index (T1A, T1B, ...) as colorMatch id instead of
  CFS slot tool_id — firmware expects the gcode filament identifier,
  not the destination slot
2026-05-18 09:41:32 +02:00
Igor Mammedov
35117ceedf CrealityPrint: add calibration checkbox to send dialog
Add enableSelfTest checkbox to CrealityPrintHostSendDialog that
persists across sessions via AppConfig. The checkbox state is
passed to the upload via extendedInfo().

Signed-off-by: Igor Mammedov <niallain@gmail.com>
2026-05-18 09:41:32 +02:00
Igor Mammedov
02c71fa6c0 CrealityPrint: add printer model name and detection UI
Add model_name() to map firmware model codes (F008, F012, F021)
to human-readable names (K2 Plus, K2 Pro, K2). Update the send
dialog init() to detect multi-color support and show a group box
with the printer name.

Signed-off-by: Igor Mammedov <niallain@gmail.com>
2026-05-18 09:41:32 +02:00
Igor Mammedov
7dd2e5c6a5 CrealityPrint: add custom send dialog boilerplate
Add CrealityPrintHostSendDialog scaffolding: an empty dialog class
that inherits from PrintHostSendDialog, and Plater wiring to use
it when the host type is CrealityPrint.

Signed-off-by: Igor Mammedov <niallain@gmail.com>
2026-05-18 09:41:32 +02:00
Igor Mammedov
20b00b25c6 CrealityPrint: add multi-color print protocol for K2 Plus
For supported models, start_print() sends colorMatch (filament-to-slot
mapping) followed by multiColorPrint (with optional calibration via
enableSelfTest) instead of the legacy opGcodeFile command. The dialog
passes color mapping and calibration settings through extended_info.

Signed-off-by: Igor Mammedov <niallain@gmail.com>
---
v4:
- Skip "path" form field in multipart upload for multi-color printers
  (extra field breaks K2 Plus firmware parser)
- Use fire-and-forget ws.write() for colorMatch and multiColorPrint
  instead of ws_send_and_read() (printer sends response asynchronously)
2026-05-18 09:41:32 +02:00
Igor Mammedov
767daa1201 CrealityPrint: add CFS material box query
Add query_boxes_info() to discover loaded materials in the CFS
(Creality Filament System) via websocket. Returns the boxsInfo
JSON with slot details (type, color, vendor, temperature range).

Signed-off-by: Igor Mammedov <niallain@gmail.com>
2026-05-18 09:41:32 +02:00
Igor Mammedov
c746c48649 CrealityPrint: add ws_send_and_read() helper
Add a reusable websocket helper that sends a JSON command and loops
reads until finding a response containing the expected key. This
handles the printer's unsolicited status messages that arrive on
connect before the actual response. Returns empty string on timeout
instead of throwing.

Signed-off-by: Igor Mammedov <niallain@gmail.com>
2026-05-18 09:41:32 +02:00
Igor Mammedov
8e1ef9bc5f CrealityPrint: add ws_connect() helper
Consolidate websocket connection setup into a reusable helper.
Migrate from tcp::socket to beast::tcp_stream for timeout support.
Set SO_RCVTIMEO read timeout (3s) and connect timeout (5s).
Refactor query_boxes_info() and start_print() to use ws_connect().

Signed-off-by: Igor Mammedov <niallain@gmail.com>
2026-05-18 09:41:32 +02:00
Igor Mammedov
aa9d472d9e CrealityPrint: add model detection from /info endpoint
Parse the model field from the /info JSON response to enable
model-specific features. Add supports_multi_color_print() which
returns true for K2-platform printers (K2 Plus, K2 Pro, K2).

Signed-off-by: Igor Mammedov <niallain@gmail.com>
2026-05-18 09:41:32 +02:00
Igor Mammedov
e995541c25 CrealityPrint: propagate start_print() errors to caller
Change start_print() from void to bool with a wxString& msg
out-parameter, matching the error handling pattern used by Duet,
MKS, ESP3D and Flashforge. On failure, the error message is now
reported to the user via error_fn instead of being silently
swallowed. Use BOOST_LOG_TRIVIAL for logging instead of std::cerr.

Signed-off-by: Igor Mammedov <niallain@gmail.com>
2026-05-18 09:41:31 +02:00
Igor Mammedov
376841e28e Http: consolidate get_host_from_url() into Http class
Move duplicate get_host_from_url() implementations from ElegooLink and
OctoPrint into Http as a static method using the curl_url API. This
eliminates code duplication and provides a single reliable URL host
extraction utility for all print host implementations.

Signed-off-by: Igor Mammedov <niallain@gmail.com>
2026-05-18 09:41:31 +02:00
Igor Mammedov
8a650ec672 ElegooLink: fix host extraction for IP address parsing
get_host_from_url() returns host:port which may cause
boost::asio::ip::make_address() to fail when a port is present,
bypassing the direct IP upload path and falling through to DNS
resolution via upload_inner_with_host(). Use get_host_from_url_no_port()
to extract just the host.

Signed-off-by: Igor Mammedov <niallain@gmail.com>
2026-05-18 09:41:31 +02:00
Ian Chua
232fc30db1 log: add logs surrounding logout to potentially catch any unwanted logouts or errors 2026-05-18 15:18:31 +08:00
yw4z
f0392ab226 Show filament edit button or action menu dynamically depends on single / multi materilal usage (#12651)
* init

* fix build error

* add guards

* Update Plater.cpp
2026-05-18 13:59:22 +08:00
Hanno Witzleb
3ca7c4b752 Unify Tool UI Footer (#12850)
* unify footer
adds "Done" Buttons,
standardize "Reset" Buttons,
adds disabled logic to "Reset" Buttons

* adds ImGuiWrapper::COL_WARNING = ColorRGB:Warning,
replaces ColorRGB::Warning

* consistently display warnings,
moves assermbly warning after footer,
make cut warnings warning color

* adds separator above cut warnings

* adds tooltip entry in move, rotate & scale for auto-drop

* use wrapper tooltip in wrapper->button for consistent text color

* restructures brim ears button,
renames "Reset" button in painting tools to "Erase All",
small styling fixes

* small adjustments,
moves "Edge detection" checkbox in painting tool underneath,
moves "Section View" in Brim ears tool after buttons,
moves warnings in Assemble tool under footer

* small brim ear tool structure changes,
adds separator between "Head Diameter" and "Max angle",
adds tooltip to "Auto-generate" button,
rewords shortcut descriptions to match other tools

---------

Co-authored-by: Hanno Witzleb <hannowitzleb@gmail.com>
2026-05-18 12:58:58 +08:00
Hanno Witzleb
15451c6c50 Feature: Multiple dovetail cuts (#12318)
* adds UI and preview plane for multiple dovetail cuts

* adds multiple dovetail cuts to perform_with_groove()

* adds ui text info for spacing, adjusts max_val for gap to respect plate dimensions

* adds spacing before multpile UI

* adjusts wording, adjust gap max by count

---------

Co-authored-by: Hanno Witzleb <hannowitzleb@gmail.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-05-18 12:57:48 +08:00
r3dbaba
1447602d43 Add ability to assign None/Pan/Rotate to mouse buttons (#10736)
* Add logic to handle the left, middle and right buttons being assigned to do nothing, pan or rotate

* Add entries for setting the drag actions to preferences

* Allow the label text in preferences to wrap

* Show mouse mappings in Help -> Keyboard Shortcuts

* Re-add preferences in updated layout

* Add camera mouse options under camera

* Change mouse action strings to use L() for localization

* Display "None" when it is selected instead of blank in keyboard shortcuts

---------

Co-authored-by: Rob O <robertolabode@gmail.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2026-05-18 08:54:21 +08:00
yw4z
6cf7db1ded Match titlebar font on Linux (#12828)
* Update BBLTopbar.cpp

* Update BBLTopbar.cpp

* Update BBLTopbar.cpp

* Update BBLTopbar.cpp
2026-05-18 00:43:22 +03:00
Ioannis Giannakas
d52d0a082d Option to always travel to wipe tower before Tx commands on multi-toolhead setups using type 2 tower (#13703)
* Option to always travel to wipe tower before Tx commands on multi-toolhead setups using type 2 tower
2026-05-17 20:46:08 +01:00
SoftFever
484ce81e38 Fix sidebar filament count for multi-extruder printers (#13706)
load_selections() and update_selections() size the parallel project_config
arrays (filament_colour, filament_colour_type, filament_map) off
filament_presets.size(). When the saved list is shorter than the printer's
nozzle count — never-used printer, hand-trimmed conf, or fewer filament_NN
entries than nozzles — the loaded colors get truncated and the sidebar
starts up one combo short.
2026-05-18 01:18:09 +08:00
Matthew Nickerson
bcbc581417 fix: harden CLI export without OpenGL thumbnails (#13532)
## Summary
- skip CLI thumbnail generation when an OpenGL/GLFW context cannot be
created, allowing export workflows to continue in headless/automation
environments
- guard filament variant remapping against missing config options and
out-of-range variant indexes
- log warnings instead of dereferencing invalid config state during
CLI/profile-driven export

## Context
These guards came out of automating OrcaSlicer CLI exports for printer
workflows. In that flow, slicing/export can still be valid even when
thumbnail rendering is unavailable, but the current path can proceed
into OpenGL thumbnail setup after context creation fails. Separately,
malformed or mismatched filament/profile state can index past option
vectors during multi-filament value remapping.

## Test plan
- `git diff --check`
- `cmake --build build/arm64 --config RelWithDebInfo --target OrcaSlicer
-- -j4`
2026-05-17 20:10:39 +08:00
Noisyfox
c965b2a5b3 Fix macOS object-list filament editor crash/glitch (#13700)
# 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)
2026-05-17 19:48:12 +08:00
TheLegendTubaGuy
da5a13a032 Fix DataViewBitmapText assignment 2026-05-17 02:29:39 -05:00
Noisyfox
1c0d0b89cc Keep painting after cut (#13472)
[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
2026-05-17 14:38:37 +08:00
Ian Bassi
873d0ed26e Graphics Preferences: Anti-aliasing + FPS (#13538)
* Expose Antialiasing velues

Expose Antialiasing multipliers.
Default to 4 as current implementation but enables the user to disable it to improve performante or increase sampling to improve quality.

* FXAA

* Improve descriptions

* Require restart when MSAA setting changes

Detect changes to the OpenGL MSAA (multisample anti-aliasing) preference when opening Preferences and prompt the user to restart the application to apply the change. Adds a constant key for the MSAA setting, stores the previous value, checks for changes (similar to the existing FXAA handling), and shows a warning dialog explaining the restart will close the current project without saving. If the user accepts, recreate_GUI is invoked to apply the MSAA change immediately.

* Revert "Require restart when MSAA setting changes"

This reverts commit dde134d346c3849598c91d025d2faed1b51c8a22.

* Menu and FPS options

* Fix FPS limiter and remove VSYNC

* Grouped FPS settings and mode up rigth fps counter

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2026-05-17 13:31:51 +08:00
Rodrigo Faselli
b3fe733bf2 Fix Build (#13694) 2026-05-16 12:56:00 -03:00
SoftFever
a0e1aa2507 update agents.md 2026-05-16 22:22:06 +08:00
yw4z
95b23cea0f [Linux] Fix scrollbar appears while 1 filament exist on filament area (#13363)
init
2026-05-16 22:10:17 +08:00
packerlschupfer
f760f4e462 Fix Flow Ratio dialog shrinking after main window minimize (#13545)
FlowRateCalibrationDialog was missing the SetSizeHints call that every
other calibration dialog in calib_dlg.cpp uses (Cornering, Pa, Pa Pattern,
Max Volumetric Speed, Temperature, Retraction, VFA, Input Shaping). Without
it, the dialog has no enforced minimum size: on wxGTK, iconizing the main
window while the dialog is open triggers a layout/refresh that re-runs
Fit() with transient zero-sized children, collapsing the dialog to ~222x249
px with the OK button clipped and unreachable. The window manager then
honors the (incorrect) small geometry hint, so the user cannot resize it
back manually.

Two changes:

* Add v_sizer->SetSizeHints(this) after Fit() in the constructor, matching
  the pattern used by all other dialogs in this file. This locks in the
  correct minimum the first time Fit() runs, before any iconize event.

* Remove the redundant Fit() from on_dpi_changed. With SetSizeHints in
  place the WM enforces the minimum, but the unconditional Fit() on every
  DPI/refresh signal was the trigger for the shrink path; Refresh() alone
  is sufficient here.

Co-authored-by: Packerlschupfer <packerl@schupfer.at>
2026-05-16 21:29:01 +08:00
Ian Bassi
9ec2fe3c45 Add tooltips to Transfer buttons (#13535)
* Add tooltips to Transfer buttons

Set contextual tooltips for the Discard, Transfer and Save buttons when a dependent preset is present. The code computes the previous and new profile names and provides localized explanatory tooltips that clarify that switching will discard changes, transfer "New Value" settings, or save changes into the current profile. This improves UX by making the consequences of each action explicit.

* added some endlines

Co-Authored-By: yw4z <yw4z@outlook.com>

---------

Co-authored-by: yw4z <yw4z@outlook.com>
2026-05-16 21:28:15 +08:00
Andrei
a0717853df Reduce warnings stemming from libslic3r/Config.hpp (#13533)
https://github.com/prusa3d/PrusaSlicer/pull/15106
2026-05-16 21:16:57 +08:00