Merge branch '2.2.3' into dev_upgrade_alves

This commit is contained in:
alves
2026-01-21 16:51:25 +08:00
7 changed files with 83 additions and 6 deletions

View File

@@ -2,7 +2,30 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.application-identifier</key>
<string>5NGD3B3V37.snapmaker-orca</string>
<key>com.apple.developer.team-identifier</key>
<string>5NGD3B3V37</string>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.runningboard.assertions.webkit</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.network.server</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
<key>com.apple.security.files.downloads.read-write</key>
<true/>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
</dict>
</plist>

View File

@@ -963,7 +963,7 @@ void GUI_App::post_init()
std::string language = GUI::into_u8(current_language_code());
std::string network_ver = Slic3r::NetworkAgent::get_version();
bool sys_preset = app_config->get("sync_system_preset") == "true";
//this->preset_updater->sync(http_url, language, network_ver, sys_preset ? preset_bundle : nullptr);
this->preset_updater->sync(http_url, language, network_ver, sys_preset ? preset_bundle : nullptr);
this->preset_updater->sync_web_async(true);
this->check_new_version_sf(false, false);

View File

@@ -7782,9 +7782,9 @@ void Plater::priv::on_process_completed(SlicingProcessCompletedEvent &evt)
}
else if (is_finished && evt.finished())
{
auto strTime = get_works_time(duration_ms);
auto slice_time = BP_SLICE_DURATION_TIME + std::string(":") + strTime;
sentryReportLog(SENTRY_LOG_TRACE, slice_time, BP_SLICE_DURATION);
//auto strTime = get_works_time(duration_ms);
//auto slice_time = BP_SLICE_DURATION_TIME + std::string(":") + strTime;
//sentryReportLog(SENTRY_LOG_TRACE, slice_time, BP_SLICE_DURATION);
m_slice_start_time = {};
m_slice_timing_active = false;

View File

@@ -330,6 +330,7 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent)
m_button_download->SetSize(wxSize(FromDIP(58), FromDIP(24)));
m_button_download->SetMinSize(wxSize(FromDIP(58), FromDIP(24)));
m_button_download->SetCornerRadius(FromDIP(12));
m_button_download->SetCursor(wxCURSOR_HAND);
m_button_download->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) {
EndModal(wxID_YES);
@@ -342,6 +343,7 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent)
m_button_skip_version->SetSize(wxSize(FromDIP(58), FromDIP(24)));
m_button_skip_version->SetMinSize(wxSize(FromDIP(58), FromDIP(24)));
m_button_skip_version->SetCornerRadius(FromDIP(12));
m_button_skip_version->SetCursor(wxCURSOR_HAND);
m_button_skip_version->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) {
wxGetApp().set_skip_version(true);
@@ -372,6 +374,7 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent)
m_button_cancel->SetSize(wxSize(FromDIP(58), FromDIP(24)));
m_button_cancel->SetMinSize(wxSize(FromDIP(58), FromDIP(24)));
m_button_cancel->SetCornerRadius(FromDIP(12));
m_button_cancel->SetCursor(wxCURSOR_HAND);
m_button_cancel->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) {
EndModal(wxID_NO);

View File

@@ -2081,8 +2081,12 @@ void SSWCP_MachineOption_Instance::process()
sw_ServerClientManagerSetUserinfo();
} else if (m_cmd == "sw_DefectDetactionConfig"){
sw_DefectDetactionConfig();
} else if (m_cmd == GETCAMERA_TIMELAPSE_INSTANCE) {
CmdForwarding();
}
else if (m_cmd == GET_DEVICEDATA_STORAGESPACE) {
CmdForwarding();
}
else {
handle_general_fail();
}
@@ -3691,6 +3695,28 @@ void SSWCP_MachineOption_Instance::sw_GetTimelapseInstance()
handle_general_fail();
}
}
void SSWCP_MachineOption_Instance::CmdForwarding() {
try {
std::shared_ptr<PrintHost> host = nullptr;
wxGetApp().get_connect_host(host);
if (!host) {
handle_general_fail(-1, "Connection lost!");
return;
}
auto weak_self = std::weak_ptr<SSWCP_Instance>(shared_from_this());
host->async_delete_camera_timelapse(m_param_data, [weak_self](const json& response) {
auto self = weak_self.lock();
if (self) {
SSWCP_Instance::on_mqtt_msg_arrived(self, response);
}
});
} catch (std::exception& e) {
handle_general_fail();
}
}
void SSWCP_MachineOption_Instance::sw_DeleteCameraTimelapse()
{
@@ -5779,7 +5805,9 @@ std::unordered_set<std::string> SSWCP::m_machine_option_cmd_list = {
"sw_DeleteCameraTimelapse",
"sw_GetTimelapseInstance",
"sw_ServerClientManagerSetUserinfo",
"sw_DefectDetactionConfig"
"sw_DefectDetactionConfig",
GETCAMERA_TIMELAPSE_INSTANCE,
GET_DEVICEDATA_STORAGESPACE
};
std::unordered_set<std::string> SSWCP::m_machine_connect_cmd_list = {

View File

@@ -23,7 +23,13 @@ using namespace nlohmann;
namespace asio = boost::asio;
using tcp = asio::ip::tcp;
//WCP Interface definition
#define UPDATE_PRIVACY_STATUS "sw_SubUserUpdatePrivacy"
#define UPLOAD_CAMERA_TIMELAPSE "sw_UploadCameraTimelapse"
#define DELETE_CAMERA_TIMELAPSE "sw_DeleteCameraTimelapse"
#define GETCAMERA_TIMELAPSE_INSTANCE "sw_GetCameraTimelapseInstance"
#define GET_DEVICEDATA_STORAGESPACE "sw_GetDeviceDataStorageSpace"
namespace Slic3r { namespace GUI {
@@ -422,6 +428,7 @@ private:
void sw_DefectDetactionConfig();
void CmdForwarding();
// Download machine file
void sw_DownloadMachineFile();

View File

@@ -165,6 +165,17 @@ static int log_trace(CURL* handle, curl_infotype type,
return 0;
}
// Domains that should bypass proxy and connect directly
// This helps when users have Shadowsocks/Clash/V2Ray proxy enabled
static const char* NOPROXY_DOMAINS =
"snapmaker.cn,"
"snapmaker.com,"
"*.snapmaker.cn,"
"*.snapmaker.com,"
"localhost,"
"127.0.0.1,"
"::1";
Http::priv::priv(const std::string &url)
: curl(::curl_easy_init())
, form(nullptr)
@@ -194,6 +205,11 @@ Http::priv::priv(const std::string &url)
::curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
::curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
// Bypass proxy for Snapmaker domains - this fixes issues when users have
// Shadowsocks/Clash/V2Ray or other proxy software enabled
// The domains in NOPROXY_DOMAINS will connect directly without going through proxy
::curl_easy_setopt(curl, CURLOPT_NOPROXY, NOPROXY_DOMAINS);
// https://everything.curl.dev/http/post/expect100.html
// remove the Expect: header, it will add a second delay to each request,
// if the file is uploaded in packets, it will cause the upload time to be longer