- FunStats: award badges from the recap data — 🎯 Sans-faute, 🧠 Le cerveau
(most correct), 🦹 Roi de la tromperie (blindtest decoy points), 🪨 Le boulet
(0 correct). Shown with player avatars.
- "Copier les résultats" button: copies ranking + per-round answers to clipboard
- avatars next to each player in the round-by-round recap
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- per round, answers sorted by points (then correct first)
- the local player's line is bolded with "(toi)"
- per-round "✓ X" badge showing how many got it right
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- shared: RoundRecap gains answers[] (RoundPlayerAnswer: text + correct)
- server: quiz/blindtest recap() build per-player answers (choice text / free
text / blindtest guess formatted by mode), with correctness
- client: recap lists each player's answer per round, green/red by correctness,
with their points when they scored
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- shared: RoundRecap (+ scorers); game:end carries recap[]
- server: GameRound.recap(ctx) per mode (quiz: prompt + correct answer +
image; blindtest: "title — artist" + addedBy + links); engine accumulates a
history per round (with that round's scorers from the score deltas) and sends
it at game:end
- client: GameEndView shows a collapsible "Récapitulatif des manches" — each
round's label, answer, media thumbnail (image/youtube) and who scored
- engine test dummy round implements recap
Verified e2e: game:end recap lists every round with answer + scorers.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>