Skip to content

Implement connection, login, character selection, and reconnect UI #33

Description

@zoeyrose

Outcome

Deliver the complete user-facing connection lifecycle against the Go server through pure session/actions and generated contracts.

Scope and invariants

  • Server profile/identity selection, connect/cancel, TLS trust/identity-change confirmation, version/capability diagnostics, authentication, account recovery handoff where supported, and secure credential storage policy.
  • Character list, creation, selection, protected deletion, loading/attachment, logout, disconnect, reconnect/resume, and server change.
  • Model every transition as cancellable state with one owner; disable/reject invalid duplicate actions and preserve actionable errors.
  • Keep secrets out of UI logs, chat logs, crash reports, and non-secret settings.
  • Support keyboard/mouse/controller navigation, text input/IME, scaling, focus recovery, and accessibility semantics.

Acceptance criteria

  • Headless and graphical tests cover success plus disconnect/cancel/error at every transition, slow responses, duplicate clicks, stale revisions, identity change, credential failure, and reconnect.
  • No screen parses raw protocol or performs network/persistence mutation directly.
  • Secrets use approved platform storage or an explicitly documented safer fallback; never plaintext general settings.
  • M3 wrapper scenario creates/selects a character, disconnects during play, reconnects, and exits cleanly.
  • Error text is structured/localizable and does not leak server internals.

Dependencies and parallelization

Depends on #3/#12, server account/session issues, shared UI rendering, and settings boundaries. Can build against scripted session events before live transport.

Licensing

Client code/tests are MIT. Legacy reuse requires an audited approved-grantor grant; all other implementation is independent. Content, sound, and graphics retain their exact asset licenses and notices.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    Priority

    None yet

    Effort

    None yet

    Projects

    Status
    Backlog

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions