world-index-presentation Specification
Purpose
TBD - created by archiving change add-world-index-presentation. Update Purpose after archive.
Requirements
Requirement: INDEX SHALL present the active world as the header subject
The INDEX presentation SHALL render an 11px tracked INDEX | WORLD NN
eyebrow, the active world name in --fg, weight 800, and its muted tagline
with 8px vertical spacing. The tagline SHALL fall back to
walk the path, pick a proof when the normalized world has none. The large
standalone INDEX heading and overlapping world-number stack SHALL not be
rendered. The presentation SHALL also show ★ n /, where both counts are
scoped to the active world view model.
Scenario: Desktop world header establishes hierarchy
- WHEN INDEX renders an active world on a desktop canvas
- THEN the eyebrow, name, tagline, and per-world count are legible, separated by the specified spacing, and do not overlap the board or world strip
Scenario: Missing tagline uses the approved fallback
- WHEN the normalized active world has no tagline
- THEN INDEX renders
walk the path, pick a proofin the tagline region
Scenario: Mobile header remains inside its owning region
- WHEN INDEX renders at 390px wide
- THEN the complete world name, fallback or authored tagline, and per-world count remain inside the header region without covering the board or footer
Requirement: INDEX SHALL render the world strip as an actionable control
The desktop strip SHALL render [Q] ◀ ● • • ▶ [E] with drawn Q and E keycaps,
14px arrows, 10px dots, and one dot per world. The active dot SHALL use the
normalized world's accent when present; inactive dots SHALL use the neutral dot
role. On mobile or coarse pointers, keycaps SHALL be omitted and each arrow
SHALL expose a 44px tap target. Hit geometry SHALL match the visible arrows.
Scenario: World strip exposes adjacent actions
- WHEN INDEX renders three worlds on desktop
- THEN it shows Q, a previous arrow, three dots, a next arrow, and E in that order, with the active dot accented
Scenario: Mobile strip exposes touch targets
- WHEN INDEX renders on a 390px canvas or a coarse pointer
- THEN Q/E keycaps are absent and the previous and next arrows each have a 44px tappable target
Scenario: Dot slide follows a world transition
- WHEN the D20 seam reports a world switch
- THEN the active dot travels from its prior position to its new position over 110ms with back-ease, while the world sheet uses the same transition start and its 280ms ease
Scenario: Reduced motion settles the strip
- WHEN reduced motion is enabled during a world switch
- THEN the strip renders the destination dot and sheet immediately without an intermediate slide
Requirement: The first-entry world card SHALL present and dismiss world identity
The INDEX SHALL consume the D20 world-card request and render a centered,
hard-edged card containing the normalized glyph at 96px, WORLD NN eyebrow,
32px name, 15px muted tagline when present, a meta line with proof count,
★ n /, and by <author> only when an author exists, followed by an action.
These elements SHALL use a 16px vertical rhythm. The card SHALL never show
by Unknown author. Its 2px stroke SHALL use the normalized world accent.
Desktop SHALL show [ENTER] enter world; mobile and coarse-pointer layouts
SHALL show a full-width 48px accent ENTER WORLD button without a keycap.
The card SHALL fit all copy inside at desktop and mobile sizes and preserve
the existing iris entry choreography. ENTER or the
equivalent confirmed pointer/touch action SHALL dismiss the card and leave the
player on the settled INDEX sheet without selecting a proof. The card SHALL
not install packs or mutate simulation state.
Scenario: INDEX first entry opens a readable world card
- WHEN D20 requests a card with origin
index - THEN the card shows its glyph,
WORLD NN, name, tagline, proof count, completion, author when present, and the correct desktop or touch action without clipping
Scenario: Core uses a first-party identity
- WHEN the player first enters the Core world
- THEN its card uses
🐈,Where the rules first bend., theyouaccent, andby Miau Is Truerather than the fallback identity
Scenario: Missing author leaves no placeholder
- WHEN an imported world omits author
- THEN its meta line omits the byline segment and never prints
by Unknown author
Scenario: Workshop PLAY uses the same card presentation
- WHEN D20 requests a card with origin
workshop - THEN the card uses the same composition and preserves the Workshop selected pack's first node for the subsequent INDEX sheet
Scenario: Card confirmation returns to INDEX
- WHEN the player confirms ENTER on an open world card
- THEN the card closes and INDEX remains on the active world's sheet; no proof move or simulation turn is recorded
Scenario: Touch confirmation has a large target
- WHEN the card is rendered for a coarse pointer
- THEN the card has no visible keycap and its full-width accent
ENTER WORLDbutton is 48px high and tappable across that width
Scenario: Card motion respects reduced motion
- WHEN reduced motion is enabled
- THEN the card appears in its settled geometry without an iris intermediate
Requirement: Mobile INDEX controls SHALL use touch affordances and coherent narration
Below 760px or on coarse pointers, INDEX SHALL omit keyboard keycap hints,
render tap the cat to play below the active proof banner, and expose the
bottom ☰ menu thumb affordance. Workshop SHALL remain reached through that
menu. The INDEX accessibility label SHALL include world number/name,
world-scoped completion, total proof count, and the keyboard world-switch
action where keyboard controls are available. An open card label SHALL include
world identity, author, and its ENTER action.
Scenario: Mobile footer removes desktop hints
- WHEN INDEX renders below 760px or for a coarse pointer
- THEN it shows the cat play prompt and menu thumb affordance without the desktop ENTER, ESC, or SPACE keycap row
Scenario: Accessibility follows the visible world state
- WHEN the active world or its completed count changes
- THEN the INDEX label names the current world and its updated
n of Nproof progress, and announces Q/E switching when applicable
Scenario: Presentation leaves simulation and grid state unchanged
- WHEN any header, strip, card, or mobile footer presentation is measured, animated, or dismissed
- THEN engine rules, simulation snapshots, integer board coordinates, progress keys, and pointer semantics remain unchanged