2026-10-17 01:58:58 +03:00
|
|
|
# Rematch and series: 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. **Spec**: requirements, design and tasks.
|
2026-10-17 02:00:44 +03:00
|
|
|
- [x] 2. **Series in live games**: `Series`, `SeriesGame`, `BackendGame.series` and `firstSeat()`, the first seat in
|
2026-10-17 01:58:58 +03:00
|
|
|
`createMancalaGame`; `series` and `firstSeat` in `ClientGame` and `GameEndMessage`, `series` in snapshots (with
|
|
|
|
|
the restore of old snapshots); unit and serialisation tests.
|
2026-10-17 02:03:16 +03:00
|
|
|
- [x] 3. **Rematch requests**: `RematchOffers`, the four channels, the timers on the `Scheduler`, ending requests on
|
2026-10-17 01:58:58 +03:00
|
|
|
`new_game`, `new_bot_game` and going offline, the bot accepting at once; unit tests.
|
2026-10-17 02:04:24 +03:00
|
|
|
- [x] 4. **Saving**: `seriesId` in `GameRecord`, migration `004_series`, the repository; integration tests.
|
2026-10-17 02:05:12 +03:00
|
|
|
- [x] 5. **Core**: channel names, types, `getSeriesScore`, texts in English and Turkish; unit tests.
|
2026-10-17 01:58:58 +03:00
|
|
|
- [ ] 6. **Web app, rematch**: the game page following `on_game_start` (`key={gameId}`), the game over card's rematch
|
|
|
|
|
states, "Play again" as a rematch, the score in two columns.
|
|
|
|
|
- [ ] 7. **Web app, series strip**: `SeriesStrip`, the series score on the game over card, spectators.
|
|
|
|
|
- [ ] 8. **End to end and docs**: the Chrome tests from `design.md`; `AGENTS.md` (the specs list, rematch notes),
|
|
|
|
|
`TODO.md` (the out of scope items; remove "A rematch button" from Web redesign), the web redesign design's note
|
|
|
|
|
on the rematch button.
|