Commit Graph
5 Commits
Author SHA1 Message Date
CydandClaude Fable 5 e0a3c72370 Console: survive a launcher-dropped connection during product installs
The launcher drops RPC sessions idle >30s (easily hit while the operator sits
in the install dialogs), but a dropped socket still reports Connected until an
I/O fails. InstallProductWorker then skipped its reopen, streamed the archive
on the fresh out-of-band connection, and died on the first progress poll —
and the install-completed handler registered launch entries without checking
e.Error, so AddApp's disconnected-guard exception crashed the whole console.

- PodInfo.EnsureConnectionAlive: probe an "open" connection with a Ping and
  reconnect when it is dead; used by the install and uninstall workers.
- SiteManagement.PodInfo_InstallProductCompleted: register launch entries only
  on success, and surface registration failures as the row's Install Failed
  state instead of an unhandled exception.
- Regression test pins the premise + recovery against vPOD's launcher server
  (stale socket reports open, Ping exposes it, reconnect restores service).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 21:40:14 -05:00
CydandClaude Opus 4.8 a91d31913e Remove redundant "Push to selected pods now" checkbox from Add Product
Deployment intent is now implied by the install package field: if a package is
supplied the product is installed to the selected pods after being added; if not,
it is only added to the catalog. Removes the checkbox (dlgAddProduct) and the
push-decision branch (AddProduct_Click). The register-only-without-package path is
retired with it, so the now-dead RegisterProductOnSelectedPods is removed too.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 20:36:30 -05:00
CydandClaude Opus 4.8 7ae8c0dfb1 Remove "Register Product on Pods" from the Site Management context menu
Drops the standalone right-click submenu (and its handler + field). Installing a
product from the console still registers its launch entries on completion, and the
Add New Product dialog's "push now" path still uses RegisterProductOnSelectedPods,
which is retained.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 20:18:17 -05:00
CydandClaude Opus 4.8 4a61a9f8c3 Fix pod reconfigure timeout; add console installer + package
Reconfigure timeout (launcher reinstall of an already-configured pod):
- The console pings each configured pod and connects on success, on a loop, and
  never tore that down — so it kept hammering the pod's old IP with a stale
  connection while SecureConfig tried to bring the pod up on that address, which
  timed out. Only a console restart (closing all sockets) cleared it.
- DeletePod now Disconnect()s the pod's connection (closes the lingering socket)
  so delete-to-reconfigure works WITHOUT a console restart.
- Reconfiguring a known pod in place now pauses that pod's ping/connect loop
  (OperationInProgress) and drops its stale connection before SecureConfig, and
  resumes on completion (success or failure) so it reconnects with the new key.
  (StopPing kills the ping thread irreversibly, so pause via OperationInProgress.)
  Note: PodInfo's static mPods registry is dead code (nothing registers), so the
  real fix is the disconnect, not an unregister.

Console deployment:
- Console/install.bat: installs the console to C:\Program Files\TeslaConsole,
  preps the %ProgramData%\Tesla Console data dir (Users: modify), creates a Start
  Menu shortcut, and adds a per-program inbound firewall rule so it can receive
  pod discovery beacons. net48 is in-box, no runtime install.
- Console/build-package.bat: publishes the console (net48 framework-dependent) to
  dist\TeslaConsole\App and assembles the package with install.bat.

74 tests green; the pod-config fix is UI/network behavior, validate on a pod.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 19:26:28 -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