- Launcher/build.bat now outputs to dist\TeslaLauncher\ (was TeslaLauncher\ at the Launcher root) and produces dist\TeslaLauncher-podpkg.zip, matching Console\dist\. - Both build scripts now zip the package themselves (Compress-Archive) instead of leaving it as a manual step: Console/build-package.bat -> dist\TeslaConsole-pkg.zip. - Launcher/.gitignore: ignore /dist/ (drop the obsolete /TeslaLauncher/ + staging entries); Console already ignores /dist/. - READMEs updated to point at dist\. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
56 lines
3.4 KiB
Markdown
56 lines
3.4 KiB
Markdown
# TeslaSuite
|
|
|
|
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 |
|
|
|
|
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)),
|
|
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.
|
|
|
|
> **Note:** Red Planet game *control* uses a separate protocol (Munga, TCP 1501) via the
|
|
> vendored `Munga Net.dll` — not the RPC channel above. The game itself is C++ and lives
|
|
> in its own repo (`gitea.mysticmachines.com/VWE/RP411.git`).
|
|
|
|
## Building
|
|
|
|
```
|
|
dotnet build TeslaSuite.sln -c Release
|
|
dotnet test Console/tests/TeslaConsole.DiffTests # differential + protocol + crypto guards
|
|
```
|
|
|
|
**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
|
|
the same way: [`Console/build-package.bat`](Console/build-package.bat) → `Console/dist/`,
|
|
installed with [`Console/install.bat`](Console/install.bat).
|
|
|
|
## Layout notes
|
|
|
|
- `Console/original/TeslaConsole.exe` — the **4.11.3.37076** reference baseline the
|
|
differential tests compare against. Keep it.
|
|
- `Console/lib/*.dll` — the remaining vendored binary dependencies (`Munga Net`,
|
|
`BitmapLibrary`, `WeifenLuo` docking). The original `TeslaConsoleLaunchLib.dll` and
|
|
`TeslaSecureConfiguration.dll` are also kept here, but **only as byte-compatibility test
|
|
baselines** — both are now built from source (`Contract/`, `SecureConfig/`).
|
|
- `Console/RedPlanet/Apps.xml` — the data-driven product catalog (see the console's
|
|
Site Management → Add Product / Register Product on Pods).
|
|
|
|
## History
|
|
|
|
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.
|