From 8602f1779b6425c2805f6fbb212a1baed7abb354 Mon Sep 17 00:00:00 2001 From: Vantz Stockwell Date: Wed, 18 Mar 2026 02:35:08 -0400 Subject: [PATCH] debug: add file-based startup log to diagnose silent crash Writes to %APPDATA%\Wraith\wraith-startup.log since release builds suppress all console output via windows_subsystem. Co-Authored-By: Claude Opus 4.6 (1M context) --- src-tauri/src/lib.rs | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 806bbc0..91d5b26 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -104,9 +104,30 @@ pub fn data_directory() -> PathBuf { #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { + // Debug log to file — release builds hide console output via windows_subsystem = "windows" + let log_path = data_directory().join("wraith-startup.log"); + let _ = std::fs::create_dir_all(data_directory()); + let log = |msg: &str| { + use std::io::Write; + if let Ok(mut f) = std::fs::OpenOptions::new().create(true).append(true).open(&log_path) { + let _ = writeln!(f, "{}", msg); + } + }; + + log("=== Wraith starting ==="); let data_dir = data_directory(); - let app_state = AppState::new(data_dir) - .expect("Failed to initialize application state"); + log(&format!("Data dir: {:?}", data_dir)); + + let app_state = match AppState::new(data_dir) { + Ok(state) => { + log("AppState initialized OK"); + state + } + Err(e) => { + log(&format!("FATAL: AppState init failed: {}", e)); + return; + } + }; // Seed built-in themes (INSERT OR IGNORE — safe to call on every boot). app_state.theme.seed_builtins(); @@ -125,6 +146,8 @@ pub fn run() { } } + log("Building Tauri app..."); + tauri::Builder::default() .plugin(tauri_plugin_shell::init()) .plugin(tauri_plugin_updater::Builder::new().build()) @@ -172,5 +195,7 @@ pub fn run() { commands::theme_commands::get_theme, ]) .run(tauri::generate_context!()) - .expect("error while running tauri application"); + .unwrap_or_else(|e| { + log(&format!("FATAL: Tauri run failed: {}", e)); + }); }