Skip to content

Releases: tmcarmichael/nxtchess

v0.2.0-alpha

08 Feb 08:33

Choose a tag to compare

v0.2.0-alpha Pre-release
Pre-release

Second alpha of NxtChess.

Major feature release adding competitive play, four game modes, a full user system, and production infrastructure.

Try NxtChess live:
https://nxtchess.up.railway.app

New Game Modes

  • Analysis mode with multi-line engine evaluation (MultiPV), FEN/PGN import, move history navigation
  • Puzzle mode with mate-in-1/2/3 tactics, ELO-rated difficulty tracking, setup move animation, and
    puzzle history
  • Training mode with endgame practice, Stockfish evaluation, move quality feedback
    (best/excellent/good/inaccuracy/mistake/blunder), and scoring

Competitive & Multiplayer

  • Multiplayer lobby with real-time game browser via WebSocket, filtered by time control
    (Bullet/Blitz/Rapid/Classical)
  • ELO rating system for multiplayer and puzzles separately, K-factor 40 for new players scaling to 32
  • Rating history with profile charts and time range selector
  • Achievements with 51 badges across 6 categories (loyalty, streaks, rating, chess moments, volume,
    fun), 5 rarity tiers, toast notifications, and profile showcase

User System

  • OAuth sign-in via Google, GitHub, and Discord
  • Profile pages with rating history charts, recent games, win/loss/draw stats, achievement showcase with
    collapsible categories
  • Profile icons with chess piece selection tied to rating level
  • Username setup with first sign-in flow and validation

UI/UX

  • PlayHub redesign as unified hub for AI games, multiplayer creation, and lobby browsing
  • Board interactions including right-click drag arrow annotations, castling via rook square, premove
    support, pre-move x-ray
  • Sound effects for moves, check, illegal move, game end, low time warning with settings toggle
  • Light/dark theme with persistent selection
  • Mobile polish with touch drag-and-drop, responsive board sizing, mobile-specific feedback fixes
  • Floating pieces hero animation with gravitational spread on landing page

Technical

  • Observability with Prometheus metrics, Loki log aggregation, Grafana dashboards (PLG stack)
  • CI/CD via GitHub Actions for frontend and backend
  • Testing with frontend unit tests (Vitest) and backend Go tests
  • Database migrations using golang-migrate embedded in Go binary (5 migrations)
  • Backend hardening with token bucket rate limiting, security headers, connection limiting (5/IP),
    structured logging, graceful shutdown
  • Adaptive engine with runtime detection loading multi-threaded 69MB or single-threaded 7MB Stockfish
    based on device capability
  • PWA with offline-first IndexedDB persistence, Workbox caching, app shortcuts

Bug Fixes

  • Multiplayer move sync, timer bounce, and self-join race conditions
  • Engine UCI race conditions with separate eval and AI workers
  • Double modal edge case (resign + game end simultaneously)
  • Mobile touch RequestAnimationFrame root cause fix
  • SSL SNI, CORS proxy, cross-origin cookie fixes
  • Material display calculation corrections

Known Limitations

  • Limited testing set of puzzles
  • No ELO range filtering in lobby
  • No post-game analysis with move classification
  • No opening explorer or Syzygy tablebases
  • No spaced repetition for puzzles

Contributing

Feel free to open an issue and collab.
just dev (with just and docker installed) for full stack local