- each logged-out player gets a random fantasy name (Bold Dwarf, Lucky
Elf...) stored in localStorage; click the name badge to set your own
- NPC dialog is now multi-line, advanced with E/tap (the patrons have
flavor to share); movement freezes while a dialog is open
- NPC idle bustle holds still under prefers-reduced-motion
- verified: random name badge, 3-line dwarf dialog advancing then closing
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- backend: in-memory public presence lobby — POST/GET /agents/presence
(id,name,x,y,dir,frame,sheet; 6s TTL; POST returns other live players)
- RpgTavern: broadcast my position ~600ms, render other visitors'
chibi avatars (smooth-interpolated) with name labels, depth-sorted;
a '👥 N in the tavern' counter
- verified: two browsers each show the other's named avatar walking, both
report 2 online
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Per user pivot — the home is now an actual Pokemon-style 2D RPG, not a
static illustration. src/RpgTavern.jsx: canvas top-down tavern (LPC tiles
+ 64px chibi character sheets), a controllable player (arrows/WASD + an
on-screen dpad/A button on phones) with 4-dir walk animation and tile
collision, depth-sorted NPCs, and proximity interactions — walk up to the
barkeep (sign in / Legion), elf host (tour), roster board (Browse), banner
(Legion) or estate door (Mansion) and press E; patrons have flavor dialog.
Verified: movement, collision, prompt, and E->opens-feature all work.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>