From 8ba428b6a418ba49793087d1c22aef98d1815a6d Mon Sep 17 00:00:00 2001 From: Cyd Date: Sat, 11 Jul 2026 21:07:56 -0500 Subject: [PATCH] README: catch up with the XP11 net40 suite All targets are net40 now (one binary set for XP SP3 through Win11), the launcher is a single userland app rather than Service+Agent, the wire is Newtonsoft JSON, the launcher package bundles the pod redists (incl. the .NET 4.0 installer), and releases live on Gitea (latest v4.11.4.3). Co-Authored-By: Claude Fable 5 --- README.md | 46 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 79e226c..735b180 100644 --- a/README.md +++ b/README.md @@ -4,14 +4,21 @@ The Tesla cockpit-pod software, in one repository: | Folder | What it is | Target | |--------|------------|--------| -| [`Console/`](Console/) | **TeslaConsole** — the operator console (WinForms) that configures and drives the pods. A decompiled reconstruction of the original `TeslaConsole.exe` (now the modernized 4.11.4.x line), with a differential test suite pinning it to the original 4.11.3.37076 baseline. | .NET Framework 4.8 | -| [`Launcher/`](Launcher/) | **TeslaLauncher** — the pod-side Service (Session 0 RPC listener) + Agent (user-session app launcher). A clean rewrite of the original launcher. | .NET Framework 4.8 | -| [`Contract/`](Contract/) | **Tesla.Contract** — the shared Console↔Launcher RPC contract: wire types, the client, and the framed-JSON protocol. Emits assembly `TeslaConsoleLaunchLib`. | .NET Framework 4.8 | -| [`SecureConfig/`](SecureConfig/) | **Tesla.SecureConfig** — the first-boot pod provisioning protocol (UDP beacons, OFB crypto, RSA key exchange). Emits assembly `TeslaSecureConfiguration`. | .NET Framework 4.8 | -| [`vPOD/`](vPOD/) | **vPOD** — a virtual pod for testing the consoles without cockpit hardware: impersonates both the game client (Munga, TCP 1501) and the pod's TeslaLauncher service (provisioning + Site Management / Install Product on TCP 53290). | .NET Framework 4.8 | +| [`Console/`](Console/) | **TeslaConsole** — the operator console (WinForms) that configures and drives the pods. A decompiled reconstruction of the original `TeslaConsole.exe` (now the modernized 4.11.4.x line), with a differential test suite pinning it to the original 4.11.3.37076 baseline. | .NET Framework 4.0 | +| [`Launcher/`](Launcher/) | **TeslaLauncher** — the pod-side launcher: ONE userland tray app (RPC listener + app launcher). A clean rewrite of the original; the old Service+Agent split (a Session 0 workaround) is gone. | .NET Framework 4.0 | +| [`Contract/`](Contract/) | **Tesla.Contract** — the shared Console↔Launcher RPC contract: wire types, the client, and the framed-JSON protocol. Emits assembly `TeslaConsoleLaunchLib`. | .NET Framework 4.0 | +| [`SecureConfig/`](SecureConfig/) | **Tesla.SecureConfig** — the first-boot pod provisioning protocol (UDP beacons, OFB crypto, RSA key exchange). Emits assembly `TeslaSecureConfiguration`. | .NET Framework 4.0 | +| [`vPOD/`](vPOD/) | **vPOD** — a virtual pod for testing the consoles without cockpit hardware: impersonates both the game client (Munga, TCP 1501) and the pod's TeslaLauncher (provisioning + Site Management / Install Product on TCP 53290). | .NET Framework 4.0 | -The console and launcher talk over **TCP 53290** using **length-prefixed -`System.Text.Json` frames over an OFB-encrypted stream** ([`Contract/PodRpcProtocol.cs`](Contract/PodRpcProtocol.cs)), +Everything targets **net40** on purpose (the XP11 port, v4.11.4.3): it is the newest +.NET Framework that installs on Windows XP SP3, and net40 assemblies run in-place on +the 4.8 runtime that ships in Windows 10/11 — so the same binaries cover the original +XP-era cockpit PCs and modern hardware. That rules out net45+ APIs +(`System.Text.Json`, `ZipFile`, async/await, ...); JSON is Newtonsoft, zip extraction +is the launcher's own [`MiniZip.cs`](Launcher/MiniZip.cs). + +The console and launcher talk over **TCP 53290** using **length-prefixed JSON +frames over an OFB-encrypted stream** ([`Contract/PodRpcProtocol.cs`](Contract/PodRpcProtocol.cs)), dispatched by method name. The wire contract lives in one source project ([`Contract/`](Contract/)) referenced by both sides — a single source of truth, no duplication or hand-syncing. @@ -28,15 +35,21 @@ dotnet test Console/tests/TeslaConsole.DiffTests # differential + protocol ``` **Pod deployment:** [`Launcher/build.bat`](Launcher/build.bat) publishes the -framework-dependent net48 package into `Launcher/dist/` (~1.6 MB zipped — no runtime to -install, since .NET Framework 4.8 ships in Windows 10/11), and -[`Launcher/install.bat`](Launcher/install.bat) deploys it on a cockpit PC (registers the -Service, sets up the Agent for auto-login, hardens the box). The operator console packages +framework-dependent net40 package into `Launcher/dist/` — the launcher itself is tiny, +but the package bundles the pod redists (DirectX June 2010, OpenAL, UltraVNC, and +`dotNetFx40_Full_x86_x64.exe` for XP-era pods that don't have .NET 4.0 yet). +[`Launcher/install.bat`](Launcher/install.bat) deploys it on a cockpit PC — dual-OS +(XP SP3 and Win10/11 code paths): auto-login, Run-key registration for the single +launcher binary, firewall + box hardening. The operator console packages the same way: [`Console/build-package.bat`](Console/build-package.bat) → `Console/dist/`, installed with [`Console/install.bat`](Console/install.bat). vPOD packages with [`vPOD/pack.ps1`](vPOD/pack.ps1) → `vPOD/dist/vPOD.zip`, deployable to a pod via the console's Install Product (or run directly on any machine). +Release packages for all three are attached to the +[Gitea releases](https://gitea.mysticmachines.com/VWE/TeslaSuite/releases) +(latest: **v4.11.4.3**). + ## Layout notes - `Console/original/TeslaConsole.exe` — the **4.11.3.37076** reference baseline the @@ -53,6 +66,11 @@ console's Install Product (or run directly on any machine). The system was modernized in 2026: the duplicated wire contract was extracted to a single source project, `BinaryFormatter` (an RCE sink, and what pinned the launcher to an old runtime) was replaced with the framed-JSON protocol, and the launcher was rebuilt — briefly -on net8/x64, then settled on net48 to match the console and ship a tiny, runtime-free -package. The whole console↔pod path (provisioning, install, launch) is validated on real -pods. +on net8/x64, then on net48, then (the **XP11** port, v4.11.4.3) the whole suite settled on +**net40** so one set of binaries runs on the original Windows XP SP3 cockpit hardware and +on Windows 10/11 alike. XP11 also merged the launcher's Service+Agent pair — a workaround +for Vista+ Session 0 isolation that XP never needed — back into a single userland app, and +moved the console's `.resx` BinaryFormatter bitmaps to raw embedded images (their runtime +reader doesn't exist on net40). The whole console↔pod path (provisioning, install, launch) +is validated on real pods; the net40 build is bench-validated on Win11's 4.8 runtime (real +XP SP3 hardware still pending).