← Server architecture · all tasks
Account screens redesign — two panels, and this device's remembered logins
server-architecture/019 · created 2026-08-26 · updated 2026-08-26
What
Kris recorded a full voice spec of the account screens on 2026-08-26 — this task is that
spec, transcribed, plus the build against it. This is the “account-screens design session”
status.md had been carrying as outstanding next-step work since 2026-08-18 (restyle
signup_flow / signin_screen / account_screen / character_preview; primitives in
theme/lor_forms.gd + lor_ui.gd).
Kris’s own framing going in: the architecture (010-accounts-plan.md, the
auth_identities seam, the provider list) is already settled and not being re-litigated
here — this is specifically the UI/UX layer on top of it, described in enough detail to
build directly, with two exceptions he flagged himself: whichever bits stayed genuinely
undecided get a question against this ticket, and the platform sign-in setup steps
(Apple/Google) get written out clearly enough that he can do them himself afterward.
The spec (Kris’s voice memo, transcribed)
Sign-in methods, in the order discussed: 1) Apple Game Center (iOS), 2) Google Play
Games (Android), 3) email + password (“the full message… enter email, enter password to
log in”), 4) Steam — his own words: “which I have zero experience with… I don’t even
play PC games, but Steam has an equivalent kind of thing… option four is the main
placeholder for now.” All four already match 010-accounts-plan.md’s provider table
exactly (email, google_play, game_center, steam — the last two already marked
“speced only” there before this session).
The signed-in account screen — two panels, side by side:
- Authentication panel: which method this account signs in with, and the identity info that method carries (email address; a platform gamertag/alias once linked); the device list; rename; attach-email / link-provider actions; add-a-device. Sign out lives here too, deliberately styled small and easy to miss — “a subtle baby-tuck way… the option for them to log out” — not another entry in the main button column.
- Character panel: the character’s name, and a preview of the character “spinning around gently and slowly in 3D”.
Signed-out state: the two panels disappear. In their place: a button per identity this device remembers, reading “Log in again as [name]”. Tapping one:
- On a platform-native login (Game Center / Play Games), resumes automatically — “they press that button and they’re immediately back to their game centre account.”
- On the web, for an email-based login, requires typing the password again — “if I click that, they should be required to type in their password, because that’s the way we’re going to do that login.” (Re-entering the address is what’s being skipped, not proving you know the password.)
Below the remembered-logins list, on every platform, in the signed-out state: the normal “enter email, enter password to log in” form, and “create account” (email + password — no email verification, no password reset in this version — already settled the same way independently in server-architecture/017, unchanged by this task).
Removing a remembered login: “some other mechanism [so] it’s not ever going to accidentally be done” — a long press on a remembered-login entry removes it from the device’s list. This never deletes the account itself — there is no account-deletion path anywhere in this client, on any platform, and this task doesn’t add one.
What was genuinely ambiguous, and what was assumed instead of asked
None of the open points below reached epics/PICKUP.md’s question bar (money /
irreversible / public-facing / reaches outside the repo) — so per that bar, this task
carries zero open questions, and each point was assumed, built, and flagged plainly
for correction:
- The “3D spinning” character preview doesn’t exist — there is no 3D character model yet
(
character_preview.gdalready documents the real hexagram-defined model as deliberately undesigned). Built a placeholder: the existing 2D seed-tile, animated with a gentle sway, swapped for the real thing wherevercharacter_preview.gd’s own seam does that later. - How many logins a device remembers (assumed 6, most-recent-first) and what happens when a remembered session has actually expired (assumed: drop it and fall back to a full re-auth for that same identity, never leave a dead button offering a login that can’t work).
- Whether the Authentication panel shows one provider or all linked ones (assumed: all of them, joined — an account can accumulate more than one over time).
Definition of done
Built, tested, and documented this session — see
land-of-lor/docs/handoff/historic/019-account-screens-and-remembered-logins.md
for the full report: the two-panel account_screen.gd, the remembered-logins list in
signin_screen.gd (quick-resume + long-press-forget), account_session.gd’s new
device-local history storage, and the one additive director change (whoami’s
account_info reply now carries providers: string[]). Director suite 170/170 (+10 from
server-architecture/020’s Game Center tests, built alongside since both touch the same
server.ts/whoami code), world suite 116/116, all touched .gd UI files parse-checked
clean.
What’s still Kris’s to do: look at the actual two-panel layout (no display in this
container — nobody has seen it render), and see 020-apple-game-center-sign-in.md for the
platform sign-in setup steps this task’s spec asked to have written out.
Non-goals
- Apple Game Center’s and Google Play Games’ actual platform setup — server-architecture/011
(Play Games, already
needs-inputon Kris’s Play Console steps) and the new server-architecture/020 (Game Center) carry those. - Steam — stays “speced only” exactly as
010-accounts-plan.mdalready had it; no work landed on it here, matching Kris’s own “placeholder for now” framing. - Email verification / self-service password reset — server-architecture/017’s territory, untouched.
View source in repository · also available as raw markdown.