nerdware/apps/web
AyoubBenziza a9eb6098f2 feat(blindtest): contributor-as-DJ scoring, 3-player gate, 16:9 player + seek
- DJ is now the track's contributor (controls their own song); their identity
  is sent only to them so "who added" stays non-trivial. The contributor
  doesn't vote and is excluded from the eligible-voters count.
- Scoring: the contributor earns nothing except in who_added/mixed, where they
  get a misdirection bonus (50) per player who guesses the wrong adder.
- Blindtest (and mixed) require >= 3 connected players: lobby disables the
  options with a hint, and game:start rejects with NEED_THREE.
- Player card is now 16:9 and full width — the video banner shows at reveal;
  DJ gets a seek bar (current/duration) to jump anywhere, plus play/pause/restart.
- Mixed game order is shuffled (no predictable quiz/blindtest alternation).

Verified e2e (3 players): guard rejects at 2, DJ id hidden from others,
misdirection scoring correct. 23 tests pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 14:30:47 +02:00
..
src feat(blindtest): contributor-as-DJ scoring, 3-player gate, 16:9 player + seek 2026-06-10 14:30:47 +02:00
.env.example feat(server,web): first real-time cycle — room create/join + lobby 2026-06-08 15:16:26 +02:00
components.json feat: initial commit 2026-06-07 18:45:52 +02:00
eslint.config.js feat: initial commit 2026-06-07 18:45:52 +02:00
index.html feat: initial commit 2026-06-07 18:45:52 +02:00
package.json refactor(web): generate DiceBear avatars locally instead of via HTTP API 2026-06-09 10:58:23 +02:00
tsconfig.app.json refactor(web): generate DiceBear avatars locally instead of via HTTP API 2026-06-09 10:58:23 +02:00
tsconfig.json feat: initial commit 2026-06-07 18:45:52 +02:00
tsconfig.node.json feat: initial commit 2026-06-07 18:45:52 +02:00
vite.config.ts feat: initial commit 2026-06-07 18:45:52 +02:00