Remove react-animated-numbers dependency which caused production-only crashes due to CommonJS/ESM interop issues with Vite's production bundler. Replace animated score displays with simple toLocaleString() formatting.
Also add missing +config.ts to disable SSR for the leaderboard page, fixing 307 redirect loop caused by SSR/prerender configuration mismatch.
Changes:
- Remove react-animated-numbers from package.json
- Add web/pages/leaderboard/+config.ts with ssr: false
- Replace AnimatedNumbers component with direct number formatting
- Simplify leaderboard score display (no animation, instant render)
The render dirty flag was being reset instead of accumulated, causing
the game to become stuck and unplayable in web builds. Changed from
assignment to bitwise OR to preserve all dirty state updates.
Also adds game layout component and updates Justfile to build frontend.
Enable prerendering to generate index.html during build while keeping SSR disabled for Emscripten/WASM compatibility. This allows static hosting platforms to serve the application correctly.
- Replace Mantine UI components with Tailwind CSS v4
- Migrate from static HTML to Vike-based SSR framework
- Disable SSR for game page (Emscripten requires browser environment)
- Simplify Emscripten loading to avoid hydration conflicts
- Remove Tailwind download logic from web.build.ts
- Add package manager lockfiles for reproducible builds
- Update .gitignore for node_modules and build artifacts