Mostly online play this time, plus a fix to the leaderboards. A few of these were costing people games they should have won, so those got dealt with first. Thank you to everyone who wrote in about it, and especially to the player who sent along their game log. That log is what found the big one.
Fixed
The table could freeze up completely while your clock kept running. Your cards would stop responding, usually right at the crib toss, and there was nothing you could do but watch the timer run out and lose the game. What was happening is that when the game interrupted you to show you something, one particular kind of prompt was not being properly closed out behind the scenes. The game then sat there waiting for an answer to a question it had already taken off the screen, and it would not hand control back to you. All the places that could get stuck like that are now closed out properly.
That same problem could send a nonsense move on your behalf. A leftover prompt from a finished game could wake back up during your next one and submit a move you never made, which in a ranked game risks looking like you were up to something. That is fixed at the source, and on top of that the game now checks every move before it sends it and refuses anything that is not a legal shape.
Both players could end up thinking they won. If the connection dropped for both of you at once, each side would decide on its own that the other one had quit, and the match would never settle. Only one side of a match is allowed to make that call now, and the other side waits to hear it.
A match could end behind the panel you were reading. If you had the pause menu or the Provably Fair panel open, the game could finish underneath it, play the whole end screen where you could not see it, and then drop you on the main menu when you closed the panel. Those panels now close when the match does.
Your clock was invisible while the pause menu was open. The clock does not stop for the pause menu, and for good reason, but it also used to sit on the table where the menu covered it. You could spend two minutes reading the fairness page and the first you heard about it was a strike. Both clocks are now shown on the pause screen, with the same numbers and colors as the table.
Longer online matches were being treated as abandoned. The game only checked in at the start of a match, and after ten minutes it assumed the match must be dead. Cribbage to 121 runs longer than that most of the time. So if you closed the game partway through a normal length match, you were never offered a chance to rejoin, and a ranked game could be recorded as a loss you did not earn. It now checks in while you play, so a match stays alive as long as you are in it.
Getting dropped back to the menu could cost you a game you were still playing. If something put you back at the main menu while your connection was still fine, the game assumed you had quit and filed a loss. It now notices you are still connected and puts you right back at the table, which is also a good deal faster than it used to be since it does not have to go find the match all over again.
The offer to rejoin came once per session, and then never again. If you got bumped out later in the same sitting there was no way back in. It offers whenever there is a match waiting for you now.
Pegging could score wrong if you play in a language other than English. Pairs and runs during pegging were counted twice, and then the next thing you scored went missing to balance it out. English was not affected. It is correct in every language now.
The pegs on the board could drift away from the score. The board was keeping its own running count instead of reading the real one, so if a single move was ever missed, the pegs stayed wrong for the rest of the game even though the number next to your name was right. One report had a score of 28 with the front peg sitting in hole 26. The board reads the actual score now, so it puts itself right instead of staying broken. Three cases where the pegs could freeze partway through their animation and never move again are fixed as well.
The top three on the leaderboards were spilling over the rest of the board. Their cards were being drawn far too short, so the medal, avatar, name and score hung out the bottom and printed on top of fourth place and below. It happened on every leaderboard without replays attached, which is all of the solo boards and most of the daily ones. The cards now grow to fit what is inside them, first place stands taller than second and third the way it was meant to, nothing crowds the edges, and there is a clean gap before the rest of the list starts.
The timers in online matches were covering the cut card. They floated loose over the middle of the table instead of having a spot of their own, so they landed on the starter every hand. They now sit tucked into the top of the table, and the cut card is clear again.
Your opponent's name could go blank when you rejoined a match. It stays put now.
Changed
Rejoining a game you never actually left does not wipe the slate clean. If you get put back into a match your connection never dropped out of, the clock strikes you had already taken and any reserve time you had already spent come back with you. Rejoining after a real disconnect still works the way it always has.
If a ranked match never finished, the game now tells you about it. It used to report the match and adjust your rating without a word on screen, which is unsettling and looks like a bug. You get a short notice at startup instead. It is worded carefully, because your own copy of the game cannot always tell which side dropped.
Your timer gives a soft pulse when you are getting low on time, so you can catch it without staring at it. If you play with Reduce Motion turned on, it holds still like everything else.
The clock faces got a cleanup while I was in there, and a long name no longer pushes the rest of the row around.
One side note to close this out:
Cloud save could stop syncing, and once it did it stayed broken. For some accounts the save data coming back from the server had a gap in it where an online record should have been, and the server refused the whole save rather than the one missing piece. Once an account got into that state every later save was refused too, so nothing you did online was being kept, and signing in could fail outright. Both sides are fixed, and any account this happened to repairs itself the next time it saves: there is nothing you need to do. A few accounts also ended up with a blank where an opponent's name should be in your online stats; those fill themselves back in.
