Commit Graph

29692 Commits

Author SHA1 Message Date
Ian Bassi
da149ee75a Add toolchange ordering option (Standard/Cyclic). (#13582) 2026-07-08 14:18:41 -03:00
SoftFever
9810397546 test+i18n: multi-nozzle filament-group goldens and ported strings
Filament-group golden harness (config_a subset) and .3mf multi-nozzle round-trip tests, plus i18n msgids for the ported H2C/A2L strings.
2026-07-09 01:16:26 +08: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
SoftFever
a098b483f6 feat(device): H2C/A2L device layer
Nozzle rack data model and device-tab panel, multi-nozzle sync, per-nozzle filament blacklist, and print-dispatch nozzle mapping (DevNozzleMappingCtrl V0/V1).
2026-07-09 01:16:25 +08:00
SoftFever
15412cd812 feat(profiles): Bambu Lab H2C and A2L profiles and resources
Machine models and presets, process and filament presets, plus bed models, covers, previews and device images for the H2C and A2L.
2026-07-09 01:16:25 +08:00
SoftFever
237ef41b06 feat(libslic3r): multi-nozzle slicing engine for H2C/A2L
Port BambuStudio's dual-nozzle slicing core: H2C-era config keys, filament-to-nozzle grouping with per-layer dynamic regrouping, filament/nozzle/hotend gcode placeholder vocabulary, multi-nozzle wipe tower pre-heat/pre-cool, the two-pass pre-cooling injector, and corexy farthest-point timelapse.
2026-07-09 01:16:25 +08:00
Kris Austin
781ecdc2c1 ci: run unit tests on Windows and macOS (#14443)
* ci: run unit tests on Windows and macOS

The Unit Tests CI job only ran on Linux, so platform-specific bugs
invisible to a Linux build could land undetected (e.g. the MSVC-only
NfpPlacer crash fixed in #14267). The full non-[NotWorking] suite already
builds and passes on every shipped arch, so this wires them into CI.

A reusable unit_tests.yml, called once per built arch, downloads that
arch's test artifact and runs ctest. Each build leg builds the test
executables and uploads them; a single publish_test_results job on Linux
aggregates the JUnit results into one check.

Coverage: Linux x86_64 + aarch64, Windows x64 + arm64, macOS arm64.
macOS x86_64 is deferred (cross-built on arm64, needs Rosetta).

- build_release_vs.bat: "tests" token enables BUILD_TESTS
- build_release_macos.sh: -T builds and runs tests; ORCA_TESTS_BUILD_ONLY
  builds them without running (used by CI)
- scripts/run_unit_tests.sh: parameterized test dir and build config

Addresses #11273.

* ci: bump actions/checkout to v7 in reusable unit_tests workflow

Match the actions/checkout v6->v7 bump (#14517) that upstream applied to
the inline test job this reusable workflow replaces.
2026-07-08 22:00:35 +08:00
Kris Austin
b58025575d fix: isolate calibration temp paths per user (#14619)
* fix: isolate calibration temp paths per user

The calibration temp files under <temp>/calib were file-scope statics
initialized before set_temporary_dir() runs at startup, so they kept
using the shared system temp root and missed the per-user isolation
added in #14607. On Linux every account shares /tmp, so the first user
to calibrate owns /tmp/calib and later users fail to write there, the
same cross-user collision #14607 fixed for model backups, STEP import,
and part skip.

Build the paths lazily from temporary_dir() instead, through a
calib_temp_dir() accessor and a calib_temp_file() join helper. The base
becomes <temp>/orcaslicer_<uid>/calib on Linux and is unchanged on
Windows, where the temp dir is already per user.

Also make StoreParams::path a std::string rather than a non-owning
const char*. The calibration code had to keep a std::string alive
solely to feed that pointer, and the field was uninitialized by
default; owning the string removes the lifetime hazard for all three
callers and makes the entry guard a reliable empty() check. Confined to
the 3mf project exporter (three callers, two internal reads); no
on-disk, format, or ABI impact.

Follows up on #14607 per @Noisyfox's review suggestion.
2026-07-08 21:14:05 +08:00
Mister Anderson
b37fa41742 dedupe-issues.yml remove unsupported claude_args option (#14627)
* dedupe-issues.yml remove unsupported claude_args option

claude_args: is causing an error. Only calling for "--model" anyway, so replaced with model: option.

* Merge branch 'main' into MisterAnderson91-dedupe-issues-yml-update
2026-07-08 21:12:08 +08:00
Kris Austin
dec67345be fix: prevent out-of-bounds crash in Arachne beading interpolation (#14656)
* fix: prevent out-of-bounds crash in Arachne beading interpolation

SkeletalTrapezoidation::interpolate() derives an inset index from `left` but
uses it to index the merged beading, which follows the thicker of left/right.
When the thicker side has fewer insets, the index runs past the end and the
slicer crashes during "Generating walls".

Skip the adjustment when the index is out of range, as the adjacent guards
already do. interpolate() uses no instance state, so make it static and add a
regression test that exercises it directly.

Fixes #14584
2026-07-08 20:58:39 +08:00
anjis
cf86f20ae1 Improve filament change time estimation for CC & CC2 printers and add purge length statistics. (#14663)
* Improve filament change time estimation for CC & CC2 printers and add purge length statistics.

* fix(gcode): route elegoo M6211 handling
2026-07-08 20:48:32 +08:00
anjis
cab62070b5 Fix garbled Chinese filenames when importing ZIP files. (#14633)
* Fix garbled Chinese filenames when importing ZIP files.

* fix: avoid repeated ZIP path CRC calculation
2026-07-08 20:24:55 +08:00
Ian Bassi
12b63ebe36 Localization context (verb noun adjective adverb) (#14646)
* Torre de purga capitalization

* Russian navigation back

* Inches

* verb noun adjective adverb

* Posterior

* Fix atras for camera view

* Camera view
2026-07-08 09:16:00 -03:00
mlugo-apx
1d61962ea7 Add Vertical/Horizontal axis-lock checkboxes to Support Painting (#14262)
* Support Painting: add Vertical/Horizontal axis-lock checkboxes

Adds the Vertical and Horizontal axis-lock checkboxes to the Support
Painting gizmo, matching the UI in the MMU Segmentation and Seam
Painter gizmos. The underlying constraint logic has lived in
GLGizmoPainterBase since #2424 and already applies to any
ToolType::BRUSH action — the Support gizmo was the only painter
without the UI to enable it.

The Circle and Sphere brush arms are consolidated into a single
"if (Circle || Sphere)" block matching the structure of
GLGizmoMmuSegmentation::on_render_input_window, eliminating
duplicate cursor-radius and axis-lock UI code.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Support Painting: keep Circle/Sphere as separate tool arms per review

Reviewer requested keeping a separate condition per tool for future
extensibility rather than merging Circle and Sphere into one branch.
This restores the upstream Circle/Sphere arm structure and adds the
Vertical/Horizontal axis-lock options to each arm, making the change
purely additive over upstream.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: yw4z <ywsyildiz@gmail.com>
2026-07-08 04:11:47 +03:00
Kris Austin
4188ed2e00 feat: add regex_replace() string transform to placeholder templates (#14650)
feat: add regex_replace() string transform to filename templates

The filename template language could test strings (=~, !~, one_of) but
never rewrite one, so there was no supported way to reshape a placeholder
value, such as dropping a file extension from {first_object_name}.

Add regex_replace(subject, /pattern/, replacement), reusing the existing
regex-literal syntax and boost::regex engine. Every placeholder keeps
returning its exact value and the template does the transform explicitly:

  {regex_replace(first_object_name, /\.[^.]*$/, "")}   strip any extension

The replacement may reference capture groups ($1, $2, ...). It is one
grammar function mirroring digits(), with the name registered as a keyword
so it is not parsed as a variable.
2026-07-08 08:58:51 +08:00
Noisyfox
40fd225308 Make sure new strings are translated 2026-07-07 23:16:04 +08:00
Ian Bassi
bec1ce706c Fix localization context (#14642)
Co-authored-by: Alexandre Folle de Menezes <afmenez@terra.com.br>
2026-07-07 12:15:37 -03:00
Noisyfox
696a94a1a6 Update color 2026-07-07 22:29:28 +08:00
Noisyfox
7f67946dbf Fix incorrect length modification when loading device-related parameters
(cherry picked from commit bambulab/BambuStudio@ebf57372da)

Co-Authored-By: weizhen.xie <weizhen.xie@bambulab.com>
2026-07-07 22:02:10 +08:00
shsst
4227a192cd ENH:[Process/Filament] MOD: filament_ams parameters Profile Edited by lianhu.xiong
Change-Id: I2f540d0afd6ba368100bc88433cdf2024a1c7d3c
(cherry picked from commit 316d8461476d65a85de8dba41a861877c358dba5)
2026-07-07 21:17:04 +08:00
weizhen.xie
ae5d9c26fb ENH: Add filament ams/chamber parameters
Jira: None
Change-Id: I4c0a2d5b7e1c503fc9af9eb656fc6325e99af1de
(cherry picked from commit ce88e7794cb8786fae85603617757628a963e807)
2026-07-07 21:01:42 +08:00
yw4z
b2adfb5c13 Fix minimize & wrapped text issue on shared profiles notification (#14604)
Update NotificationManager.cpp
2026-07-07 14:24:55 +03:00
changyu.chen
c2f5a87e24 FIX: print warning when ams is drying
jira: [STUDIO-16558]

Change-Id: I6313c4c02dce6853d48fd4b175a161bf116865a9
(cherry picked from commit 49609394cd92b7043f4f65debf585cbc37f382bd)
2026-07-07 17:54:17 +08:00
changyu.chen
1b93f35565 FIX: print warning when ams drying
jira: [STUDIO-16505]

Change-Id: I47b98643a7d941c594eb4d90c08f48a7880c947e
(cherry picked from commit bdc833d49440c73a56cf10b723fb02d33d1c3a98)
2026-07-07 17:51:51 +08:00
Noisyfox
f58a1f350a feat: add drying-while-printing warning in SelectMachine dialog
Port from BambuStudio commit c8f70c6ca. Shows a warning when AMS
is actively drying during print job preparation, alerting users that
the drying temperature will be lowered during printing.
2026-07-07 17:50:20 +08:00
Noisyfox
922af972c7 refactor: convert m_fila_system from raw pointer to shared_ptr
Matches BambuStudio commit c8f70c6ca. DevFilaSystem* m_fila_system
becomes std::shared_ptr<DevFilaSystem>, enabling proper shared ownership
for the AMS drying control feature without no-op deleter hacks.

- DeviceManager.hpp: m_fila_system and GetFilaSystem() use shared_ptr
- DeviceManager.cpp: std::make_shared allocation, remove manual delete,
  add .get() to ParseV1_0 calls
- MoonrakerPrinterAgent.cpp: add .get() to GetFilaSystem() in ParseV1_0
2026-07-07 17:29:10 +08:00
Noisyfox
f713c7ae49 Make sure codes uses same structure/naming/position as BambuStudio
for easier code comparasion & porting in the future
2026-07-07 17:07:40 +08:00
Noisyfox
0e20f60712 fix: adapt SVG colors to OrcaSlicer palette
- dev_ams_dry_ctr_enable.svg: Bambu green #00AE42 → Orca teal #009688
- dev_ams_dry_ctr_heating_icon.svg: red #E14747 → amber #F09A17 (matches ams_is_drying.svg)
2026-07-07 15:25:32 +08:00
Noisyfox
23799e0210 chore: remove superpowers planning docs 2026-07-07 15:20:26 +08:00
Noisyfox
668654da5f fix: use dark humidity icons in dark mode 2026-07-07 14:58:51 +08:00
Noisyfox
2524669139 Revert "feat: update error dialog stop-drying to use CtrlAmsStopDrying"
This reverts commit 044a113d54.
2026-07-07 14:47:52 +08:00
Noisyfox
044a113d54 feat: update error dialog stop-drying to use CtrlAmsStopDrying
Keeps command_ams_drying_stop() fallback for backward compatibility.
2026-07-07 14:47:33 +08:00
Noisyfox
b2827cb9fa feat: wire AMS humidity click to open AMSDryControl dialog
For N3F and N3S AMS types, clicking the humidity indicator
now opens the full drying control dialog instead of the popup.
2026-07-07 14:36:52 +08:00
Noisyfox
08b08e09fc fix: use OrcaSlicerTitle.ico instead of BambuStudioTitle.ico 2026-07-07 14:23:05 +08:00
Noisyfox
62e5cfed36 feat: add AMSDryControl dialog for AMS filament drying
Three-page wizard: main status/control page, guide page with
filament tray status, and progress page. Supports N3F and N3S AMS types.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-07 14:16:04 +08:00
Noisyfox
b2298855b0 assets: add AMS drying control images from BambuStudio
14 images: humidity level icons, drying state images per AMS type,
heating icon, guide illustration, tray status icons.
2026-07-07 13:35:16 +08:00
Noisyfox
ec913eaf30 feat: add is_support_remote_dry flag parsing from firmware
Parses fun2 bit 5 from printer firmware to enable remote drying support.
2026-07-07 13:27:39 +08:00
Noisyfox
22d9765348 feat: add CtrlAmsStartDryingHour and CtrlAmsStopDrying commands
Publish 'ams_filament_drying' JSON commands via MQTT for
starting and stopping AMS filament drying.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-07 13:19:11 +08:00
Noisyfox
dd5b755f60 feat: add drying status JSON parsing and DevAms helper methods
Parse dry_status, dry_sub_status, dry_fan statuses,
dry_settings, and dry_cannot_reasons from printer JSON.
Implement IsSupportRemoteDry, AmsIsDrying, get_ams_drying_preset.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-07 13:09:32 +08:00
Noisyfox
9ee7e9aba4 feat: add DevUtilBackend with GetFilamentDryingPreset
Reads filament_dev_ams_drying_* config keys from filament presets
and returns structured DevFilamentDryingPreset data.
2026-07-07 12:51:12 +08:00
Noisyfox
1adfb5f242 feat: add DevFilamentDryingPreset, ctrl method declarations, tray preset getter 2026-07-07 12:13:26 +08:00
Noisyfox
c88535ce9e feat: add drying enums, structs, getters to DevAms
Adds DryCtrlMode, DryStatus, DrySubStatus, DryFanStatus,
CannotDryReason enums and DrySettings struct for AMS drying control.
2026-07-07 12:00:53 +08:00
Noisyfox
272e88a337 refactor: promote DevAmsType to global enum, rename DUMMY to EXT_SPOOL
Matches BambuStudio's DevAmsType naming convention.
2026-07-07 11:49:55 +08:00
Noisyfox
c983f60d00 docs: add AMS drying control implementation plan
12 tasks covering: data model changes, DevUtilBackend utility,
drying commands, JSON parsing, UI dialog port, integration
wiring, image assets, and verification.
2026-07-07 11:26:38 +08:00
Noisyfox
e0d80ee953 docs: add BambuStudio reference path to spec 2026-07-07 11:21:00 +08:00
Noisyfox
885f14ed65 docs: fix spec self-review issues
Clarify dialog modality, precise image asset list, DevAmsType naming consistency.
2026-07-07 11:13:35 +08:00
Noisyfox
5b64e49c53 docs: add AMS drying control design spec
Port AMS filament drying control feature from BambuStudio.
Covers data model changes, commands, UI dialog, and integration plan.
2026-07-07 11:12:00 +08:00
Rodrigo Faselli
b7d0bb60d9 Update test_skirt_brim.cpp (#14630) 2026-07-07 10:41:19 +08:00
Robert J Audas
1717c0f263 Fix brim first layer speed (#14616)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-06 19:04:32 -03:00
Ian Bassi
3bee58fcab Spanish Fuzzy Skin standarized (#14622) 2026-07-06 14:14:34 -03:00