---
id: server-architecture/021
title: Single-identity accounts + unified account screen
epic: server-architecture
state: done
priority: 1
blocked_by: []
estimate: L
created: 2026-08-28
updated: 2026-08-31
claimed_by: null
claimed_at: null
delivers: []
review_artifact: land-of-lor/docs/handoff/historic/021-single-identity-accounts.md
---

Built straight from Kris's 2026-08-28 voice spec. Two parts:

1. **Model change** — drop guest accounts and "attach later / link several identities"
   entirely. Every account is created with exactly one auth identity (email+password,
   Google Play Games, or Apple Game Center), one-to-one, forever. No device-link codes.
   See the "Accounts & auth — one identity per account (2026-08-28)" decision in
   `../overview.md`, which supersedes `../historic/010-accounts-plan.md`.
2. **UI change** — collapse the title/signin/signup/account screens into one wrapper
   component (`account_flow.gd`) driven by two booleans (signed in? / if not, signing up
   or in?), plus a batch of concrete screen fixes: drop link-code UI, X-to-close instead
   of Back, a game-name field on signup, a real rotating 3D character preview, a trimmed
   signed-in panel, a subtle sign-out/toggle link, and dropping "Account" from the
   in-game menu (reachable via Main Menu → title → Account instead).

Definition of done: director schema/protocol/handlers updated and tested
(`game/director`, embedded-Postgres `npm test`), client screens rebuilt and headless
parse-checked (`game/world`), live droplet deploy (backup, wipe `accounts` per Kris's
call — pre-launch test data — migrate, restart, verify), new web build + APK, and a
build handoff written to `land-of-lor/docs/handoff/historic/021-single-identity-accounts.md`
following the 019/020 handoff shape.

Full plan: `/home/krisrandall/.claude/plans/fixing-up-the-accounts-luminous-dijkstra.md`
(local to the session that wrote it — the handoff doc is the durable record).