The chat entry is a door to the pair's board, and you can ask them back

FeatureMediaService
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.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing