Skip to content

Changelog

All notable changes to CheckAI are documented here. The format follows Keep a Changelog and the project adheres to Semantic Versioning.

[0.8.0] — 2026-06-12

Added

  • Animated terminal CLI — A new terminal experience built on crossterm + indicatif (animated boards, evaluation bar, live search spinners/progress bars) that is TTY-gated and degrades to clean plain text when piped, with --no-color, or with NO_COLOR
  • play vs the built-in enginecheckai play now plays against the engine, streaming a live animated search and announcing each move with its evaluation, via --vs <engine|human>, --color <white|black|random>, --level <1-10>, --movetime, --depth, --fen, --ascii, and --flip; in-game commands gain hint, undo, and fen
  • watch command — Engine-vs-engine showcase, with --level / --level-white / --level-black, plus --delay, --max-moves, --movetime, and --ascii
  • analyze command — Analyze a FEN (--fen) or annotate a whole game (--moves) with a live animated iterative-deepening display, then print the best move, evaluation, mate distance, depth/nodes/time, and principal variation (--depth, --movetime)
  • bench command — Run the fixed engine benchmark suite, reporting nodes, time, and nodes-per-second (--depth, --movetime)
  • perft command — Verify move generation with perft node counts (DEPTH, --fen, --divide)
  • uci command — Run as a UCI engine on stdin/stdout for chess GUIs and match runners; UCI output is intentionally not internationalized
  • Global --no-color flag — Added to every command (alongside --lang); honors NO_COLOR too
  • FEN position loadingGame::from_fen, Board::from_piece_placement, and CastlingRights::from_fen parse and validate full FEN strings for play, analyze, and perft
  • Completed 8-language i18n — Localized all CLI strings, including the engine labels and the play, watch, analyze, bench, and perft flows, across all eight bundled languages
  • Community health filesCONTRIBUTING.md, SECURITY.md, a pull-request template, and structured GitHub issue forms replacing the previous Markdown templates

Changed

  • play now defaults to playing vs the engine — Running checkai play with no flags starts a game against the engine (level 5) instead of a two-player game; use --vs human for the previous behavior
  • Search engine overhaul — Full Static Exchange Evaluation, transposition-table aging with depth-preferred replacement and quiescence integration, in-tree hard time/node limits via the SearchLimits / IterationInfo / search_limited contract with per-iteration progress reporting (consumed by the live CLI displays and UCI info), mate-distance pruning, reverse futility pruning, adaptive null-move pruning with verification, table-driven Late Move Reductions, Late Move Pruning, Internal Iterative Reduction, check extensions, a corrected counter-move heuristic, gravity-style history with maluses, and a stronger quiescence search (check evasions, delta and SEE pruning)
  • Evaluation — Added pawn-structure terms (passed, doubled, isolated, backward, connected pawns), king-safety penalties (open files, weakened pawn shield), per-piece mobility, and a tempo bonus on top of the tapered piece-square tables and bishop-pair / rook-file bonuses
  • Animated CLI welcome screen — Animated welcome screen and terminal banner, now listing the new commands
  • Version metadata — Bumped Rust crate, WASM crate, npm package, web UI, desktop app, OpenAPI metadata, and VitePress version label to 0.8.0

[0.7.0] — 2026-05-13

