- Moved
FILES
andRANKS
fromchessops/util
tochessops/types
, renamed toFILE_NAMES
andRANK_NAMES
, and added correspondingFileName
andRankName
string literal types. - Also reject positions where a checker is aligned with the en passant square
and the king as
IllegalSetup.ImpossibleCheck
.
- Added
IllegalSetup.ImpossibleCheck
and will now reject setups with too many checkers or aligned sliding checkers. These positions are impossible to reach and Stockfish does not work properly on them. - Added
equals()
to most classes,Board.equalsIgnorePromoted()
, andPosition.equalsIgnoreMoves()
.
- Fixed
parseSan()
to properly interpret moves likebxc6
as a pawn capture instead of a bishop move. Lowercase piece letters are no longer accepted, e.g.,nf3
must beNf3
. - Fixed
Position.isLegal()
was not accepting the king-moves-two-squares encoding for castling castling moves.
- Fixed insufficient material with same-color bishops on both sides.
- Fixed
parseSan
with regard to pawn captures, promotions and some disambiguated moves.
- Added
parseSan
. - Added
chessgroundMove
compatibility. - Added
FILES
andRANKS
constants. - Fix spelling of export:
transfrom
->transform
. - Added
{MaterialSide,Material}.{fromBoard,add}()
. - Clamp move counters in FEN export for guaranteed reparsability.
- Reject promotions not on backrank.
- Micro-optimizations.
- Updated
chessgroundDests
for chessground 7.8 compatibility. - Added
chessgroundDests(pos, {chess960: true})
to generate only Chess960-style castling moves. - Renamed
scalachessId
toscalachessCharPair
.
- Removed
util.squareDist()
. - Further optimized initialization.
- Packaged source map.
- Performance optimizations, significantly faster initilization.
- Added
SquareSet.withoutFirst()
. - Bumped target to ES2016.
- Added
lichessVariantRules
compatibility.
- Renamed
Uci
toMove
,UciMove
toNormalMove
,UciDrop
toDropMove
, andisMove
toisNormal
. - Renamed
uciCharPair
toscalachessId
. - All
ctx
parameters are now optional. - Added
index
module with re-exports.
- Fixed alternative queenside castling moves (king moved by two squares instead of onto rook). These moves were not correctly classified, normalized or played.
- Added
compat
module for chessground and scalachess interoperability. - Added
Position.castlingSide()
. - Added
Position.normalizeMove()
. - Overloaded
parseSquare()
for known validSquareName
.
- Fixed castling paths in
Castles.default()
andChess.default()
, leading to illegal king moves.
- Fixed Racing Kings move generation with king near goal.
- Pawn drops in Crazyhouse reset
pos.halfmoves
.
- Fixed SAN of en passant captures.
- Optimize SAN disambiguation by adding a fast path for unambiguous moves.
- Renamed
san.makeVariationSan()
tosan.makeSanVariation()
. - Fixed SAN disambiguation on b and c file.
- Fixed check from a1.
- Fixed insufficient material with same-color bishops.
- Fixed Crazyhouse validation and limit pocket size.
- Fixed
Position.fromSetup()
entangles position with setup. - Made
Position.rules()
a read-only propertyPosition.rules
. - Removed
SquareSet.subsets()
. - Removed
utils.strRepeat()
. - Micro optimizations and misc non-functional tweaks.
- First release.