diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 61e87d1..e633c4f 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -134,9 +134,10 @@ pub fn run() { let log_file = data_directory().join("wraith.log"); let _ = write_log(&log_file, "Setup: starting MCP and error watcher"); - if let Ok(state) = std::panic::catch_unwind(std::panic::AssertUnwindSafe(|| { + match std::panic::catch_unwind(std::panic::AssertUnwindSafe(|| { app.state::().inner().clone_services() })) { + Ok(state) => { let (ssh, rdp, sftp, scrollback, watcher) = state; let _ = write_log(&log_file, "Setup: cloned services OK"); @@ -151,8 +152,17 @@ pub fn run() { Err(e) => { let _ = write_log(&log_file2, &format!("MCP server FAILED: {}", e)); } } }); - } else { - let _ = write_log(&log_file, "MCP startup panicked — continuing without MCP"); + } + Err(panic) => { + let msg = if let Some(s) = panic.downcast_ref::() { + s.clone() + } else if let Some(s) = panic.downcast_ref::<&str>() { + s.to_string() + } else { + format!("{:?}", panic.type_id()) + }; + let _ = write_log(&log_file, &format!("MCP startup panicked: {}", msg)); + } } }