Skip to content

Releases: chesskit-app/chesskit-swift

ChessKit 0.5.0

14 Apr 15:17
1b1fc96
Compare
Choose a tag to compare
ChessKit 0.5.0 Pre-release
Pre-release

Improvements

  • PGN parsing now supports tag pairs (for example [Event "Name"]) located at the top of the PGN format, see Issue #8.

Bug Fixes

  • Fix issue where king is allowed to castle in check, see Issue #11.

Breaking Changes

  • Remove color parameter from Move.init(san:color:position:) initializer.
    • It was not being used, can be removed from any initializer call where it was included.
    • The new initializer is simply Move.init(san:position:).

Full Changelog: 0.4.0...0.5.0

ChessKit 0.4.0

13 Apr 22:14
58ed80d
Compare
Choose a tag to compare
ChessKit 0.4.0 Pre-release
Pre-release

Improvements

  • Board move calculation and validation performance has greatly increased.
    • Performance has improved by over 250x when simulating a full game using Board.
    • Underlying board representation has been replaced with much faster bitboard structures and algorithms.
  • Add CustomStringConvertible conformance to Board and Position to allow for printing chess board representations, useful for debugging.
  • Add ChessKitConfiguration with static configuration properties for the package.
    • Currently the only option is printMode to determine how pieces should be represented when printing Board and Position objects (see previous item).

Breaking Changes

  • EnPassant has been made an internal struct. It is used interally by Position and Board.

Deprecations

  • Position.toggleSideToMove() is now private and handled automatically when calling move(). The public-facing toggleSideToMove() has been deprecated.

Full Changelog: 0.3.2...0.4.0

ChessKit 0.3.2

02 Dec 20:46
9cbbd3c
Compare
Choose a tag to compare
ChessKit 0.3.2 Pre-release
Pre-release

Fixes

  • Made file and rank public properties of Square.

Full Changelog: 0.3.1...0.3.2

ChessKit 0.3.1

25 Nov 01:38
dc58a70
Compare
Choose a tag to compare
ChessKit 0.3.1 Pre-release
Pre-release

Improvements

  • Added CaseIterable conformance to several Piece and Square enums:
    • Piece.Color
    • Piece.Kind
    • Square.Color

Full Changelog: 0.3.0...0.3.1

ChessKit 0.3.0

21 Jun 20:08
0896b20
Compare
Choose a tag to compare
ChessKit 0.3.0 Pre-release
Pre-release

New Features

  • Add future(for:) and fullVariation(for:) methods to MoveTree.
    • future(for:) returns the future moves for a given index.
    • fullVariation(for:) returns the sum of history(for:) and future(for:).

Improvements

  • Simplify PGNElement to just contain a single .move case.
    • i.e. .whiteMove and blackMove have been removed and consolidated.

Fixes

  • Fix behavior of previousIndex(for:) and nextIndex(for:) in MoveTree.
    • Especially when the provided index is equal to .minimum.

Full Changelog: 0.2.0...0.3.0

ChessKit 0.2.0

31 May 18:29
d7f1618
Compare
Choose a tag to compare
ChessKit 0.2.0 Pre-release
Pre-release

Added

  • MoveTree and MoveTree.Index objects to track move turns and variations.

    • Game.moves is now a MoveTree object instead of [Int: MovePair]
    • MoveTree.Index includes piece color and variation so it can be used to directly identify any single move within a game
    • Use the properties and functions of MoveTree to retrieve moves within the tree as needed
  • make(move:index:) and make(moves:index:) with ability to make moves on Game with SAN strings for convenience

    • For example: game.make(moves: ["e4", "e5"])
  • PGNParser.convert(game:) now returns the PGN string for a given game, including variations.

    • Note: PGNParser.parse(pgn:) still does not work with variations, this is coming in a future update.
  • Game.positions is now public

    • Contains a dictionary of all positions in the game by MoveTree.Index, including variations

Removed

  • Game.annotateMove
    • Modify Move.assessment and Move.comment directly instead
  • MovePair
    • Use Move in conjuction with MoveTree.Index to track move indicies
  • color parameter from SANParser.parse()
    • The color is now obtained from the sideToMove in the provided position

Full Changelog: 0.1.2...0.2.0

ChessKit 0.1.2

11 May 13:18
7a9661f
Compare
Choose a tag to compare
ChessKit 0.1.2 Pre-release
Pre-release
  • Add documentation for all public members
  • Add default starting position for Game initializer
  • Add ability to annotate moves via Game

Full Changelog: 0.1.1...0.1.2

ChessKit 0.1.1

12 Apr 13:43
03600f5
Compare
Choose a tag to compare
ChessKit 0.1.1 Pre-release
Pre-release
  • Downgrade required Swift version to 5.7
    • Allows use with Xcode 14.2 on GitHub Actions

Full Changelog: 0.1.0...0.1.1

ChessKit 0.1.0

12 Apr 02:32
2b8c20c
Compare
Choose a tag to compare
ChessKit 0.1.0 Pre-release
Pre-release

Initial public release.

Main Features

  • Represent a chess board, pieces, etc in Swift code
  • Parse chess notation such as PGN, FEN, SAN, etc.

Full Changelog: https://github.com/chesskit-app/chesskit-swift/commits/0.1.0