From 9859d788d4c441fc6f5f10e8abd068268bb55732 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Thu, 24 Sep 2026 07:05:41 -0500 Subject: [PATCH] fix: installed vendor profiles only update when OTA is enabled (#15831) * preset updater: refresh installed vendors from resources regardless of enable_ota Since c4fea8ad24 the resources check in check_installed_vendor_profiles() sat behind enabled_config_update, which now follows enable_ota, a hidden flag that defaults to off. The hotfix a93c6ea67b then made that gate skip installed vendors entirely, so a new build's newer vendor profiles were never installed over an existing vendor unless OTA had been turned on. Before the gating the update URL always had a default, so the comparison effectively always ran. The resources shipped with a build are not an over-the-air update. Judge installed vendors against them, and drop the ones no longer enabled, regardless of the flag; enable_ota keeps gating the online sync. * preset updater: stop reinstalling the filament library on every launch check_installed_vendor_profiles() put OrcaFilamentLibrary on the install list unconditionally, so every launch recopied the whole vendor from resources and, in a build that ships the profile JSONs rather than a preset cache, then re-parsed and re-cached it: about 0.3 s of a dev build's startup, and a 3 MB copy in a release build, for a vendor that had not changed. The library was special-cased because it is never in the enabled-vendor list. Treat it like the default bundle instead: always wanted, and reinstalled only when the resources carry a newer version. --- src/slic3r/Utils/PresetUpdater.cpp | 41 ++++++++++++++---------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index 5fd5898a1b..b8379697d6 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -1098,35 +1098,32 @@ void PresetUpdater::priv::check_installed_vendor_profiles() const const auto enabled_vendors = app_config->vendors(); std::set bundles; - // Orca: always install filament library - bundles.insert(PresetBundle::ORCA_FILAMENT_LIBRARY); // A vendor is named by its profile or, where the build ships preset caches // instead of the raw profile JSONs, by its cache alone. for (const std::string &vendor_name : vendor_names_in(rsrc_path)) { - if (bundles.find(vendor_name) != bundles.end())continue; - - const auto is_vendor_enabled = (vendor_name == PresetBundle::ORCA_DEFAULT_BUNDLE) // always update configs from resource to vendor for ORCA_DEFAULT_BUNDLE + // enabled_vendors lists the vendors whose printer models the user picked, and + // neither of these two is ever in it. + const auto is_vendor_enabled = (vendor_name == PresetBundle::ORCA_DEFAULT_BUNDLE) + || (vendor_name == PresetBundle::ORCA_FILAMENT_LIBRARY) || (enabled_vendors.find(vendor_name) != enabled_vendors.end()); if (is_vendor_installed(vendor_name)) { - if (enabled_config_update) { - if (is_vendor_enabled) { - // Orca: whichever form of the vendor resources ships at the newer - // version is the one installing lays down, and the one to judge - // what is installed against. - Semver resource_ver = resource_vendor_version(vendor_name); - // Orca: a vendor installed as a preset cache has no profile - // beside it; the version it was installed at is in the cache. - Semver vendor_ver = installed_vendor_version(vendor_name); + if (is_vendor_enabled) { + // Orca: whichever form of the vendor resources ships at the newer + // version is the one installing lays down, and the one to judge + // what is installed against. + Semver resource_ver = resource_vendor_version(vendor_name); + // Orca: a vendor installed as a preset cache has no profile + // beside it; the version it was installed at is in the cache. + Semver vendor_ver = installed_vendor_version(vendor_name); - if (vendor_ver < resource_ver) { - BOOST_LOG_TRIVIAL(info) << "[Orca Updater]:found vendor " << vendor_name << " newer version " - << resource_ver.to_string() << " from resource, old version " << vendor_ver.to_string(); - bundles.insert(vendor_name); - } - } else { - // need to be removed because not installed - remove_installed_vendor(vendor_name); + if (vendor_ver < resource_ver) { + BOOST_LOG_TRIVIAL(info) << "[Orca Updater]:found vendor " << vendor_name << " newer version " + << resource_ver.to_string() << " from resource, old version " << vendor_ver.to_string(); + bundles.insert(vendor_name); } + } else { + // need to be removed because not installed + remove_installed_vendor(vendor_name); } } else if (is_vendor_enabled) { bundles.insert(vendor_name);