diff --git a/build/bin/verstak-desktop b/build/bin/verstak-desktop index 50a4b8b..2474682 100755 Binary files a/build/bin/verstak-desktop and b/build/bin/verstak-desktop differ diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte index dc0ba03..6d1c264 100644 --- a/frontend/src/App.svelte +++ b/frontend/src/App.svelte @@ -33,9 +33,14 @@ vaultStatus = { status: 'open', path: '', vaultId: '' }; } + function onNav(e) { + currentView = e.detail.viewId; + } + // Listen for vault-opened event from VaultSelection if (typeof window !== 'undefined') { window.addEventListener('verstak:vault-opened', onVaultOpened); + window.addEventListener('verstak:nav', onNav); } checkVault(); @@ -62,6 +67,19 @@ {/if} diff --git a/frontend/src/lib/shell/VaultSelection.svelte b/frontend/src/lib/shell/VaultSelection.svelte index 21e9071..36cd03d 100644 --- a/frontend/src/lib/shell/VaultSelection.svelte +++ b/frontend/src/lib/shell/VaultSelection.svelte @@ -16,7 +16,8 @@ appSettings = await App.GetAppSettings() || {}; recentVaults = appSettings.recentVaults || []; } catch (e) { - error = 'Failed to load app settings: ' + String(e); + // App settings might fail if backend not ready — show selection anyway + console.error('[VaultSelection] load settings:', e); } loading = false; }); @@ -29,21 +30,27 @@ } creating = true; try { - // Create the vault + // Step 1: Create the vault directory + metadata const createErr = await App.CreateVault(newVaultPath.trim()); if (createErr) { error = 'Create vault: ' + createErr; creating = false; return; } - // Open it and save to app settings - const setErr = await App.SetCurrentVault(newVaultPath.trim()); - if (setErr) { - error = 'Set current vault: ' + setErr; + // Step 2: Open it (registers capabilities, loads plugin state) + const openErr = await App.OpenVault(newVaultPath.trim()); + if (openErr) { + error = 'Open vault: ' + openErr; creating = false; return; } - // Success — dispatch event for app to transition + // Step 3: Save to app settings (set current + add to recent) + const setErr = await App.SetCurrentVault(newVaultPath.trim()); + if (setErr) { + // Vault is open but settings save failed — still proceed + console.warn('[VaultSelection] SetCurrentVault:', setErr); + } + // Success — notify app to transition to main UI window.dispatchEvent(new CustomEvent('verstak:vault-opened')); } catch (e) { error = String(e); @@ -59,12 +66,18 @@ } opening = true; try { - const setErr = await App.SetCurrentVault(openVaultPath.trim()); - if (setErr) { - error = setErr; + // Step 1: Open the vault + const openErr = await App.OpenVault(openVaultPath.trim()); + if (openErr) { + error = 'Open vault: ' + openErr; opening = false; return; } + // Step 2: Save to app settings + const setErr = await App.SetCurrentVault(openVaultPath.trim()); + if (setErr) { + console.warn('[VaultSelection] SetCurrentVault:', setErr); + } window.dispatchEvent(new CustomEvent('verstak:vault-opened')); } catch (e) { error = String(e); @@ -76,12 +89,16 @@ error = ''; opening = true; try { - const setErr = await App.SetCurrentVault(path); - if (setErr) { - error = setErr; + const openErr = await App.OpenVault(path); + if (openErr) { + error = 'Open vault: ' + openErr; opening = false; return; } + const setErr = await App.SetCurrentVault(path); + if (setErr) { + console.warn('[VaultSelection] SetCurrentVault:', setErr); + } window.dispatchEvent(new CustomEvent('verstak:vault-opened')); } catch (e) { error = String(e); @@ -90,6 +107,13 @@ } +{#if loading} +
Loading...
+