nerdware/apps/server
AyoubBenziza 6251146c19 feat: replay from lobby, contributor mislead card, editable track cards
Return to lobby (replay without recreating the room):
- lobby:return (host): reset to lobby, scores to 0, keep players + tracks
- client: end screen has "Rejouer" (host) + "Quitter"; store clears transient
  game state whenever the room goes back to lobby

Contributor has nothing to input:
- round:start carries a private `mine: true` to the contributor only (via
  RoundStart.secretPlayerId targeted emit); they're excluded from eligible
  voters. Client shows a "fais-les se tromper" card instead of the vote form.

Editable track submission:
- submitTrack ack returns trackId + youtubeId; new blindtest:removeTrack
- lobby shows submitted tracks as cards (YouTube thumbnail + title) with delete

Verified e2e (3 players): add/remove, private mine flag, return-to-lobby reset.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 15:13:54 +02:00
..
drizzle feat(server): Drizzle + PostgreSQL schema + Open Trivia DB seed 2026-06-10 12:24:17 +02:00
src feat: replay from lobby, contributor mislead card, editable track cards 2026-06-10 15:13:54 +02:00
.env.example feat(server): Drizzle + PostgreSQL schema + Open Trivia DB seed 2026-06-10 12:24:17 +02:00
drizzle.config.ts feat(server): Drizzle + PostgreSQL schema + Open Trivia DB seed 2026-06-10 12:24:17 +02:00
eslint.config.js feat(shared,server): scaffold @nerdware/shared types + Fastify/Socket.IO server 2026-06-08 14:55:52 +02:00
package.json feat(server): Drizzle + PostgreSQL schema + Open Trivia DB seed 2026-06-10 12:24:17 +02:00
tsconfig.json feat(shared,server): scaffold @nerdware/shared types + Fastify/Socket.IO server 2026-06-08 14:55:52 +02:00