{"record":{"id":"8bdc0045833756b6","repo":"Zackriya-Solutions/meetily","slug":"could-not-find-system-data-directory-8bdc00","errorCode":null,"errorMessage":"Could not find system data directory","messagePattern":"Could not find system data directory","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"frontend/src-tauri/src/whisper_engine/whisper_engine.rs","lineNumber":121,"sourceCode":"                // Development mode - try frontend and backend directories\n                if current_dir.join(\"models\").exists() {\n                    current_dir.join(\"models\")\n                } else if current_dir.join(\"../models\").exists() {\n                    current_dir.join(\"../models\")\n                } else if current_dir.join(\"backend/whisper-server-package/models\").exists() {\n                    current_dir.join(\"backend/whisper-server-package/models\")\n                } else if current_dir.join(\"../backend/whisper-server-package/models\").exists() {\n                    current_dir.join(\"../backend/whisper-server-package/models\")\n                } else {\n                    // Create models directory in current directory for development\n                    current_dir.join(\"models\")\n                }\n            } else {\n                // Production mode fallback (shouldn't reach here, caller should provide path)\n                log::warn!(\"WhisperEngine: No models directory provided, using fallback path\");\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            }\n        };\n        \n        log::info!(\"WhisperEngine using models directory: {}\", models_dir.display());\n        log::info!(\"Debug mode: {}\", cfg!(debug_assertions));\n\n        // Log acceleration capabilities\n        let gpu_support = Self::detect_gpu_acceleration();\n        log::info!(\"Hardware acceleration support: {}\", if gpu_support { \"enabled\" } else { \"disabled\" });\n\n        #[cfg(feature = \"metal\")]\n        log::info!(\"Apple Metal GPU support: enabled\");\n\n        #[cfg(feature = \"openblas\")]\n        log::info!(\"OpenBLAS CPU optimization: enabled\");\n","sourceCodeStart":103,"sourceCodeEnd":139,"githubUrl":"https://github.com/Zackriya-Solutions/meetily/blob/0281737d87d26352fb0adc78c8c0975f691b23d1/frontend/src-tauri/src/whisper_engine/whisper_engine.rs#L103-L139","documentation":"Release-mode fallback when no models_dir was provided: the engine tries dirs::data_dir() and then dirs::home_dir() to build <data>/Meetily/models, and both returned None. The process cannot resolve any user data directory - typically no HOME on Unix and no XDG_DATA_HOME either.","triggerScenarios":"Constructing WhisperEngine in a release build with models_dir: None inside a stripped environment: a systemd unit, cron job, or container without HOME set, or a Windows service session where the known-folder/appdata resolution fails.","commonSituations":"Running the packaged binary from a service manager or Docker without HOME/XDG_DATA_HOME; CI smoke tests that launch the release build in a bare environment.","solutions":["Always pass models_dir explicitly (e.g. the Tauri app_data_dir) instead of relying on this fallback","Set HOME=/some/dir (or XDG_DATA_HOME) in the launching environment","Run the app in a normal user session rather than a bare service account"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"let models_dir = match provided_dir {\n    Some(d) => d,\n    None => std::env::var(\"HOME\").map(|h| PathBuf::from(h).join(\".local/share\"))\n        .or_else(|_| std::env::var(\"XDG_DATA_HOME\").map(PathBuf::from))\n        .map(|d| d.join(\"Meetily/models\"))\n        .ok_or_else(|| anyhow!(\"no data dir: pass models_dir or set HOME\"))?,\n};","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pass models_dir explicitly in every production code path; the fallback exists only for emergencies","When running under systemd/docker/cron, set HOME or XDG_DATA_HOME in the unit/spec","Fail fast at startup if neither an explicit dir nor HOME resolves, rather than deep in WhisperEngine::new"],"tags":["whisper","environment","home-dir","data-dir","config"],"backgroundTag":"missing-home-env-var","analyzedSha":"0281737d87d26352fb0adc78c8c0975f691b23d1","analyzedAt":"2026-08-16T20:57:52.567Z","schemaVersion":2},"datasetVersion":"2026-08-16T23:17:17.608Z"}