As things get more advanced and we get into doing actions that take multiple turns, I've had to do some cleanup work around ending turns.
Up until now I've been running lots of automated tests that control the client and server. So when i need to advance the turn I can just make the server do it, by triggering a TURN_ADVANCE action there.
But in the real game, we need to wait for the user to manually end their turn before advancing. Also in multiplayer games we need to wait for all players to finish their turns before advancing for everyone.
So now each player can submit an END_TURN action, and then wait for the server to advance the game. While waiting they can still use the game UI to inspect things, but not create any new actions. So I had to add some more UI checks around that to disable buttons and close any editing/creation dialogs when the turn ends.