mancala/docs/specs/rematch/tasks.md
Halit Aksoy dbaa1d2492 feat(backend): let players ask for a rematch
RematchOffers keeps an offer open for ten minutes after a game nobody
left. A request goes to the opponent; when both have asked the next game
of the series starts with the other player moving first. Requests end on
no, withdrawal, a minute without answer, going offline or looking for
another game. The bot accepts at once.
2026-10-17 02:03:16 +03:00

1.4 KiB

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.

  • 1. Spec: requirements, design and tasks.
  • 2. Series in live games: Series, SeriesGame, BackendGame.series and firstSeat(), the first seat in createMancalaGame; series and firstSeat in ClientGame and GameEndMessage, series in snapshots (with the restore of old snapshots); unit and serialisation tests.
  • 3. Rematch requests: RematchOffers, the four channels, the timers on the Scheduler, ending requests on new_game, new_bot_game and going offline, the bot accepting at once; unit tests.
  • 4. Saving: seriesId in GameRecord, migration 004_series, the repository; integration tests.
  • 5. Core: channel names, types, getSeriesScore, texts in English and Turkish; unit tests.
  • 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.