mirror of
https://github.com/tiennm99/noitu.git
synced 2026-10-05 18:14:35 +00:00
Chat belongs to the room rather than to a game, so it works in the lobby while they agree on one, during it, and in the lobby it ends in. A player is replayed what was said while they held their seat. That is what a refresh restores, and it is also the boundary: a room code is pasted into group chats by design, so somebody who redeems one starts at silence rather than reading what the last two people said. A seat records where the conversation stood when it was filled; the room keeps twenty lines and no more, so a room that lives all day cannot grow. Text is untrusted input rendered in a stranger's browser, so it goes through the filter nicknames already used — now with a cap on stacked combining marks, which that filter admitted. Twenty runes made mark stacking a curiosity; two hundred make it a glyph cluster tall enough to cover the board, and it would sit in the history being replayed to everyone who followed. Talking is not playing. A chat message does not reset the room's idle clock, or one open tab could hold a room and its code for the life of the process by typing into it once every nine minutes. It does not spend the move budget either, and a line to a player who cannot keep up is dropped rather than allowed to close their session — losing a line is recoverable, losing a session mid-game costs them the game. A history is not droppable that way: it is the frame that corrects a whole panel, and there is nothing behind it. When a seat is vacated its words stay and its author goes, name included, and the player who stayed is re-synced rather than left holding a name that the next person through the door could ask for.
61 B
61 B