refactor(ui): extract retained runtime composition

This commit is contained in:
Erik 2026-07-11 00:03:45 +02:00
parent 5d9e98c118
commit ff06aa3107
7 changed files with 727 additions and 605 deletions

View file

@ -109,3 +109,14 @@ subscriptions, then disposes the manager/controllers, then the GL text renderer.
`GameWindow.OnClosing` disposes layout persistence and `UiHost` before live session
or game-state sources. This ordering is the recreate/relogin double-subscription
guard; do not reintroduce anonymous lifetime-bound event lambdas.
## 2026-07-11 composition boundary
`RetailUiRuntime` now owns production retained composition. Its focused binding
records receive state/action delegates plus DAT/font/sprite resolvers;
`GameWindow.OnLoad` retains only resolver/service creation and one declarative
`RetailUiRuntime.Mount` call. All LayoutDesc imports, controller construction,
window mounts, toolbar digit and inventory-cell asset lookup, plugin mounts,
cursor feedback, persistence, automation, and retained tick/draw/restore/dispose
paths live behind the runtime. The live Debug gate passed across two graceful
restart cycles. Do not add panel mount bodies back to `GameWindow`.