Skip to content

Scibble Assignment#150

Open
everest-vetta wants to merge 12 commits into
everest-engineering:mainfrom
everest-vetta:008-result-restart-validation
Open

Scibble Assignment#150
everest-vetta wants to merge 12 commits into
everest-engineering:mainfrom
everest-vetta:008-result-restart-validation

Conversation

@everest-vetta

@everest-vetta everest-vetta commented Jul 6, 2026

Copy link
Copy Markdown

Summary

Contributor

- Add host tracking on room creation (isHost on Participant, hostId on Room)
- Display Host badge on lobby, game screen, and scoreboard
- Reject empty/invalid room codes with clear error message on join
- Add client-side and server-side validation for room codes
- Add Spec Kit infrastructure (extensions, scripts, templates)
- Add feature specs for 001-host-tracking and 002-join-validation
- All spec artifacts for feature 002 generated (spec, plan, tasks, research, data-model, contracts, quickstart)
- Implementation already complete from earlier work
- Added 2 isolation tests proving rooms are fully independent
- Each room has its own participants; joining one room never affects another
- All 11 backend tests / 2 frontend tests passing
Feature 004: Auto lobby polling every 2s with auto-navigate to game
on status change and to home on 404.
Feature 005: Host-only Start Game button with 2-player minimum.
Uses hostId from backend RoomSnapshot for robust host identification.
- Player name validation: trim on both pages, reject empty names with
  inline errors, validate on backend via Zod trim().min(1)
- Game start endpoint (POST /:code/start) transitions room to drawing,
  assigns host as round-1 drawer, selects word via (round-1) % words.length
- Secret word visible only to drawer via toRoomSnapshot viewer filtering
  (viewerParticipantId === currentDrawerId)
- GamePage shows round number, Drawer badge, Drawing/Guessing status,
  and secret word to drawer only
- Fix race condition: setRoomSnapshot now guards against stale poll
  responses by comparing currentRound before overwriting
…d next word

- Interactive drawing canvas (single black pen, HTML Canvas API)
- Guess submission with frontend+backend validation (trim, reject empty, case-insensitive compare)
- Scoring: only first correct guesser earns 100pts, subsequent get 0
- per-guess pointsAwarded field for accurate display (not cumulative score)
- Clear Canvas button (drawer only, resets strokes)
- Next Word button (drawer only, advances round preserving cumulative scores)
- Auto-polling on game page with 404 redirect
- Comprehensive spec/docs for all gameplay interaction features
Add result room status showing correct word, final scores, and guess
history after drawer ends the game. Add host-only restart returning
everyone to lobby with participants preserved and all round state
cleared. Fix toRoomSnapshot to expose secretWord to all players
in result state. Add FR-008 status guards to canvas/nextWord
endpoints.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant