aa803260a1
The game header identified the viewer's seat only by app.session.userId, but a device-local game (vs_ai / hotseat) created offline is seated under the local guest id (the lobby already matches both). After a merge switched the active account to a durable id, the human seat matched neither, so a vs_ai game showed BOTH seats as robots (the turn still worked — it is seat-index based). seatName now matches app.session.userId OR localGuestId, like the lobby. Completes the v1.22.0 repointLocalGameSeats fix, which only covered games seated under the retired session id.