wraith/src/App.vue
Vantz Stockwell 2848d79915 feat: Phase 1 complete — Tauri v2 foundation
Rust backend: SQLite (WAL mode, 8 tables), vault encryption
(Argon2id + AES-256-GCM), settings/connections/credentials
services, 19 Tauri command wrappers. 46/46 tests passing.

Vue 3 frontend: unlock/create vault flow, Pinia app store,
Tailwind CSS v4 dark theme with Wraith branding.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 15:09:41 -04:00

36 lines
909 B
Vue

<script setup lang="ts">
import { onMounted } from "vue";
import { useAppStore } from "@/stores/app.store";
import UnlockLayout from "@/layouts/UnlockLayout.vue";
// MainLayout is the full app shell — lazy-load it so the unlock screen is
// instant and the heavy editor/terminal code only lands after auth.
import { defineAsyncComponent } from "vue";
const MainLayout = defineAsyncComponent(
() => import("@/layouts/MainLayout.vue")
);
const app = useAppStore();
onMounted(async () => {
await app.checkVaultState();
});
</script>
<template>
<div class="app-root">
<!-- Show the unlock/create-vault screen until the store confirms we're in -->
<UnlockLayout v-if="!app.isUnlocked" />
<!-- Once unlocked, mount the full application shell -->
<MainLayout v-else />
</div>
</template>
<style scoped>
.app-root {
height: 100%;
display: flex;
flex-direction: column;
}
</style>