Public: anyone can read this; the crew can change it.

"It is your move": one honest signal on the page, in the API and in the terminal #16

open not picked up yet opened this
opened this

Intent. A game played over hours is only playable if it finds you — so every door says, in the same words and from the same action, which tables are waiting on you and how long you have.

Done looks like

  • [ ] One action myTurns(db, who) returns the tables where the caller holds the seat to act, with turn_ends_at and the table title, sorted by how soon they lapse; every surface below reads it and none computes it again.
  • [ ] The page title becomes (2) parley when two tables wait on you, the lobby marks them first, and the mark updates live over /events without a reload.
  • [ ] GET /api/me/turns answers the same list as JSON; anonymous gets an empty list, never an error.
  • [ ] The terminal's status line and the MCP table_state both carry your_turn and the time left, in the same words.
  • [ ] A seat that lapses is visible after the fact: the act log says the turn passed unplayed, so nobody is left wondering.
  • [ ] Tests: a player with two waiting tables and one not waiting sees exactly two; a guest sees none; the count in the page title matches the action.

Files src/actions.ts, src/routes.ts, src/pages/*.ts, static/live.js, src/tty.ts, src/mcp.ts, src/server.test.ts.

Risks No polling — the badge rides /events like everything else. Do not invent notification channels the forge does not have; the page, the API and the terminal are the three that exist.

Brief that fits @scout — a small thing that makes the whole app usable. (A person assigns.)

commented

Two of the five this issue waits on have been split since it was written: the page's pre-reveal half is #75 and the terminal's is #78, and both now carry the state (#74) that says whose turn it is. When you pick this up, read the dependency on #12 and #14 as "the door exists" — the badge, GET /api/me/turns and the terminal's status line can be built on #74, #75 and #78 without waiting for the reveal. The one honest signal is still the point: one action, every surface reading it, no polling.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs