# 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 faithful decompiled reconstruction of the original `TeslaConsole.exe`, with a differential test suite that pins it to the original baseline. | .NET Framework 4.8 |
| [`Launcher/`](Launcher/) | **TeslaLauncher** — the pod-side Service (Session 0 RPC listener) + Agent (user-session app launcher). A clean .NET 6 rewrite of the original launcher. | .NET 6 (windows, x86) |

The console and the launcher talk over TCP 53290 using an OFB-encrypted
BinaryFormatter RPC. They share a wire contract (`Tesla.Net` types +
`ILauncherService`/`IPodManagerConnection` signatures) that **must stay byte-for-byte
compatible**.

> ⚠️ **Known duplication (intentional, for now):** that shared contract currently
> lives in two places — the console consumes it as the compiled
> `Console/lib/TeslaConsoleLaunchLib.dll`, and the launcher hand-replicates the same
> types in `Launcher/LaunchModels_Shared.cs`. They must match exactly. Consolidating
> this into a single multi-targeted `Tesla.Contract` source project is the main
> follow-up this monorepo is meant to enable.

## Building

Each side has its own toolchain; the combined solution builds both:

```
dotnet build TeslaSuite.sln -c Release
```

Or individually:

```
dotnet build Console/TeslaConsole.csproj -c Release          # the console
dotnet test  Console/tests/TeslaConsole.DiffTests            # differential + catalog tests
dotnet build Launcher/TeslaLauncher.sln -c Release           # service + agent
```

The launcher also has its original `Launcher/build.bat` / `Launcher/install.bat`
for producing and deploying the self-contained pod build.

## Layout notes

- `Console/original/TeslaConsole.exe` is the reference baseline the differential
  tests compare against — keep it.
- `Console/lib/*.dll` are the proprietary binary dependencies the console still
  references (`TeslaConsoleLaunchLib`, `TeslaSecureConfiguration`, `Munga Net`,
  `BitmapLibrary`, `WeifenLuo` docking).
- `Console/RedPlanet/Apps.xml` is the data-driven product catalog (see the console's
  Site Management → Add Product / Register Product on Pods).
