Commit Graph
7 Commits
Author SHA1 Message Date
CydandClaude Fable 5 8730b9b966 XP11: single net40 binary runs on XP SP3 through Windows 11
Merge TeslaLauncherService (Session 0) + TeslaLauncherAgent (tray) into one
userland TeslaLauncher.exe. The split existed only to work around Vista+
Session 0 isolation; running everything in the auto-logged-in admin session
needs no service, no named pipe, and no flat<->wire conversion layer. The
original Elsewhen software was likewise a single binary.

net40 is the newest framework XP SP3 can install, and net40 assemblies load
in-place on the 4.8 runtime in Win10/11 -- one exe covers both.

- Contract: multi-target net48;net40. The net40 leg of PodRpcProtocol uses
  Newtonsoft.Json (STJ has no net40 target); JSON is shape-identical on the
  wire, and the request reader keeps date strings raw so Ping echoes
  byte-identically. Console keeps the untouched net48/STJ leg.
- MiniZip.cs: central-directory ZIP extractor (stored/deflate/ZIP64) since
  net40 has no ZipFile; zip-slip guarded.
- SecureConfig: RSACryptoServiceProvider instead of RSA.Create (net46+),
  no leaveOpen BinaryWriter/Reader, struct instead of ValueTuple, and no
  SetCompatibleTextRenderingDefault on the passcode thread (the merged app
  already has a form). netsh "interface ip" syntax was already XP-correct.
- Volume: nircmd -> CoreAudio (Vista+) -> winmm waveOutSetVolume (XP).
- Paths: CommonApplicationData resolved per-OS (XP has no C:\ProgramData);
  launcher log moved next to the key/config in the data dir.
- install.bat: dual-OS (cacls/icacls, netsh firewall/advfirewall, dism and
  UAC/notification steps skipped on XP, .NET 4.0 redist check, XP DHCP reset
  via netsh); no service registration -- HKLM Run key + auto-login on both;
  RegisterApplicationRestart supplies crash-restart on Vista+.
- Bench switches: /skipconfig, /port:NNNN.

Verified: Console + diff suite (103 tests) still green on the net48 leg;
E2E smoke test drove the net40 launcher over real TCP with the Console's own
PodManagerConnection (STJ client vs Newtonsoft server) -- Ping echo, volume,
app registry, launch/kill/watch, InstallProduct zip transfer + extract, and
uninstall orphan cleanup: 17/17 pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 18:59:06 -05:00
CydandClaude Opus 4.8 0431c6840b install.bat: join Tesla workgroup + enable SMB1 client and server
- Join a site-wide workgroup (WORKGROUP=Tesla) at install time so every pod
  shares one browse list for the mw4files / c shares.
- Enable SMB1 server as well as client: the pod hosts those shares and Win10/11
  ship the SMB1-Server sub-feature off by default, so old SMB1 clients couldn't
  reach them. Now enables SMB1Protocol + -Client + -Server.
- Refresh the stale asset-layout comment in the header.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 08:57:18 -05:00
CydandClaude Opus 4.8 3637f5c6b1 install.bat: silent UltraVNC server install via custom Inno answer file
Install the UltraVNC server component with the service tasks selected up front
(SetupType=custom, Components=ultravnc_server, Tasks=installservice,startservice)
and run the setup with start /wait + /loadinf so the pod comes up with the VNC
service registered and started for remote diagnostics.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 00:20:33 -05:00
CydandClaude Opus 4.8 6268bb3df7 install.bat: disable all notifications machine-wide + add game-data shares
- Notifications: replace per-user HKCU tweaks (which only hit the admin running
  the installer) with machine-wide HKLM Group Policy keys so they apply to the
  auto-login kiosk account — no toasts, lock-screen notifications, cloud toasts,
  tips/Spotlight/consumer content, or Defender health alerts.
- Shares (closed network): create C:\mw4files and share it as \host\mw4files,
  and share C:\ as \host\c, both granted to Everyone. Idempotent (delete-then-
  create); C:\mw4files also gets Everyone modify on NTFS so the grant is usable.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 22:53:02 -05:00
CydandClaude Opus 4.8 7852bc59ea Package DirectX/OpenAL/UltraVNC redists with launcher; auto-login + v4.11.4.1
- assets/: replace old reference dumps with the three redist folders the
  installer actually consumes (dx9201006/, openal/, UltraVNC/).
- build.bat: mirror each redist folder into the package root so install.bat's
  %ROOT%\dx9201006, %ROOT%\openal, %ROOT%\UltraVNC paths resolve; bump header
  to v4.11.4.1.
- install.bat: bump header to v4.11.4.1; write Winlogon auto-login regedits
  for the Firestorm kiosk account (was manual instructions); fix UltraVNC
  setup exe filename typo (UltraVNC_Setup_x64 -> UltraVNC_x64_Setup).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 22:10:51 -05:00
CydandClaude Opus 4.8 1e2ec12f11 Spike: net48-only launcher (evaluate size vs net8 self-contained)
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>
2026-06-30 11:46:00 -05:00
CydandClaude Opus 4.8 548550b312 Initial commit: TeslaSuite monorepo (TeslaConsole + TeslaLauncher)
Co-locate the two cockpit-pod projects into a single repository:

- Console/  : TeslaConsole, the net48 WinForms operator console (decompiled
              reconstruction) plus its differential + catalog test suite.
- Launcher/ : TeslaLauncher, the net6 pod-side Service + Agent rewrite.

Adds a combined TeslaSuite.sln, root README documenting the shared wire
contract (and its current duplication, the main follow-up), and a root
.gitignore. Histories were not preserved per request; this is a fresh start
from the current working state of both projects.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 14:43:28 -05:00