THE SEASON, phases 1-4: the front door is the fixture, and the club remembers

The tournament is the canonical path, so the game finally says so. The splash's
primary button names the next cup fixture and enters the draw; the poster wall
moved one tap down and deals three named rooms (the season, the training, out of
competition) with the cup at the top. Two profile fields remember every attempt
— rounds ever reached per league, and the body that put you out — so a lost cup
is a line on the board instead of a null event, and the training court offers
that body first, marked. The promotion names what waits in the new league.

Overlays consolidated in the same pass: three modal drawers became one box with
a masthead, hairline-separated rows and a real footer button (any tap still
dismisses), and the run-end summary wears the same box — headline, xp, mark, and
the fixture with ENTER THE DRAW beside PLAY AGAIN. The cup's own exit is a
ceremony now: OUT IN THE QUARTER-FINAL, your best standing beside it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Fable 5 committed 2026-08-31 11:14:25 +02:00
1 parent 063b01d2a5
commit 5c7521f867
10 files changed
+603 -204

No files matched your search

+67 -1
View File
@@ -491,7 +491,73 @@ zombie (now an occasional opponent, `TUNE.racketEvery`, not the every-game fixtu
`RETURNED`, `DOUBLE KILL`) is a footnote to something you already watched happen. Sharing the loud
FACE with the milestone cards is right; sharing their SIZE made every footnote read as a milestone.
## THE SEASON — the tournament is the story (2026-08-31, AGREED in discussion; NOT BUILT YET)
## Session log: THE SEASON, PHASES 1-4 — the front door, the record, the rooms, the season beat (2026-08-31, STAGING ONLY)
All four phases of the plan below, plus the overlay consolidation Oliver asked for in the same
breath ("die modals haben manchmal 2 boxen manchmal eine manchmal keine... der tap wird zu einem
echten button im footer der box... zudem noch das run-ende, hier bitte auch mehr struktur").
**THE MODAL IS ONE BOX** (`render.drawModal`). Three drawers — the plain announcement, the rules
card, the walk-on — became one renderer with slots: a MASTHEAD (art beside the title, with the
body's strap under it), a stack of ROWS separated by hairlines (statement over consequence, the
split figure of his level against yours, the blood pool as pips), and a FOOTER BUTTON. The payload
is untouched: `title/body/icon/rules/foe` are the same fields beats.js has always sent, so the
suite and every call site are unaffected — this is a layout. Two consequences worth knowing:
- The entrance is now ONE object flying in from the right. The old per-element stagger would tear
a box apart, and a box that assembles itself out of flying pieces is not a box.
- The button says what HAPPENS (`PLAY ON` / `GOT IT` / `WALK ON`, `m.btn` overrides) instead of
what gesture to make, and it appears only once the box has landed. **A tap anywhere still
dismisses** — the button is the affordance, not a hit target. A modal you could only leave
through one 26px strip would be a worse wall than the one we had.
**THE RUN-END WEARS THE SAME BOX, AND HANDS OVER.** Headline and the run's line, then the xp it
paid, then the mark, then THE FIXTURE with its buttons — `ENTER THE DRAW` beside `PLAY AGAIN`
(or `THE CLUBHOUSE` when the run just played was the cup). `render.endHit(nx, ny)` gives the
rects back to `main.maybeRestart`, which is where the tap already lived; a tap anywhere else is
the old behaviour exactly, so nothing that worked before stopped working. Netplay gets ONE door
(the clubhouse): dealing a solo cup into a session whose socket is still tearing down is not a
handover, it is a bug waiting for a phone verdict.
**THE CUP'S OWN EXIT IS A CEREMONY.** `OUT IN THE QUARTER-FINAL.` over `YOUR BEST STANDS: THE
SEMI-FINAL` (or `THE BOARD NOTES IT` when the attempt IS the new record). The board's felled count
is suppressed there — two bests answering different questions in one box was the wall of text this
pass exists to remove.
**THE RECORD** (`profile.cups` / `profile.out`, `recordCup`, `cupBest`). Two small fields: rounds
ever reached per league, and the rung of the body that ended the last attempt. Written by the two
places a cup run can end (`zombies.killPlayer`, `beats.cupWon`), mirrored server-side beside the
xp (`server.clean_profile` re-derives them like every other field), merged FORWARD on pull. Shown
on the plaque (which stopped repeating "win the cup to advance" — the fixture button below says
that), in the league panel, and in the summary. Training reps write nothing: a rep is not an
attempt.
**THE FRONT DOOR IS THE FIXTURE.** `PLAY MATCH` became `LEAGUE 3 · THE CUP / 4 ROUNDS · ROUND ONE:
THE STRAWBERRY SELLER` and enters the draw directly — the cup has no court to pick and no opponent
to choose, so the setup screen there was a confirmation page with nothing on it to confirm. The
poster wall moved one tap down behind `OTHER GAMES`. `config.cupFixture` is the single descriptor
all three screens read, so the splash, the summary and the promotion cannot drift apart on its
wording.
**THE ROOMS.** The wall deals three named groups now — THE SEASON (the cup, alone), THE TRAINING
(the climb, the training court), OUT OF COMPETITION (gore, classic, a friend) — and the cup left
the ZOMBIE TENNIS pocket for the top. That also emptied the second step of everything except
CLASSIC's difficulty chips. `MENU` rows with a `group` key are headings, not posters.
**THE REVANCHE.** The training list puts the body that knocked you out of the cup FIRST, in a red
tile that says `PUT YOU OUT OF THE CUP`. One remembered rung turns a shelf of eighteen equal tiles
into the obvious answer to the last defeat — the cheapest coupling of Beiwerk to canon we have.
**THE SEASON BEAT** rides inside the promotion (no new screen): `NEXT: LEAGUE 4 · THE CUP` over
its rounds and its first body — or, for the champion, the title he now has to hold.
Tests: two added (127 total) — the fixture descriptor against every league (including the
champion's defence), and the record's forward-only write with the eliminator it names. `freshSplatter`
resets `cups`/`out` for the same reason it resets the league: a cup ending writes them for real.
Open for the phone: whether the fixture button should ever go to the setup screen (it does not
now), and whether the promotion's WALK ON should enter the draw instead of the clubhouse.
## THE SEASON — the tournament is the story (2026-08-31, AGREED in discussion; PHASES 1-4 BUILT ON STAGING — see the log above)
Oliver's diagnosis, and it is right: "alles ist irgendwie beliebig... die Menüführung und die Start-
und Endscreens enforcen keine Story-Line". The cause is not a missing story — THE LEAGUES already