feat(ui): unify retained window mounts

This commit is contained in:
Erik 2026-07-10 22:22:25 +02:00
parent 6e9e10367f
commit a8e9503d2e
20 changed files with 823 additions and 366 deletions

View file

@ -241,17 +241,21 @@ text; full suite green; user visual gate.
### 2.2 Use one mount path for every production window
- [ ] Extend `RetailWindowFrame.Mount` to return a handle and accept exact resize,
- [x] Extend `RetailWindowFrame.Mount` to return a handle and accept exact resize,
chrome, opacity, visibility and constraint policy.
- [ ] Support both imported roots that already own retail chrome and shared
- [x] Support both imported roots that already own retail chrome and shared
nine-slice wrappers, with independent X/Y resize policy, so migrations cannot
double-frame or double-inset content.
- [ ] Migrate vitals, chat, toolbar, inventory, radar, character, and Studio one at
- [x] Migrate vitals, chat, toolbar, inventory, radar, character, and Studio one at
a time. Delete all inline `UiNineSlicePanel` mount recipes from `GameWindow` and
`MockupDesktop`.
- [ ] Make chat maximize operate on its handle's outer frame and import retail
- [x] Make chat maximize operate on its handle's outer frame and import retail
min/max attributes and button states; remove hardcoded `320f`.
- [ ] Correct chat scrollbar art from the actual inherited DAT roles, not literals.
- [x] Correct chat scrollbar art from the actual inherited DAT roles, not literals.
**Acceptance (2026-07-10):** full suite green (4,538 passed, 5 skipped); live
Debug gate passed for shared chrome, resize/collapse, lock/raise, chat maximize,
scrollbar buttons, track/thumb dragging, wheel scrolling, and bottom-pin behavior.
### 2.3 Persist the complete UI layout