Commit Graph

62 Commits

Author SHA1 Message Date
SoftFever
6f6fc6ddfe 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
Kevin J. Lynagh
8dd1dd8921 Fix filament syncing by fixing nozzle diameter guards (#13330)
* Remove unused `get_printer_preset` calls.

* `Plater::check_printer_initialized` should skip nozzle flow type checks if nozzle is unknown.

Also remove unnecessary `is_multi_extruders` check.

* Remove unused `CalibUtils::is_same_nozzle_diameters()` fn.

* Simplify `CalibUtils::check_printable_status_before_cali`.

The single-arity can delegate to the vectorized arity.

* Add `DevExtruderSystem::NozzleDiameterMatchesOrUnknown` to simply checks.

* Update `CalibrationPresetPage::update_sync_button_status()` to use `NozzleDiameterMatchesOrUnknown`.

Simplify logic by iterating over each extruder and checking for diameter and volume type match.

The previous code had several mistakes (from what I could tell):

- `curr_obj->is_multi_extruders()` doesn't imply exactly 2 extruders
- the single/multi branch served no purpose
- the single branch failed to check the volume type

* Specify `std::fabs` and add explicit import.

Ref: https://github.com/OrcaSlicer/OrcaSlicer/pull/13330#discussion_r3133613736

Not sure how idiomatic this is in C++ / OrcaSlicer codebase, but CoPilot suggested it and it seems reasonable.

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-05-16 19:13:40 +08:00
glowstab
9956ad5b48 X2D Support (#13388)
# Description

Adresses #13294 

- Adds the X2D printer definition, machine presets, process presets,
filament presets, BBL profile index entries, CLI config entries,
filament blacklist updates, and printer/load/calibration/cover assets.
- Updates dual-nozzle handling to use configured toolhead labels and
match Bambu X2D hotend placeholders.
- Adds X2D-specific wipe tower cooling placeholder support and 3MF
filament/nozzle change sequence metadata import/export plumbing.

# Note

I own a P2S and an X2D. That's all. I frankly have no idea if my changes
cause regression on other printers, and have no capability to test. I
know that for my X2D, which runs an AMS, .2mm nozzles, SuperTack, and in
LAN mode, this has been working without issue.

# Screenshots/Recordings/Graphs

<img width="606" height="380" alt="Dual nozzle control"
src="https://github.com/user-attachments/assets/0d1c1063-4621-4097-b97c-d739557bf18c"
/>

*Dual nozzle control*

<img width="726" height="260" alt="image"
src="https://github.com/user-attachments/assets/270355b7-ca67-4ca3-ad19-582b8f11411b"
/>

*Multi nozzle filament override*

<img width="416" height="202" alt="X2D Machine config and dual nozzle
support"
src="https://github.com/user-attachments/assets/6a5c07b2-0d20-4819-8f42-d60731313249"
/>

*X2D Machine config and dual nozzle support*

<img width="397" height="142" alt="Filament for Supports test prints"
src="https://github.com/user-attachments/assets/3c7546bd-0e27-4d56-89b7-d9ca18c976f9"
/>

*Filament for Supports has been used in over 20 hours of test prints*

<img width="210" height="263" alt="Left vs Right filament distinction"
src="https://github.com/user-attachments/assets/03322268-b669-4f14-8d77-c4d96843d219"
/>

*Left vs Right filament distinction*

<img width="557" height="327" alt="Custom filament mapping"
src="https://github.com/user-attachments/assets/c1c4396f-7359-474e-80bd-78fec22f9c82"
/>

*Custom filament mapping*

<img width="556" height="314" alt="Auto map"
src="https://github.com/user-attachments/assets/d83e3217-edce-4340-886e-043962003a30"
/>

*Auto map*

<img width="689" height="664" alt="LAN mode send print with X2D preview
and no errors"
src="https://github.com/user-attachments/assets/76009bbf-31d3-4a6c-979c-8643b487c824"
/>

*LAN mode send print with X2D preview and no errors, dual nozzle
selection*


## Tests

- 20 hours of dual-nozzle printing.
- 100% CTest tests passed
- Validated 208 changed JSON files.

<!--
> 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)
Fix #13294
2026-05-10 02:21:13 +08:00
Noisyfox
fb1f4a7d24 Automatically select external spool if it's the only installed filament (#13356)
* 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
2026-05-09 13:14:27 +08:00
SoftFever
84d896bbd3 fixes an issue that devmgr ping cloud server every second
Co-authored-by: Copilot <copilot@github.com>
2026-05-03 16:59:30 +08:00
SoftFever
c04be9ab37 Introducing Orca Cloud: https://cloud.orcaslicer.com (#13414)
* Add OrcaCloud sync platform and preset bundle sharing system

  Introduce OrcaCloud, a cloud sync platform for user presets, alongside
  a preset bundle system that enables sharing printer/filament/process
  profiles as local exportable bundles or subscribed cloud bundles.

  OrcaCloud platform:
  - Auth to Orca Cloud
  - Encrypted token storage (file-based or system keychain)
  - User preset sync with
  - Profile migration from default/bambu folders on first login
  - Homepage integration with entrance to cloud.orcaslicer.com

  Preset bundles:
  - Local bundle import/export with bundle_structure.json metadata
  - Subscribed cloud bundles with version-based update checking
  - Thread-safe concurrent bundle access with read-write mutex
  - Canonical bundle preset naming (_local/<id>/... and _subscribed/<id>/...)
  - Bundle presets are read-only; grouped under subheaders in combo boxes
  - PresetBundleDialog with auto-sync toggle, refresh, update notifications
  - Hyperlinked bundle names to cloud bundle pages

  Co-authored-by: Sabriel Koh <sabrielkcr@gmail.com>
  Co-authored-by: Derrick <derrick992110@gmail.com>
  Co-authored-by: Mykola Nahirnyi <mnahirnyi@amcbridge.com>
  Co-authored-by: Ian Chua <iancrb00@gmail.com>
  Co-authored-by: Draginraptor <draginraptor@gmail.com>
  Co-authored-by: ExPikaPaka <112851715+ExPikaPaka@users.noreply.github.com>
  Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
  Co-authored-by: Ocraftyone <Ocraftyone@users.noreply.github.com>
  Co-authored-by: yw4z <ywsyildiz@gmail.com>
  Co-authored-by: peterm-m <101202951+peterm-m@users.noreply.github.com>

* Fixed an issue on Windows it failed to login Orca Cloud with Google account
2026-05-01 18:01:29 +08:00
Kevin Lynagh
5ba71e1198 Allow printing even if nozzle info isn't reported by firmware. (#12814)
* Don't assume 0.4mm nozzle; format as "unknown" if not defined.

* Skip nozzle diameter and hardness checks if nozzle info unknown.

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-04-06 12:40:36 +08:00
SoftFever
431943408b fix UI block issues 2026-02-02 18:12:19 +08:00
SoftFever
8d22fad30b badge support 2026-01-31 01:04:21 +08:00
SoftFever
978e3b79b5 refactor 2026-01-26 19:34:14 +08:00
Maciej Wilczyński
a4d4bfff27 Allow selecting specific network plugin versions 2025-12-14 14:26:16 +01:00
xin.zhang
dd7d12ed8b FIX: only A series with old protocol display as AMS_LITE
JIRA: [STUDIO-15101]
Change-Id: I340c14e88c57ca81c0bfb2f3087a46ee88ab4f31
(cherry picked from commit fa9181386b0e973785900b21962b40217e9585bd)
2025-10-30 14:39:57 +08:00
Noisyfox
ab7e782809 set_user_selected_machine no longer works for local machines 2025-10-29 21:51:01 +08:00
Bastien Nocera
69ecdeba71 FIX: Fix missing std::optional declaration
/run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevFilaAmsSetting.h:16:10: error: ‘optional’ in namespace ‘std’ does not name a template type
   16 |     std::optional<bool> IsDetectOnInsertEnabled() const { return m_enable_detect_on_insert; };
      |          ^~~~~~~~
/run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevFilaAmsSetting.h:4:1: note: ‘std::optional’ is defined in header ‘<optional>’; this is probably fixable by adding ‘#include <optional>’
    3 | #include "DevCtrl.h"
  +++ |+#include <optional>
    4 |

/run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevFilaSystem.h:174:10: error: ‘optional’ in namespace ‘std’ does not name a template type
  174 |     std::optional<bool>  IsDetectOnInsertEnabled() const { return m_ams_system_setting.IsDetectOnInsertEnabled(); };
      |          ^~~~~~~~
/run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevFilaSystem.h:13:1: note: ‘std::optional’ is defined in header ‘<optional>’; this is probably fixable by adding ‘#include <optional>’
   12 | #include <wx/colour.h>
  +++ |+#include <optional>
   13 |

(cherry picked from commit fa482b1c0dc7faa2ad87c37eb7f1ea2ce87a5084)
2025-10-28 15:30:05 +08:00
hemai
967b7a5050 ENH: support nozzle refresh for H2D Pro
Jira: [STUDIO-13185]
Change-Id: Ib8b5905c32f83b1f849ad4ed327c9d77826d6a18
(cherry picked from commit c603e0f88be71a301ed2fc7f6fff2a34398b6708)
2025-10-28 15:30:04 +08:00
hemai
104cbb7b9b ENH: support E3D print parts display
Jira: [STUDIO-14908]
Change-Id: Ie8273eb6f74a3e7508f440d2092bb48f2e1dbb10
(cherry picked from commit a4218e991e6367e3f1ee3802e785802df2ad6d41)
2025-10-28 15:30:00 +08:00
xin.zhang
c382a8a9c3 ENH: support_clump_position_calibration
jira: [STUDIO-14896]
Change-Id: I2913a1e4022686889aaa94ee31b787930200d02d
(cherry picked from commit 14370c8910878c2182189b42e013c1323615c310)
2025-10-28 15:30:00 +08:00
xin.zhang
8d3da67254 FIX: the sorting of AMS list
JIRA: [STUDIO-14738] [STUDIO-14651]
Change-Id: I6d4b89edc77383be8afacf9823567bc756c8e2ed
(cherry picked from commit 8defa1f50b4b556c6ebaf2ad533ba09ad3f23e38)
2025-10-28 15:29:58 +08:00
xin.zhang
2234b227c4 ENH: the old protocol only support AMS_LITE
JIRA: [STUDIO-14841]
Change-Id: I6040d54490a79b323fcd7000a638e5fc4b45b0b4
(cherry picked from commit b6274332d7dc8077b2612ef4518a9cbaf12123d9)
2025-10-28 15:29:58 +08:00
xin.zhang
fabc681442 ENH: update how to load_ams_list
JIRA: [STUDIO-14255]
Change-Id: I204f881b72185ee16f8ff204feb6469504f9f86b
(cherry picked from commit 4150ff5c178de02dfa67e6bd90765e35c6a64e99)
2025-10-28 15:29:56 +08:00
xin.zhang
491100a9d2 ENH: support AMS switching for A series; clean class AMSSetting
jira: [STUDIO-14068] [STUDIO-14330]
Change-Id: I6281fbf56f3bf406ef28103998790a2a98c3f5c0
(cherry picked from commit 8ee02ec73076691c482ea6d089a49ea1c99ad10c)
2025-10-28 15:29:55 +08:00
hemai
c6db0f0f85 ENH: limit chamber temperature setting in cooling filt mode
Jira: [STUDIO-14035]
Change-Id: I894ecc3f1628bbdaa86fcfd8a4420e59111af7bb
(cherry picked from commit 5e95c6bcc8aa0b89661f27a4f123442857f7fec7)
2025-10-28 15:29:55 +08:00
xin.zhang
ada573a1fd ENH: update fan control mode sequence
jira: [STUDIO-14589]
Change-Id: I40f71ffe0ec65d7ebb945a06753b03c93135fa55
(cherry picked from commit c2d2bdc9349692a12b7cb0198864b6f6c7e88205)
2025-10-28 15:29:54 +08:00
milk
7608195e17 FIX:add idel heating protection
jira:[STUDIO-14359][STUDIO-14431]

Change-Id: I2ecb6c78c4b28d6f14c45dbb1f905b95a9d8c4ab
(cherry picked from commit f6eee61915b47321c1cb44e3ff2306875c32466b)
2025-10-28 15:29:54 +08:00
hemai
833de25b29 FIX: update dev_name when connect mode switch
Jira: [STUDIO-13463]
Change-Id: I3e90d31660ff0d24439584a1e00c15449c425548
(cherry picked from commit 4f4689d7fde21afcf667d35fa62e9f444afed436)
2025-10-28 15:29:53 +08:00
xin.zhang
8863631c92 FIX: filament loading steps
jira: [STUDIO-14428]
Change-Id: I68612346ef9cb50e302323daa47421c22a87be97
(cherry picked from commit 9fb4b9b6a3a16b08d9dc52a4d6dbc15044275dcf)
2025-10-28 15:29:51 +08:00
xin.zhang
55ed67ef23 ENH: support extension fan check
jira: [STUDIO-14122]
Change-Id: I67c2dff7853fb9f8d1098364f2ecec6dee1a18f1
(cherry picked from commit 022fb9d2e27402c51529b477c75af417c43ead17)
2025-10-28 15:29:50 +08:00
milk
299c7c0bac NEW:Add safety button
jira: [STUDIO-14064]

Change-Id: I6a9be69033ea80c2242561c4e1b0ca5626bc7a51
(cherry picked from commit ac4af3aa1de453330fbf2d58988a6e1ea8d5d445)
2025-10-28 15:29:50 +08:00
xin.zhang
299b821c5f ENH: support mix mapping
jira: [STUDIO-13673]
Change-Id: Ic1c89457f5154c108dbab41850ed49561aa34fde
(cherry picked from commit 12942e0545424e2528cc3f3c9aa6947b76469b3d)
2025-10-28 15:29:50 +08:00
xin.zhang
964a35e9b0 ENH: update filaments_blacklist.json
jira: [STUDIO-14159]
Change-Id: Idde4d1c366024b49d474d8802d9f912711ea3991
(cherry picked from commit 5bdf315e6f68e2e27036e348e70402df38f4c49f)
2025-10-28 15:29:50 +08:00
haolin.tian
e6d8339406 FIX: Improve device switching logic for disconnect and reconnect
jira: none
Change-Id: If9b4081581da7bb7c9cdcc44adcb1b9f490afb3f
(cherry picked from commit 725799eec1aad721e74ec956d14b30369d75446a)
2025-10-28 15:29:48 +08:00
xin.zhang
84dd0449b7 ENH: support cold pull for TPU
jira: [STUDIO-13529]
Change-Id: I6a44da3b2774305db179cfed0781d67e9b5a7e2e
(cherry picked from commit 0225c329c8eb8fee332d2cf9732b83ccd0c1dbb3)
2025-10-28 15:29:47 +08:00
xin.zhang
fedcfc4ea5 ENH: support extension tool; support check extension tool
JIRA: [STUDIO-14122] [STUDIO-14162]
Change-Id: I147d335420fcc7c9a190f570863e38e138cdadcf
(cherry picked from commit db83b9fb6c6399d917b27b74cc573d668737c705)
2025-10-28 15:29:47 +08:00
hemai
a397a7378a ENH: refresh nozzle info from studio
Jira: [STUDIO-13650]
Change-Id: I12dc26d5730c761ccc91d3a4a5f120d422d8a0ff
(cherry picked from commit 2bd7cd9a6a4d9c3370491fb4323a1aabe9a45578)
2025-10-28 15:29:47 +08:00
xin.zhang
1494731eab FIX: check with internal filament type
jira: [STUDIO-14216]
Change-Id: I89e0d62b572872d7e2ea8e6e57ac662b64baf92b
(cherry picked from commit 6767c2334bbfcffa41d4d020ee4f2e183a327cee)
2025-10-28 15:29:47 +08:00
xin.zhang
2626a6bc3b FIX: check close chamber temperature
JIRA: [STUDIO-13676]
Change-Id: I5c2712ade24d20d361d00a0b763dd16479aa5fb1
(cherry picked from commit 7ac3c82fbaf0337351d41f5d65c2ae088f755744)
2025-10-28 15:29:47 +08:00
Noisyfox
4ee98b1807 Fix crash due to modify same collection concurrently 2025-10-07 09:56:39 +08:00
noisyfox
551be1c18b Fix build issue with PCH off 2025-10-05 22:53:58 +08:00
xin.zhang
eac358046c FIX: update the implementation of model series
JIRA: [STUDIO-13728]
Change-Id: Ib9091a0b2b253fa4bdad11e07f8910f6045594ad
(cherry picked from commit b250f817f80ea17e7c1cc37e6c98810e8cfc6cd8)
(cherry picked from commit 4d00f9e32541df9817ef131dc2eb7225675e102f)
2025-10-05 00:10:01 +08:00
xin.zhang
d9d2814b24 Fix: load ext filament for A/P series
JIRA: [STUDIO-14047]
Change-Id: I28736dc7c55a842744b2d3f8731e92384c2ea929
(cherry picked from commit 602541e42b0a7ad6faa3ff604435bc36a1cc1f3f)
2025-10-03 23:13:42 +08:00
xin.zhang
db05e4ac64 ENH: update airducts
jira: [STUDIO-13296]
Change-Id: I5cdb34cc254933be9a91313462a6b03b0dca117b
(cherry picked from commit fbf88ce6f226496723344e60f57632eadfaf5ee9)
2025-10-03 22:18:33 +08:00
hemai
bb43e312b3 ENH: support E3D nozzle flow type
Jira: [STUDIO-13934]
Change-Id: I3818c3881e8a926209f2bac321550f3c7a1a9f0d
(cherry picked from commit 5bb1c2e66ad5bddfcba6898d9bc330217e912e48)
2025-10-03 22:18:20 +08:00
xin.zhang
a12330f4e7 ENH: add some log for traverse
jira: [STUDIO-13728]
Change-Id: Ie4419ecd809bd4392035ad063849f271e687b0f0
(cherry picked from commit 7aa1916fe8491ca1653acc55ee3ac527415b6113)
2025-10-03 22:02:51 +08:00
xin.zhang
eb1eb7e81a ENH: add new part: extinguish
JIRA: [STUDIO-11578]
Change-Id: I39dc15fe022f38d8c775c2675120bbbce05f95f3
(cherry picked from commit 25dc4e37e3681a840df9af7d98bbb134082492ab)
2025-10-03 21:45:14 +08:00
noisyfox
4943c31bd0 Fix friend class 2025-10-02 19:17:44 +08:00
Bastien Nocera
da57bed077 FIX: Fix missing std::string declaration
src/slic3r/GUI/DeviceCore/DevLamp.h:22:41: error: ‘string’ in namespace ‘std’ does not name a type
   22 |         void SetChamberLight(const std::string& status);
      |                                         ^~~~~~

(cherry picked from commit abd986164785070dcd39204781a0e5a9d40ce216)
2025-10-02 18:35:56 +08:00
Bastien Nocera
174346e113 FIX: Fix missing wxTimer declaration
src/slic3r/GUI/DeviceCore/DevManager.h:108:5: error: ‘wxTimer’ does not name a type
  108 |     wxTimer* m_timer{ nullptr };
      |     ^~~~~~~

(cherry picked from commit be709a977ea47380135606cccfab325cc5bb9df1)
2025-10-02 18:35:53 +08:00
Bastien Nocera
a77b19bb46 FIX: Fix missing std::mutex declaration
In file included from /run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevFilaBlackList.cpp:5:
/run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevManager.h:23:10: error: ‘mutex’ in namespace ‘std’ does not name a type
   23 |     std::mutex listMutex;
      |          ^~~~~

(cherry picked from commit 53dba781011d468f44fc98a564157674220a947f)
2025-10-02 18:35:49 +08:00
Bastien Nocera
a8f2e17edd FIX: Fix missing wxString declaration
In file included from /run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevFirmware.cpp:1:
src/slic3r/GUI/DeviceCore/DevFirmware.h:33:5: error: ‘wxString’ does not name a type
   33 |     wxString    product_name;
      |     ^~~~~~~~
src/slic3r/GUI/DeviceCore/DevFilaBlackList.h:10:230: error: ‘wxString’ has not been declared
   10 |     static void check_filaments_in_blacklist(std::string model_id, std::string tag_vendor, std::string tag_type, const std::string& filament_id, int ams_id, int slot_id, std::string tag_name, bool& in_blacklist, std::string& ac, wxString& info);
      |                                                                                                                                                                                                                                      ^~~~~~~~

(cherry picked from commit 8092454b7560150c03bcd6c27c996b33dd52758f)
2025-10-02 18:35:45 +08:00
Bastien Nocera
4394527a5c FIX: Fix missing std:: declarations
In file included from /run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevPrintTaskInfo.cpp:1:
src/slic3r/GUI/DeviceCore/DevPrintTaskInfo.h:15:10: error: ‘string’ in namespace ‘std’ does not name a type
   15 |     std::string content;
      |          ^~~~~~
src/slic3r/GUI/DeviceCore/DevPrintTaskInfo.h:16:10: error: ‘vector’ in namespace ‘std’ does not name a template type
   16 |     std::vector<std::string>  image_url_paths;
      |          ^~~~~~

(cherry picked from commit 1e0ae7d3f8b47d1f8c1bb6b05be54d627bcc95f0)
2025-10-02 18:35:41 +08:00