- InstallProduct now extracts into the real C:\Games (the launcher's
GAMES_DIR) so deployed products land where their catalog launch entries
point; uninstall removes the real product folder. Tests pass an isolated
games root through the VirtualLauncher ctor.
- New "Actually launch apps (real processes)" toggle (off by default =
simulated PIDs): LaunchApp starts the entry's exe exactly like the Agent
(same start info, same registered-but-not-installed error), Kill*/
Uninstall/Wipe terminate the real processes (kill before folder delete),
and self-exited apps are pruned from GetLaunchedApps/FullUpdate. Real
processes die with the machine: power off, reboot, or closing vPOD. The
Agent's autoRestart watchdog is deliberately not emulated.
- Pod Power and Mimicking Game groups swapped (game left, power right).
- Provisioning round-trip test now skips as inconclusive when a running
TeslaConsole holds UDP 53291 instead of failing the suite; two new tests
cover real launch/kill (ping.exe) and the missing-exe error path.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
vPOD now also impersonates the pod's TeslaLauncher service, so the console's
Manage Site works against it unmodified:
- LauncherRpcServer: ILauncherService over OFB + framed JSON on TCP 53290,
mirroring TeslaLauncherService (concurrent sessions, out-of-band install
zip on a second connection, the 99%-not-100 completion convention).
Packages extract to %LocalAppData%\vPOD\Games; postinstall.bat is logged
but never executed.
- PodProvisioning: pod side of SecureConfig (RQST beacon, RPLY decrypt, RSA
session-key exchange), display-only — never touches the NIC/registry. The
console's Configure flow mints the key exactly as for a real pod; console
Reconfigure (ClearStore) drops the key and re-enters beacon mode.
- VirtualLauncher: installed-app registry (persisted), simulated launch PIDs,
volume, install progress; console Shutdown/Restart power-cycles the pod.
- Form gets a Launcher/Site Management column (passcode display, RPC status,
install progress, app list, Reprovision); Power Off darkens the launcher
side too; new -nomanage flag disables it.
vPOD references the shared Tesla.Contract/Tesla.SecureConfig projects (server
side of the existing contract only, no new RPCs). Loopback tests drive the
real PodManagerConnection and PodConfigurationServer against the new code
(VPodLauncherServerTests, VPodProvisioningTests) — suite now 99 green.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>