Converts the Launcher Service + Agent from net8/win-x64 self-contained to net48 framework-dependent, and makes Tesla.Contract net48-only (drops multi-targeting). Both consumers (Console + Launcher) are now a single TFM. Code changes for net48 (the only net8/netstandard2.1 APIs in use): - RandomNumberGenerator.Fill -> RandomNumberGenerator.Create().GetBytes (3x) - TcpListener.AcceptTcpClientAsync(ct) -> AcceptTcpClientAsync() + stop-on-cancel - byte[].AsSpan().SequenceEqual -> Linq SequenceEqual (no System.Memory) (2x) - PipeStream.Write(byte[]) / WriteAsync(byte[],ct) -> explicit (buf,0,len[,ct]) - Math.Clamp -> Math.Max/Min The generic host (Microsoft.Extensions.Hosting 8.x + UseWindowsService) runs on net48 unchanged. build.bat/install.bat updated for the folder-of-DLLs deploy; solution platform reverted x64 -> AnyCPU. RESULT — package size: ~3.7 MB on disk / 1.58 MB zipped, vs ~213 MB / 91 MB for the net8 self-contained build (~50-58x smaller). net48 ships in Win10/11 so no runtime prerequisite. 73 tests green; NOT re-validated on a live pod. Spike branch for evaluation — do not merge without a pod re-test. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
TeslaSuite
The Tesla cockpit-pod software, in one repository:
| Folder | What it is | Target |
|---|---|---|
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/ |
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 inLauncher/LaunchModels_Shared.cs. They must match exactly. Consolidating this into a single multi-targetedTesla.Contractsource 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.exeis the reference baseline the differential tests compare against — keep it.Console/lib/*.dllare the proprietary binary dependencies the console still references (TeslaConsoleLaunchLib,TeslaSecureConfiguration,Munga Net,BitmapLibrary,WeifenLuodocking).Console/RedPlanet/Apps.xmlis the data-driven product catalog (see the console's Site Management → Add Product / Register Product on Pods).