mancala/docs/specs/game-clock/tasks.md
Halit Aksoy cb34c03246 docs: add game clock spec
Each player has 5 minutes; the server keeps the time and a scheduled service ends games whose running clock reaches zero. Replaces the offline turn and inactivity rules.
2026-10-16 01:23:32 +03:00

1.6 KiB

Game clock: tasks

Work through the tasks in order; each ends with its tests passing and a commit. Tick a task when it is committed.

  • 1. Core types and helpers: GameClock, CLOCK_LOW_TIME_MS, the new optional fields on Game, GameEndMessage, MoveRecord and FinishedGameSummary; getClockTimes, ClockSync, getClockAtMove, formatClock with unit tests; English timeout texts.
  • 2. Clock in the game lifecycle: GameClock.ts, GAME_CLOCK_MS, clock and moveRemainingMs on BackendGame, start, charging moves, refusing late moves, stopping the clock on every ending, clock and serverTime in client messages; unit tests.
  • 3. Scheduled service: endGamesOutOfTime, GameClockScheduler wired in index.ts; remove checkTimeouts, the 10-second timer, offlineSince, TURN_TIMEOUT_MS and INACTIVE_TIMEOUT_MS; unit tests.
  • 4. Restore and saving: snapshot version 2 and restore of versions 1 and 2, remainingMs and clockInitialMs in game records, migration 002_clock and the repository; unit and integration tests.
  • 5. Web app, live game: useGameClock, GameClockView, clocks in GamePage on desktop and mobile layouts; remove the offline countdown.
  • 6. Web app, replay: clocks in ReplayView from getClockAtMove.
  • 7. Mobile app: clocks in GameScreen; type check and bundle.
  • 8. End to end and docs: Chrome tests from design.md; README, AGENTS.md and TODO.md (release the mobile update before or with the backend; the out of scope items); mark game-history R3.3 and R3.4 as replaced.