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.
21 lines
1.6 KiB
Markdown
21 lines
1.6 KiB
Markdown
# 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.
|