- Rewrite /play page to use direct dynamic import inside useEffect
instead of next/dynamic (fixes BAILOUT_TO_CLIENT_SIDE_RENDERING)
- Fix Phaser 3.86 particle API: use direct property assignment
instead of setFrequency/setLifespan
- Add AI match detection and skip blockchain calls for AI opponents
- Pass NEXT_PUBLIC_* build args via Dockerfile/docker-compose
so the built client points to the correct API endpoint
- Remove obsolete PlayClient.tsx
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add match:requestAI server handler creating matches against bot
- AI commits and reveals automatically with random choices
- Frontend generates guest address when no MetaMask is detected
- AI matches skip blockchain calls (offline test mode)
- Add 'Jouer contre l\'IA' button in LobbyScene
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add /leaderboard page fetching data from server API
- Add /player/[address] dynamic page with match history
- Build and deploy updated rps-web container
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add WalletConnector React component with MetaMask integration
- Integrate header bar in RootLayout with wallet status
- Rebuild and redeploy rps-web container
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Update RPSArena.sol: move bet payment to commit() instead of createMatch()
- Fix Hardhat tests to match new contract API (7/7 passing)
- Deploy updated contract to local Hardhat node (0xe7f1725...)
- Add blockchain service (server) listening to contract events
- Create matches on-chain from server matchmaking handler
- Frontend calls contract directly for commit/reveal via MetaMask
- Add Prisma DB persistence for match results and player stats
- Copy ABI to shared package for frontend/server consumption
- Update deployment docs and architecture docs
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Simplify Dockerfiles to use single-stage pnpm install
- Add openssl to server Alpine image for Prisma
- Remove obsolete version from docker-compose.yml
- Fix Dockerfile.node copy paths for monorepo root context
- Add .dockerignore at monorepo root
- Create empty public dir for Next.js standalone build
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Use next/dynamic with ssr:false for Phaser game page
- Change tsconfig target to ES2022 for BigInt support
- Replace Phaser default imports with namespace imports
- Fix ArenaScene button logic using phase state machine
- Remove invalid add:false from Phaser graphics config
- Fix MatchState commitDeadline type
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Phase 0 foundation:
- Docker Compose with PostgreSQL, Redis, Hardhat node
- RPSArena.sol commit-reveal smart contract with tests
- Node.js + Socket.io server with matchmaking and match state machine
- Next.js + Phaser 3 frontend with Boot, Lobby, Arena, Result scenes
- Nginx Proxy Manager integration planned for jeu.cosmolan.fr
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>