I suppose that one option would be for the game state to diverge for each player, and only after both of them have reached a conclusion could they both be told the move at which that happened.
(and in that case, ensuring that both players reach their respective game's conclusion near the same point-in-time -- hiding the magic trick -- becomes a separate challenge)
Beyond that, what you described is basically how the implementation operates anyways. it notifies a player if they are put in check (without identifying the threatening piece, though I could change that pretty easily), likewise if theres a checkmate/stalemate. And in a situation where only one move is possible, it just auto-uses that move and notifies the player.
So the two players dont really 'discover' the outcome of the game out-of sync, per se.
An especially fun part is related to piece capture - eg if black captures white's pawn, then on white's turn, they will simply see their piece missing. So technically they would 'know' about the capture before their opponent would, which...I cant really even imagine the implications of yet, since I haven't had a chance to playtest this variant yet :)