mancala/docs/specs/rematch/tasks.md
Halit Aksoy aa68f04b28 feat(frontend): offer a rematch on the game over card
The card asks for a rematch, shows a request from the opponent with
Rematch and No, waits with Cancel and says why a request ended. The game
page follows the next game, keyed by its id so it starts afresh. Play
again against the bot is a rematch. The score is two columns, each name
above its stones, the winner's stones stronger.
2026-10-17 02:09:22 +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.