- lightweight, dependency-free i18n: typed fr/en dictionaries (fr is the source
of truth, en must match its shape → compile error on drift), I18nProvider +
useI18n hook, browser detection + localStorage persistence
- FR/EN language switcher (home + room header)
- translated the whole player-facing flow: home, join, pseudo, room shell,
lobby (incl. settings, categories, bots, track submission, history),
quiz, blindtest, player-cards, round transitions, end screen (podium, awards,
tracks, rounds recap), and server-error messages (mapped by code)
- history dates localized to the active language
Content (questions/categories) intentionally left as-is. Back-office (admin)
not translated yet — internal, token-gated tool.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- RoomPage animates between coarse phases (lobby ↔ game ↔ end) with a fade/
slide (AnimatePresence, mode wait). Keyed by phase, not status, so the
YouTube player survives in_round → reveal → scores.
- PlayerCards fires a small confetti burst when a player overtakes to take
the lead during the game.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- GameEndView: top-3 podium — 2nd left, champion center (taller), 3rd right,
with gold/silver/bronze pedestals, staggered rise-in (climax on the champion),
crown + pulsing gold glow kept on #1; ranks 4+ listed below
- bigger avatars where they read too small: lobby (size-7→11) and in-game
player cards (size-9→14, slightly wider cards)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Avatar component using DiceBear 9.x lorelei, seeded by the player name
(stable, recognizable across screens)
- shown in the lobby list, the in-game player cards (gold ring on leader),
and the final leaderboard (large on the winner, small on runners-up)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- voteAck now carries `voted` (playerIds who validated) — never their answer,
so no leak; the count/total stay for the progress text
- PlayerCards show a green "Prêt" check for players who answered and a
pulsing "en attente" dot for those who haven't, during in_round only
- score stays visible on the cards alongside the status
- engine test updated for the new voteAck shape
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Countdown: under 10s it ramps into a "bomb" — white→red color and an
escalating scale/wiggle pulse (faster & wider as it nears 0) via Framer Motion
- RoomCode: click-to-copy the room code with visual feedback
- PlayerCards: always-on score HUD during the game (cards per player,
animated reorder, crown on the leader) so scores are tracked continuously
instead of only appearing at reveal
- quiz view: drop the reveal-only scoreboard (now covered by PlayerCards)
- add framer-motion dependency
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>