acdream/src
Erik ef567bfa20 fix(ui): morning gate — House tab renders retail's TWO houseless lines, not one
User finding 2 (retail screenshot, houseless character): the House tab
shows "You do not currently own a house." ABOVE "You may buy another
house immediately." — ours showed only the second line, and the prior
session had REFUTED the first line outright ("no such string exists
anywhere in the 2013 dump").

Re-derivation: the string exists in the binary at data_7ab688 — it is
gmHouseUI::DisplayBuyPayment @0x004a2b30's HOUSELESS branch. Two
compounding misreads hid it: (a) DisplayBuyPayment was mislabeled
houseless-silent, but its m_pHouseData gate only selects WHICH text
(jne 0x4a2b63) — the ListBox emit (@0x004a2b80 onward,
AddItemFromTemplateList + SetTextWithFont) runs in BOTH branches; and
(b) BN's pseudo-C renders both push-literal operands as spurious
&vftable.RecvNotice_* symbol matches (the TS-85/F3 artifact class), so
text sweeps of the dump find nothing — capstone byte-decode of the
PDB-paired binary resolves houseless @0x004a2b57 push 0x7ab688 =
"You do not currently own a house." and owned @0x004a2b63 push
0x7ab65c = "The purchase price for this dwelling is:\n" (+
HousePaymentList::ComposeText, still #413 item-3 scope). The morning
brief's alternate DAT-string-table hypothesis was checked and is NOT
the mechanism — plain exe string-pool literal.

RuntimeHouseState.Recompute now renders the houseless case as retail's
exact two lines in gmHouseUI::Update's fixed builder order
(DisplayBuyPayment first, DisplayPurchaseTimeText last); the owned case
is unchanged (its DisplayBuyPayment content needs ComposeText, #413
item 3). Class doc + ISSUES #413 corrected honestly — the user's retail
evidence supersedes the earlier refutation. Runtime house tests updated
to pin both lines; 9/9 pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 08:54:55 +02:00
..
AcDream.App fix(ui): morning gate — world tooltips ride retail's mouse-idle dwell, not the found edge 2026-08-17 08:49:11 +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 fix(ui): morning gate — House tab renders retail's TWO houseless lines, not one 2026-08-17 08:54:55 +02:00
AcDream.UI.Abstractions fix(ui): #409 tooltip review fix round — F1-F11 2026-08-16 20:54:15 +02:00