Release: Quarkus backend, Keycloak login, game history, clock, bot, tutorial and rematch #3

Merged
jhalitaksoy merged 88 commits from develop into main 2026-10-17 03:23:38 +03:00
Showing only changes of commit e81e0e0841 - Show all commits

12
TODO.md
View File

@ -83,12 +83,16 @@ See `docs/specs/web-redesign`.
- [ ] Validate moves before running them instead of treating every invalid move as a crash: each one writes a - [ ] Validate moves before running them instead of treating every invalid move as a crash: each one writes a
file to `crashes/` and is broadcast to the players (`GameManager.onGameError`) file to `crashes/` and is broadcast to the players (`GameManager.onGameError`)
## Game rules
- [ ] Decide who gets the remaining stones when a move empties the opponent's side (e.g. a capture takes their last
stones). Now the player whose side is empty always gets the other side's stones (`GRClearBoardAtEnd`), even
when the opponent emptied it; some Mangala rules give them only to a player who emptied their own side.
Analyse the rule first, then decide
## Bugs ## Bugs
- [ ] `PitAnimator.animatePit`: `previousPitIndex > 0` should be `>= 0`; a one-stone move from pit 0 does not
empty that pit during the animation
- [ ] `PitAnimator.dispose` removes a newly bound function, so the theme listener is never removed - [ ] `PitAnimator.dispose` removes a newly bound function, so the theme listener is never removed
- [ ] Sowing puts stones into the opponent's store; check against the intended Mangala rules and add a test
- [ ] `onGameError` broadcasts an `Error`, which serializes to `{}` - [ ] `onGameError` broadcasts an `Error`, which serializes to `{}`
## Maintenance ## Maintenance
@ -96,7 +100,7 @@ See `docs/specs/web-redesign`.
- [ ] The web and mobile apps duplicate components and stores; move shared code into `packages/core` - [ ] The web and mobile apps duplicate components and stores; move shared code into `packages/core`
- [ ] Mixed lockfiles: `packages/*` and `apps/mobile` have both `yarn.lock` and `package-lock.json` - [ ] Mixed lockfiles: `packages/*` and `apps/mobile` have both `yarn.lock` and `package-lock.json`
- [ ] Align TypeScript and Jest versions across packages - [ ] Align TypeScript and Jest versions across packages
- [ ] Tests for `MatchMaker` and `PitAnimator` - [ ] Tests for `MatchMaker`; `PitAnimator` is only tested for the first frame of a move
- [ ] CI that runs the tests - [ ] CI that runs the tests
- [ ] Pre-existing type errors: 4 in the frontend, 11 in mobile; the frontend has no `tsconfig.json`, so nothing - [ ] Pre-existing type errors: 4 in the frontend, 11 in mobile; the frontend has no `tsconfig.json`, so nothing
type-checks it type-checks it