Standalone Account, Realm, And Character Flow
The standalone account, realm, and character flow owns the local menu forms while multiplayer connection state owns authenticated account, realm summaries, and character roster data.
How It Works
Standalone resources hold login, character-create, and delete-confirmation form state. MultiplayerConnectionState holds remote auth, realm, and character data. Menu actions are disabled while pending jobs are busy so duplicate login, realm fetch, character create, and delete requests cannot overlap.
How To Use It
Keep form-only data in standalone resources. Keep server data in multiplayer state. When adding a menu action, define when it is disabled, which pending job it starts, and how selected-character state is rebuilt after the roster changes.
Invariants
Credential focus and password masking are UI concerns. Dev-login defaults should stay gated. Character delete confirmation should require the selected character to match current roster state. Empty realms or empty rosters should render recovery paths instead of panicking.
Debugging
Busy pending jobs, missing selected characters, failed realm fetches, deleted selected characters, and empty rosters are the common failure modes. Inspect standalone_status_summary and menu action disabled reasons before changing network code.
Examples
If deleting the selected character leaves the roster empty, the flow should clear selected character state and return to a create/select path. A failed realm fetch should keep the user in realm selection with a status message rather than dropping auth state.