8.8 KiB
M46 MVP UI Consistency Pass
Status
- Plan:
M46_MVP_UI_CONSISTENCY_PASS - Status:
COMPLETE - Activated: 2026-08-26
- Baseline:
b40e5dd(M45_CONTRACT_RETURN_REPAIRclosure) - Owner authorization: the Owner explicitly asked to begin the bounded MVP UI consistency optimization after reviewing the current page-family audit.
Objective
Make the local MVP read as one authored Aetherbound Guild product without flattening the approved page compositions. Shared action semantics, typography, spacing, status/notice surfaces and icon grammar should come from a small UI foundation; Guild, Market, Party, Risk and Battle may retain their distinct task-specific compositions and art masters.
This is a presentation/component consistency pass. It must not change gameplay,
economy, Contract or Battle rules, Save/Receipt semantics, routing decisions,
content identities, accepted static-master art, or the normal 100% MVP scope.
Why this boundary
The current MVP has a coherent palette and font, but several page families still
construct their own Button/StyleBoxFlat/text-scale systems. The resulting
runtime is functional and readable, yet Market/Risk/Party/Readiness and the
legacy EntryShell pages visibly drift from the shared Result/Recovery command
grammar. A small shared UI layer is the narrowest repair that improves that
cross-page read without reopening page reconstruction or domain behavior.
Player-visible stopping point
- Primary, secondary, utility/back, danger and disabled commands use one shared semantic state model while preserving each page's frozen hit rectangles.
- Settings, Back, Company, Coin and action icons use one owned vector/icon grammar; Unicode glyphs are not used for shipped MVP command chrome.
- Common heading/body/label/micro sizes and spacing are sourced from the shared token layer; page-specific layouts may still clamp them for their fixed master geometry.
- Common notice/receipt/status surfaces share palette, border, focus and disabled treatment.
- Market, Guild, Party/Readiness, Risk and Battle retain their approved art, normalized 16:9 canvases and task-specific composition.
- All existing MVP intents, node names, focus order, 48px-or-better touch targets and Save/Receipt behavior remain unchanged.
Architecture boundary
ABGUI_Tokens + shared UI factories/icons
↓
Passive PageView local presentation helpers
↓
existing Controller/ViewData snapshots and explicit intents
↓
unchanged EntryShell/Application/Domain/Save boundaries
The new/updated shared UI code is presentation-only. It must not import Save, the compatibility facade, EntryShell globals, content registries or domain services. Static masters remain visual assets; shared controls are overlays or engine-rendered text only.
Ordered steps
M46-A — Baseline and UI contract (COMPLETE)
- Record the current page-family/component inventory and representative normal
100%captures. - Freeze the shared semantic variants, token names, icon list, forbidden scope, stable node names and touch/focus invariants before product code changes.
- Add this plan, checkpoint status and ledger activation only; do not change runtime UI until this boundary is committed and pushed.
Acceptance: one active durable plan; baseline is b40e5dd; the current MVP
first-cycle and M45 captures remain the comparison set; no product behavior or
visual asset changes occur in this step.
Closure: M46-A closes at source a10b3d2. The activation boundary and this
baseline inventory are recorded in CURRENT_CHECKPOINT.md,
docs/06_DEVELOPMENT_AND_REVIEW.md and
docs/runtime/M46_UI_CONSISTENCY_BASELINE.md. Static inventory confirms 14
Passive Views, eight shared command-helper users, six custom button/style
families, mixed icon paths and legacy EntryShell builders. M46-B is now the
sole IN_PROGRESS step; no Runtime product code changed in M46-A.
M46-B — Shared token/factory foundation (COMPLETE)
- Extend
runtime/foundation/ui_tokens.gdwith the canonical type scale, spacing, border/radius, semantic colors and command variants needed by the MVP. - Upgrade
runtime/ui/shared/shared_button.gdand add a small presentation-only icon/notice factory if required; keep the API usable by passive Views and legacy EntryShell helpers during gradual migration. - Add focused foundation tests for token stability, minimum touch size, command states and icon identity.
Closure: M46-B closes at source f736d7a. ABGUI_Tokens,
ABGUIFactory, ABGUIIcon and the upgraded ABGSharedButton provide the
presentation-only semantic command, type, spacing, notice and icon grammar;
ABGPageView and the legacy company helper consume the foundation without
changing callbacks, node names or page composition. The focused source-bound
attempt m46-ui-foundation-focused/20260826T122929Z-99785 passes
ABG_M46_UI_FOUNDATION_OK exactly once with strict diagnostics 0, return
code 0, process/workspace cleanup complete and source revision
f736d7ac41a56feb50e9336f97faa5a6fa90c339. The UI_FONT compatibility alias
was retained for Risk View inheritance. No gameplay, Save/Receipt, routing or
static-master semantics changed.
M46-C — High-impact MVP control migration (COMPLETE)
- Migrate the repeated Settings/Back/primary/secondary/disabled/notice controls in Market, Party, Readiness, Risk, Result/Recovery and the Company pages to the shared presentation helpers.
- Replace shipped Unicode command glyphs with the owned icon grammar.
- Keep page-specific offer cards, parchment/field layouts, static masters and
battle HUD geometry intact; do not mass-rewrite
entry_shell.gd. - Preserve exact semantic node names and explicit intents.
Closure: M46-C closes at source ebc0c8f. Market, Party, Readiness, Risk
Board, Risk Commitment, Result, Recovery and Company Views now consume the
shared command state/icon/notice helpers for the repeated MVP controls. The
focused contracts for all eight migrated Views pass with exact-once markers,
strict diagnostics 0, parsed touch and owned cleanup. No gameplay, economy,
Save/Receipt, routing, content or static-master semantics changed.
M46-D — Verification and handoff (COMPLETE)
- Run focused foundation/View regressions, DEV-3/4/5/6 candidate suites and the
full MVP first-cycle audit through
tools/run_test_attempt.pywith strict diagnostics, exact-once markers, parsed touch and owned cleanup. - Capture representative normal
100%states for each page family in760x360,844x390and1280x720,zh_CNanden; inspect consistency, clipping, overlap and focal hierarchy.130%remains supplemental. - Record the visual audit, close only this UI pass, update checkpoint/ledger and push a focused handoff commit.
Closure: M46-D closes at source ebc0c8f after the DEV-3, DEV-4, DEV-5 and
DEV-6 candidate suites and the full MVP first-cycle audit pass through
tools/run_test_attempt.py. The audit reports exact-once markers, strict
diagnostics 0, parsed touch/restart, owned cleanup and 128 normal 100%
frames. Current-source Company and Contract Return/Guild capture sets add the
remaining page-family fixtures; manual review found no blocking clipping,
overlap or hierarchy regression. Evidence is recorded in
docs/runtime/M46_UI_CONSISTENCY_VISUAL_AUDIT.md.
Acceptance checks
- New focused marker:
ABG_M46_UI_FOUNDATION_OKexactly once. - Existing MVP markers, M45 Contract Return safety and candidate suites remain
green; strict Godot diagnostics remain
0. - No semantic node, intent, route, Save, Receipt, economy or content identity changes are introduced.
- Normal
100%controls remain inside their frozen hit rectangles, retain minimum 48px touch coverage where applicable and do not overlap authored text. - Representative captures show one coherent command/icon/type language while preserving task-specific page compositions.
- Tracked worktree is clean and pushed;
.uid,.importandprototype_incremental/remain untouched by cleanup.
Frozen scope
- No new gameplay, Contract, Region, Boss, progression, economy, Save schema or localization semantics.
- No static-master repaint, asset generation, pixelation or art-direction reset.
- No mass
entry_shell.gdrewrite and no full Router extraction. - No 130% blocking scope, device testing, iOS/Android export, signing, store or release work.
- Do not delete or stage
.uid,.importorprototype_incremental/as cleanup targets.
Commit boundaries
M46-A: plan/checkpoint/ledger activation.M46-B: shared token/factory foundation and focused tests.M46-C: bounded MVP control migration.M46-D: evidence, visual audit, handoff and checkpoint closure.
Each boundary must be committed and pushed before the next step becomes
IN_PROGRESS; a failed check keeps the current step active.
Final handoff
ABG M46 MVP UI CONSISTENCY PASS COMPLETE