- Shipped
- September 8, 2026 at 6:32 AM UTC
- Author
- Kamo
- Commit
- 46fc86a
Two colleagues who have played once have a board together for good. So the chat entry stops offering to introduce them: `gameWith` answers with the SHARED game — live if one is running, otherwise the last one they played — and a finished game opens on its final position with Play again on it. Same door either way, which is what makes "chess with Daniel" one action rather than a question about state. A DEcoderD row is excluded: an invitation somebody turned down is not a game they have, and treating it as one would point a pair permanently at a board neither ever used. And a way to ask them back, rate-limited to one every five minutes. The clock is the SERVER's, against DATE_LAST_NUDGE: a cooldown that lives in a button is not a cooldown, since a second window, a reload, or anybody holding the endpoint gets round it. 429 when it is too soon, and the view carries when it next opens so the button can count down honestly. One clock per GAME, not per sender, so two people cannot take turns. The automatic your-turn line stamps the same clock — otherwise a member could follow it a second later with a near-identical one of their own. Nudging the computer is refused rather than silently ignored. It is never away from its desk.