acdream/tests
Erik 5190e16915 fix(chargen): Campaign CC gate round 1 Batch C — un-consume media-bearing children
Commit 2/3: CLIENT-WIDE blast radius — un-consume media-bearing dat
children on UiText/UiField.

UiText.ConsumesDatChildren (true unless a state authors PassToChildren)
and UiField.ConsumesDatChildren (true, unconditional) used to drop
EVERY dat child at import time, including ones that carry their own
renderable media — retail's UIElement_Text/Field genuinely composites
those as real chrome/controls (frame pieces, linked scrollbars), not
swallowed caption/face art the way a Button's or Meter's children are.

LayoutImporter.BuildWidget gains a new carve-out (mirroring the
existing UiMeter one): when a UiText/UiField's ConsumesDatChildren is
true, build any child whose OWN StateMedia is non-empty (it carries a
real sprite/track) instead of dropping it outright. Purely structural/
property-only children (StateMedia.Count == 0) stay dropped exactly as
before — this is additive, not a relaxation of the PassToChildren gate.

Independently re-derived blast-radius sweep (walks every installed
LayoutDesc via DatCollection.GetAllIdsOfType<LayoutDesc>, new
LayoutImporterMediaBearingChildSweepTests): 37 distinct (layout,
element) pairs — 41 raw tree positions, since a handful of element ids
recur at multiple subtree positions within the same layout — across 15
layouts. Full list:

  0x21000005/0x10000011 (x5 tree positions — chat-adjacent template
    reused across the layout), 0x21000005/0x1000059A [MAIN GAME UI],
  0x21000006/0x10000011, 0x2100000F/0x1000059A,
  0x21000038/{0x100003AB,0x100003BA,0x100003C4,0x100003E0,0x100003EC,
    0x100003F6,0x100003FA,0x100003FD,0x100003FF,0x10000402,0x10000404,
    0x10000405,0x10000409} [character creation],
  0x21000043/0x10000362,
  0x21000046/0x100003C4, 0x21000047/{0x100003E0,0x100003EC},
  0x21000048/{0x100003F6,0x100003FA,0x100003FD},
  0x21000049/{0x100003AB,0x100003BA}, 0x2100004A/0x10000409,
  0x2100004B/{0x100003FF,0x10000402,0x10000404,0x10000405},
  0x2100004C/{0x100002DD,0x100002E5,0x100002E6},
  0x2100005B/0x10000011, 0x21000068/0x1000059A,
  0x2100006F/0x10000011 [CHAT INPUT].

(This is an independent re-derivation, not a re-statement of the
investigation's earlier "42/14" estimate — the small difference is
expected from measuring with this commit's own criteria.)

New tests: the sweep itself (pins the two flagged landmarks —
MAIN GAME UI 0x21000005/0x1000059A and CHAT INPUT 0x2100006F/
0x10000011 — plus the three chargen boxes), a build-through regression
test confirming those two landmarks' children resolve as real widgets
post-fix, and a chargen-scoped test confirming the eight gold-frame
pieces + linked scrollbar on all three description boxes now resolve
via UiElement.FindDescendant.

Full App suite (Debug and Release, live-DAT): 5304 passed / 0 failed /
3 skipped — ZERO regressions across the whole client, including every
existing chat and main-UI test. Runtime suite: 1735/0, unaffected
(this is an App-layer-only change).

FLAG FOR THE LEAD: automated coverage cannot catch a purely VISUAL
regression (a frame drawing in the wrong place, a scrollbar overlapping
text). Chat and the main game UI both got new dat children rendered for
the first time this commit — schedule the user's own visual check of
both before considering this closed, per the campaign's oracle
discipline.

The scrollbar linkage (wiring the description boxes' UiScrollbar to
actual text scrolling) is NOT done in this commit — the scrollbar
widget now BUILDS, but CharacterCreationHeritagePage/TownPage/
ProfessionPage/SummaryPage do not yet bind its ScalarChanged to
UiText.Scroll. Filed as follow-up (see report).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-16 12:27:03 +02:00
..
AcDream.App.Tests fix(chargen): Campaign CC gate round 1 Batch C — un-consume media-bearing children 2026-08-16 12:27:03 +02:00
AcDream.Bake.Tests fix(launcher): harden installer transactions 2026-08-14 20:36:11 +02:00
AcDream.Cli.Tests perf(diag): complete trustworthy Slice A capture tooling 2026-07-24 12:46:51 +02:00
AcDream.Content.Tests fix(chargen): Campaign CC CC6a review fix round — F1-F12 2026-08-15 17:51:14 +02:00
AcDream.Core.Net.Tests CC2 review fix round: latch scope narrowed, AD-100, creationFailed reason key 2026-08-15 13:10:24 +02:00
AcDream.Core.Tests feat(chargen): Campaign CC slice CC6b-PRE — idle loop, rotation, zoom (mount-independent half) 2026-08-15 19:05:56 +02:00
AcDream.Core.Tests.Fixtures.HelloPlugin feat(core): add PluginLoader with collectible ALC 2026-04-10 09:51:16 +02:00
AcDream.Headless.Tests fix(app,headless): Campaign CC slice CC4 re-review round — R1 arbiter + R2-R4 2026-08-15 19:04:04 +02:00
AcDream.Launcher.Core.Tests CC2 review fix round: latch scope narrowed, AD-100, creationFailed reason key 2026-08-15 13:10:24 +02:00
AcDream.Launcher.Core.Tests.Fixtures.ConsolelessSupervisorParent feat(launcher): prepare Campaign LA11 user gate 2026-08-14 23:42:30 +02:00
AcDream.Launcher.Core.Tests.Fixtures.ConsoleSignalChild feat(launcher): prepare Campaign LA11 user gate 2026-08-14 23:42:30 +02:00
AcDream.Launcher.Core.Tests.Fixtures.InstallLeaseHolder fix(launcher): harden Campaign LA11 gate evidence 2026-08-15 01:08:41 +02:00
AcDream.Launcher.Tests fix(launcher): Campaign LA gate-round-1 review findings F1-F6 + hardening 2026-08-15 08:19:23 +02:00
AcDream.Platform.Tests fix(platform): Campaign LA LA0 review fixes — CI Linux lanes, arch doc, self-guard 2026-08-14 15:30:04 +02:00
AcDream.Plugin.Tests.Fixtures.HostPlugin fix(plugins): close LA5 ownership races 2026-08-14 19:28:14 +02:00
AcDream.Runtime.Tests fix(chargen): Campaign CC CC7 review fix round — F1-F9 — REVIEW-CLOSED 2026-08-16 03:13:02 +02:00
AcDream.UI.Abstractions.Tests feat(runtime): share chat commands and run login sequence 2026-08-14 20:27:45 +02:00
Fixtures/campaign-la fix(plugins): close LA5 host lifecycle review 2026-08-14 19:05:13 +02:00