Compare commits

...
Author SHA1 Message Date
Hanif Koh e550cefdc0 Drop Includes Duplicated by the Cleanup or by Main's Own Additions 2026-10-04 14:54:15 +08:00
Hanif Koh 1596551be5 Include Headers That Files Reached Through Ones the Cleanup Removed 2026-10-04 14:53:23 +08:00
Hanif Koh 6e757db034 Restore MainFrame.hpp in ParamsDialog.cpp for the Windows-Only Reparent Call 2026-10-04 14:53:23 +08:00
Hanif Koh 721fcc4e4d Restore the libslic3r Precompiled Header and Direct Includes Lost in the Platform Pass
The platform-file pass treated pchheader.hpp as an ordinary header and
emptied it, and left GUI_Preview.hpp and 14 other files relying on
headers they no longer reached directly.
2026-10-04 14:53:23 +08:00
Hanif Koh abce184b76 Remove Unused Project Includes From Files With Platform-Specific Code
A Linux include-what-you-use run cannot see the code inside _WIN32, __APPLE__ or __linux__ blocks, so its verdict is only taken where nothing the removed header declares, directly or through what it includes, is named inside those blocks. Removals also have to hold in both the Release and Debug configuration and never touch a line inside a conditional block.
2026-10-04 14:53:22 +08:00
Hanif Koh e374956d03 Remove Unused Project Includes and Forward-Declare Where a Type Is Only Referenced
Generated with include-what-you-use and applied conservatively. Only OrcaSlicer's own headers, the ones under src/ and tests/, are removed or forward-declared; standard-library and third-party includes are left alone. An include is removed only when both the Release and the Debug configuration leave it unused, never from inside a conditional block, and never from a file with platform-specific blocks, which only gain includes. Files whose only use of a header sits behind a feature or debug macro (libvgcode's OpenGL ES and marker code, the ARACHNE/TESTS_EXPORT_SVGS debug output) keep their includes.

