acdream/tests/AcDream.Launcher.Tests
Erik 18bbd37779 feat(launcher): LU8 — logging in IS the character refresh; put Play above the fold
Two things the user hit while gating LU7.

1. "Refresh characters" disconnected the session they were playing. It opened a
   SECOND connection to the same account purely to read the roster, which the
   server treats as a new login — so refreshing while logged in kicked them
   out. It was also redundant the whole time: every ordinary login already
   carries the roster in the host's own status stream, and the orchestrator
   already folds it into the profiles (ApplyRosterLocked runs for play sessions,
   not just probes). Removed, along with "Add cached character", which existed
   to paper over a roster the launcher can now always obtain by itself. The
   account page says what happens instead: characters appear after you log in.

   ProbeAsync stays in Core — headless bots and the CLI use it, and it has its
   own tests. What is gone is offering it to a player as a button whose only
   effect they could observe was being disconnected.

   AnOrdinaryLoginFoldsTheReportedRosterIntoTheStore pins the replacement,
   including that it persists so the tree is still populated after a restart.

2. "There is no headless or gui option" under a selected character. The buttons
   were there — below the fold. The character page led with a plugins/login-
   commands form whose two 96px text boxes pushed the Launch card past the
   bottom of the scroll area, so the primary action was invisible unless you
   scrolled. Launch now comes first and the settings form sits under it. A
   player should never have to scroll to find Play.

Full solution 14,374 passed, 0 failed under the release-gate filter.

Not pushed — the user is testing locally first.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 20:48:15 +02:00
..
AcDream.Launcher.Tests.csproj test: serialize Launcher.Tests via an assembly attribute, not xunit.runner.json 2026-08-19 14:06:24 +02:00
LauncherProjectBoundaryTests.cs ci: Gitea pipeline — gate on both self-hosted runners, publish alpha releases 2026-08-19 10:35:36 +02:00
LauncherSessionRowViewModelTests.cs feat(launcher): LU5/LU6 — one Play button per character, and sessions say who is playing 2026-08-19 18:54:37 +02:00
LauncherStartupOptionsTests.cs fix(launcher): harden Campaign LA11 gate evidence 2026-08-15 01:08:41 +02:00
LauncherUpdateCompositionTests.cs test(launcher): Campaign LA — headless MainWindow view tests close #399 2026-08-15 07:54:49 +02:00
LauncherUpdateViewModelTests.cs feat(launcher): LU2/LU3 — one update question at startup, and it restarts itself 2026-08-19 18:49:19 +02:00
LauncherWindowViewModelTests.cs feat(launcher): LU8 — logging in IS the character refresh; put Play above the fold 2026-08-19 20:48:15 +02:00
MainWindowViewTests.cs feat(launcher): LU2/LU3 — one update question at startup, and it restarts itself 2026-08-19 18:49:19 +02:00
packages.neutral.lock.json build: make release restore reproducible 2026-08-18 10:29:00 +02:00
TestAppBuilder.cs test: serialize Launcher.Tests via an assembly attribute, not xunit.runner.json 2026-08-19 14:06:24 +02:00