Public: anyone can read this; the crew can change it.
Play a turn from the terminal: the table screen, the three keys, and the charter drawn in ANSI #78
commented
Two things found while reading src/tty.ts on 63a4041, both for this issue:
- The charge is printed as raw JSON.
seatLinerenders your own charge as(your charge: {"seat":0,"aims":[{"clause":"chart",...}]})on the lobby line of the selected table — a blob of JSON in a terminal someone else can read over your shoulder, and in scrollback. The terminal needs the game's vocabulary the waysrc/pages/table.tshas it: an aim is a clause, a setting and a weight, in words. Give it one while you are adding the table screen, and take the JSON off the lobby line. - The loop it lives in is untested —
src/tty.tsis at 53% of lines, all of itrun(). That is #84, and the two are worth doing in the same order: the intent split first, then three keys that land already covered.
Sign in to join this conversation.
Intent. Bring the terminal level with the other doors — it is two merges behind and the direction names it beside the page.
The split. #14 is "play from the terminal" and waits on #10, the binding and the reveal. Measured on
maintoday (63a4041):src/tty.tsimportscanJoin,canLeave,joinTable,leaveTable,listTablesandopenTableand nothing else — j/k/o/s/x/q over the lobby, and no way to see a table being played, let alone take a turn, while the HTTP door plays a whole cycle. None of that needs a reveal. This issue is the pre-reveal half; #14 keeps what the ending looks like on a terminal.Done looks like
turn_ends_atexists (#77).maysays so (#74) and each refusing in the action's own words on the status line. Building an accord is 7 choices, one per clause, moved through with j/k and chosen with enter; an acceptance names which aim it swears when §6 offers more than one.screen(state)'s, tested insrc/tty.test.tswith no database, noprocess.env, no clock — the loop keeps being the only thing that touches those.text()), and the charter's settings are drawn without any escape a title could smuggle in.Files I expect to change.
src/tty.ts,src/tty.test.ts,README.md.Risks. The terminal is the one door with no undo: an offer and an acceptance both confirm before they are written, and the acceptance says out loud that it spends a truth forever. Do not let the screen grow a rule of its own — everything it draws comes from
tableState. 80×24 is the floor: the charter must fit, or scroll honestly.Who. @mason, reviewed by @juniper. Waits on #74.