Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
150 changes: 75 additions & 75 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
"node": ">=24"
},
"dependencies": {
"@lakekeeper/console-components": "github:lakekeeper/console-components#v0.5.6",
"@lakekeeper/console-components": "github:lakekeeper/console-components#v0.5.7",
"@mdi/font": "7.4.47",
"json-bigint": "^1.0.0",
"oidc-client-ts": "^3.3.0",
Expand Down
21 changes: 17 additions & 4 deletions src/pages/bootstrap.vue
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
import { onBeforeMount, onUnmounted, onMounted, ref, computed, watch, nextTick } from 'vue';
import '@lakekeeper/console-components/style.css';
import EULA from '@/components/EULA.vue';
import { useUserStore, useVisualStore } from '@lakekeeper/console-components';
import { useUserStore, useVisualStore, LoQEEngine } from '@lakekeeper/console-components';
import router from '../router';
import { useFunctions } from '@lakekeeper/console-components';

Expand Down Expand Up @@ -150,11 +150,24 @@ onBeforeMount(async () => {
async function bootstrap() {
try {
await functions.bootstrapServer();
// Load projects after bootstrap to ensure visual store is updated
await functions.loadProjectList();
// A fresh bootstrap = a fresh server identity. Wipe every persisted
// Pinia store at this origin so state from a previous install
// (warehouses, projects, attached catalogs, navigation, notifications,
// etc.) doesn't leak into the new server. Keep the `user` key — it
// holds the access token used for the rest of this flow and the
// post-reload boot. OIDC's own state lives in sessionStorage and is
// unaffected.
for (let i = localStorage.length - 1; i >= 0; i--) {
const key = localStorage.key(i);
if (key && key !== 'user') localStorage.removeItem(key);
}
LoQEEngine.forceDestroy();
// Hard reload so Pinia rehydrates from the now-empty storage and
// every store starts from defaults. The bootstrap page's
// getServerInfo() will then route to '/'.
window.location.reload();
} catch (error) {
console.error('Error during bootstrap:', error);
} finally {
await getServerInfo();
}
}
Expand Down
Loading