The new behavior came about from the different way that it now handles legal moves. Instead of constructing the move, it searches for a matching legal move and sets the move to the matching legal move. But when no legal move was found, it would not set it to anything. I have now changed it to construct the move before looking for a match among the legal moves. If it finds a single match, it will overwrite the constructed value with the the match it found. But if it doesn't find a match, it will keep the constructed value. Since enforcing and showing legal moves usually requires some separate code, there can sometimes be a discrepancy between the legal moves that are enforced and the legal moves that are shown. Players are allowed to purposely enter moves that are not shown as legal as a way of getting around this when it happens.
The new behavior came about from the different way that it now handles legal moves. Instead of constructing the move, it searches for a matching legal move and sets the move to the matching legal move. But when no legal move was found, it would not set it to anything. I have now changed it to construct the move before looking for a match among the legal moves. If it finds a single match, it will overwrite the constructed value with the the match it found. But if it doesn't find a match, it will keep the constructed value. Since enforcing and showing legal moves usually requires some separate code, there can sometimes be a discrepancy between the legal moves that are enforced and the legal moves that are shown. Players are allowed to purposely enter moves that are not shown as legal as a way of getting around this when it happens.