From 60893172c3eae9bf406043a60a1426ea3e7946e7 Mon Sep 17 00:00:00 2001 From: Cyd Date: Fri, 10 Jul 2026 09:47:48 -0500 Subject: [PATCH] vPOD: Reprovision also wipes the installed-apps store The UI's Reprovision button only dropped the session key; the console-driven ClearStore was the only path that cleared LaunchApps.json. Both now share VirtualLauncher.WipeApps, so Reprovision = fresh pod (key + app registry gone, beacon mode; extracted Games\ files stay, as on a real pod). Co-Authored-By: Claude Fable 5 --- Console/vPOD/README.md | 10 ++++++---- Console/vPOD/VPodForm.cs | 7 +++++-- Console/vPOD/VirtualLauncher.cs | 11 +++++++++-- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/Console/vPOD/README.md b/Console/vPOD/README.md index 0fb409e..90fd0eb 100644 --- a/Console/vPOD/README.md +++ b/Console/vPOD/README.md @@ -87,10 +87,12 @@ assigned network config is shown in the window but never applied): and starts the launcher RPC. The pod row goes healthy (`Idle [ ms]`). The key persists in `%LocalAppData%\vPOD\TeslaKeyStore.key` (launcher format), -so provisioning is one-time. **Reprovision** drops the key and returns to -beacon mode — pair it with deleting the pod in Manage Site (the console's -**Reconfigure…** does both ends automatically: its `ClearStore` makes vPOD -drop the key and beacon again). +so provisioning is one-time. **Reprovision** resets to a fresh pod — drops the +key, clears the installed-apps store (`LaunchApps.json`) and returns to beacon +mode — pair it with deleting the pod in Manage Site (the console's +**Reconfigure…** does both ends automatically: its `ClearStore` makes vPOD do +the same wipe and beacon again). Extracted packages under `Games\` are left on +disk either way. ### Product deployments diff --git a/Console/vPOD/VPodForm.cs b/Console/vPOD/VPodForm.cs index 3485589..14e3fe7 100644 --- a/Console/vPOD/VPodForm.cs +++ b/Console/vPOD/VPodForm.cs @@ -632,10 +632,13 @@ internal sealed class VPodForm : Form mRpcStatusLabel.ForeColor = Color.Gray; } - /// Drops the session key and re-enters provisioning — from the UI - /// button, or when the console's Reconfigure clears our store. + /// Drops the session key, clears the installed-apps store and + /// re-enters provisioning — from the UI button, or when the console's + /// Reconfigure clears our store. (Fresh-pod state; extracted Games\ files + /// are left on disk.) private void DropKeyAndReprovision() { + mLauncher.WipeApps(); mLauncher.DeleteKey(); mRpcServer.Stop(); mProvisioning.Stop(); diff --git a/Console/vPOD/VirtualLauncher.cs b/Console/vPOD/VirtualLauncher.cs index 7df9171..9a5992e 100644 --- a/Console/vPOD/VirtualLauncher.cs +++ b/Console/vPOD/VirtualLauncher.cs @@ -300,6 +300,15 @@ internal sealed class VirtualLauncher /// so re-entering provisioning (beacon mode) is what makes Reconfigure completable /// without the real pod's reboot-with-DHCP step. public void ClearStore() + { + WipeApps(); + Log?.Invoke("ClearStore: installed apps wiped; dropping session key to re-enter provisioning."); + ReprovisionRequested?.Invoke(); + } + + /// Clears the installed/launched app registries (LaunchApps.json) — + /// the store-wipe half of ClearStore, also used by the UI's Reprovision. + public void WipeApps() { lock (mLock) { @@ -307,9 +316,7 @@ internal sealed class VirtualLauncher mLaunchedApps.Clear(); SaveApps(); } - Log?.Invoke("ClearStore: installed apps wiped; dropping session key to re-enter provisioning."); AppsChanged?.Invoke(); - ReprovisionRequested?.Invoke(); } // ---- install progress (InitiateInstallProduct / GetOutOfBandProgress) ----