The Launcher's XP11 port (8730b9b) now extends to everything: one net40
flavor across Console, vPOD, Contract, and SecureConfig (Newtonsoft.Json
everywhere; the net48/System.Text.Json legs and their #if splits are gone
since nothing consumed them).
Console (net40, single TFM like the Launcher):
- The ~31 BinaryFormatter bitmap blobs in the .resx files became raw
embedded files under assets/icons/ (extracted byte-faithfully via a
serialization surrogate — the animated square_throbber.gif survives),
loaded by Properties.Resources.EmbeddedBitmap/EmbeddedIcon. Reason:
System.Resources.Extensions' DeserializingResourceReader is net461+
and cannot load on net40. Strings stay in the .resx.
- IReadOnlyList -> IList in AppRegistry (net45+ interface).
vPOD (net40, single TFM):
- Zip extraction now shares the Launcher's MiniZip.cs (linked source), so
the diff-test install round-trip exercises it against ZipArchive zips.
- RPC args as JTokens; LaunchApps.json persistence via Newtonsoft;
Thread.VolatileRead instead of Volatile.Read.
Contract/SecureConfig: net40-only; Client/** (PodManagerConnection) now
ships in the one build. The Launcher package gains
TeslaSecureConfiguration.dll as a dependency of the client half.
Tests: the net48 xunit host loads the net40 assemblies (both CLR4), so
the suite exercises exactly what ships — 106/106 green. Also verified
live: net40 console provisioned, managed, and ran a full RP mission
against net40 vPOD (beacon/passphrase/RSA, 53290 RPC, egg load,
Run/Stop Mission).
Version: 4.11.4.3 across Launcher, Console, and vPOD (vPOD joins the
suite version line; was 1.0.0). Ship the dotNetFx40 redistributable in
Launcher/assets for XP-era pods.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
59 lines
2.6 KiB
Markdown
59 lines
2.6 KiB
Markdown
---
|
|
name: verify
|
|
description: Drive the TeslaConsole WinForms app against vPOD to verify console changes end-to-end on this machine.
|
|
---
|
|
|
|
# Verifying console changes against vPOD
|
|
|
|
Build (Debug is what the exes below point at):
|
|
|
|
```
|
|
dotnet build Console/TeslaConsole.csproj
|
|
dotnet build vPOD/vPOD.csproj
|
|
```
|
|
|
|
Launch both (the machine's `C:\ProgramData\Tesla Console\local.siteconfig`
|
|
already has squad `bay1` with a provisioned `vPOD` pod at 127.0.0.1; vPOD's
|
|
session key persists in `%LocalAppData%\vPOD\TeslaKeyStore.key`):
|
|
|
|
```
|
|
Start-Process vPOD\bin\Debug\net40\vPOD.exe -ArgumentList "-app","bt" # or rp
|
|
Start-Process Console\bin\Debug\net40\TeslaConsole.exe
|
|
```
|
|
|
|
(net40 since the XP11 port — both exes run on the machine's 4.8 runtime.)
|
|
|
|
Drive the UI with System.Windows.Automation (UIA) — WinForms exposes
|
|
menus, buttons, checkboxes, and DataGridView rows/cells as real UIA elements:
|
|
|
|
- Menus: ExpandCollapsePattern on "Games", InvokePattern on the item.
|
|
- Pilots grid cells are named like `Enabled Row 1`, `Pilot Row 1`; real mouse
|
|
clicks at the cell's BoundingRectangle center behave exactly like a user
|
|
(needed for CellEndEdit paths — programmatic value sets bypass them).
|
|
Click another cell afterwards to commit a checkbox cell edit.
|
|
- Type into a grid cell: click it, then `[System.Windows.Forms.SendKeys]::SendWait()`.
|
|
- The WeifenLuo dock tabs are NOT UIA TabItems; switch documents with
|
|
Ctrl+Tab sent to the focused window.
|
|
- Screenshots: Graphics.CopyFromScreen of the element's BoundingRectangle
|
|
(coordinates are physical pixels; fine to pass straight to SetCursorPos).
|
|
|
|
Observe behavior:
|
|
|
|
- Game connection endpoint: `Get-NetTCPConnection -OwningProcess <consolePid>
|
|
-RemotePort 1501`. vPOD binds 0.0.0.0:1501, so any 127.x.x.x target lands on
|
|
it — distinguish targets by the netstat RemoteAddress, not by whether vPOD
|
|
answered.
|
|
- Mission content: vPOD's Current Egg pane shows the decoded egg (player IPs,
|
|
pilots, map) after clicking Load; its protocol log timestamps connects,
|
|
disconnects, and state transitions.
|
|
- Full lifecycle: enable a pod row + pilot name → Load → Run Mission → Stop
|
|
Mission. With the watchdog checkbox on, vPOD drops the connection after a
|
|
mission ends and comes back in WaitingForEgg — an observed reconnect there
|
|
is normal.
|
|
|
|
Gotchas: enabling a pod row only requests the connection once the cell edit
|
|
commits. A helper script with these UIA primitives from a previous session:
|
|
scratchpad `uia.ps1` (Get-Window / Find-ByName / Click-Elem / Screenshot) —
|
|
recreate from this recipe if gone. Close both apps when done
|
|
(`CloseMainWindow`, then Stop-Process stragglers).
|