Skip to content

Scriblle test submisison#7

Closed
salauddin-ee wants to merge 28 commits into
everest-engineering:mainfrom
salauddin-ee:scriblle-test
Closed

Scriblle test submisison#7
salauddin-ee wants to merge 28 commits into
everest-engineering:mainfrom
salauddin-ee:scriblle-test

Conversation

@salauddin-ee
Copy link
Copy Markdown
Member

@salauddin-ee salauddin-ee commented May 29, 2026

Summary

Contributor

salauddinn added 28 commits May 29, 2026 16:53
- Add Spec Kit artifacts (constitution, templates, workflows, extensions)
- Add opencode command definitions for speckit workflow
- Enable auto-commit for all before/after phase hooks
- Annotate AGENTS.md with SPECKIT integration markers
- Quantify timing (US3: 'a few seconds' -> '3 seconds')
- Specify exact error messages for FR-003/FR-004/FR-010
- Expand FR-008 with polling lifecycle and error resilience
- Add FR-014 for case-insensitive code matching + trimming
- Remove out-of-scope 'completed' status from entity description
- Add code audit table to tasks.md documenting pre-existing scaffold
- Add 2 new tasks for whitespace trimming and schema-level validation
- Renumber tasks (T014-T015 added, subsequent shifted to T016-T025)
…d word isolation

- Expand STARTER_WORDS from 5 to 24 words (T001)
- Add Round, RoundSnapshot, RoundStatus types with currentRound on Room (T002)
- Implement deterministic selectWord(roomCode, wordList) via char-code-sum modulo (T003)
- Extend startGame() to create Round, assign host as drawer, re-validate names, reject empty word list (T004)
- Update toRoomSnapshot() to filter secretWord per viewer — undefined for non-drawer (T005)
- Update POST /rooms/:code/start to pass participantId for word filtering (T006)
- Add RoundSnapshot type and currentRound to frontend RoomSnapshot (T008)
- Update GamePage: drawer sees word/role badge, guessers see GuessForm/placeholder (T009)
- Verify word isolation via curl API tests — secretWord absent for guesser (T010)
- Add manual-test/manual-test-phase2.md with 10 test scenarios (T014)
- Fix TS build error: cast STARTER_WORDS as readonly string[] for length check
…on, scoring, and manual tests

- Canvas drawing (POST /draw, saveStrokes/clearCanvas, Canvas.tsx component)
- Guess submission (POST /guess, submitGuess, Zod validation, client-side error display)
- Guess history (ResultPanel with correct guess highlighting)
- Scoring (+100 on correct, Scoreboard sorted descending, correct-guesser input lockout)
- Manual test document with 13 tests covering all user stories
LobbyPage's useEffect cleanup calls stopPolling() on unmount,
but GamePage never called startPolling(), leaving guessers
without any updates via polling. Drawers still saw their own
strokes because drawStroke updates state directly from POST
response, but guessers rely entirely on polling.
…ontracts, timerDuration on Room, timerStartedAt in Round, timer check in draw path
…estart

- Add 'result' to RoomStatus, timerStartedAt on Round, timerDuration/cumulativeScores on Room/RoomSnapshot
- Implement checkRoundEnd() for all-guessers-correct and timer expiry detection
- Transition to result state via saveRoom() and getRoom() for immediate + poll-based detection
- Expose secretWord to all viewers in result state, include cumulativeScores in snapshots
- Add POST /:code/restart route with Zod validation, host-only authorization, score merge
- Create ResultView component with correct word, combined scores, guess history, read-only canvas, host-only restart button
- Update GamePage to render ResultView on result status and redirect to lobby on restart
- Add restartGame() to frontend api and roomStore
- Create manual-test-phase4.md with 7 test scenarios
- Expose timerDuration in RoomSnapshot and timerStartedAt in RoundSnapshot
- Create TimerDisplay component showing m:ss countdown, turns red at 30s
- Add timer to GamePage right sidebar in Player Info card
- Hide timer when timerDuration is 0 (disabled)
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.

2 participants