nerdware/apps/web/src
AyoubBenziza 0619c02cdf feat(quiz): image_reveal format (progressive blur) end-to-end
Server:
- quiz-round handles image_reveal like a text-answer format (tolerant match
  on acceptedAnswers), exposing imageUrl in the round payload; degressive
  scoring comes for free from the existing speed bonus (earlier = blurrier =
  more points)
- repo includes image_reveal in the pool (requires imageUrl + acceptedAnswers)
- back-office: image upload (@fastify/multipart) saved to UPLOADS_DIR and
  served statically on /uploads (@fastify/static); create supports image_reveal
- env: UPLOADS_DIR; gitignore uploads/

Client:
- admin form: "Image à deviner" — upload + preview + accepted answers
- in-game: ImageReveal shows the image with a time-cadenced decreasing blur
  (synced via server timestamps) + text input; reveal shows the clear image
  and the answer

shared: QuizQuestionPayload.imageUrl

Verified against real server+DB: upload (url), static serve (200), create
(201), validation (400).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 21:41:34 +02:00
..
assets feat(web): victory sound on the end screen (drop-in) 2026-06-10 21:17:25 +02:00
components feat(quiz): image_reveal format (progressive blur) end-to-end 2026-06-10 21:41:34 +02:00
lib feat(quiz): image_reveal format (progressive blur) end-to-end 2026-06-10 21:41:34 +02:00
pages feat(quiz): image_reveal format (progressive blur) end-to-end 2026-06-10 21:41:34 +02:00
store feat: end-of-game track recap, no self-vote in who_added, festive home + icons 2026-06-10 16:04:14 +02:00
types feat(blindtest): YouTube blindtest mode with neutral DJ + synced playback 2026-06-10 13:02:28 +02:00
App.tsx feat(admin): manual quiz back-office + rewrite README 2026-06-10 16:43:19 +02:00
main.tsx feat(admin): manual quiz back-office + rewrite README 2026-06-10 16:43:19 +02:00