mirror of
https://github.com/tiennm99/noitu.git
synced 2026-10-11 03:13:45 +00:00
Type GameState for real instead of returning any from initialState(), which made every game.state.* read in every component unchecked. apply() now switches on payload.case so the oneof narrows, and is wrapped in try/catch so a throw partway through a case cannot leave a half-mutated snapshot on screen. Also key chain meanings by position instead of gloss, since the dictionary gives no gloss-uniqueness guarantee, and gate the word field's turn-seed effect on the same connection check `enabled` already uses so a reconnect cannot seed a field the player cannot submit from.