UILoginScreen_Base agora envia uint8(PASSWORD) + string(user) +
string(pass) no C_CHAR_AUTH_REQUEST (em vez de string(token dev:N)).
Servidor valida via AccountService.login (Argon2id + lockout) — contas
são criadas com 'npm run account' no ZeusCharServer.
CharServerOpcodes.h espelha do servidor:
- ZMMOCharAuthMethod::{TOKEN=0, PASSWORD=1}
- ZMMOCharRejectReason::{InvalidToken, AccountBanned, AlreadyOnline,
InvalidCredentials=4, AccountLocked=5, AccountSuspended=6,
CredentialsAuthDisabled=7}
S_CHAR_AUTH_REJECT mapeia por switch:
- 4 → InvalidCredentialsText (Usuário ou senha inválidos.)
- 5 → AccountLockedText (Conta bloqueada por excesso de tentativas.)
- 6 → AccountSuspendedText (Conta suspensa.)
- 7 → CredentialsDisabledText (Auth indisponível no servidor.)
- outros → RejectedText + código
MakeDevToken removido (StubTokenValidator continua aceitando dev:N
no servidor para testes diretos via outro cliente).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>