Files
aetherbound-guild/docs/runtime/M46_UI_CONSISTENCY_BASELINE.md
T

3.7 KiB

M46 MVP UI Consistency — Baseline Inventory

Evidence identity

  • M46 activation source: a10b3d2b52ecc12415d32ff0cd4cecf6e9a7c41c
  • Runtime comparison source: b40e5dd12b2470d3ee47102d2a9c95804684ade7
  • Scope: normal 100% landscape at 760x360, 844x390 and 1280x720, zh_CN and en; 130% is supplemental and non-blocking.
  • Existing runtime references: M31 MVP normal-render audit, M41 Market View audit, M43 Guild View audit, M44 Company View audit and M45 Contract Return audit. No product/runtime code changed for this baseline.

Current component inventory

Area Current implementation Baseline finding
Page boundary 14 MVP PageView classes inherit ABGPageView Shared ownership boundary is present
Command buttons Eight Views use make_company_button() / ABGEntryChrome; six Views construct local Button + StyleBoxFlat controls Semantic variants exist, but visual implementation is split
Frames initial_company_scene_frame, content_scene_frame, Guild rails, Market/Risk static masters and Battle HUD Page-family composition is intentionally different; frame primitives are not fully shared
Typography Base make_label() uses NotoSansSC; Market, Guild, Party, Readiness and Risk each add local size helpers Font family is shared, scale/spacing tokens can drift
Icons ABGEntryChrome draws owned icons; Market/Risk and some legacy paths still use Unicode glyphs or local textures Icon family is mixed
Shared foundation ABGUI_Tokens, ABGSharedButton, P91Widgets exist ABGSharedButton/tokens are not yet the runtime source for most MVP controls; P91Widgets is historical
Legacy entry pages Title, Initial Company, Settings, Dismissal and Equipment retain EntryShell builders They share some helpers but are not on the same passive-View factory path

Page-family review

  • Company / Result / Recovery family: strongest consistency. Angular navy/gold/ivory command chrome, shared back/primary/secondary semantics and matching framed composition.
  • Guild family: approved illustrated desk, top/bottom rails and circular destination medallions. The composition is intentionally unique but should reuse the same semantic icon and state language.
  • Market / Recruit family: accepted static masters and field-attached controls. The master is correct, but rounded custom buttons, tiny local text scales and Unicode badges diverge from the shared command chrome.
  • Party / Readiness family: shared field/line grammar and palette, with local command styles and local text-size helpers.
  • Risk family: parchment/card composition is intentional; command and status styling still needs to align with the global focus, disabled and icon grammar.
  • Battle family: field HUD is intentionally specialized. Result, Knockout, Reward and Recovery should remain aligned with the Company command family rather than inherit the live HUD geometry.

Baseline verdict

The MVP currently has a coherent visual identity but not one reusable UI skin. The earliest repair boundary is cross-page command/icon/type consistency, not gameplay, routing, Save/Receipt behavior or page composition. M46-B may therefore add shared presentation primitives; M46-C must migrate only the repeated controls and preserve all frozen hit rectangles, node names and explicit intents.

Frozen invariants

  • No gameplay, economy, content, localization semantics, Save/Receipt or route changes.
  • No static-master repaint, asset generation or pixel-art treatment.
  • No mass entry_shell.gd rewrite or full Router extraction.
  • Normal 100% remains the blocking scope; 130% remains supplemental.
  • .uid, .import and prototype_incremental/ remain untouched.