clonable_ptr.hpp gains #pragma once; it had no include guard and was only safe while Config.hpp was its sole includer.
2026-10-04 14:53:22 +08:00
HanifKoh 88346efceb Stop Format/STEP.hpp Defining a Global fs Alias (#16102)
Every file that included STEP.hpp, directly or not, got namespace fs = boost::filesystem at global scope, and 29 sources and three headers relied on it without saying so. Headers now spell out boost::filesystem, and each source that uses fs declares the alias itself.
2026-10-04 14:50:30 +08:00
HanifKoh 5a95ba4bd5 Add Missing Includes to Code Merged Since the Include Cleanup (#16106)
* Add Missing Includes to Code Merged Since the Include Cleanup

* Add Missing Includes to Code Merged Since the Previous Sweep
2026-10-04 14:50:15 +08:00
Kris Austin 36fb9905e5 fix: Linux Flatpak freeze and blank toolpaths after changing a setting in Preview (#16109) 2026-10-03 22:40:33 -03:00
Kiss Lorand 674308f691 Fix internal bridge limiting area expansion units (#16056) 2026-10-03 20:31:38 -03:00
Kris Austin 5be5c90e59 perf: speed up G-code export by up to 8% via cheaper G-code text building (#16108) 2026-10-03 20:29:54 -03:00
TheLegendTubaGuy 32b1e69fdd Fix AppConfig text persistence and section-specific boolean reads (#16092) 2026-10-03 20:27:44 -03:00
yw4z 5e2d8ab4f0 Optimize file sizes on resources folder (#16111)
* init

* update
2026-10-04 01:58:21 +03:00
HanifKoh d1a3ef68c5 Fix CLI Crashes on Malformed Project, Assemble List and No-Input Runs (#15978)
* Fix CLI Crashes on Malformed Project, Assemble List and No-Input Runs

Four CLI paths indexed vectors without checking their size and crashed
with SIGSEGV on malformed input:

- A project inherits_group whose length is not the filament count plus
  the process and printer entries was split by position. It is now
  ignored with a warning, as if the project had none.
- An assemble list object with an empty filaments list passed validation
  and was then read at index 0. It is now rejected as a config error, as
  is a negative filament id.
- --slice N --arrange 1 on a project without plate metadata read the
  missing plate data. It now falls back to the plate's own filaments,
  like the other plate data reads.
- --assemble with no input model built an object with no volumes. It is
  now rejected as invalid parameters.

A tests/cli script covers each case through the binary, since all four
live inline in CLI::run().

* Move the Assemble List Parser into libslic3r

Behaviour-preserving move of the --load-assemble-list JSON parser and
its plate/object structs from the CLI into libslic3r/Format/AssembleList,
so the format can be unit tested. The parser returns its own
AssembleListResult and takes the plate limit as a parameter; CLI::run
maps the result to the same exit codes as before. Every validation rule
and log message is unchanged.

Adds Catch2 coverage of the valid layout and each validation rule.

* Keep the Process and Printer of an inherits_group of the Wrong Length

A project whose inherits_group did not have one entry per filament plus
the process and printer entries was loaded as if it had none. The CLI
then looked for system presets under the names of the user presets,
found none and refused to slice a project that slices on main.

The group is now read as before: the process first, the printer last
and the filaments in between, up to the filament count. A filament
without an entry counts as a system preset. A group with fewer than two
entries is still ignored. The warning stays.
2026-10-04 03:17:40 +08:00
HanifKoh a80c323614 Let the CLI Resolve Presets on Installs That Ship Preset Caches Only (#16047)
Release builds install each vendor as its preset cache alone. The
read-only preset load the CLI uses to resolve an inheriting user preset
passed allow_cache = false to keep caches from being written, which
also stopped them from being read, so every vendor fell back to JSONs
that are not installed and the CLI failed.

The flag now only gates writing: a read-only load reads caches and
writes none. The filament library is also read from its cache whenever
that is all that is installed, so a vendor updated over the air still
resolves against it.
2026-10-04 00:40:38 +08:00
HanifKoh 52ff374870 Refresh a CLI Project's Filament Settings From Their System Presets (#16038)
* Refresh a CLI Project's Filament Settings From Their System Presets

The CLI loads a project's printer and process settings as the GUI does,
taking every key the project does not list as changed from the current
system preset, but it kept the stored filament values. A project saved
before a profile update then sliced with old filament values on the
command line and with the current ones in the GUI.

Every project filament that no loaded filament replaces is now resolved
by its system preset name and fed to the filament merge the up-to-date
path already uses, which keeps the keys listed in
different_settings_to_system and maps per-variant values onto the
preset's variants. This covers a plain run, --uptodate without
--uptodate-filaments, and the slots --load-filaments leaves empty. The
merge tells refreshed entries from loaded ones per entry instead of by
the global loaded-filament count, and the entries are kept in slot
order. A project filament saved under a name the presets have since
split per nozzle is resolved through the name conversion the GUI uses,
which PresetBundle now exposes.

* Check the Project Refresh Test's Result Directly

Shellcheck SC2181: test the checker's exit status in the if instead of
reading $? afterwards.
2026-10-04 00:36:10 +08:00
Kris AustinandRodrigo Faselli 6e0f04815b perf: speed up G-code export by up to 7% via post-processing fixes (#16031)
Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
2026-10-03 13:29:55 -03:00
Kris AustinandRodrigo Faselli c67b54b39d perf: speed up G-code export by 4-17% via parallel overhang precompute (#16050)
Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
2026-10-03 11:50:36 -03:00
978 changed files with 2303153 additions and 2300570 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+321 -321
View File
@@ -1,323 +1,323 @@
{
"result": 0,
"t": 1765968095,
"ver": 202511162200,
"data": [
{
"ecode": "03008041",
"image": "",
"actions": [
4,
6
],
"device": "26A"
},
{
"ecode": "03008060",
"image": "",
"actions": [
22
],
"device": "26A"
},
{
"ecode": "12008010",
"image": "c31daf51b36e446698f14c6df879ea21.png",
"actions": [
6,
4
],
"device": "26A"
},
{
"ecode": "12FF8010",
"image": "f87557495f2f2163a44bde8f4ddd9b8c.png",
"actions": [
4,
6
],
"device": "26A"
},
{
"ecode": "18008016",
"image": "",
"actions": [
4,
6
],
"device": "26A"
},
{
"ecode": "07008016",
"image": "",
"actions": [
4,
6
],
"device": "26A"
},
{
"ecode": "07018016",
"image": "",
"actions": [
4,
6
],
"device": "26A"
},
{
"ecode": "03002E0000030001",
"image": "",
"actions": [
52
],
"device": "26A"
},
{
"ecode": "03004016",
"image": "",
"actions": [
6
],
"device": "26A"
},
{
"ecode": "03008019",
"image": "",
"actions": [
4
],
"device": "default"
},
{
"ecode": "0502C026",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "05004003",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "05004040",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "05004042",
"image": "",
"actions": [
36,
37
],
"device": "default"
},
{
"ecode": "03008000",
"image": "",
"actions": [
2
],
"device": "default"
},
{
"ecode": "0C00402D",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "05004037",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "05004015",
"image": "",
"actions": [
14
],
"device": "default"
},
{
"ecode": "05004007",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "0502C014",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "0300800C",
"image": "",
"actions": [
2
],
"device": "default"
},
{
"ecode": "05004004",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "0500402E",
"image": "",
"actions": [
14
],
"device": "default"
},
{
"ecode": "05024001",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "0502C012",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "0502C010",
"image": "",
"actions": [
35
],
"device": "default"
},
{
"ecode": "05008092",
"image": "",
"actions": [
27,
5
],
"device": "default"
},
{
"ecode": "05004014",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "0300800D",
"image": "",
"actions": [
2,
6
],
"device": "default"
},
{
"ecode": "0500402F",
"image": "",
"actions": [
14
],
"device": "default"
},
{
"ecode": "05004041",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "0500400E",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "05004043",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "0C00402C",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "03008017",
"image": "",
"actions": [
4
],
"device": "default"
},
{
"ecode": "03008013",
"image": "",
"actions": [
2
],
"device": "default"
},
{
"ecode": "03008007",
"image": "",
"actions": [
2,
5
],
"device": "default"
},
{
"ecode": "03008016",
"image": "",
"actions": [
4,
5,
6
],
"device": "default"
}
]
"result": 0,
"t": 1765968095,
"ver": 202511162200,
"data": [
{
"ecode": "03008041",
"image": "",
"actions": [
4,
6
],
"device": "26A"
},
{
"ecode": "03008060",
"image": "",
"actions": [
22
],
"device": "26A"
},
{
"ecode": "12008010",
"image": "c31daf51b36e446698f14c6df879ea21.png",
"actions": [
6,
4
],
"device": "26A"
},
{
"ecode": "12FF8010",
"image": "f87557495f2f2163a44bde8f4ddd9b8c.png",
"actions": [
4,
6
],
"device": "26A"
},
{
"ecode": "18008016",
"image": "",
"actions": [
4,
6
],
"device": "26A"
},
{
"ecode": "07008016",
"image": "",
"actions": [
4,
6
],
"device": "26A"
},
{
"ecode": "07018016",
"image": "",
"actions": [
4,
6
],
"device": "26A"
},
{
"ecode": "03002E0000030001",
"image": "",
"actions": [
52
],
"device": "26A"
},
{
"ecode": "03004016",
"image": "",
"actions": [
6
],
"device": "26A"
},
{
"ecode": "03008019",
"image": "",
"actions": [
4
],
"device": "default"
},
{
"ecode": "0502C026",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "05004003",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "05004040",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "05004042",
"image": "",
"actions": [
36,
37
],
"device": "default"
},
{
"ecode": "03008000",
"image": "",
"actions": [
2
],
"device": "default"
},
{
"ecode": "0C00402D",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "05004037",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "05004015",
"image": "",
"actions": [
14
],
"device": "default"
},
{
"ecode": "05004007",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "0502C014",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "0300800C",
"image": "",
"actions": [
2
],
"device": "default"
},
{
"ecode": "05004004",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "0500402E",
"image": "",
"actions": [
14
],
"device": "default"
},
{
"ecode": "05024001",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "0502C012",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "0502C010",
"image": "",
"actions": [
35
],
"device": "default"
},
{
"ecode": "05008092",
"image": "",
"actions": [
27,
5
],
"device": "default"
},
{
"ecode": "05004014",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "0300800D",
"image": "",
"actions": [
2,
6
],
"device": "default"
},
{
"ecode": "0500402F",
"image": "",
"actions": [
14
],
"device": "default"
},
{
"ecode": "05004041",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "0500400E",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "05004043",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "0C00402C",
"image": "",
"actions": [
11
],
"device": "default"
},
{
"ecode": "03008017",
"image": "",
"actions": [
4
],
"device": "default"
},
{
"ecode": "03008013",
"image": "",
"actions": [
2
],
"device": "default"
},
{
"ecode": "03008007",
"image": "",
"actions": [
2,
5
],
"device": "default"
},
{
"ecode": "03008016",
"image": "",
"actions": [
4,
5,
6
],
"device": "default"
}
]
}
File diff suppressed because it is too large Load Diff
+20903 -20903
View File
File diff suppressed because it is too large Load Diff
+20315 -20315
View File
File diff suppressed because it is too large Load Diff
+22215 -22215
View File
File diff suppressed because it is too large Load Diff
+20215 -20215
View File
File diff suppressed because it is too large Load Diff
+21799 -21799
View File
File diff suppressed because it is too large Load Diff
+19555 -19555
View File
File diff suppressed because it is too large Load Diff
+23351 -23351
View File
File diff suppressed because it is too large Load Diff
+20903 -20903
View File
File diff suppressed because it is too large Load Diff
+20315 -20315
View File
File diff suppressed because it is too large Load Diff
+22215 -22215
View File
File diff suppressed because it is too large Load Diff
+20215 -20215
View File
File diff suppressed because it is too large Load Diff
+21799 -21799
View File
File diff suppressed because it is too large Load Diff
+19555 -19555
View File
File diff suppressed because it is too large Load Diff
+23351 -23351
View File
File diff suppressed because it is too large Load Diff
+20903 -20903
View File
File diff suppressed because it is too large Load Diff
+20315 -20315
View File
File diff suppressed because it is too large Load Diff
+22215 -22215
View File
File diff suppressed because it is too large Load Diff
+20215 -20215
View File
File diff suppressed because it is too large Load Diff
+21799 -21799
View File
File diff suppressed because it is too large Load Diff
+19555 -19555
View File
File diff suppressed because it is too large Load Diff
+23351 -23351
View File
File diff suppressed because it is too large Load Diff
+20903 -20903
View File
File diff suppressed because it is too large Load Diff
+20315 -20315
View File
File diff suppressed because it is too large Load Diff
+22215 -22215
View File
File diff suppressed because it is too large Load Diff
+20215 -20215
View File
File diff suppressed because it is too large Load Diff
+21799 -21799
View File
File diff suppressed because it is too large Load Diff
+19555 -19555
View File
File diff suppressed because it is too large Load Diff
+23351 -23351
View File
File diff suppressed because it is too large Load Diff
+20903 -20903
View File
File diff suppressed because it is too large Load Diff
+20315 -20315
View File
File diff suppressed because it is too large Load Diff
+22215 -22215
View File
File diff suppressed because it is too large Load Diff
+20215 -20215
View File
File diff suppressed because it is too large Load Diff
+21799 -21799
View File
File diff suppressed because it is too large Load Diff
+19555 -19555
View File
File diff suppressed because it is too large Load Diff
+23351 -23351
View File
File diff suppressed because it is too large Load Diff
+20903 -20903
View File
File diff suppressed because it is too large Load Diff
+20315 -20315
View File
File diff suppressed because it is too large Load Diff
+22215 -22215
View File
File diff suppressed because it is too large Load Diff
+20215 -20215
View File
File diff suppressed because it is too large Load Diff
+21799 -21799
View File
File diff suppressed because it is too large Load Diff
+19555 -19555
View File
File diff suppressed because it is too large Load Diff
+23351 -23351
View File
File diff suppressed because it is too large Load Diff
+20903 -20903
View File
File diff suppressed because it is too large Load Diff
+20315 -20315
View File
File diff suppressed because it is too large Load Diff
+22215 -22215
View File
File diff suppressed because it is too large Load Diff
+20215 -20215
View File
File diff suppressed because it is too large Load Diff
+21799 -21799
View File
File diff suppressed because it is too large Load Diff
+19555 -19555
View File
File diff suppressed because it is too large Load Diff
+23351 -23351
View File
File diff suppressed because it is too large Load Diff
+20903 -20903
View File
File diff suppressed because it is too large Load Diff
+20315 -20315
View File
File diff suppressed because it is too large Load Diff
+22215 -22215
View File
File diff suppressed because it is too large Load Diff
+20215 -20215
View File
File diff suppressed because it is too large Load Diff
+21799 -21799
View File
File diff suppressed because it is too large Load Diff
+19555 -19555
View File
File diff suppressed because it is too large Load Diff
+23351 -23351
View File
File diff suppressed because it is too large Load Diff
+20903 -20903
View File
File diff suppressed because it is too large Load Diff
+20315 -20315
View File
File diff suppressed because it is too large Load Diff
+20215 -20215
View File
File diff suppressed because it is too large Load Diff
+21799 -21799
View File
File diff suppressed because it is too large Load Diff
+20903 -20903
View File
File diff suppressed because it is too large Load Diff
+20315 -20315
View File
File diff suppressed because it is too large Load Diff
+22215 -22215
View File
File diff suppressed because it is too large Load Diff
+20215 -20215
View File
File diff suppressed because it is too large Load Diff
+21799 -21799
View File
File diff suppressed because it is too large Load Diff
+19555 -19555
View File
File diff suppressed because it is too large Load Diff
+23351 -23351
View File
File diff suppressed because it is too large Load Diff
+20903 -20903
View File
File diff suppressed because it is too large Load Diff
+20315 -20315
View File
File diff suppressed because it is too large Load Diff
+22215 -22215
View File
File diff suppressed because it is too large Load Diff
+20215 -20215
View File
File diff suppressed because it is too large Load Diff
+21799 -21799
View File
File diff suppressed because it is too large Load Diff
+19555 -19555
View File
File diff suppressed because it is too large Load Diff
+23351 -23351
View File
File diff suppressed because it is too large Load Diff
+20903 -20903
View File
File diff suppressed because it is too large Load Diff
+20315 -20315
View File
File diff suppressed because it is too large Load Diff
+22215 -22215
View File
File diff suppressed because it is too large Load Diff
+20215 -20215
View File
File diff suppressed because it is too large Load Diff
+21799 -21799
View File
File diff suppressed because it is too large Load Diff
+19555 -19555
View File
File diff suppressed because it is too large Load Diff
+23351 -23351
View File
File diff suppressed because it is too large Load Diff
+20315 -20315
View File
File diff suppressed because it is too large Load Diff
+20903 -20903
View File
File diff suppressed because it is too large Load Diff
+22215 -22215
View File
File diff suppressed because it is too large Load Diff
+20215 -20215
View File
File diff suppressed because it is too large Load Diff
+19555 -19555
View File
File diff suppressed because it is too large Load Diff
+23351 -23351
View File
File diff suppressed because it is too large Load Diff
+20903 -20903
View File
File diff suppressed because it is too large Load Diff
+20315 -20315
View File
File diff suppressed because it is too large Load Diff
+22215 -22215
View File
File diff suppressed because it is too large Load Diff
+20215 -20215
View File
File diff suppressed because it is too large Load Diff
+21799 -21799
View File
File diff suppressed because it is too large Load Diff
+19555 -19555
View File
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More