- Legal: /privacy-policy and /datadeletion (shared LegalPageLayout, footer
links, sitemap + integration tests, NEXT_PUBLIC_LEGAL_CONTACT_EMAIL).
- Threads OAuth: server-side /api/threads-exchange and /threads-callback
page (Suspense + client component, noindex, no leaked secrets).
- Username + live wallet pill in top nav. New NavWalletBalance component
polls /api/wallet, refreshes on tab focus, and listens to the
`wallet:refresh` event bus so cash-outs and refunds update the nav in
real time. Flash animation on balance changes.
- useLiveWalletBalance hook now broadcasts `wallet:refresh` after every
fetch so games, exchange panel, wallet actions, and nav all stay in
sync without extra polling.
- PvP fund-locking (`POST /api/games/rooms`): creator funds debited
atomically with room creation; ledger entry tagged with `gameRoomId`.
Joiner debit happens at join. Old double-debit of the creator is gone.
- DELETE /api/games/rooms?id=... lets a creator cancel a WAITING room
and get an idempotent refund. Coin Flip + Pong waiting screens show a
Cancel & Refund button.
- Pong/Coin Flip recovery: expiry sweep + boot-time `recoverOrphaned
RoomsOnBoot()` (runs before listen()) refund both parties for any
ACTIVE/expired rooms so a server restart never strands locked credits.
- Schema migration `20260520000000_game_ledger_links` adds optional
`gameSessionId` + `gameRoomId` FKs to LedgerEntry (with indexes) and
extra indexes on GameSession/GameRoom for resume + sweep queries.
- GET /api/games/active returns a user's active solo session + open
rooms (sanitized — no mine/bomb positions). Mines and Tower clients
rehydrate on mount so a refresh mid-round resumes instead of dropping.
- ActiveGamesBanner surfaces unfinished rounds on /wallet and /casino
with Resume / Rejoin / Cancel & refund actions.
- ExchangePanel unified with useLiveWalletBalance; per-game header gets
an "Open wallet →" chip; Dice clears stale result on roll; Blackjack
reveals full dealer hand on natural blackjack/push; Mines refund
label fixed; Tower final multiplier fixed; GameHistory error path;
Prediction "Resolved" tab.
- Site audit + redmeFIXES triage notes (REDME-FIXSES-TRIAGE.txt,
SITE-AUDIT.txt).
Co-authored-by: Cursor <cursoragent@cursor.com>