Remove auto-start: launcher owns the app lifecycle

The TeslaConsole launcher starts and stops RIOJoy, so the app no longer
registers any auto-start entry:
- install-rio.ps1: drop the HKLM ...\Run registration and the post-install
  launch (and the -NoLaunch param).
- Tray: remove the "Start with Windows" menu item and delete AutoStartManager
  (HKCU ...\Run writer).
- AppConfig: drop the now-inert AutoStart field (+ test).
- Docs (PLAN.md, README-DEPLOY.txt) updated to reflect launcher-managed start/stop.

uninstall-rio.ps1 still clears any leftover Run entry from older auto-starting
builds. Solution builds; 241 tests pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-06-30 14:36:32 -05:00
co-authored by Claude Opus 4.8
parent 0a4b3e3c25
commit b275892451
8 changed files with 31 additions and 75 deletions
+6 -5
View File
@@ -51,7 +51,8 @@ cockpit's outputs on their behalf.
language features that net48 lacks are supplied by the PolySharp source
generator + a few NuGet shims; see `src/RioJoy.Core/Compat/`.) Driver is C
(WDK), separate toolchain.
- **Form:** background **tray app** (NotifyIcon), auto-start with Windows.
- **Form:** background **tray app** (NotifyIcon); start/stop managed by the
TeslaConsole launcher (no logon auto-start).
- **Targets:** Windows 10/11 **x64 only**. The legacy x86 / WinXP targets are
dropped.
@@ -198,10 +199,10 @@ Core logic in `src/RioJoy.Core/Profiles` + `RioRuntime`; UI/OS in `src/RioJoy.Tr
commands → calibration resets + serial requests + lamp re-init. End-to-end tested
over the fake transport.
- Tray: `NotifyIcon` menu mirroring the legacy console menu (axis resets,
version/status, diagnostic toggles, quit) + profile selection (auto vs. manual)
+ "start with Windows"; `RioCoordinator` owns the serial acquire/release tied to
the watcher (native-game COM-port yield); OS adapters
(`ForegroundProcessProvider`, `AutoStartManager`).
version/status, diagnostic toggles, quit) + profile selection (auto vs. manual);
`RioCoordinator` owns the serial acquire/release tied to the watcher (native-game
COM-port yield); OS adapters (`ForegroundProcessProvider`). The app's start/stop
lifecycle is owned by the TeslaConsole launcher (no logon auto-start).
- Joystick output now uses the real `HidFeederJoystickSink` when the driver is
present (verified end-to-end); `NullJoystickSink` remains only as the
no-driver fallback.