Added

  • Engine test coverage — perft suites for the starting position (depths 1–3, depth-4 #[ignore]-gated) and the Kiwipete benchmark (depths 1–2, depth-3 #[ignore]-gated); mate-in-one verification through the full search; transposition-table reuse test across consecutive iterative-deepening runs
  • Evaluation test coverage — colour-mirror symmetry (starting position and asymmetric material imbalance), tapered-evaluation phase verification, and bishop-pair bonus delta
  • REST archive documentation — Documented GET /api/archive, GET /api/archive/stats, GET /api/archive/{game_id}, and GET /api/archive/{game_id}/replay in docs/api/rest.md with request/response shapes and error codes
  • Desktop packaging smoke test in CI — The desktop CI job now runs bun run pack on Ubuntu to validate the full electron-builder pipeline end-to-end on every push

Changed

  • Version metadata — Bumped Rust crate, WASM crate, npm package, web UI, desktop app, and VitePress version label to 0.7.0

[0.6.0] — 2026-03-09

Added

  • Electron desktop app — Added a dedicated Svelte-based Electron renderer alongside the web UI
    • Includes persistent desktop sessions, native file/folder pickers, local backend launch controls, inline logs, and a multi-view workspace shell
    • Packaged desktop builds can check GitHub Releases for updates, download them, and install on restart
  • Native desktop installers — Release automation now publishes platform-native Electron installers in addition to updater-compatible artifacts
    • Linux releases include .deb alongside AppImage
    • macOS releases include .dmg alongside updater-compatible .zip
    • Windows releases include .msi alongside NSIS for in-app update compatibility
  • Desktop CI and release automation — GitHub Actions now validate the Electron app on Ubuntu, macOS, and Windows and publish desktop release assets with dependency review coverage

Changed

  • Version metadata — Updated project/package version references, install snippets, OpenAPI metadata, and documentation to align with the 0.6.0 desktop release

[0.5.2] — 2026-03-07

Fixed

  • Web analysis UI contract drift — Fixed the TypeScript analysis client so it now uses the real /api/analysis/* endpoints and renders job status / summary data instead of assuming a live search telemetry payload
  • Frontend API typing alignment — Synced the web UI's TypeScript models with the Rust API contract, including position_history, move/action responses, and explicit analysis job/result types
  • Documentation and version metadata — Updated OpenAPI metadata, installation snippets, and docs so the published documentation matches current server behavior

Added

  • Regression coverage — Added tests for move-quality threshold boundaries and GameStateJson position-history export consistency

[0.5.1] — 2026-03-06

Fixed

  • Bun/WASM package contents — Fixed the published @josunlp/checkai package so release tarballs include the compiled WebAssembly binary instead of only the generated glue JavaScript
    • Added a prepack safeguard to verify generated pkg/ artifacts before Bun packaging / publishing
    • Removed the generated pkg/.gitignore during packaging so pkg/checkai.js and pkg/checkai_bg.wasm are no longer filtered out
    • Added explicit npm subpath exports for the raw generated artifacts: @josunlp/checkai/raw and @josunlp/checkai/wasm

[0.5.0] — 2026-03-05

Added

  • WebAssembly (WASM) build — The core chess engine compiled to WebAssembly via wasm-pack
    • New wasm/ crate with #[path] re-exports of core engine modules — zero code duplication
    • WASM-compatible search using web-time crate, js-sys for timestamps and IDs
  • npm package (@josunlp/checkai) published to GitHub Packages
    • Node.js CLI tool installable via npm install -g @josunlp/checkai
    • JavaScript/ESM library API via import { engine } from "@josunlp/checkai"
  • Full feature parity in WASM:
    • Position analysis: legalMoves, evaluate, bestMove, makeMove, check/mate/stalemate detection
    • Game management: createGame, gameSubmitMove, gameProcessAction, history, FEN export
    • Export: PGN, JSON, text formatting
    • Board display: boardToAscii
  • Node.js CLI commands: fen, moves, eval, search, move, board, play, game, export, version
  • Release workflow: New wasm job builds WASM and publishes to GitHub Packages

[0.4.0] — 2026-03-05

Added

  • Modern TypeScript Web UI — Complete modular rewrite with @bquery/bquery v1.4, Tailwind CSS v4, and Vite v7
    • 12 modular TypeScript source files with reactive signal-driven architecture
    • SVG chess board with click selection, legal move indicators, check highlight, board flip
    • Analysis panel with real-time polling and score formatting (including mate detection)
    • Promotion dialog, FEN/PGN toolbar tools, WebSocket indicator with auto-reconnect
    • Vite-built SPA embedded into the Rust binary via dual rust-embed (DistAssets + WebAssets fallback)
  • FEN/PGN API endpoints
    • GET /api/games/{id}/fen — Export full 6-field FEN
    • POST /api/games/fen — Create game from FEN string
    • GET /api/games/{id}/pgn — Export PGN with Seven Tag Roster
  • King safety evaluation — Pawn shield, open file penalties, enemy piece tropism
  • Piece mobility evaluation — Per-phase square counts for knights, bishops, rooks, queens
  • Static Exchange Evaluation (SEE) — Filters bad captures at low depth
  • Futility pruning — Skips quiet moves when static eval is far below alpha
  • Build script (build.rs) — Ensures web/dist/ exists at compile time so rust-embed works without a prior web build
  • Bun as frontend package manager (replaces Node.js/npm)

Changed

  • rust-embed uses include-exclude feature to exclude TS source from legacy embed
  • VitePress documentation updated for all new features

Fixed

  • Promotion dialog not showing piece symbols (read wrong data- attribute)
  • CI compile error when web/dist/ missing — added build.rs to ensure the directory exists
  • Clippy warnings: collapsed nested ifs, RangeInclusive::contains

[0.3.1] — 2026-03-02

Added

  • VitePress documentation site — Complete project documentation built with VitePress and deployed to GitHub Pages
    • Guide: Getting Started, CLI Commands, Docker, Configuration, Web UI, Analysis Engine, Opening Book, Tablebases, Architecture, i18n
    • API Reference: REST API, WebSocket API, Analysis API with full endpoint docs and code samples
    • Agent Protocol: Overview, Game State, Move Output, Chess Rules (FIDE 2023), Special Actions, Examples
    • Local search, edit-on-GitHub links, dark mode
  • GitHub Actions workflow (docs.yml) — Auto-deploys docs to GitHub Pages on every release

[0.3.0] — 2026-03-02

Added

  • Deep game analysis engine — Asynchronous analysis of complete games with a minimum search depth of 30 plies
    • Alpha-beta search with PVS/Negascout, transposition table (configurable, default 64 MB), null-move pruning, late move reductions, killer/history heuristics, quiescence search
    • PeSTO-style position evaluation with midgame/endgame piece-square tables, pawn structure analysis, bishop pair bonus
    • Move quality classification: Best, Excellent (≤10 cp), Good (≤25 cp), Inaccuracy (≤50 cp), Mistake (≤100 cp), Blunder (>100 cp)
    • Per-move centipawn loss, principal variation, accuracy percentages per side
    • Zobrist hashing with compile-time key generation
  • Opening book support — Polyglot .bin format reader with binary search lookups
  • Endgame tablebase support — Syzygy tablebase interface with analytical probing for common endgames (KvK, KRvK, KQvK, etc.)
  • Analysis REST API at /api/analysis/* — Architecturally isolated from player-facing endpoints
    • POST /api/analysis/game/{id} — Submit game for async analysis
    • GET /api/analysis/jobs — List all analysis jobs
    • GET /api/analysis/jobs/{id} — Get job status and results
    • DELETE /api/analysis/jobs/{id} — Cancel or delete a job
  • Docker support — Multi-stage Dockerfile, docker-compose.yml with volume mounts
  • Docker image CI — Release workflow builds and pushes Docker images to GHCR with semver tags
  • CLI flags for analysis: --book-path, --tablebase-path, --analysis-depth, --tt-size-mb

[0.2.2] — 2026-03-01

Fixed

  • Draw offer logic: offers now persist correctly after the offerer makes a move
  • AGENT.md example 15: corrected en_passant field from null to "e3" after 1. e4

Added

  • 37 comprehensive unit tests covering all critical chess engine edge cases

[0.2.1] — 2026-03-01

Fixed

  • Web UI now embedded into the binary via rust-embed, eliminating the need for an external web/ directory
  • Removed actix-files dependency in favor of rust-embed

[0.2.0] — 2026-03-01

Added

  • Full internationalization (i18n) for all user-facing strings (8 languages)
  • CI/CD pipelines for GitHub Actions
  • Cross-platform install and uninstall scripts
  • Automatic update check on startup
  • checkai update command for self-updating

Changed

  • All source code comments translated to English
  • Web UI default language changed from German to English

[0.1.0] — 2025-02-28

Added

  • Complete chess engine with full FIDE 2023 rules support
  • REST API for AI agents
  • WebSocket API with real-time event broadcasting
  • Swagger/OpenAPI documentation
  • Terminal interface with colored board display
  • Game export in text, PGN, and JSON formats
  • Game archiving with zstd compression
  • Web UI for browser-based game viewing

Released under the MIT License.