diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 7e56c06..f44528f 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -85,7 +85,7 @@ use downloader::{cancel_download, download_browser}; use settings_manager::{ decline_launch_on_login, dismiss_window_resize_warning, enable_launch_on_login, get_app_settings, - get_sync_settings, get_system_language, get_table_sorting_settings, + get_sync_settings, get_system_info, get_system_language, get_table_sorting_settings, get_window_resize_warning_dismissed, save_app_settings, save_sync_settings, save_table_sorting_settings, should_show_launch_on_login_prompt, }; @@ -1816,6 +1816,7 @@ pub fn run() { get_table_sorting_settings, save_table_sorting_settings, get_system_language, + get_system_info, dismiss_window_resize_warning, get_window_resize_warning_dismissed, clear_all_version_cache_and_refetch, diff --git a/src-tauri/src/settings_manager.rs b/src-tauri/src/settings_manager.rs index d107a06..459ea43 100644 --- a/src-tauri/src/settings_manager.rs +++ b/src-tauri/src/settings_manager.rs @@ -945,6 +945,40 @@ pub fn get_system_language() -> String { .unwrap_or_else(|| "en".to_string()) } +#[derive(Debug, Serialize, Clone)] +pub struct SystemInfo { + pub app_version: String, + pub os: String, + pub arch: String, +} + +#[tauri::command] +pub fn get_system_info() -> SystemInfo { + let os = if cfg!(target_os = "macos") { + "macOS" + } else if cfg!(target_os = "windows") { + "Windows" + } else if cfg!(target_os = "linux") { + "Linux" + } else { + "Unknown" + }; + + let arch = if cfg!(target_arch = "x86_64") { + "x86_64" + } else if cfg!(target_arch = "aarch64") { + "aarch64" + } else { + "unknown" + }; + + SystemInfo { + app_version: crate::app_auto_updater::AppAutoUpdater::get_current_version(), + os: os.to_string(), + arch: arch.to_string(), + } +} + // Global singleton instance lazy_static::lazy_static! { static ref SETTINGS_MANAGER: SettingsManager = SettingsManager::new(); diff --git a/src/components/settings-dialog.tsx b/src/components/settings-dialog.tsx index 02c7512..8281304 100644 --- a/src/components/settings-dialog.tsx +++ b/src/components/settings-dialog.tsx @@ -124,6 +124,11 @@ export function SettingsDialog({ const [e2ePasswordConfirm, setE2ePasswordConfirm] = useState(""); const [e2eError, setE2eError] = useState(""); const [isSavingE2e, setIsSavingE2e] = useState(false); + const [systemInfo, setSystemInfo] = useState<{ + app_version: string; + os: string; + arch: string; + } | null>(null); const { t } = useTranslation(); const { setTheme } = useTheme(); @@ -226,6 +231,17 @@ export function SettingsDialog({ } catch { setHasE2ePassword(false); } + // Load system info + try { + const info = await invoke<{ + app_version: string; + os: string; + arch: string; + }>("get_system_info"); + setSystemInfo(info); + } catch { + setSystemInfo(null); + } } catch (error) { console.error("Failed to load settings:", error); } finally { @@ -1088,6 +1104,15 @@ export function SettingsDialog({ version information for all browsers.

+ + {/* System Info */} + {systemInfo && ( +
+

+ {`Donut Browser ${systemInfo.app_version}\n${systemInfo.os} ${systemInfo.arch}`} +

+
+ )}