{"record":{"id":"7488b899c104dad5","repo":"Zackriya-Solutions/meetily","slug":"failed-to-get-current-directory","errorCode":null,"errorMessage":"Failed to get current directory: {}","messagePattern":"Failed to get current directory: (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"frontend/src-tauri/src/parakeet_engine/parakeet_engine.rs","lineNumber":132,"sourceCode":"pub struct ParakeetEngine {\n    models_dir: PathBuf,\n    current_model: Arc<RwLock<Option<ParakeetModel>>>,\n    current_model_name: Arc<RwLock<Option<String>>>,\n    pub(crate) available_models: Arc<RwLock<HashMap<String, ModelInfo>>>,\n    cancel_download_flag: Arc<RwLock<Option<String>>>, // Model name being cancelled\n    // Active downloads tracking to prevent concurrent downloads\n    pub(crate) active_downloads: Arc<RwLock<HashSet<String>>>, // Set of models currently being downloaded\n}\n\nimpl ParakeetEngine {\n    /// Create a new Parakeet engine with optional custom models directory\n    pub fn new_with_models_dir(models_dir: Option<PathBuf>) -> Result<Self> {\n        let models_dir = if let Some(dir) = models_dir {\n            dir.join(\"parakeet\") // Parakeet models in subdirectory\n        } else {\n            // Fallback to default location\n            let current_dir = std::env::current_dir()\n                .map_err(|e| anyhow!(\"Failed to get current directory: {}\", e))?;\n\n            if cfg!(debug_assertions) {\n                // Development mode\n                current_dir.join(\"models\").join(\"parakeet\")\n            } else {\n                // Production mode\n                dirs::data_dir()\n                    .or_else(|| dirs::home_dir())\n                    .ok_or_else(|| anyhow!(\"Could not find system data directory\"))?\n                    .join(\"Meetily\")\n                    .join(\"models\")\n                    .join(\"parakeet\")\n            }\n        };\n\n        log::info!(\"ParakeetEngine using models directory: {}\", models_dir.display());\n\n        // Create directory if it doesn't exist","sourceCodeStart":114,"sourceCodeEnd":150,"githubUrl":"https://github.com/Zackriya-Solutions/meetily/blob/0281737d87d26352fb0adc78c8c0975f691b23d1/frontend/src-tauri/src/parakeet_engine/parakeet_engine.rs#L114-L150","documentation":"std::env::current_dir() failed while resolving the development-mode models directory (cwd/models/parakeet) in ParakeetEngine::new_with_models_dir. getcwd fails when the process's working directory has been deleted or is no longer readable - the OS cannot report it.","triggerScenarios":"Launching a debug build from a directory that is later deleted (temp dirs, some script launchers), or running under a service whose cwd no longer exists at the time the engine is constructed.","commonSituations":"cargo run from a since-removed checkout path; tooling that cds into a temp dir and removes it; long-lived dev processes after a clean script wiped the folder.","solutions":["Relaunch the dev build from an existing directory","Pass an explicit models_dir (from Tauri's app_data_dir) so the engine never depends on cwd","Anchor the dev path on the executable or manifest dir instead of current_dir()"],"exampleFix":"// before\nlet current_dir = std::env::current_dir()\n    .map_err(|e| anyhow!(\"Failed to get current directory: {e}\"))?;\ncurrent_dir.join(\"models\").join(\"parakeet\")\n\n// after - anchor on the executable; immune to deleted/changed cwd\nlet base = std::env::current_exe()\n    .ok()\n    .and_then(|p| p.parent().map(Path::to_path_buf))\n    .ok_or_else(|| anyhow!(\"Could not resolve executable directory\"))?;\nbase.join(\"models\").join(\"parakeet\")","handlingStrategy":"validation","validationCode":"// Never depend on cwd: resolve the models dir from the app handle\nlet models_dir = app.path().app_data_dir()\n    .map_err(|e| anyhow!(\"app data dir: {e}\"))?\n    .join(\"models\");\nlet engine = ParakeetEngine::new_with_models_dir(Some(models_dir))?;","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pass an explicit models_dir in all builds","If a filesystem-relative anchor is required, use current_exe() instead of current_dir()","Restart dev runs from an existing checkout directory"],"tags":["filesystem","environment","models","parakeet","dev-mode"],"backgroundTag":"working-directory-unavailable","analyzedSha":"0281737d87d26352fb0adc78c8c0975f691b23d1","analyzedAt":"2026-08-16T20:57:52.567Z","schemaVersion":2},"datasetVersion":"2026-08-16T23:17:17.608Z"}