docs(roadmap): M4-b lands; the Title screen was already built

The creation screen is done — 302 client tests (up from the 250 baseline),
content build green. Also flips the M3 Title screen from planned to done: it
shipped in a77bf03/f071392 and the roadmap never caught up, which would have
misled M4-c into thinking it must build one.

Adds six new trap species to docs/traps.md from this milestone's review
passes: substring-collision assertions, a BBCode wrapper masking an empty
ContentDB, a test asserting the script's own loop bound, a trivially-true
gating fixture, assertions already true before the action under test ran, an
"iterates everything" guard that checked three hardcoded pairs, a node-type
sweep that missed RichTextLabel, tests that called handlers instead of
pressing nodes, GUT silently skipping an unparseable class_name test file at
the old count, and a test that can hang instead of fail. Also documents the
new client-docs convention: clickable cards are Buttons with mouse_filter = 2
on every child, and pressed on a toggle_mode Button is the chosen state.

Human F6 confirmation of the rendered screen against the mock is still
outstanding and is not claimed here.
This commit is contained in:
2026-07-13 16:00:17 -05:00
parent 4494856a44
commit 31759ef848
3 changed files with 199 additions and 3 deletions

View File

@@ -17,7 +17,15 @@ Cross-cutting design (anything touching both client and api) goes in the root [`
Screens are **authored editor-first** — the layout lives in the `.tscn`, not in
code. See ADR [0001](../../docs/adr/0001-editor-first-ui-scenes.md) for the why;
this is the how. Reference: `scenes/shell/{MainWindowShell,SystemDock,NarrationBook}.tscn`
+ `scripts/ui/shell/*.gd`.
+ `scripts/ui/shell/*.gd`, and `scenes/creation/CharacterCreation.tscn` +
`scripts/ui/creation/{character_creation,creation_draft,creation_copy}.gd` (M4-b).
- **Clickable cards are Buttons with `mouse_filter = 2` on every child.** A card that
holds a name, a blurb and a trait line is a `Button` (Button-base variation, so
`normal`/`hover`/`pressed` actually skin it) with a `VBoxContainer` of Labels inside.
Every child needs `mouse_filter = 2` (IGNORE) or the Label swallows the click and the
card never toggles. `pressed` on a `toggle_mode` Button *is* the "chosen" state — no
script-side stylebox swapping.
- **The `.tscn` owns the tree.** Author every node in the editor: containers,
panels, labels, buttons, art-slot placeholders. Assign the shared theme on the