From 0fbdf0ef1b7618ccdafe529fbb137d17b7028a8a Mon Sep 17 00:00:00 2001 From: bruno Date: Sun, 26 Jul 2026 21:04:30 -0400 Subject: [PATCH] =?UTF-8?q?feat:=20config=20vaults=20par=20d=C3=A9faut=20a?= =?UTF-8?q?u=20premier=20lancement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Détecte config.vaults vide → premier lancement - Crée %USERPROFILE%\voute_obsidian\ automatiquement - Ajoute deux vaults: 'Dossier' (%USERPROFILE%) et 'Obsidian' (voute_obsidian) - vault_path = USERPROFILE pour le sélecteur de dossier --- desktop/src/main.rs | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/desktop/src/main.rs b/desktop/src/main.rs index d3cdd42..c48d542 100644 --- a/desktop/src/main.rs +++ b/desktop/src/main.rs @@ -388,7 +388,37 @@ fn main() { info!("Exe dir: {}", exe_dir.display()); // Load config for window state - let config = load_config(); + let mut config = load_config(); + + // First run: create default vault config + if config.vaults.is_empty() { + info!("First run — creating default vault configuration"); + let userprofile = std::env::var("USERPROFILE").unwrap_or_else(|_| "C:\\Users\\Default".to_string()); + let vault_dir = std::path::PathBuf::from(&userprofile).join("voute_obsidian"); + + // Create the vault directory if it doesn't exist + if !vault_dir.exists() { + if let Err(e) = fs::create_dir_all(&vault_dir) { + error!("Failed to create default vault dir {}: {}", vault_dir.display(), e); + } else { + info!("Created default vault dir: {}", vault_dir.display()); + } + } + + config.vaults = vec![ + VaultConfig { + name: "Dossier".to_string(), + path: userprofile.clone(), + }, + VaultConfig { + name: "Obsidian".to_string(), + path: vault_dir.to_string_lossy().to_string(), + }, + ]; + config.vault_path = Some(userprofile); + save_config(&config); + info!("Default vault config saved"); + } // Spawn Python backend let backend = match spawn_backend(&exe_dir) {