Releases: TexablePlum/Checkers
Releases · TexablePlum/Checkers
Release list
v0.4.0 — Contract coverage for REST, WebSocket and JSON payloads
The "Contract coverage" milestone (release PR #80): every platform boundary is now a versioned,
CI-enforced contract.
- ws/v1 STOMP contracts (#7): JSON Schemas for every server-to-client WebSocket payload, with
contract tests in game-service and matchmaking-service that fail when a DTO drifts from its schema. - OpenAPI snapshots with compatibility gates (#8): committed REST specs for the three services,
regenerated in CI with drift rejection and openapi-diff breaking-change detection - including an
escape hatch (openapi-breaking-approvedlabel) for deliberate spec corrections, exercised on its
first real catch (#81). - Full JSON contract validation (#9): auth test vectors and contract documents are now validated
against their schemas in CI, not just parsed. - English root README as a short index for the repository.
- Grouped weekly Dependabot updates with documented pins for lockstep toolchains
(Spring Cloud/Boot, grpcio/protobuf, JDK-pinned builder images).
Full changelog: v0.3.0...v0.4.0
v0.3.0 — Durable ELO, game history archive and a hardened stack
The "Reliability hardening" milestone (release PR #64): the backend stops losing data.
- Durable ELO reporting (#2): a Redis pending index with startup and periodic retry - a
user-service outage at game end no longer loses the rating update. - Persistent game history (#3): finished games are archived to a dedicated PostgreSQL
database (Flyway-managed) through aFinishedGameArchiveport, with a paginated
GET /api/v1/games/historyendpoint; Redis stays the hot store for live games. - Versioned Redis documents (#4):
schemaVersionon every persistedGameand
QueueTicket, with evolution rules documented incheckers-contracts/redis/v1. - Hardened compose stack (#5): HTTP healthchecks with
service_healthydependencies and
password-protected Redis across the board. - Complete edge rate limiting (#6): token buckets for the users and OAuth2 route families,
closing the last unlimited gateway routes.
Full changelog: v0.2.0...v0.3.0
v0.2.0 — Edge gateway, hardened auth and versioned contracts
The first release under the pull-request flow (release PR #20, 76 commits since v0.1.0).
- api-gateway (new): reactive Spring Cloud Gateway as the single public entry point - HTTP and
STOMP WebSocket routing, edge JWT validation with the shared access-token blacklist, per-route
Redis token-bucket rate limiting, exclusive CORS ownership, correlation ids and a private
management port. - matchmaking-service (new): ELO-based PvP queueing and pairing on its own Redis, wired to
game-service over gRPC. - Auth hardening: iss/aud-bound JWTs, refresh-token reuse detection, locked/deleted account
checks on refresh, Redis-backed logout blacklist enforced at the edge, per-service gRPC tokens
(including the Python engine). - Versioned platform contracts:
checkers.v1protobuf with Buf breaking-change checks,
auth/v1(JWT + blacklist protocol) andhttp/v1(ApiError) JSON contracts, all validated in CI. - CI/CD: full Java verification with 100% line and branch coverage gates for all four
services, Python engine tests, all five Docker image builds, full-history secret scanning,
Dependabot, fail-fast production secrets and non-root runtime images.
Full changelog: v0.1.0...v0.2.0
v0.1.0 — Playable checkers core
Tagged retroactively while introducing the release process (2026-07-05); the tagged commit is the
actual state from 2026-06-19.
The first complete, playable state of the backend:
- game-engine-service (Python, gRPC): all 8 draughts variants, move validation, AI search in a
killable process pool with a hard time budget. - user-service (Spring Boot): registration with email verification, JWT access/refresh auth,
Google/Facebook OAuth2, ELO ratings with idempotent result reporting, audit log. - game-service (Spring Boot): authoritative game lifecycle and state in Redis, PvP and vs-AI
games, chess clocks with server-side timeouts, abandonment detection, STOMP WebSocket push. - docker-compose stack wiring the services together.