This opponent uses the same approach as
corintho-ai: Monte Carlo tree search with a neural policy and value network trained in the AlphaZero style.
Inference runs in your browser with ONNX Runtime inside a Web Worker, so the UI stays responsive. If the model fails to load, the game falls back to random legal moves.
Move notation in History matches the C++ reference in corintho-ai (Move::operator<< in
move.cpp): places are B|C|A + file + rank (rank 4 is the top row); moves are
[file][rank][L|R|U|D] for the source square and direction.