feat: profile page character display, persistent auth, cleanup

- Large animated sprite on BotProfilePage with tier-aware rendering
- Dynamic status titles (UNSTOPPABLE, ON FIRE, FRESH MEAT, etc.)
- Nostr auth persisted to localStorage — survives navigation and HMR
- Remove grotesque close-up overlays (eyeballs, tongues, teeth, drool)
- Remove crowd cheering signs (too small to look good)
- Add archetype to bot stats API response
- SpritePreview now accepts tier prop

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-07 08:21:20 +00:00
co-authored by Claude Opus 4.6
parent e49735002c
commit 4a35e1e0b5
5 changed files with 81 additions and 307 deletions
+3
View File
@@ -99,6 +99,7 @@ botsRouter.get('/', async (c) => {
bestStreak: schema.bots.bestStreak,
tier: schema.bots.tier,
isActive: schema.bots.isActive,
archetype: schema.bots.archetype,
createdAt: schema.bots.createdAt,
}).from(schema.bots).orderBy(schema.bots.eloRating)
@@ -119,6 +120,7 @@ botsRouter.get('/:name', async (c) => {
bestStreak: schema.bots.bestStreak,
tier: schema.bots.tier,
isActive: schema.bots.isActive,
archetype: schema.bots.archetype,
createdAt: schema.bots.createdAt,
}).from(schema.bots).where(eq(sql`LOWER(${schema.bots.name})`, name.toLowerCase())).limit(1)
@@ -144,6 +146,7 @@ botsRouter.get('/:name/stats', async (c) => {
bestStreak: schema.bots.bestStreak,
tier: schema.bots.tier,
isActive: schema.bots.isActive,
archetype: schema.bots.archetype,
createdAt: schema.bots.createdAt,
}).from(schema.bots).where(eq(sql`LOWER(${schema.bots.name})`, name.toLowerCase())).limit(1)