Releases: dechristopher/octad
Octad v1.0.10
This release bumps the go version of the module to 1.19 and upgrades the svgo
dependency.
Octad v1.0.9
This release fixes a small issue with PGN encoding in which spaces were missing after each move number.
Before:
1.d2 a3 2.d3+ Kc3 3.c2 a2+ 4.Kxa2 b3+
Fixed:
1. d2 a3 2. d3+ Kc3 3. c2 a2+ 4. Kxa2 b3+
Octad v1.0.8
This release fixes a small issue with game outcome and outcome method state propagation when calling UndoMove
. If the last move resulted in a change to outcome and outcome method, the UndoMove
call was not rolling them back to NoOutcome
and NoMethod
respectively.
This is an important fix to allow engines to properly search the move tree.
Octad v1.0.7
This release cleans up some chess-oriented rules to make them more suitable for Octad.
- Seventy-five and fifty move rules have been removed.
- Twenty-five move rule has been added leading to automatic draws. This is more realistic for Octad.
- Fivefold repetition has been removed and threefold repetition draws have become automatic.
Octad v1.0.6
This release adds a new function UndoMove()
to the Game type. It can be used to undo the last move that was played. This is useful for analysis, move take-backs, and engine search.
Octad v1.0.5
This release fixes #1 causing invalid move capabilities for knights on the A3 square. It was caused by an incorrect bitboard being pre-calculated for knight moves on the A3 square. The old bitboard was uint16 16946
and the new one is 16898
where the LSB is the D4 square. This is illustrated below:
16946:
0 0 1 0
N 0 1 1 <- two invalid destination squares
0 0 1 0
0 1 0 0
16898:
0 0 1 0
N 0 0 0 <- all better
0 0 1 0
0 1 0 0
Octad v1.0.4
This release fixes a bug introduced in f40294a causing black to not lose close pawn castling rights when the B pawn was moved. This results in spontaneous creation of a pawn on C4 when the king is able to close pawn castle with a nonexistent pawn on B4.
Octad v1.0.3
This release fixes a regression caused by the attempted castling fix in the 1.0.2 version. King position squares weren't being updated properly after far pawn castling resulting in funky move generation allowing for the king to capture defended pieces or even move beside the opposing king.
Octad v1.0.2
This release contains a fix to a bug that was making far pawn castling impossible to do over UOI notation. The library was treating far pawn castling and Kc1 as white or Kb4 as black as the same move. Far pawn castling should have been recognized under the hood as Kd1 as white or Ka4 as black. With this fix, far pawn castling will work properly and the integrated engine will be able to perform more accurate move depth calculations since we weren't losing bunches of far pawn castling possibilities.
Octad v1.0.1
This release adds two new convenience functions to the Position
type.
func (p *Position) InCheck() bool
- returns whether or not a king is in check in the current position
func (p *Position) CheckSquare() Square
- returns the square containing the checked king, if any