acdream/src
Erik 2bc81480d4 feat(ui): AD-109 — arm the login wormhole at the char-select Enter click
USER-DIRECTED deviation from retail (register row AD-109, same commit):
retail presents the empty pre-player gameplay screen — black behind the
retained UI — from the Enter click (CPlayerSystem::LogOnCharacter
@0x0055F890 -> CM_Login::SendNotice_BeginEnterWorld @0x006AD810, UI mode
0x10000008) until CreatePlayer raises SmartBox::teleport_in_progress
@0x00451C20 and gmSmartBoxUI::UseTime @0x004D6EAB begins TAS_TUNNEL. The
user prefers the tunnel to cover that whole wait.

- ILocalPlayerTeleportNetworkSink.ArmLoginTunnel: begins the login
  wormhole presentation at the Enter click, consuming the sequencer's
  begin-edge events SYNCHRONOUSLY (the Enter command blocks the update
  thread for the whole ServerReady round trip, so a deferred first tick
  would leave exactly the black window this deviation removes). The
  enter cue plays at the click: retail's own rule is cue-at-animation-
  begin (Sound_UI_EnterPortal @0x004D638E, unconditional inside
  BeginTeleportAnimation), and the animation begin moved to the click.
- Armed pre-reveal pump: tunnel animates across the round trip
  (worldReady pinned false, sequencer holds in Tunnel); the hold clock
  accumulates from the click.
- Adoption: the Runtime login reveal ADOPTS the running presentation
  (no re-Begin, no second cue); rejected EnterWorld (lifecycle back to
  AwaitingSelection) disarms and retires the tunnel.
- Wired at the ONE host edge every entry route shares:
  ILiveSessionLifecycleHost.ApplySelectedCharacter (direct connect,
  roster Enter, enter-after-create) via
  LiveSessionSelectionBindings.ArmLoginTunnel (default no-op keeps
  headless and every existing construction site unchanged).
- ILocalPlayerLoginLifecycleSource: typed seam (not a stored delegate —
  the frame-phase owner delegate-field guard) projecting the Runtime
  character-selection lifecycle for the disarm edge.
- Frame contract update: [login-frames] over a login is tunnel -> world
  from the click — no void, and no black between click and world.

Tests: 4 new armed-tunnel tests (arm/adopt/disarm/frame-shape); App
suite live-DAT 5516 passed / 3 skipped (baseline 5512/3 + 4 new).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 13:42:30 +02:00
..
AcDream.App feat(ui): AD-109 — arm the login wormhole at the char-select Enter click 2026-08-17 13:42:30 +02:00
AcDream.Bake fix(launcher): guard orphan bake publication 2026-08-14 21:02:27 +02:00
AcDream.Cli perf(diag): complete trustworthy Slice A capture tooling 2026-07-24 12:46:51 +02:00
AcDream.Content fix(chargen): Campaign CC gate round 1 closeout — Group 2: Skills page four-bucket model 2026-08-16 15:33:39 +02:00
AcDream.Core feat(ui): inventory/shortcut/paperdoll item-name tooltips — UIElement_UIItem::UpdateTooltip port 2026-08-16 23:02:10 +02:00
AcDream.Core.Net feat(ui): House tab ownership text — DisplayPurchaseTimeText + RuntimeHouseState 2026-08-17 03:38:16 +02:00
AcDream.Headless fix(ui): night-round review — F2 HouseQuery fires at login, not tab-open 2026-08-17 04:28:46 +02:00
AcDream.Launcher fix(launcher): Campaign LA gate-round-1 review findings F1-F6 + hardening 2026-08-15 08:19:23 +02:00
AcDream.Launcher.Core fix(chargen): Campaign CC gate round 1 closeout — Group 3: round review fixes (F4-F11, F14, F16) 2026-08-16 15:34:07 +02:00
AcDream.Platform fix(launcher): guard orphan bake publication 2026-08-14 21:02:27 +02:00
AcDream.Plugin.Abstractions fix(plugins): close LA5 host lifecycle review 2026-08-14 19:05:13 +02:00
AcDream.Plugins.Smoke feat(app): wire IGameState+IEvents into Program and SmokePlugin 2026-04-10 20:31:50 +02:00
AcDream.Runtime feat(ui): AD-109 — arm the login wormhole at the char-select Enter click 2026-08-17 13:42:30 +02:00
AcDream.UI.Abstractions fix(ui): #409 tooltip review fix round — F1-F11 2026-08-16 20:54:15 +02:00