From 3a056f2aa33f96abe49929aef7968a1581b3abbd Mon Sep 17 00:00:00 2001 From: liutang <5712610+liutang@users.noreply.github.com> Date: Sat, 31 Jan 2026 11:10:09 -0500 Subject: [PATCH 1/3] Snapmaker U1: switch wall_generator to arachne (#12121) --- resources/profiles/Snapmaker/process/fdm_process_U1_common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/profiles/Snapmaker/process/fdm_process_U1_common.json b/resources/profiles/Snapmaker/process/fdm_process_U1_common.json index 81666a9184..829a552feb 100644 --- a/resources/profiles/Snapmaker/process/fdm_process_U1_common.json +++ b/resources/profiles/Snapmaker/process/fdm_process_U1_common.json @@ -72,6 +72,6 @@ "wipe_tower_extra_rib_length": "0", "prime_tower_width": "35", "prime_volume": "30", - "wall_generator": "classic", + "wall_generator": "arachne", "compatible_printers": [] } \ No newline at end of file From 977a66be39dbfb3b37a447f5ea5fc41a6dd5414c Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 1 Feb 2026 21:34:14 +0800 Subject: [PATCH 2/3] Fix active filament preset not matching wizard selection on first run (#12132) * Fix active filament preset not matching wizard selection on first run After completing the setup wizard with only a non-PLA filament selected (e.g. Generic ABS), the active filament preset defaulted to Generic PLA instead of the user's selection. This happened because load_presets() falls back to Generic PLA when the initial printer differs from the preferred printer, and the first_added_filament override was disabled. Add post-load correction in apply_config() that switches the active filament to the first compatible wizard-selected filament when the current active filament is not in the wizard selection. Also fix the guide JS (22.js, 23.js) to use the filalist attribute for building the filament array, and add platform-specific build test commands to CLAUDE.md. * Replace @System filaments with vendor-specific overrides in wizard When the wizard selects a generic filament like "Generic ABS @System", check if a vendor-specific override exists (e.g. BBL "Generic ABS") and use that instead. This ensures printer-tuned profiles are preferred, preventing load_installed_filaments from adding unwanted BBL defaults. When printers from the default bundle are also selected, both variants are kept since those printers need the @System version. Also adds diagnostic logging for filament loading in LoadProfileFamily. * Guard against persisting presets for Default Printer and fix filament override logic Prevent export_selections from saving stale preset settings for the built-in "Default Printer" placeholder, which is only the initial state before a real printer is loaded. Also require a non-default vendor printer to be selected before replacing @System filaments with vendor-specific overrides in the wizard, avoiding incorrect filament substitution when only the default bundle is present. --- CLAUDE.md | 19 +++++++++++ resources/web/guide/22/22.js | 16 ++++----- resources/web/guide/23/23.js | 16 ++++----- src/libslic3r/PresetBundle.cpp | 9 +++++ src/slic3r/GUI/WebGuideDialog.cpp | 55 ++++++++++++++++++++++++++++++- 5 files changed, 98 insertions(+), 17 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index eb35833082..61d292aee3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -70,6 +70,25 @@ build_release_vs2022.bat slicer ./build_linux.sh -c # clean build ./build_linux.sh -r # skip RAM/disk checks ./build_linux.sh -l # use Clang instead of GCC +``` +### Build test: + +**Always use this command to build the project when testing build issues on Windows.** +```bash +cmake --build . --config %build_type% --target ALL_BUILD -- -m +``` + +### Building on macOS +**Always use this command to build the project when testing build issues on macOS.** +```bash +cmake --build build/arm64 --config RelWithDebInfo --target all -- +``` + +### Building on Linux + **Always use this command to build the project when testing build issues on Linux.** +```bash +cmake --build build/arm64 --config RelWithDebInfo --target all -- + ``` ### Build System diff --git a/resources/web/guide/22/22.js b/resources/web/guide/22/22.js index abc887653d..0283936ee0 100644 --- a/resources/web/guide/22/22.js +++ b/resources/web/guide/22/22.js @@ -514,14 +514,14 @@ function ResponseFilamentResult() let FilaArray=new Array(); for(let n=0;nsecond.empty(); + bool has_filament_profiles = m_ProfileJson.contains("filament"); + + // Check if any non-default vendor has selected printers + bool has_vendor_printer = false; + for (const auto& [vendor, models] : enabled_vendors) { + if (vendor != PresetBundle::ORCA_DEFAULT_BUNDLE && !models.empty()) { + has_vendor_printer = true; + break; + } + } + + std::map supplemented_filaments; + for (const auto& [name, value] : enabled_filaments) { + if (name.size() > system_suffix.size() && + name.compare(name.size() - system_suffix.size(), system_suffix.size(), system_suffix) == 0) { + std::string short_name = name.substr(0, name.size() - system_suffix.size()); + if (has_vendor_printer && has_filament_profiles && m_ProfileJson["filament"].contains(short_name)) { + supplemented_filaments[short_name] = value; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Replacing @System filament: '" << name << "' -> '" << short_name << "'"; + if (has_default_bundle_printer) { + supplemented_filaments[name] = value; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Also keeping '" << name << "' for default bundle printers"; + } + continue; + } + } + supplemented_filaments[name] = value; + } + //update the app_config - app_config->set_section(AppConfig::SECTION_FILAMENTS, enabled_filaments); + app_config->set_section(AppConfig::SECTION_FILAMENTS, supplemented_filaments); app_config->set_vendors(m_appconfig_new); if (check_unsaved_preset_changes) preset_bundle->load_presets(*app_config, ForwardCompatibilitySubstitutionRule::Enable, {preferred_model, preferred_variant, first_added_filament, std::string()}); + // If the active filament is not in the wizard-selected filaments, switch to the first + // compatible wizard-selected filament. This handles the first-run case where load_presets + // falls back to "Generic PLA" even though the user selected a different filament. + bool active_filament_selected = supplemented_filaments.empty() + || supplemented_filaments.count(preset_bundle->filament_presets.front()) > 0; + if (!active_filament_selected) { + for (const auto& [filament_name, _] : supplemented_filaments) { + const Preset* preset = preset_bundle->filaments.find_preset(filament_name); + if (preset && preset->is_visible && preset->is_compatible) { + preset_bundle->filaments.select_preset_by_name(filament_name, true); + preset_bundle->filament_presets.front() = preset_bundle->filaments.get_selected_preset_name(); + break; + } + } + } + // Update the selections from the compatibilty. preset_bundle->export_selections(*app_config); From b9d4b782c215551be9804074213e4dd852f0259d Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Mon, 2 Feb 2026 23:50:12 +0800 Subject: [PATCH 3/3] Fix crash when open AMS 2 humidity popup (#12123) --- src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.cpp b/src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.cpp index 1b32e7234d..57b2b43e6e 100644 --- a/src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.cpp +++ b/src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.cpp @@ -147,7 +147,7 @@ void uiAmsPercentHumidityDryPopup::UpdateContents() // table grid const wxString& humidity_str = wxString::Format("%d%%", m_humidity_percent); m_humidity_label->SetLabel(humidity_str); - const wxString& temp_str = wxString::Format(u8"%d\u2103" /* °C */, (int)std::round(m_current_temperature)); + const wxString& temp_str = wxString::Format(wxString::FromUTF8(u8"%d\u2103" /* °C */), (int)std::round(m_current_temperature)); m_temperature_label->SetLabel(temp_str); if (m_left_dry_time > 0)