Repository navigation
Releases: Trickfest/SwiftChessDemo
Release list
SwiftChessDemo 1.5.0
What's new
- Adjust the selected piece set from 50–100% with the gameplay Preferences panel's Piece size slider, in both Human vs Engine and Engine vs Engine modes.
- Each set remembers its own size during the current game. Default restores only the selected set; a new game starts with the bundled defaults.
- Changes apply to stationary, moving, dragged, and promotion artwork without changing the position, board geometry, or engine session.
Dependencies and validation
Build with the sibling SwiftChessTools 1.3.0 checkout or later. Sibling path dependencies are retained. The validated Stockfish source is the 1.12.0 baseline with documentation follow-ups at 4e8e4239; the resolved ArasanEmbedded dependency remains 1.3.0.
The complete local demo gate passed: 77 app-hosted unit tests, the generic iOS Release build and bundled-network checks, and 27 simulator UI tests. Additional iPad slider coverage passed. Physical iPhone, iPad, and Mac visual validation was accepted on October 3, 2026. The release build was rebuilt and verified as version 1.5.0 before publication.
This is a source-only release. Developers still initialize the ignored NNUE asset in the sibling StockfishEmbedded checkout before building. Distribution of the Stockfish-linked app must comply with GPLv3; see THIRD_PARTY.md.
SwiftChessDemo 1.4.0
What changed
- Replaces the Stockfish Xcode subproject and bridging header with the local StockfishEmbedded 1.12.0 Swift package product.
- Copies the verified Stockfish NNUE network into the app bundle, so people running the built demo do not download it separately.
- Suspends and resumes Stockfish between Arasan turns, retaining the loaded network and restoring fast 250 ms engine-vs-engine pacing.
Validation
The complete local SwiftChessDemo gate passed: app-hosted tests, a generic iOS Release build with the expected NNUE file verified in the app bundle, and 26 simulator UI tests. Human-versus-engine and engine-versus-engine checks also passed on physical iPad, iPhone, and Mac.
This is a source-only release. Developers still download the NNUE file into the sibling StockfishEmbedded checkout before building. The linked Stockfish engine is GPL-3.0; see THIRD_PARTY.md.
SwiftChessDemo 1.3.2
What’s changed
- Updates the shared Xcode scheme for Xcode 27 and validates the demo with the corresponding StockfishEmbedded project-settings update.
- Keeps the SwiftChessTools 1.2.1 outside-coordinate layout fix from v1.3.1.
- Tested with SwiftChessTools 1.2.1, ArasanEmbedded 1.3.0, and StockfishEmbedded 1.10.0 source plus commit 21660426. The complete local gate passed: 72 unit tests, 26 simulator UI tests, and the generic iOS Release build.
This is a source-only demo release. The app links GPL-licensed Stockfish; see the repository licensing documentation before distribution.
SwiftChessDemo 1.3.1
What’s fixed
- Picks up SwiftChessTools 1.2.1, preventing an initial piece shift with outside board coordinates and keeping last-move highlights aligned.
- Retains the existing None, Inside, and Outside coordinate choices; Inside remains the default.
- Validated against SwiftChessTools 1.2.1, StockfishEmbedded 1.10.0, and ArasanEmbedded 1.3.0. The complete local gate passed: 72 app-hosted unit tests, 26 simulator UI tests, and the generic iOS Release build.
This is a source-only demo release. The app links GPL-licensed Stockfish; see the repository licensing documentation before distribution.
SwiftChessDemo 1.3.0
What’s new
- Adds an in-game coordinate-label menu with None, Inside, and Outside choices.
- Preserves Inside as the default for existing behavior.
- Demonstrates SwiftChessTools 1.2.0 external-coordinate support in a complete app.
- Includes focused unit and UI coverage for all three modes.
- Validated against SwiftChessTools 1.2.0, StockfishEmbedded 1.10.0, and ArasanEmbedded 1.3.0.
This is a source-only demo release. The app links GPL-licensed Stockfish; see the repository licensing documentation before distribution.
SwiftChessDemo 1.2.4
SwiftChessDemo 1.2.4 updates the demo to ArasanEmbedded 1.3.0, which incorporates upstream Arasan's fix for invalid late-move-reduction std::clamp bounds.
Changed
- Updated the remote Arasan dependency to ArasanEmbedded 1.3.0 at commit
85137005. - Updated the embedded Arasan source to upstream commit
d507b7ccand thearasanv8-20260906.nnuenetwork through that package release. - Kept the lock-protected blocking transport test fixture explicitly nonisolated for Xcode 27's stricter default-main-actor checking.
- Bumped the app and validation version to 1.2.4.
Validation
- All 71 app-hosted unit and integration tests passed.
- All 26 simulator UI tests passed, including the six-ply Arasan-versus-Arasan regression using ArasanEmbedded 1.3.0.
- The generic iOS Release build passed with marketing version 1.2.4.
This is a source-only release with no binary assets. Distribution of an app linked with StockfishEmbedded must comply with GPLv3.
SwiftChessDemo 1.2.3
SwiftChessDemo 1.2.3 validates the app against StockfishEmbedded 1.10.0, which refreshes the embedded engine to Stockfish 19 plus twelve subsequent upstream commits.
Changed
- Updated the source-level sibling integration to StockfishEmbedded 1.10.0 and its new
nn-1a298aa575a0.nnuenetwork. - Kept the remote ArasanEmbedded dependency at the existing 1.2.0 release while the newer Arasan snapshot remains under review.
- Updated the test-only suggestion-arrow diagnostic to match ChessUI's intentional exclusion of decorative arrows from the VoiceOver navigation tree.
- Bumped the app and validation version to 1.2.3.
Validation
- All 71 app-hosted unit and integration tests passed.
- All 26 simulator UI tests passed, including the six-ply Arasan-versus-Arasan regression using released ArasanEmbedded 1.2.0.
- The generic iOS Release build passed with marketing version 1.2.3.
- A live simulator smoke completed
e4 e5 Nf3 Nf6with StockfishEmbedded 1.10.0.
This is a source-only release with no binary assets. Distribution of an app linked with StockfishEmbedded must comply with GPLv3.
SwiftChessDemo 1.2.2
SwiftChessDemo 1.2.2 makes physical-device signing portable across Apple Developer accounts while keeping the public Xcode project account-neutral.
Changed
- Removed Apple Developer Team settings from the shared Xcode project.
- Added a tracked signing configuration with an ignored per-builder override for the developer Team ID and unique bundle-identifier prefix.
- Documented device-signing setup for individual and organizational Apple Developer memberships.
- Added validation guards that prevent account-specific signing settings from returning to tracked project files.
Validation
- All 71 app-hosted unit and integration tests passed.
- All 26 simulator UI tests passed.
- The generic iOS Release build passed with marketing version 1.2.2.
- A locally configured generic-device Release build completed with a valid code signature.
- The public-checkout configuration built and passed its headless tests without a local signing override.
This is a source-only release with no binary assets. Distribution of an app linked with StockfishEmbedded must comply with GPLv3.
SwiftChessDemo 1.2.1
SwiftChessDemo 1.2.1 updates the demo to use ArasanEmbedded 1.2.0 and validates the complete source integration against StockfishEmbedded 1.9.0 and SwiftChessTools 1.1.0.
Fixed
- App-hosted Arasan integration tests now wait for native engine teardown before XCTest exits, preventing process shutdown from racing Arasan NNUE evaluation and global C++ destruction.
Validation
- 71 simulator-hosted unit and integration tests passed.
- 26 simulator UI tests passed.
- The physical iPad Pro M4 Arasan-versus-Arasan test completed six live plies.
- Generic iOS Release and Debug simulator builds passed.
- GitHub Actions were not run; workspace policy treats hosted CI as optional.
This is a source-only release with no binary assets.
SwiftChessDemo 1.2.0
SwiftChessDemo 1.2.0 strengthens both embedded-engine integrations, improves accessibility and game-state behavior, and adds new light, dark, and tinted app icons.
Highlights
- Unifies Stockfish and Arasan behind a shared embedded-engine lifecycle with ordered UCI output, readiness barriers, analysis replacement, and off-main native teardown.
- Updates the public ArasanEmbedded dependency to 1.1.0, fixing the physical-device startup termination while preserving the vendored engine's upstream initialization.
- Retains game identity, history, repetition state, and draw claims through ChessUI position rendering.
- Retries an outstanding opponent turn after recovery from an engine failure.
- Hardens extreme move-time, MultiPV, deterministic-suggestion, and test-delay inputs.
- Improves VoiceOver announcements and modal behavior, accessibility-size layouts, setup scrolling, engine-demo controls, and resignation behavior.
- Disables iPad multiwindow creation to match the one-active-instance boundary of each embedded engine.
- Adds deterministic engine-session coverage, direct board-to-view-model UI coverage, and a live six-ply Arasan-versus-Arasan regression test.
- Makes GitHub-hosted checks optional and manual-only while adding a comprehensive local validation script.
Tested dependency set
- SwiftChessTools
v1.1.0 - StockfishEmbedded
v1.8.0 - ArasanEmbedded
v1.1.0atcb726e374e6f7c6c3f4986ea9a2564acd9fa8ae3
Arasan was resolved from its public GitHub package URL with no mirror or local package override. SwiftChessTools and StockfishEmbedded remain sibling source checkouts by design.
Validation
- All 71 app-hosted unit and integration tests passed.
- Generic iOS Release build passed and reported version 1.2.0 with multiwindow disabled.
- All 26 simulator UI tests passed.
- On an iPad Pro M4 running iPadOS 26.5.2, a signed build completed six live Arasan-versus-Arasan plies without termination.
- On the same physical iPad, a separate live game accepted
e2-e4and observed Stockfish's reply.
This is a source-only release. No app or binary artifacts are attached. Distribution of an app linked with StockfishEmbedded must comply with Stockfish's GPLv3 requirements.
See CHANGELOG.md for the complete list of changes.