diff --git a/core/archipelago/src/main.rs b/core/archipelago/src/main.rs index b1d2135f..b7e49c66 100644 --- a/core/archipelago/src/main.rs +++ b/core/archipelago/src/main.rs @@ -104,8 +104,11 @@ async fn main() -> Result<()> { // Signal to health monitor that boot recovery is done crash_recovery::mark_recovery_complete(); - // Reconcile containers against canonical specs (fixes config drift) - crash_recovery::run_boot_reconciliation().await; + // Boot reconciliation disabled — the reconciler creates ALL containers + // from specs, which is wrong on unbundled installs where only user-chosen + // apps should exist. The health monitor handles restarting existing + // containers. Run reconcile-containers.sh manually when needed. + // crash_recovery::run_boot_reconciliation().await; }); } diff --git a/neode-ui/src/components/BootScreen.vue b/neode-ui/src/components/BootScreen.vue index 9187dc92..3968eb72 100644 --- a/neode-ui/src/components/BootScreen.vue +++ b/neode-ui/src/components/BootScreen.vue @@ -79,8 +79,6 @@ const glitching = ref(false) const iconSources = [ '/assets/icon/bitcoin.svg', '/assets/icon/cloud-done.svg', - '/assets/icon/github.svg', - '/assets/icon/save.svg', ] interface LogLine { prefix: string; text: string; type: string } diff --git a/neode-ui/src/stores/server.ts b/neode-ui/src/stores/server.ts index ca046939..9b93fa83 100644 --- a/neode-ui/src/stores/server.ts +++ b/neode-ui/src/stores/server.ts @@ -9,8 +9,9 @@ import type { InstallProgress } from '../views/marketplace/marketplaceData' export const useServerStore = defineStore('server', () => { const sync = useSyncStore() - // Global install tracking — persists across navigation + // Global install/uninstall tracking — persists across navigation const installingApps = ref>(new Map()) + const uninstallingApps = ref>(new Set()) function setInstallProgress(appId: string, progress: Partial & { id: string; title: string }) { const existing = installingApps.value.get(appId) @@ -94,11 +95,12 @@ export const useServerStore = defineStore('server', () => { isShuttingDown, isOffline, - // Install tracking (global, persists across navigation) + // Install/uninstall tracking (global, persists across navigation) installingApps, setInstallProgress, clearInstallProgress, isInstalling, + uninstallingApps, // Actions installPackage, diff --git a/neode-ui/src/views/Apps.vue b/neode-ui/src/views/Apps.vue index c3a07529..060f3bac 100644 --- a/neode-ui/src/views/Apps.vue +++ b/neode-ui/src/views/Apps.vue @@ -111,7 +111,7 @@ :is-loading="!!actions.loadingActions.value[id as string]" :is-installing="serverStore.isInstalling(id as string)" :install-progress="serverStore.installingApps.get(id as string)" - :is-uninstalling="actions.uninstallingApps.value.has(id as string)" + :is-uninstalling="actions.uninstallingApps.has(id as string)" @go-to-app="goToApp" @launch="launchApp" @start="actions.startApp" diff --git a/neode-ui/src/views/OnboardingSeedGenerate.vue b/neode-ui/src/views/OnboardingSeedGenerate.vue index 8be4fdbd..28f898a4 100644 --- a/neode-ui/src/views/OnboardingSeedGenerate.vue +++ b/neode-ui/src/views/OnboardingSeedGenerate.vue @@ -1,5 +1,5 @@