feat(m4): player self-service & game data #9
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/m4-player-self-service"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
M4 — Player self-service & game data (functional pass)
Implements M4 of
docs/android/PLAN.md§6.3–§6.4: the signed-in player surface. Functional Kotlin pass only — placeholder Compose UI; the design pass is M5. No backend/API change — the app is a pure consumer of the existing bearer-gated/auth/me/*and/player/shard/*surfaces (the §8 prerequisites, already landed), so no Swagger regeneration.What's in it
Account self-service over the role-agnostic
/auth/me/account*(§6.4) — reworks the M3AccountScreenstub into full self-service:has_password.data:QR is base64-decoded to a bitmap in-app) / disable-by-code.ApiResultinto a section-scoped, localized banner.Game-account linking (§6.3) — the in-game
[linkone-time code (POST /player/shard/link) plus hybrid signup (POST /player/shard/account, shown only when the publicgameAccountSignupflag is set), and the linked-accounts list.Own game data, text-only (§6.3):
CharacterSheet.jsx).503) — or not-found (403) — without blocking the rest (§7).Menu gains three PLAYER-access groups (My Characters / Vendors / Houses) revealed only when the session role is
player; aPlayerGatesends a signed-out or server-side-demoted user home.DTOs + the Retrofit interfaces are hand-authored + spec-aligned (as recorded for M1).
Tests (17 new, all green)
Account + player-shard DTO decode (hex serials, permissive objects, equipment mods) and the character-sheet title/skill display helpers (parity with
CharacterSheet.jsx#displayTitles).Verification
./gradlew lint test assembleDebugpasses locally.AI-assisted: authored with Claude Code (Opus). AI-authored commit carries a
Co-Authored-By: Claudetrailer per org policy.🤖 Generated with Claude Code