Commit Graph
131 Commits
Author SHA1 Message Date
a5413efc37 refactor: printer agent infrastructure changes to work with other printer agents aside from bambu (#15710)
* Add developer flag for printer agents

* Parse user print info on the UI thread to prevent heap corruption (#119)

get_user_print_info()'s HTTP fetch can run on a worker thread (e.g. BindJob),
but parse_user_print_info() mutates userMachineList (insert/erase/delete
MachineObject). on_machine_alive (SSDP) mutates the same maps on the UI thread
without locking, so parsing off-thread races the map and frees MachineObjects
out from under it -> heap corruption.

Keep all device-list mutation on the UI thread: parse inline when already on
the main thread, otherwise marshal via CallAfter so it stays serialized with
on_machine_alive.

* Prevent loss of user access code on LAN reselect

Keep user access code intact to maintain access rights even if
device slot is unpopulated, ensuring continuous connection
and status message reception.

* Harden send flow and separate upload failure recovery (#111)

* fix(send): harden FT send path + IP pre-flight UX

* Remove early returns

* Working Moonraker and Qidi printer agent transport (#104)

Folds the Qidi AMS box-mapping print
overrides (apply_box_mapping +
start_* wrappers) that the transport
fix builds on.

* Add support for runtime error status in plugins

Distinguish a loaded plugin whose
capability errored (RuntimeError,
warn-styled, stays checked) from a
load-time Error. Status now derives
via resolve_plugin_status(); enum
ordinal keeps dialog sort priority.
Unloading clears stale errors.

* Resolve duplicate agent ID conflicts

Reject a printer-agent capability
whose agent ID is already owned by
another capability or built-in:
flag the plugin error, disable the
capability, and warn the user
instead of silently ignoring it.

* fix: checkbox should depend on plugin is_loaded status

* Replace fake-enum printer agent dropdown (#121)

A dedicated PrinterAgentChoice field
reads rows straight from the live
agent registry and stores the agent
id string, replacing the fake-coEnum
index mapping. The field moves to
TabPrinter and registers with the
searcher so UnsavedChanges renders
it; the PhysicalPrinterDialog copy
and its update hook are removed
(#125). switch_printer_agent now
resolves ids via
resolve_printer_agent_id.

* Reset device selection on agent swap or unload (#124)

set_live_printer_agent centralizes
the swap: deselect the machine,
clear stale sidebar state and the
previous agent's Other Devices, then
install the new agent (or null when
its provider vanished). Plugin
load/unload callbacks refresh the
dropdown and re-run agent selection.
load_last_machine no longer falls
back to the first available machine.

* Gate agent mode behind use_printer_agents toggle

Replace per-printer auto-activation
(is_current_printer_agent_plugin)
with a global experimental AppConfig
toggle, default off: legacy
print-host behavior is unchanged
until the user opts in. The toggle
drives device-tab routing, print
button defaults, connect-button
visibility and sidebar layout, and
dedups machine-select dialog opens.

* Track BBLPrinterAgentPlugin.py

* Add printer-agent and plugin status tests

Ports the agent lifecycle, duplicate
agent-id, built-in-id clash and
status-resolution tests. The loader
runs on a detached worker thread, so
the lifecycle tests live in their own
executable. Tests install the
production unload-side registry
wiring themselves (no GUI in the
test binary) and register agents
manually so concurrent loads stay
deterministic.

* fix: pin HTTP to prevent connection refusal

Set `use_ssl` to false to ensure Moonraker
connectivity, as the service uses HTTP rather
than HTTPS, preventing connection issues. Initialize
device info early for reliable name resolution.

* Bring Moonraker device panel to feature parity

The monitor panel showed wrong or missing
data for Moonraker printers, and its
controls did nothing.

Push payload now carries layer number and
total layers. Remaining time replaces the
wrong total_duration - print_duration
formula. The chamber light toggle maps to
Klipper SET_PIN / SET_LED, and pause,
resume and stop post to
/printer/print/{action}. Task thumbnails
resolve via /server/files/thumbnails onto
a new MachineObject thumbnail url.

Filament sync switches to pull mode so the
agent is queried on demand.

Not compiled or run.

* Stop blocking print on unreported nozzle data

* fix: make Klipper macro lamp control reliable

* Surface Moonraker webcams and gate unrunnable controls

* Keep Bambu AMS dialect out of the agent waist

M620 is Bambu firmware dialect, not a
neutral command. Composing it in
MachineObject let non-Bambu agents
(Moonraker/Klipper) forward it and
report success on firmware that
cannot run it.

Agents now own the dialect: the
default refusal on IPrinterAgent
returns not-supported so the UI
can say so; BBLPrinterAgent keeps
the byte-identical composition.

* Fix multi-color filament logic

Reuse color decoding across functions to improve
code readability and maintain consistency in
multi-color filament handling.

* Move Moonraker commands off the UI thread

Pause/resume/stop, g-code sends, temps, and
light ran synchronous HTTP on the UI thread,
freezing the app up to 10s per click on slow
or unreachable printers.

Run them on a single agent-owned FIFO worker
so g-code ordering is preserved, while command
translation stays synchronous so unsupported-
command dialogs still work.

Add a pending-disabled state to the pause,
resume, and abort buttons for Moonraker-family
printers: the icon only flips once the
WebSocket reports the real state, which also
rules out double-click races.

* Show Snapmaker U1 camera in Device tab

The U1 exposes no /server/webcams/list entry;
its camera only captures after an explicit
camera.start_monitor RPC, which the Moonraker
websocket executes unauthenticated but only
answers over MQTT - so the call is fire and
forget.

Start the camera when the camera view is
shown and renew every 300 s: the printer
retires the capture task at ~362 s and
stop_monitor is accepted but ineffective,
so teardown is simply to stop renewing.

Frames land in monitor.jpg as still JPEGs
(~2 fps at interval 0), so the webview loads
a local HTML wrapper that repolls with a
cache buster.

* fix: start stream when camera URL changes

* fix: stop Qidi slot parse throwing on null

* Keep printer-agent progress in sync

Keep the shared task progress aligned with agent
reports that lack Bambu cloud task identity.

Release the lazily allocated task during reset to
avoid leaks when machine objects reconnect.

* docs: document the printer-agent subsystem

* fix: merge access codes into one

* Reconcile implementation split with PR tip

* feat: abstract remaining gcode commands in devicemanager

* refactor: abstract bambu specific protocol to printer agent

* refactor: push bbl workflows to bbl printer agent

* remove unused

* fix: default impl

* fix callback error

* fix: remove redundant cache

* specify api for getting file transfer url

* revert file transfer abstraction

* fix: ams filament mapping workflow

* feat: update qidi to use subscription based filament sync mode

* fix: resolve stubgen byte header conflict

* fix: ams sync info and periodic ams sync via subscription workflow

* fix: skip filament sync dialog if filamentSyncMode is none

* feat: parse nozzle information for qidi and moonraker printer agents

* fix: extend access code requirements t 0, 8 or more characters.

* remove irrelevant docs

* fix: remove heavy includes from IPrinterAgent

* fix: defer filesystem and camera abstractions

* fix: remote do_fetch_filament_info from tests

* cleanup moonraker and snapmaker printer agents

* fix: access codes regression

* fix: tests

* fix: printer agent switching on preset change

* fix: remove unused variable

* fix: snapmaker U1 SelectMachineDialog blocking print

* fix: merge artifact

* fix: clear up some unrelated changes

* feat: connect to cloud printer and monitor

* feat: connect to cloud printer and monitor

* feat: generic camera stream support for http snapshot and rtsp

* fix: build & access code UI

* feat: generic camera stream support for http snapshot and rtsp

* fix: build & access code UI

* feat: connect to cloud printer and monitor

* feat: connect to cloud printer and monitor

* fix: build errors

* feat: camera via webrtc

* fix: build

* fix: cmake

* feat: remove frame assembler and change config to set protocol

* fix: orcaprinteragent refactor

* fix: LAN paths and camera stream

* feat: use ffmpeg to render http camera stream

* fix: make model_id/dev_type optional instead of blocking

* fix: connect via ip dialog

* feat: LAN impl for Orca Printer Agent

* fix: model_id resolution method for non bambu printers

* fix: ffmpeg http camera stream jittering due to incomplete frames

* fix: revert sdcard check

* feat: check printer storage status before sending

* fix: moonraker printer agent hang on printer power cut

* fix: shim layer for any compatibiliity changes

* fix: cloud printers were using the wrong MQTT endpoint

* feat: cloud download via HTTP

* temp: doc for intended change

* fix: warnings

* fix: warnings

* fix: camera auto-play on startup

* fix: split infra from impl

* fix: uninitialized ams state blocking print

* Fixes nullptr deref

* Log first before std::move

* fix: printer agent virutal optional functions

* fix: parameterize orcaslicer_copy_test_dlls() for printer_agent_plugin_tests

* Revert "fix: parameterize orcaslicer_copy_test_dlls() for printer_agent_plugin_tests"

This reverts commit 2f566e3779.

* Guard libdatachannel. Remove unused code

* fix: unit tests & unused variables

* fix(ci): deps build order for datachannel

* Resolve printer agent first before getting cloud printer agent

* fix(ci): set depends openssl

* fix: re-include apply header guarded by ifdef __APPLE__

* fix(ci): add libdatachannel to flatpak manifest

* fix: add internal_developer_mode chekc back to MediaPlayCtrl::load()

* fix: invoke js clearInterval on WebMediaController::stop

* fix: change rtc log level

* fix: inject provider, agent id and generation to get_user_print_info to ensure correct metadata

* fix: revert moonraker specific behavior

* fix: remove stale comment

* fix: use ORCA_CLOUD_PROVIDER instead of hardcoded string

* fix: remove hardcoded ICE servers

* feat: enable https camera stream mode

* fix: move non-mandatory printer agent function stubs to IPrinterAgent

* fix: dedupe compatible printer type check

* fix: stop the correct media controller

* fix: scope get_my_machine_list to printers listed under the current printer agent

* fix: move printer agent plugin tests into test_plugin_lifecycle.cpp

* fix: always build bundled DataChannel dep

* fix: disable unused DataChannel media support

* revert: filament sync work

* fix: wrap command_* with small wrapper

* fix: regression bug, connecting to bambu needs bblp username

* fix: default impl for vendor agnostic gcode commansd

* refactor: media controller playback routing and ownership

* fix: bump libdatachannel ver & update flatpak to use tar instead

* fix: stop flatpak DataChannel build from re-cloning over the sandboxed network

* fix: update windows ffmpeg prebuild

* fix: update printer agent plugin API

* fix: shift camera signaling channel to network agent

* fix: follow external-packages for flatpak libdatachannel deps & add flatpak path to use source_dir

* feat: add printer-agent.md doc to HLSD

* fix: guard DeviceManager command dispatch when no printer agent is bound

* fix: port BBL implementations from #15711

* refactor: connect_printer api and dialog

* fix(tests): make omitted printer agent operations answer like a missing agent

* fix: preserve printer agent defaults in PrinterAgentPluginCapabilityTrampoline

* test: cover printer agent default command dispatch

* fix: validate windows FFmpeg avformat library

* feat: extend optional printer model warnings to calibration & ams workflows

* fix: handle malformed printer progress values safely

* fix: clear webview document on stop

* chore: reduce diagnostic logging level to trace

* refactor: centralize printer compatibility checks

* tests: add device manager integration coverage

* tests: cover WebMediaController lifecycle with wxWebView stub

* fix: make integration tests headless

* refactor: collapse command_ams_refresh_rfid and command_ams_refresh_rfid2

* refactor: make printer connection SSL agent-specific

* fix: persist input printer host and port

* fix: use correct device id for Moonraker connections

* fix: make moonraker gcode commands asynchronous

* fix: preserve moonraker device names

* fix: add include for non BBL_RELEASE_TO_PUBLIC path in BBLPrinterAgent

---------

Co-authored-by: Andrew <159703254+andrewsoonqn@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
Co-authored-by: Lam Wei Lun <weilun.lam@gmail.com>
2026-10-01 00:30:44 +08:00
SoftFever 71bb400e46 Add multi-variant support to the app 2026-09-28 19:08:35 +08:00
Kris Austin e7ca4fb87e build: trim GUI_App.hpp includes so edits stop rebuilding the whole GUI (#15644) 2026-09-12 12:09:39 -03:00
Kris Austin f18eb21b82 build: clear 11 single-site clang-cl warning categories (#15584)
build: clear eleven single-site clang-cl warning categories

Each of these is the last site left in its category, and every one is the
compiler saying it cannot tell what the code meant. Nothing here changes
defined behavior.

- OrcaSlicer_app_msvc.cpp printed a DWORD with %d
- StackWalker.cpp ran delete[] through an LPVOID
- ToolOrdering.cpp used a bare ; as a deliberate skip loop's body
- WipeTower.cpp had finish_block_tcr = finish_block_tcr, so the branch that
  reached it did nothing. Folding the condition into the enclosing if leaves
  the other branch untouched
- GCodeProcessor.cpp had an else binding to the inner if while the outer if
  carried no braces
- AmsMappingPopupUpdate.cpp wrote >= 1 || <= 3 where its own comment says &&
- CalibrationWizardPresetPage.cpp left max_decimal_length unset through a
  pair of conditions that cover every value but not visibly so
- DevManager.cpp bound map elements to pair<K, V> rather than
  pair<const K, V>, copying every one
- SyncAmsInfoDialog.cpp had extraneous parentheses around a comparison
- Http.cpp had if (speed > 0.01) speed = speed;. speed now starts at 0 as
  well, because curl_easy_getinfo leaves the target untouched when it fails
  and the value reaches Progress either way
- SnapmakerPrinterAgent.cpp truncated npos into an unsigned int, so the
  != npos guard was always true. A colour with no # still yields 0, because
  the wrap produced 0 as well

Nine categories go to zero. -Wtautological-overlap-compare and
-Wsometimes-uninitialized reach zero when #15583 merges their second site.
2026-09-09 12:01:19 -03:00
Kris Austin 142c63ab0e build: clear 143 -Woverloaded-virtual warnings in GUI widgets (#15377) 2026-08-26 19:14:30 -03:00
SoftFever 28b7127150 feat(gui): multi-nozzle UI for H2C/A2L
Multi-nozzle sync widget, AMS rack-nozzle mapping popup, calibration rework, send-dialog nozzle mapping and extruder-count UI. Includes the fix to persist the AMS sync badge on filament cards (H2C/A2L and direct-sync printers).
2026-07-09 01:16:26 +08:00
Ian Bassi 514ab02525 Localizations refactor (#14254) 2026-06-18 09:13:51 -03:00
Kevin J. LynaghandSoftFever 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
Ian Bassi 635d96183d Make filament compatibility temperature-aware (#13522)
* Make filament compatibility temperature-aware

Extend filament compatibility checks to consider actual nozzle temperatures and temperature ranges.
Print::check_multi_filaments_compatibility now accepts nozzle temperatures and range lows/highs; it resolves missing ranges from material defaults, computes per-filament effective temperatures, and checks pairwise compatibility (including high/low/mid mixed cases).
Updated callers in Print::check_multi_filament_valid and CalibrationWizardPresetPage to pass nozzle settings, consolidated user-facing warning strings, and fixed extruder index handling and minor logic/path improvements.

Clarify incompatible nozzle temperature warnings

* Update Print.cpp

* Remove json usage

* Reduce messages
2026-05-09 14:30:24 +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
SoftFever 1065d85dbc Fix wxEXPAND | wxALIGN_* sizer flag conflicts for wxWidgets 3.2+
wxWidgets 3.2+ asserts on invalid sizer flag combinations where
wxEXPAND (which fills the entire space in the secondary direction)
is combined with wxALIGN_* flags (which are meaningless when expanding).
Remove the conflicting wxALIGN_* flags from all 112 occurrences across
21 files, keeping wxEXPAND and any non-conflicting flags intact.
2026-03-24 20:50:44 +08:00
Alexandre Folle de Menezes 72a4597107 Fix GUI strings that should start with uppercase (#12499) 2026-02-27 11:19:22 -03:00
Noisyfox 760f66d3d7 Merge remote-tracking branch 'upstream/main' into dev/p2s-pr
# Conflicts:
#	src/slic3r/GUI/Plater.cpp
#	src/slic3r/GUI/PrePrintChecker.cpp
#	src/slic3r/GUI/StatusPanel.cpp
2025-11-18 09:17:13 +08:00
Alexandre Folle de Menezes 77f7514d97 Fix spacing and punctuation issues (#11244) 2025-11-17 09:35:53 +00:00
Noisyfox 5e2a7fbf35 Merge branch 'main' into dev/p2s-pr 2025-11-17 14:56:09 +08:00
Alexandre Folle de Menezes 8ec2454835 Standard units need translation for CIS Languages (#11376)
* Standard units need translation for CIS Languages
2025-11-17 10:29:44 +08:00
hemai c9f0bdb4b8 FIX: support retry when flow rate cali failed
Jira: [STUDIO-14271]
Change-Id: I0aa52e97412f29de1630e19c13f57e93763f4c7c
(cherry picked from commit 161daf87cf1e80a7c6f8f9bc6d07435bf8b0f9d1)
2025-10-28 15:29:51 +08:00
Noisyfox a9c0490c68 Update color 2025-10-05 16:02:17 +08:00
hemai 8bf60469b4 FIX: update ams select handler for single extruder
Jira: [STUDIO-14218]
Change-Id: I92ae9192162fbd614ddc8d0f640de5940f7cd24f
(cherry picked from commit c46e6f2b9f68c30268a5c8f557f793935919a6df)
2025-10-05 00:05:16 +08:00
zhimin.zeng 62d94b1a73 ENH: support new auto cali method
jira: STUDIO-10798
Change-Id: Icb47d8502739f0d4217486e2d1805cd609cee67b
(cherry picked from commit 6c2841e57f083cbc6d75eea2af55a8f78d2fa8df)
2025-10-03 23:08:55 +08:00
zhimin.zeng 6fadf2da5c FIX: add nozzle volume type for single printer
jira: STUDIO-12765
Change-Id: If1134e759c16a162537241e9e9b7db084263fb97
(cherry picked from commit 3a7d55e713117ee8249b2f67e2f399fa0b8a3b70)
2025-10-03 23:08:47 +08:00
zhimin.zeng 337d987ec8 ENH: support new auto cali method
jira: STUDIO-10798
Change-Id: I9490b050e93cd556e1d34b1e69e0508eaecec2cd
(cherry picked from commit 7a8b34525ef77d49b6549ecb290e2b1f89c69419)
2025-10-03 23:08:47 +08:00
hemai a8f70a72c9 FIX: extend max ams num of per nozzle align with printer
Jira: [STUDIO-13786]
Change-Id: I178766bce3926bf3c33f256b88c769826d48fc43
(cherry picked from commit 2a07c8fea76ee6130cce07c1a72c73f085d5390a)
2025-10-03 22:13:05 +08:00
xin.zhang 4a787f6ff8 ENH: clean codes about device
JIRA: [STUDIO-13609]
Change-Id: I591de7033360b9570600006cfbce2148a8d031d5
(cherry picked from commit e9c774be8f4c89b8dafa14ef56913612fb68bd0c)
2025-10-02 09:30:48 +08:00
zhimin.zeng 41da6a1ae7 FIX: support calibration for multi-nozzles with different diameters
github: 7543
Change-Id: Ifa20d786836f1991af35b3b95e25f91431d752e0
(cherry picked from commit 0c1053e962c928b253c268fc6658b8ec98f692ff)
2025-10-01 22:01:50 +08:00
yongfang.bian 2f18d25a2d FIX:clear wxwidgets asset
jira: nojia
Change-Id: I8ba2849afa07bc162a55b326c3d9a45150243ac3
(cherry picked from commit 96ba14c86d3cf180eeb585185d31bcb5d5db7415)
2025-09-30 14:34:08 +08:00
xin.zhang 4b6b3cc7bd FIX: the encoding of filament check_ams_filament_valid
jira: [STUDIO-12251]
Change-Id: Idc3d23dce67d3e835f15c47984fdd68041371d61
(cherry picked from commit 42b15b4d41a099c5f1aca9dd59ac592aafba0b43)
2025-09-24 11:14:42 +08:00
zhou.xu 517b6c09a8 FIX:WxColour (0x00AE42) represents bgr input, incorrect use
jira: STUDIO-12347
Change-Id: If03e23f2ee7cbb5dcb124453fb0a1ea67c3633a0
(cherry picked from commit 8a22fab6d73fe2694b5006712d5e72619ddea51c)
2025-09-24 10:40:45 +08:00
zhimin.zeng 119f16c565 ENH: add filament_printable and delete unprintable and printable list
jira: none

Change-Id: I643ab11831ceac1fe0793510f64b288cbd16415a
(cherry picked from commit 3dd5a601547485bfcc4188727343a52c30bb6a73)
2025-09-21 13:48:08 +08:00
tao wang dc56608d13 NEW:add pre print checker
jira:[none]

Change-Id: Ic1469d30dff30e1eba92d8bfacf58d0f0b789157
(cherry picked from commit 8cfa735c6cac432a2b97dea7703e810f8eef6d04)
2025-09-21 13:48:03 +08:00
zhimin.zeng 837077ee3b FIX: cali crash when using tpu in left extruder
jira: STUDIO-11535
Change-Id: I1f979346748210c9af16931fce107efb8f9e4fd7
(cherry picked from commit b9a040f2edfd3118d84ea565715666b0e6090a68)
2025-09-21 13:47:59 +08:00
xun.zhang fa05f107ab ENH: refine check logic for filament mix printing
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I199462cee6284e13e58f829b7972dd3124bfc385
(cherry picked from commit 22834b23586d2230e94e9dffd8b09146e5342246)
2025-09-21 13:47:58 +08:00
zhimin.zeng 00f5812aba FIX: fix the error display for ext slot
jira: none
Change-Id: I940554e6b1a5c8c609561670db79948c9efed63d
(cherry picked from commit 72b5ab7ee4f59287dd1888c1c4a1f86466fc1afe)
2025-09-20 15:31:33 +08:00
zhimin.zeng 3d5abeba60 ENH: Updated calibration UI for single-extruder printer
jira: none

Change-Id: I4e2d97f38699b13e2bced8f6a37c952f7903aa27
(cherry picked from commit 2e3a5e8ca71e3e9426412f8bd07b916f6be45aed)
2025-09-20 15:31:26 +08:00
zhimin.zeng fa06bded14 FIX: modify some text
jira: none
Change-Id: If3f90adda34bc3088f7a43ccf294d82c14180263
(cherry picked from commit 5b056ee0aea62f53688574b06b9424d140e69fa5)
2025-09-18 16:44:34 +08:00
xin.zhang 68741d019c FIX: move network hold to MainFrame
jira: [STUDIO-10994]
Change-Id: I2c30ba3b0f17d52079332634a9a2dd138859e083
(cherry picked from commit 506e82cb02a79d97a30effde53fe85c7d278858c)
2025-09-18 16:22:57 +08:00
zhimin.zeng c0c7d90845 FIX: The original data of combox is not cleared during initialization
jira: STUDIO-11005
Change-Id: Id5b7259b517a515c2f641ce32998f09e182902ff
(cherry picked from commit ad1f6bdca48fd45ea7cedac15518a5ebe73ba386)
2025-09-18 16:20:26 +08:00
zhimin.zeng 08aef5bf53 FIX: the pa profile name cannot be repeated when edit k value
jira: STUDIO-10992
Change-Id: I50d61e9581e188a10a4f804df163b3d50eb7caa0
(cherry picked from commit 431925adf0749faafeaf46ac0b8d60c6d4e5972a)
2025-09-18 16:17:58 +08:00
zhimin.zeng dd4781e47b FIX: show message dialog when the machine's nozzle in unknown
jira: none
Change-Id: Ic9b0e668c5e8427df76503731865d1b3de8568c4
(cherry picked from commit d38cbada3e311470594615ee714b51d47a51c54f)
2025-09-18 16:04:52 +08:00
zhimin.zeng 4d505580b4 FIX: add show status for cali when storage is not available
jira: STUDIO-10865
Change-Id: Ibc4d15e0f8d32694d389c68fa300b6ed95030818
(cherry picked from commit 48e2efdc2fdd43ad852d7f1ffc0a11af0714bc14)
2025-09-18 16:04:46 +08:00
zhimin.zeng a9eb20fc68 ENH: add sync status for sync button
jira: STUDIO-10676
Change-Id: Ia3afd0a1f09fa3f27b1f04c84ec9a427f74edf31
(cherry picked from commit d707fd04c3ebdb9fe6787b90cd661b4b121762c3)
2025-09-18 11:07:23 +08:00
zhimin.zeng cbe9c99c20 FIX: Calibration limit left and right must be the same diameter
jira: none
Change-Id: I3ea572184a122abeaee882742eda8b75fb21c30d
(cherry picked from commit 79165e1ad484f18ab376ce5451a58e729c2b3100)
2025-09-18 11:07:18 +08:00
zhimin.zeng 4f8ff4b704 FIX: cali should not send job in lan mode
jira: STUDIO-10625
Change-Id: I89227b9f3c06416abe7895fa3edb47358891d573
(cherry picked from commit 6029e4bc5e90094d6dbce08dbb4f47757453dad0)
2025-09-18 10:42:49 +08:00
zhimin.zeng 929b02dc79 FIX: N3S should only show one slot
and fix crash on calipresetpage
jira: STUDIO-10669

Change-Id: I93aecdcc360d47baa72ef08af711f3d06206d5e2
(cherry picked from commit 926cfb14d28a196082b2437ace182e960c0c66c2)
2025-09-17 23:09:23 +08:00
tao wang 35bb239a8f ENH:support checking blacklists for specified models
jira:[none]

Change-Id: Icd88c478a04e8743cdaaa8d670f238b534e40283
(cherry picked from commit c3643fdec9c0fcbceeba71f9ef5cd2de0cf7957d)
2025-09-17 17:38:52 +08:00
tao wang 1241b66dfc ENH:fixed incorrect prompt for glow material
jira:[STUDIO-10574]

Change-Id: I4475eb527ffbc8cc6d72405445552971d062b45e
(cherry picked from commit 01918affdfb69879f86ca47fe2f1ab8af5e1311b)
2025-09-17 17:09:21 +08:00
zhimin.zeng 2f55bcab1f FIX: add log for cali_sync_button
jira: none
Change-Id: Id6f7030ec8476e8dc209b4e7bb88ec4531f2013a
(cherry picked from commit ebc30a7769b84b507514ff11d270104848e4b450)
2025-09-17 15:49:03 +08:00
tao wang 18ffc5497b NEW:added inspection of pla-glow material
jira:[none]

Change-Id: I1a62992e24665b83f54981e59edc1ba1fcda9a8a
(cherry picked from commit fa2fc22f3e648c0f0f485d1a7e701658693da457)
2025-09-17 11:16:10 +08:00
zhimin.zeng f92e13bc44 FIX: H2D only displays supported heated beds on cali page
jira: STUDIO-10287  STUDIO-10433
Change-Id: Ief38584243a0ee836f9ba4541d2bb9eaa6343c1c
(cherry picked from commit 6a7d281d0df32d4232ba4da7260a696dc4a84594)
2025-09-17 10:03:44 +08:00
zhimin.zeng 1364a38504 FIX: fix some size error on dpi changed
jira: TUDIO-10053
Change-Id: Icd93aa0dd9a2c693d7b957f9ede5c6dafc415352
(cherry picked from commit ce65273dc0fc9bc3f23dc54b01e4dcc92d92483c)
2025-09-16 21:21:40 +08:00