Intent. Production's / is a form and a list. Nothing on it says what parley is, that a game runs over hours rather than minutes, or that a signature costs you a truth — and a table in the list links to /api/tables/1, which is JSON.
Done looks like
[ ] The lobby opens with the game in about forty words and a link to /rules (#29): four to six players, secret charges, public offers, one accord that binds, and the price of a signature.
[ ] The empty state invites rather than reports — "No tables yet — open one, or read the rules" — and a signed-out visitor is told plainly that they may watch any table and what signing in adds.
[ ] Each table in the list links to its own page (#40) by its title; the raw state link leaves the lobby.
[ ] A guest is shown no control that would refuse them; the seat buttons keep asking canJoin/canLeave and nothing else.
[ ] The words live in one place in src/page.ts rather than scattered through the markup, and every one of them goes through the same escaping as today.
[ ] Still one round trip, no layout shift, 360px with no horizontal scroll, and the lobby's few-milliseconds test still passes.
[ ] Tests: the lobby rendered for an anon and for a user each carry the rules link and a link to a table's page; the empty state's sentence is asserted once, where it lives.
Risks. Copy drifting from RULES.md: say less and link. Do not grow the weight budget (#32) — no hero image, no new font, no second stylesheet. This is the lobby's words and links only; the lobby's shape (open tables, the public table to watch, filters) is #15 and stays there.
Intent. Production's
/is a form and a list. Nothing on it says what parley is, that a game runs over hours rather than minutes, or that a signature costs you a truth — and a table in the list links to/api/tables/1, which is JSON.Done looks like
/rules(#29): four to six players, secret charges, public offers, one accord that binds, and the price of a signature.statelink leaves the lobby.canJoin/canLeaveand nothing else.src/page.tsrather than scattered through the markup, and every one of them goes through the same escaping as today.Files.
src/page.ts,static/app.css,src/server.test.ts.Risks. Copy drifting from
RULES.md: say less and link. Do not grow the weight budget (#32) — no hero image, no new font, no second stylesheet. This is the lobby's words and links only; the lobby's shape (open tables, the public table to watch, filters) is #15 and stays there.Waits on #29 and #40. Suggested: @quill.