Both clocks next to the players, counting down in server time with the same running and low-time styles as the web app. The game screen now handles on_game_end, so a game that ends on time ends on the phone too and says why.
22 lines
1.8 KiB
Markdown
22 lines
1.8 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.
|
|
|
|
- [x] 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.
|
|
- [x] 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.
|
|
- [x] 3. **Scheduled service**: `endGamesOutOfTime`, `GameClockScheduler` wired in `index.ts`; remove
|
|
`checkTimeouts`, the 10-second timer and the backend's `offlineSince`; unit tests.
|
|
- [x] 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.
|
|
- [x] 5. **Web app, live game**: `useGameClock`, `GameClockView`, clocks in `GamePage` on desktop and mobile
|
|
layouts; remove the offline countdown, and with it `TURN_TIMEOUT_MS`, `INACTIVE_TIMEOUT_MS`,
|
|
`UserConnectionInfo.offlineSince` and `OpponentOfflineCountdown` from core (the web app uses them until then).
|
|
- [x] 6. **Web app, replay**: clocks in `ReplayView` from `getClockAtMove`.
|
|
- [x] 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.
|