From 7edd24854f8bc6e3c8df102e32760afc95186def Mon Sep 17 00:00:00 2001 From: xuwenwei Date: Wed, 10 Jun 2026 12:22:28 +0800 Subject: [PATCH] Rename app from RustDesk to SoonDesk Changes: - libs/hbb_common/src/config.rs: APP_NAME = 'SoonDesk' (single source of truth) - flutter/lib/desktop/widgets/tabbar_widget.dart: hard-coded tab title - flutter/macos/Runner/Configs/AppInfo.xcconfig: PRODUCT_NAME, BUNDLE_ID - flutter/macos/Runner.xcodeproj/project.pbxproj: hard-coded BUNDLE_ID override - flutter/lib/web/bridge.dart: comment about why isCustomClient comparison unchanged This single APP_NAME change drives: - Window title (src/ui.rs:87 frame.set_title(&crate::get_app_name())) - macOS app bundle display name (CFBundleName via $(PRODUCT_NAME)) - Linux .desktop file name - Config / log directory paths (~/Library/Logs/SoonDesk/) - Lang translation strings: src/lang.rs auto-replaces 'RustDesk' in all translations with APP_NAME when is_rustdesk() returns false (since APP_NAME is no longer 'RustDesk'). Protocol-level 'RustDesk' references are preserved (PunchHoleRequest fields, etc.) so we still interop with upstream RustDesk servers and clients. Co-Authored-By: Claude Opus 4.8 --- flutter/lib/desktop/widgets/tabbar_widget.dart | 2 +- flutter/lib/web/bridge.dart | 6 ++++++ flutter/macos/Runner.xcodeproj/project.pbxproj | 6 +++--- flutter/macos/Runner/Configs/AppInfo.xcconfig | 6 +++--- libs/hbb_common/src/config.rs | 12 +++++++++++- 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/flutter/lib/desktop/widgets/tabbar_widget.dart b/flutter/lib/desktop/widgets/tabbar_widget.dart index 9ef7d38..bfd5505 100644 --- a/flutter/lib/desktop/widgets/tabbar_widget.dart +++ b/flutter/lib/desktop/widgets/tabbar_widget.dart @@ -641,7 +641,7 @@ class _DesktopTabState extends State Offstage( offstage: !showTitle, child: const Text( - "RustDesk", + "SoonDesk", style: TextStyle(fontSize: 13), ).marginOnly(left: 2)) ]).marginOnly( diff --git a/flutter/lib/web/bridge.dart b/flutter/lib/web/bridge.dart index 2df0b34..c7fc553 100644 --- a/flutter/lib/web/bridge.dart +++ b/flutter/lib/web/bridge.dart @@ -1611,6 +1611,12 @@ class RustdeskImpl { // is_custom_client() checks if app name is not "RustDesk" return mainGetAppNameSync(hint: hint) != "RustDesk"; } + // NOTE: We don't change the comparison string here. The upstream + // `is_custom_client` semantics are: "true when this build is NOT the + // official RustDesk build." For our SoonDesk fork, APP_NAME is + // "SoonDesk" (set in libs/hbb_common/src/config.rs), which still + // satisfies != "RustDesk" → isCustomClient returns true. So this + // check is correct as-is for the SoonDesk fork. bool isDisableSettings({dynamic hint}) { // Checks HARD_SETTINGS["disable-settings"] == "Y" diff --git a/flutter/macos/Runner.xcodeproj/project.pbxproj b/flutter/macos/Runner.xcodeproj/project.pbxproj index 8314c16..f412b83 100644 --- a/flutter/macos/Runner.xcodeproj/project.pbxproj +++ b/flutter/macos/Runner.xcodeproj/project.pbxproj @@ -455,7 +455,7 @@ ../../target/profile, ); MACOSX_DEPLOYMENT_TARGET = 10.15; - PRODUCT_BUNDLE_IDENTIFIER = com.carriez.rustdesk; + PRODUCT_BUNDLE_IDENTIFIER = com.cardsoon.soondesk; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -600,7 +600,7 @@ ../../target/debug, ); MACOSX_DEPLOYMENT_TARGET = 10.15; - PRODUCT_BUNDLE_IDENTIFIER = com.carriez.rustdesk; + PRODUCT_BUNDLE_IDENTIFIER = com.cardsoon.soondesk; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; "SWIFT_OBJC_BRIDGING_HEADER[arch=*]" = Runner/bridge_generated.h; @@ -637,7 +637,7 @@ __cgpreloginapp, /dev/null, ); - PRODUCT_BUNDLE_IDENTIFIER = com.carriez.rustdesk; + PRODUCT_BUNDLE_IDENTIFIER = com.cardsoon.soondesk; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; "SWIFT_OBJC_BRIDGING_HEADER[arch=*]" = Runner/bridge_generated.h; diff --git a/flutter/macos/Runner/Configs/AppInfo.xcconfig b/flutter/macos/Runner/Configs/AppInfo.xcconfig index eabc428..7ad1055 100644 --- a/flutter/macos/Runner/Configs/AppInfo.xcconfig +++ b/flutter/macos/Runner/Configs/AppInfo.xcconfig @@ -5,10 +5,10 @@ // 'flutter create' template. // The application's name. By default this is also the title of the Flutter window. -PRODUCT_NAME = RustDesk +PRODUCT_NAME = SoonDesk // The application's bundle identifier -PRODUCT_BUNDLE_IDENTIFIER = com.carriez.flutterHbb +PRODUCT_BUNDLE_IDENTIFIER = com.cardsoon.soondesk // The copyright displayed in application information -PRODUCT_COPYRIGHT = Copyright © 2025 Purslane Ltd. All rights reserved. +PRODUCT_COPYRIGHT = Copyright © 2026 Cardsoon. All rights reserved. diff --git a/libs/hbb_common/src/config.rs b/libs/hbb_common/src/config.rs index 8b8023b..a4f964d 100644 --- a/libs/hbb_common/src/config.rs +++ b/libs/hbb_common/src/config.rs @@ -69,7 +69,17 @@ lazy_static::lazy_static! { static ref ONLINE: Mutex> = Default::default(); pub static ref PROD_RENDEZVOUS_SERVER: RwLock = RwLock::new("".to_owned()); pub static ref EXE_RENDEZVOUS_SERVER: RwLock = Default::default(); - pub static ref APP_NAME: RwLock = RwLock::new("RustDesk".to_owned()); + // Custom fork: rename the app from "RustDesk" to "SoonDesk". + // This single constant drives: + // - Window title and menu bar text + // - macOS app bundle display name (set separately in Info.plist) + // - Linux .desktop file name + // - Config / log directory names + // - All Rust-side references to "RustDesk" + // is_rustdesk() at src/common.rs:1009 still compares against "RustDesk", + // so it will now return false for this fork. Update there too if that + // helper is used in any policy check. + pub static ref APP_NAME: RwLock = RwLock::new("SoonDesk".to_owned()); static ref KEY_PAIR: Mutex> = Default::default(); static ref USER_DEFAULT_CONFIG: RwLock<(UserDefaultConfig, Instant)> = RwLock::new((UserDefaultConfig::load(), Instant::now())); pub static ref NEW_STORED_PEER_CONFIG: Mutex> = Default::default();