Skip to content

Releases: TexablePlum/Checkers

v0.4.0 — Contract coverage for REST, WebSocket and JSON payloads

Choose a tag to compare

@TexablePlum TexablePlum released this 06 Jul 13:06
a327242

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-approved label) 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

Choose a tag to compare

@TexablePlum TexablePlum released this 06 Jul 09:57
c591805

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 a FinishedGameArchive port, with a paginated
    GET /api/v1/games/history endpoint; Redis stays the hot store for live games.
  • Versioned Redis documents (#4): schemaVersion on every persisted Game and
    QueueTicket, with evolution rules documented in checkers-contracts/redis/v1.
  • Hardened compose stack (#5): HTTP healthchecks with service_healthy dependencies 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

Choose a tag to compare

@TexablePlum TexablePlum released this 05 Jul 23:21
15a828c

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.v1 protobuf with Buf breaking-change checks,
    auth/v1 (JWT + blacklist protocol) and http/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

Choose a tag to compare

@TexablePlum TexablePlum released this 05 Jul 20:00

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.