acdream/docs
Erik 89626cd400 feat(D.2b): vitals numbers as UiText (widget-generalization Task 8)
The vitals cur/max numbers now render through the generic UiText widget — retail
gmVitalsUI uses UIElement_Text for them, not a meter-internal label. VitalsController
attaches a centered, non-interactive UiText child to each meter and stops the meter
drawing its own label (UiMeter.Label -> null). New UiText.Centered draws the first line
centered H+V with the SAME formula UiMeter's overlay used, so the numbers are
pixel-identical — user-confirmed in the live client.

This completes the D.2b widget-generalization pass: every chat + vitals widget is now
built generically and registered to its retail Type (Button/Field*/Menu/Meter/Scrollbar/
Text), with thin find-by-id controllers. (*Field is controller-placed; Type 3 stays
UiDatElement for chrome.)

Divergence register: AP-37 vitals-numbers-via-UiMeter.Label clause retired. Full suite:
404 passed, 2 skipped, 0 failed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 18:52:42 +02:00
..
architecture feat(D.2b): vitals numbers as UiText (widget-generalization Task 8) 2026-06-16 18:52:42 +02:00
audit docs: update audit — Sprint 1 items verified (sequence counters + scenery LCG) 2026-04-13 13:51:39 +02:00
plans feat(D.2b): cut GameWindow over to the data-driven chat window 2026-06-15 23:15:04 +02:00
research docs(D.2b): chat-window re-drive session handoff (Plan 2 chat piece) 2026-06-15 19:07:05 +02:00
superpowers docs(D.2b): spec correction — input is Variant B, Type 3 not registered 2026-06-16 17:54:52 +02:00
bugs.md docs: update bugs.md — close BUG-002/003/004, add BUG-005/006/007 2026-04-14 12:17:31 +02:00
ISSUES.md docs: wrap-up — file #137 (dungeon collision) + #138 (teleport-out world loading); close #135/#136 2026-06-14 21:08:40 +02:00