Releases: Trickfest/SwiftChessTools
Releases · Trickfest/SwiftChessTools
SwiftChessTools 1.0.3
Changed
- Raised the Swift tools requirement to 6.2.
- Raised declared deployment targets to iOS/iPadOS 26+ and macOS 26+.
- Updated README and Swift Package Index metadata to match the package current supported toolchain and platform policy.
SwiftChessTools 1.0.2
Added
- Added a Swift Package Index manifest so SPI can generate hosted DocC documentation for ChessCore, ChessUI, and ChessUCI.
Changed
- Updated README installation guidance for direct public SwiftPM consumption at version 1.0.2.
SwiftChessTools 1.0.1
SwiftChessTools 1.0.1 adds a README reference to SwiftChessDemo, showing how SwiftChessTools combines with StockfishEmbedded in a realistic iOS chess app. GitHub Actions run 27890520284 passed for the release commit.
SwiftChessTools 1.0.0
Initial public release.
Added
- Added the
ChessUCIproduct with typed command formatting for UCI engine
input and typed parsing for UCI handshake, option, readiness, status,
bestmove, andinfooutput, including ponder moves, search metadata,
score bounds, MultiPV indexes, principal variations, refutations, current
lines, tablebase and Shredderbase hits, CPU load, and White-positive score
normalization helpers. - Added
Docs/ChessUCITutorial.mdand parser/formatter-heavyChessUCITests
coverage for engine commands, registration commands, position commands,
search limits, engine identification, option declarations, readiness/status
markers, best moves, promotions,(none),0000, officialinfofields,
centipawn and mate scores, malformed output, unknown lines, score
normalization, and public construction APIs. - Added
Docs/ChessUITutorial.mdas the public ChessUI walkthrough, covering
board model ownership, move callbacks, promotion handling, perspective,
highlights, read-only boards, piece and theme pickers, evaluation bars, move
lists, status display, accessibility, and ChessUI scope boundaries. - Added
ChessBoardMoveAttemptandChessBoardInteractionModeto make
ChessUI move callbacks and board interaction policy explicit before the
public release. - Added VoiceOver-oriented
ChessBoardViewsquare activation so assistive
interactions can select a source square, hear legal destinations, activate a
destination, and report the sameChessBoardMoveAttemptvalues as tap and
drag gestures. - Added
ChessGameStatusViewandChessGameStatusDisplayStateso apps can
render caller-suppliedGameStatusvalues and optional draw-claim actions
without moving game-state ownership into ChessUI. - Added
ChessBoardModel.showsCoordinateLabelsso apps can show or hide board
rank and file coordinate labels. - Added
ChessBoardArrow,ChessBoardArrowStyle, and
ChessBoardModel.arrowsso apps can render engine-independent board
annotations such as primary, secondary, tertiary, or custom move arrows. - Added selectable built-in ChessUI piece sets: Sashite Merida,
Art Deco Monochrome, Brutalist Monochrome, Origami Monochrome,
Circuit Board Monochrome, Blueprint Monochrome, and Sports Monochrome. - Added
ChessPieceSet.availableSetsso apps can query the bundled piece-set
registry at runtime. - Added selectable built-in ChessUI board themes: Classic Green, Warm Walnut,
Blue Study, Marble, Blueprint, Art Deco Monochrome, Circuit Board, and Sports
Court. - Added
ChessBoardTheme.availableThemesso apps can query the bundled board
theme registry at runtime. - Added
ChessPieceSetasset resolution coverage, per-piece-set ChessUI
snapshots, per-board-theme ChessUI snapshots, and ChessWorkbench UI coverage
for selecting each built-in set and theme. - Added
ChessEvaluation,ChessEvaluationBar, and normalized display-state
helpers so apps can render caller-supplied centipawn, mate, or unavailable
evaluation states without wiring an engine into ChessUI. - Added ChessUI evaluation-bar mapping tests and ChessWorkbench UI coverage for
evaluation samples, placement, orientation, White-side selection, label
visibility, and centipawn scale controls. - Added pure ChessUI accessibility helper tests for board-square labels, hints,
legal destination speech, captures, promotion choices, read-only boards,
interaction modes, and move-animation blocking. - Added
ChessMoveRecord,ChessMoveRecordBuilder, andChessMoveListView
so apps can render scrollable caller-supplied SAN move records without adding
PGN parsing or game-history ownership to ChessUI. - Added move-record builder tests, ChessUI move-list render coverage, and
ChessWorkbench UI coverage for move-list updates after legal board moves. - Added horizontal
ChessMoveListViewlayout support and ChessWorkbench
controls/tests for switching between vertical and horizontal move-list
presentations. - Added consumer-controlled
ChessMoveListViewscroll indicator visibility and
a ChessWorkbench toggle for showing or hiding move-list scroll bars. - Added
PGNSerializer,PGNGame,PGNTagPair,PGNResult,
PGNMoveRecord,PGNNumericAnnotationGlyph, and typed PGN parser/exporter
errors toChessCore. - Added validated mainline PGN parsing, multi-game database parsing,
FEN-backed PGN support, comment and NAG preservation, and deterministic PGN
export. - Added
PGNGame.finalStatus,finalOutcome, result/status consistency
helpers, and validatingPGNGameexport so manually constructed game records
must replay to their stored final position, final status, and result. - Added PGN coverage for Lichess-style comments, a Lichess CC0 sample, result
mismatches, malformed syntax, invalid SAN, FEN-backed games, castling,
promotion, underpromotion, en passant, disambiguation, and export round trips. - Expanded PGN coverage with a Lichess CC0 mini-corpus, deterministic generated
legal-game round trips, 10 long generated stress games, compact movetext and
escape-line tolerance, and additional SAN ambiguity fixtures. - Expanded the checked-in Lichess CC0 PGN corpus with 15 additional historic
standard games covering real-world external results, checkmates, castling,
promotions, and promoted-queen SAN disambiguation. - Expanded ChessCore rule-engine and game-state invariant coverage for pins,
single and double check, king exposure, castling restrictions, en passant,
promotion, stalemate, move counters, castling rights, game copies, and
board-only position counts. - Added
Docs/ChessCoreTestingStrategy.mdto document the ChessCore
correctness-corpus approach and current rule/game-state coverage boundaries. - Expanded the ChessCore rule-engine corpus with additional perft positions,
castling stress cases, pinned-piece fixtures, protected-piece captures,
promotion, en-passant, and simple endgame coverage. - Added deterministic FEN and SAN notation round-trip tests over generated legal
games plus targeted SAN ambiguity, en-passant check, and promotion-checkmate
fixtures. - Added
Docs/ChessCoreTutorial.mdandDocs/ChessCoreGlossary.mdas
ChessCore-only learning references for rules, notation, PGN, and terminology. - Added a
python-chesscoverage audit matrix to the ChessCore testing
strategy to guide future original Swift test expansion without adding a
dependency or copying GPL-licensed fixtures. - Expanded high-priority ChessCore audit coverage for legal move generation,
castling, en passant, SAN parsing, and PGN import/export edge cases, including
a 27-position perft corpus. - Added
GameStatus,GameOutcome,GameDrawReason,GameDrawClaim, and
GameRepetitionKeyso ChessCore consumers can inspect checkmate, stalemate,
insufficient material, dead positions, fifty/seventy-five-move rules, and
threefold/fivefold repetition state. - Added hardened GameStatus coverage for material edge cases, real-move draw
threshold transitions, halfmove resets, illegal en-passant repetition keys,
status precedence, and game-like knight repetitions. - Added
Game.replay(initialPosition:moves:),Game.reset(to:moveHistory:),
Game.claimDraw(_:),GameReplayError, andGameDrawClaimErrorso
consumers can rebuild game state from concrete moves, reuse game objects, and
model explicit fifty-move or threefold draw claims. - Added
PositionValidator,PositionValidationIssue,
PositionValidationError, andFENSerializer.validatedPosition(from:)for
strict semantic validation of syntactically parsed FEN positions. - Added
PositionValidationResult,FENValidationResult,
PositionValidator.validationResult(for:), and
FENSerializer.validationResult(for:)so callers can inspect FEN syntax and
semantic position diagnostics without using throwing control flow. - Added
Position.standard,Position.standardStartingFEN,Game(), and
Game.applyLegal(move:)as ergonomic ChessCore entry points for standard
games and safe app-boundary move application. - Added
Examples/ChessCoreRecipes, a ChessCore-only command-line example for
PGN import/export, FEN validation, status reporting, and safe move
application. - Added PGN result/status validation so terminal checkmate and automatic-draw
final positions reject incompatible PGN result markers during import and
export. - Added coverage for game replay/reset, explicit draw claims, semantic FEN
validation, PGN terminal result/status conflicts, and result-aware generated
PGN stress games. - Expanded ChessCore hardening coverage for PGN dialect imports, terminal
positions, semantic FEN validation, SAN stress cases, and a 40-position perft
corpus cross-checked with a temporarypython-chessoracle. - Added a second ChessCore hardening layer for multi-issue FEN semantic
validation, every-legal-move SAN stress round trips, automatic draw precedence
overlaps, checked insufficient-material positions, and generated game-status
invariants. - Added oracle-backed ChessCore hardening with a checked-in
python-chess
corpus covering 53 exact legal-move/status positions and 48 generated
move-count/status positions, generated legal-game mutation invariants, and an
expanded PGN dialect corpus for escaped tags, result boundary comments,
semicolon/empty comments, Lichess clock/eval/EMT fields, arrow/square
annotations, and repeated tags. - Added
DeadPositionAnalyzerplus ChessCore status/PGN coverage for material
dead positions, sealed immobile pawn-barrier dead positions, symmetry
invariants, false-positive guards, and dead-position result validation. - Expanded dead-position hardening with additional material-theory fixtures,
trapped-piece pawn-barrier fixtures, capture-based near-miss fixtures, and a
status/analyzer performance smoke test. - Added public parser error types for malformed input:
FENParsingError,SANParsingError, and `Move...