Skip to content

v0.4.0

Choose a tag to compare

@KizioTech KizioTech released this 04 Nov 07:37
· 24 commits to main since this release

ChessForge v0.4.0 — The Loop Complete

The first stable release of ChessForge, a personal chess-improvement desktop app. v1.0.0 closes the full training loop: import your games → analyse with Stockfish → detect your mistakes → generate exercises → review them on a spaced-repetition schedule.

Highlights

  • Game Library: import PGN files or pasted text, with SHA-256 fingerprinting so re-importing never creates duplicates.
  • Stockfish 19 Lite (WebAssembly): runs in a dedicated Web Worker with MultiPV 3 candidate lines. Evaluations are stored White-relative, with engine name, version, depth and MultiPV recorded for every analysis.
  • Move classification: inaccuracies, mistakes and blunders are graded by win-percentage loss (ADR 0003) and shown inline in the notation (?!, ?, ??), with a clickable evaluation graph.
  • Mistake isolation: only your mistakes feed your statistics and exercise queue. Opponent mistakes are filtered out.
  • Exercise generation: up to 3 exercises per game, taken from positions that are still undecided (10–90% win probability) and have a clear best move. Exercises are labelled Attack, Defence or Avoid the blunder.
  • Spaced repetition: a modified SM-2 scheduler (initial ease 2.50, minimum 1.30, 60-day interval ceiling, mastery after 5 consecutive Good/Easy grades).
  • Solving Desk: interactive board with two-step hints, a warning if you replay your original blunder, solution reveal, "bad exercise" flagging, and suggested SM-2 grades.
  • Review Queue: due, active and mastered exercises in one place.
  • Data sovereignty: export your games as PGN, or everything (games, mistakes, exercises, schedules, attempts) as JSON.
  • Settings: four themes (Forge Dark, Midnight Blue, Forest Green, Classic Slate), engine, analysis and training preferences.
  • Desktop shell: Electron with contextIsolation on, nodeIntegration off and a strict Content Security Policy.

Fixes and hardening included in this release

  • Removed the silent fallback in StockfishEngine. Engine start-up failures and timeouts now throw instead of returning fake results. The heuristic engine is for tests only.
  • Exercise scoring now uses the win-probability function, which handles mate scores correctly, and enforces the single-solution cutoff.
  • Side to move is derived from the FEN, so games from custom starting positions classify correctly.
  • Engine provenance label corrected from 16-wasm to 19-lite-wasm.
  • Added a strict CSP, favicon and app logo. Packaged Electron now allows worker file access.

Database

Five Supabase migrations (supabase/migrations/), all with row-level security enabled in the same migration that creates the table: profiles, games and platform_accounts, moves_count, game_analyses and positions, then mistakes, training_exercises, review_schedule, exercise_attempts and training_sessions.

Getting started

Requires Node.js 20+ and npm.

git clone https://github.com/KizioTech/ChessForge.git
cd ChessForge
git checkout v1.0.0
cp .env.example .env     # add your Supabase URL and publishable (anon) key
npm install
npm run dev              # development
# or
npm run build && npm start   # run the built app

Quality

  • 46 unit tests (Vitest) and 4 Playwright end-to-end smoke tests; CI runs typecheck, unit tests, build and e2e on every push and pull request to main.

Known limitations

  • No pre-built installers are attached to this release; build and run from source as above.
  • Supabase is required for sign-in and cloud sync. Offline use falls back to LocalStorage caching.
  • Weakness diagnosis, aggregated metrics and opening/endgame profiles are Phase 5 and not part of this release.

Licence

Bundled Stockfish and Chessground are GPL-3.0; see docs/licences.md.

Full changelog: [CHANGELOG.md](https://github.com/KizioTech/ChessForge/blob/main/CHANGELOG.md)