Skip to content

Releases: echecsjs/game

v2.0.2

09 Apr 17:21
bbf7591

Choose a tag to compare

Changed

  • removed misleading keywords (fen, board-game)
  • added threefold-repetition and draw-detection keywords

v2.0.1

09 Apr 16:54
aa8d676

Choose a tag to compare

Fixed

  • Corrected README to match 2.0.0 API: removed nonexistent Game.fromFen() and
    game.fen(), documented new Game(position) constructor, fixed undo() /
    redo() return types (void, not this), fixed Move.promotion signature,
    removed MoveInput from exports listing.
  • Updated AGENTS.md to reflect single runtime dependency (@echecs/position),
    removed nonexistent src/fen.ts, added missing test files, removed stale
    references to isAttacked / applyMoveToState, updated naming convention
    examples.
  • Changed package.json keyword from no-dependencies to
    minimal-dependencies.

v2.0.0

08 Apr 22:42
192df25

Choose a tag to compare

Changed

  • BREAKING: upgraded to @echecs/position v3. Color values are now
    'white'/'black' (was 'w'/'b'). PieceType values are now full words
    ('pawn', 'knight', 'bishop', 'rook', 'queen', 'king') instead of
    single letters.
  • BREAKING: CastlingRights shape is now
    { white: { king, queen }, black: { king, queen } } (was
    { wK, wQ, bK, bQ }).
  • BREAKING: PromotionPieceType uses full words ('queen', 'rook',
    'bishop', 'knight') instead of single letters.
  • BREAKING: constructor now accepts an optional Position argument instead
    of always starting from the initial position. new Game() still defaults to
    the starting position; new Game(position) starts from any Position.
  • BREAKING: MoveInput type merged into Move with optional promotion.
    Game.move() now takes Move directly.
  • Rewrote move generation to use position.reach() for pseudo-legal targets and
    position.derive() + isCheck for legality filtering. Removed all 0x88
    internal board manipulation.
  • @echecs/fen moved from runtime dependency to devDependency. FEN
    parsing/serialization is no longer part of the public API.

Added

  • Local Move and PromotionPieceType types (removed from @echecs/position
    v3).
  • Re-exported STARTING_POSITION, EnPassantSquare, and SideCastlingRights
    from @echecs/position.
  • Full game playthrough test (81-move Fischer-Spassky 1972 Game 6) via
    @echecs/san.
  • Zobrist hash consistency tests (move/undo cycles, transpositions).
  • Regression edge-case tests ported from chess.js.

Removed

  • BREAKING: Game.fromFen() static method — construct a Position and pass
    it to new Game(position) instead.
  • BREAKING: game.fen() method — use @echecs/fen directly with
    game.position().
  • BREAKING: isAttacked() method — removed from Game. Position v3 no
    longer exposes attack queries.

v1.1.0

15 Mar 19:25
b8c19a2

Choose a tag to compare

Added

  • Game.isAttacked(square, color) — returns true if any piece of color
    attacks square. Matches chess.js semantics: pinned pieces still attack, own
    pieces count as attacked squares, no X-ray, same square returns false.

v1.0.0

15 Mar 18:22
6426bf9

Choose a tag to compare

Changed

  • First stable release. No API changes from 0.1.1.