diff --git a/backend/app_controller.py b/backend/app_controller.py index 5213de3..c856e7a 100644 --- a/backend/app_controller.py +++ b/backend/app_controller.py @@ -577,12 +577,18 @@ class AppController: if self.config.get('server_sync.enabled', False): self._start_server_sync() - # Check if model/device changed + # Check if model/device/remote mode changed -- any of these require + # a full engine reload since they change which engine class is used new_model = self.config.get('transcription.model', 'base.en') new_device = self.config.get('transcription.device', 'auto') + new_remote_mode = self.config.get('remote.mode', 'local') + current_remote_mode = 'local' + if self.transcription_engine: + current_remote_mode = getattr(self.transcription_engine, 'mode', 'local') engine_reload_needed = ( self.current_model_size != new_model or self.current_device_config != new_device + or current_remote_mode != new_remote_mode ) if engine_reload_needed: diff --git a/src-tauri/src/sidecar/mod.rs b/src-tauri/src/sidecar/mod.rs index 0630498..9f8291c 100644 --- a/src-tauri/src/sidecar/mod.rs +++ b/src-tauri/src/sidecar/mod.rs @@ -554,18 +554,27 @@ impl SidecarManager { // -- private helpers ------------------------------------------------------- fn build_dev_command(&self) -> Result { - let mut cmd = std::process::Command::new("python"); - cmd.args(["-u", "-m", "backend.main_headless"]); // -u = unbuffered + // Use `uv run` to ensure we use the project's venv, not system Python + let mut cmd = std::process::Command::new("uv"); + cmd.args(["run", "python", "-u", "-m", "backend.main_headless"]); - // Try to find the project root (parent of src-tauri) - if let Some(dirs) = DIRS.get() { - let project_root = dirs - .resource_dir - .parent() // src-tauri - .and_then(|p| p.parent()); // project root - if let Some(root) = project_root { - cmd.current_dir(root); - } + // Find the project root: try CARGO_MANIFEST_DIR first (set at compile time), + // then fall back to resource_dir parent chain + let manifest_dir = option_env!("CARGO_MANIFEST_DIR").map(std::path::PathBuf::from); + let project_root = manifest_dir + .as_ref() + .and_then(|d| d.parent()) // src-tauri -> project root + .or_else(|| { + DIRS.get() + .and_then(|d| d.resource_dir.parent()) + .and_then(|p| p.parent()) + }); + + if let Some(root) = project_root { + eprintln!("[sidecar] Dev mode: working dir = {}", root.display()); + cmd.current_dir(root); + } else { + eprintln!("[sidecar] Dev mode: WARNING - could not determine project root"); } cmd.env("PYTHONUNBUFFERED", "1");