Releases: Dash1971/maia-chess-android
Release list
Mobile Maia 2.1.2
Mobile Maia 2.1.2
Mobile Maia 2.1.2 is a distribution-compatibility and build-hardening
maintenance release. It contains the same application features and offline
behavior as Mobile Maia 2.1.1.
F-Droid compatibility
- Enable Android R8 release minification to remove Flutter's unused Play Core
deferred-component references from the APK. - Keep resource shrinking disabled and preserve ONNX Runtime classes and
members used through JNI and reflection. - Preserve the stable package, offline permission set, Maia model, universal
ARMv7/ARM64/x86_64 packaging, Stockfish engines, saved games, and Chessnut
state flows. - Validate the minified build with F-Droid's scanner, expanded host tests,
rooted ARM64 and x86_64 AOSP integration tests, saved-game upgrades, and
exact release-APK smoke tests.
Build integrity and reproducibility
- Verify the locked Stockfish 16 NNUE network by SHA-256 during every release
build and fail closed on an incomplete or changed download. - Build the canonical unsigned APK on GitHub Actions Linux and require a clean
independent Linux rebuild to match it byte-for-byte before signing. - Sign the exact verified Linux artifact locally without rebuilding it; the
developer signing key remains off CI and independent build hosts.
Upgrade notes
- Mobile Maia 2.1.2 is an in-place update for the stable package
com.dash1971.maia_chess; games and settings are preserved. - The APK remains universal for ARMv7, ARM64, and x86_64.
- Mobile Maia remains offline and requests no Internet permission.
Mobile Maia 2.1.1
Mobile Maia 2.1.1
Mobile Maia 2.1.1 is a maintenance release for reproducible distribution.
No application features or behavior changed. This maintenance release moves
the canonical Android build to Linux so it can be independently reproduced and
distributed through F-Droid.
The release also makes Flutter 3.47.1's resolution-aware asset ordering
deterministic and invalidates any stale Flutter tool snapshot before building.
Upgrading
- Existing Obtainium users may be offered the roughly 555 MB universal APK.
- Package identity remains
com.dash1971.maia_chess. - The developer signing certificate is unchanged, so existing games and settings
are preserved during an in-place update. - The APK supports ARMv7, ARM64, and x86_64 and continues to request no Internet
permission.
Reproducibility
- Immutable source:
8b039e6af365aa7dbeb206b74530e241ff673a62 - GitHub Actions Linux build: https://github.com/Dash1971/maia-chess-android/actions/runs/34700238185
- Verified unsigned APK SHA-256:
3cf8f4dd30ad89cdb6feec051df90de8e6ee51738065b08fe52a03a587120b29
The published APK is the exact verified GitHub Actions artifact signed locally
without rebuilding it. The signing key was never copied to CI or the independent
build host.
Mobile Maia 2.1.0
Mobile Maia 2.1.0
Mobile Maia 2.1 promotes the features and reliability work tested throughout
the 2.1 Preview cycle. The release adds experimental Chessnut Go support,
expanded premove and clock controls, endgame draw offers, configurable review
quality, and more durable saved-game and variation handling.
Experimental Chessnut Go support
- Play unlimited games against Maia on a Chessnut Go over Bluetooth, as White
or Black, while keeping the app fully offline. - Strictly compare the complete sensed board with the legal position so piece
lifts, partial castling, and other intermediate states are never guessed as
completed moves. - Light Maia moves, takeback restoration squares, and out-of-sync squares on
the physical board. - Give distinct board sounds for check, checkmate, and a complete-looking
illegal move, with an option to disable sounds. - Show connection state and battery level, and restore pending move or
takeback guidance after reconnecting or restarting the app. - Take back physical moves while preserving the abandoned continuation as a
PGN variation. - Continue an unfinished Chessnut game on the phone without losing its
position, moves, variations, orientation, or rating. Reopened phone games
stay on the phone, and completed games never reconnect automatically. - Keep the screen awake during active games so board input remains available.
This release targets Chessnut Go only. Timed e-board games, arbitrary starting
positions, USB, Analysis Board input, and other Chessnut models are not yet
supported. Nearby-device permission is requested at runtime only when
Chessnut support is enabled; the rest of Mobile Maia works without it.
Premoves and game controls
- Keep Lichess-style single premoves with no fixed deduction as the default.
- Add independent advanced settings for a 100 ms penalty per executed premove
and for multiple queued premoves. - Preview a multiple-premove sequence on the board and in a scrollable move
strip, queue up to 64 moves, or cancel the complete queue. - Validate one queued move after each actual Maia reply; an illegal move
cancels the remaining sequence. - Clear queued premoves safely on navigation, takeback, restart, completion,
and other game-state changes. - Hold Back to jump to the starting position and hold Forward to return to the
latest position during games and post-game review. - Replace the destructive Reset wording after a completed game with a New game
confirmation that clearly preserves the completed record in Recent Games.
Clocks, PGN, and draw offers
- Show both players' accurate historical clocks while stepping through a
completed timed game, including awarded increments and the final timeout
state. Older saves without clock history display a dash rather than an
invented value. - Add the standard
TimeControlheader and per-move[%clk ...]comments to
timed PGNs, with millisecond precision across copy, save, share, and saved
games. - Preserve imported comments, annotations, and clock tags. Unlimited games and
older games without clock history do not receive fabricated clock values. - Remove main-line clock entries when moves are taken back while preserving
the abandoned continuation as a variation. - Add confirmed endgame draw offers. Maia accepts from equal or worse
positions and when its Stockfish advantage is at most 0.30 pawns; accepted
offers are stored as draws by agreement in the PGN. - Remember side choice, time-control preset, custom minutes, and increment
between games while preserving Random as a choice rather than resolving it
permanently to White or Black.
Analysis and variations
- Add Fast, Balanced, and Thorough full-game analysis presets. Thorough remains
the default; the setting affects complete graph analysis only. - Correct the evaluation score's side and placement when the board is flipped.
- Make Back navigation return from nested variations through their actual
parent lines while keeping the correct move highlighted. - Preserve older saved variations through takebacks, post-game exploration,
promotion, main-line changes, and PGN export. - Repair legacy variation trees that contain duplicated takeback branches
without losing distinct moves, comments, NAGs, or clock information. - Parse pasted, shared, and file-selected PGNs away from the UI thread while
preserving nested variations and Android share/open routes.
Reliability and recovery
- Prevent failed or overlapping Recent Games opens and deletes from changing
the active save identity or leaving the interface blocked. - Recover cleanly after unavailable records, partial batch deletion, or a
transient storage error, with a visible error and a safe retry path. - Harden startup, engine cancellation, timeouts, Chessnut reconnects, and
checkpoint restoration against stale asynchronous work. - Expand deterministic host, Android, chess-position, variation-tree, APK, and
saved-game upgrade verification. Release tooling now retains compact,
repeatable evidence without committing private games or signing material.
Upgrade notes
- Mobile Maia 2.1 is an in-place update for the stable package
com.dash1971.maia_chess; stable games and settings are preserved. - Mobile Maia Preview uses a separate package and remains independently
installable. Android does not migrate Preview data into the stable app. - Mobile Maia remains offline and requests no Internet permission.
APK verification
- File:
Mobile-Maia-v2.1.0.apk - Size:
555,026,185bytes - SHA-256:
26b99c95a5118752316249c3efa12256bf36c646c90a1a5412b3b4dc4a7eae3c - Package:
com.dash1971.maia_chess - Version:
2.1.0(73) - Architectures: ARMv7, ARM64, and x86_64
- Signing certificate SHA-256:
cd6c07c4efacf52bcccb83009b522c1dcad4a171197505a486f0a58edb6f172e - Release source commit:
7ad1264f2df1a483a9fc083d7cd885568681df1b
Two clean signed builds reproduced all 2,500 APK payload entries after
normalizing Android signature metadata. Package identity, version, signing
certificate, model, permissions, native libraries, 16 KiB page compatibility,
ZIP alignment, archive contents, and privacy checks passed.
Mobile Maia 2.0.0
Mobile Maia 2.0.0
Mobile Maia 2.0 brings the improvements developed and tested in the Preview
app to the stable release. It introduces a redesigned Lichess-style interface,
improved game recovery and storage, stronger Android file integration, and
substantial engine and reliability work.
New playing experience
- Play moves by tapping or dragging pieces.
- Lichess-style piece dragging, highlighting, drop targets, and animations.
- Full support for premoves and promotion selection.
- New symmetrical toolbar with menu, resign, previous-move, and next-move
controls. - Step backward and forward through a game without changing the live position.
- Historical positions remain read-only until you return to the current move.
- Improved menus for board flipping, takeback, resignation, and starting a new
game. - New game-conclusion dialog with Rematch and Analysis Board options.
- The board remains fixed while the details below it can scroll independently.
Recent games and recovery
- Recent Games now contains completed games and unfinished games explicitly
saved using Home. - Unfinished games are clearly labelled as incomplete.
- When an incomplete game is later finished, its existing record is updated
instead of creating a duplicate. - Analysis sessions and automatic recovery checkpoints no longer clutter
Recent Games. - Select and delete multiple games, select all games, or delete everything.
- Reset Game now displays a warning, permanently removes the current game, and
starts again. - Leaving through Home preserves the unfinished game.
- Improved recovery of games, variations, board orientation, and clocks after
backgrounding, process termination, or an app update. - Safer deletion and migration of games created by earlier versions.
Analysis Board and Game Review
- Redesigned Lichess-style analysis interface with compact controls, a
scrolling move list, and evaluation bar. - Turn the analysis engine on or off directly from the board.
- Copy, share, or export the current FEN or PGN.
- Continue playing from any analysed position, with either colour and either
side to move. - Correct creation of alternate lines after stepping back through a game.
- Existing continuations are preserved when a new variation is added.
- Nested variations now remain correctly aligned and follow the selected
position throughout the move list, graph, and PGN export. - Full-game analysis can be cancelled safely without leaving stale evaluations
behind.
PGN import, export, and sharing
- Import PGN files through the Android Files picker.
- Open PGN files in Mobile Maia from other Android applications.
- Export and share PGNs using Android's standard share sheet.
- Improved handling of consecutive or queued file-opening requests.
- Support for Android multi-item and
ClipDatafile intents. - Cleaner handling of text encoding, malformed PGNs, and ordered import errors.
- Malformed or truncated movetext is rejected instead of opening an empty or
incomplete game. - Import and export sizes are limited to 2 MB to prevent excessive memory use.
- Improved temporary-file cleanup and URI permissions when sharing files.
Maia and Stockfish improvements
- Fixed a Maia 500 issue that could cause Black to mirror White's moves.
- Maia now follows the official Maia-3 current-position input behaviour.
- Improved model installation, verification, and caching.
- Maia's native runtime is reused between moves for more consistent
performance. - Engine requests are serialised and properly cancelled when navigating,
changing positions, disabling analysis, or leaving a screen. - Stale engine results can no longer overwrite a newer position.
- Improved cleanup when the app is backgrounded, resumed, or terminated.
Full-game Stockfish analysis is deliberately deeper than before: its search
depth increased from 12 to 16, with up to 1.5 seconds allowed per position.
Analysis may therefore take longer, but evaluations should be more stable and
useful.
Additional improvements
- Timed games keep the screen awake only while necessary.
- Clock restoration is more resilient to backgrounding, process termination,
and device-clock or timezone changes. - Improved handling of corrupted or legacy saved-game data.
- Major internal restructuring to make game sessions, engines, analysis, and
Android file handling easier to test and maintain. - Expanded automated regression coverage across gameplay, saved games,
variations, clocks, engines, and PGN handling. - Added attribution to En Croissant for move-classification concepts.
- Mobile Maia remains completely offline, with no account, server, or network
connection required.
APK verification
- File:
Mobile-Maia-v2.0.0.apk - Size: 554,517,073 bytes
- SHA-256:
0018428ba07427ddf13fecbb0bf2a0fe7aba0f076520ef3af2d88ccb21b6e1a2 - Architectures:
arm64-v8a,armeabi-v7a,x86_64 - Signing certificate SHA-256:
cd6c07c4efacf52bcccb83009b522c1dcad4a171197505a486f0a58edb6f172e
Mobile Maia v1.8.1
What's fixed in v1.8.1
- Remembers the selected Maia playing strength across app restarts.
- Hardens Analysis Board and Game Review move-list rendering around the exact Dart AOT path identified in a rare Android native crash.
- Bounds mainline rendering to available move data if restored analysis state is incomplete or mismatched.
The crash occurred once and could not be reproduced. The change is targeted hardening rather than a claim that every possible native crash has been eliminated. The supplied log points to Dart UI-thread move-list construction, not Stockfish, Maia/ONNX Runtime, memory exhaustion, or the unrelated Android max_map_count denial.
Current interface
See the updated README for the complete screenshot gallery and user guide.
Verification
Static analysis clean; 65/65 tests passed; Android integration APK compiled; signed stable package identity and update-compatible certificate verified; expanded-archive privacy, model, and ABI checks passed; an independent unsigned build reconstructed this APK byte-for-byte.
APK SHA-256: 3b00cfa593c20fe0bd8ba2b2968c512c68d07ded51ec0d88cdd3cdddf0b8541c
Mobile Maia v1.8.0
Mobile Maia v1.8.0 promotes the fully tested Preview beta.21 experience to the stable app.
What's new:
- Rich Game Review with Brilliant, Good, Interesting, Dubious, Mistake, and Blunder classifications on the graph, move list, and board.
- Opening, middlegame, and endgame separators in the evaluation graph.
- Two Stockfish move arrows plus two-tone Maia/Stockfish agreement arrows.
- Faster, more responsive review: classifications run off the UI thread, graph results appear earlier, and explored variation analysis is cached.
- Post-game analysis variations are preserved in exported PGN.
- Consistent Home navigation and erase confirmations during active games.
- Temperature/Top-P help appears with Advanced settings.
- Lichess-style player-row material difference using the official Lichess icon glyphs and scoring behavior.
- Larger, accessible review controls and stronger stale-analysis protection.
Offline play, Maia-3, Stockfish analysis, and all game data remain entirely on-device.
SHA-256: 2e1bb6c0831bf1284d4d45623389e6a6abef13720aadcefc1656c456a61a3080
Mobile Maia v1.7.3
This maintenance release makes Android builds reproducible and improves crash diagnostics by keeping readable Dart symbols. There are no gameplay or interface behavior changes.\n\nThe APK is signed with the existing Mobile Maia developer certificate and updates v1.7.2 in place.
Mobile Maia v1.7.2
Developer-signed release
Mobile Maia is now signed with its dedicated long-term Android developer key.
One-time reinstall required: releases through v1.7.1 used the previous debug certificate. Android cannot update across signing certificates. Uninstall the existing app before installing v1.7.2. This may remove locally stored games and settings, so export anything important first.
Certificate SHA-256: cd6c07c4efacf52bcccb83009b522c1dcad4a171197505a486f0a58edb6f172e
APK SHA-256: 7a71f274d42bd76a258d941ebfac8633a9397e67ba0d8b140ab9cf7e511c4ecb
Mobile Maia v1.7.1
Licensing and in-app legal notice patch release.
- Relicenses Mobile Maia under AGPL-3.0-only.
- Adds explicit no-warranty and redistribution/modification information to About.
- Adds Licence and Mobile Maia source code buttons.
- Adds the direct GPL-3.0 dartchess dependency to third-party notices.
- No chess-engine or gameplay behavior changes.
Static analysis is clean and all 43 tests pass.
APK SHA-256: 47b38129fa9505b3e1bb9e62b6a05a8be1de9f9c572f21e1f3109f6263e32bb6
Mobile Maia v1.7.0
Mobile Maia 1.7.0 promotes the tested Analysis Board preview to the main stable app.
Highlights:
- Lichess-style Analysis Board with persistent clickable variation trees
- FEN/PGN import and export, graphical board editor, and offline opening recognition
- Stockfish MultiPV plus Maia move comparison
- Fixed-height Moves/Computer Analysis tabs, complete analysis graph, and White/Black accuracy
- Long-press move actions: promote variation, make main line, collapse variations, and delete from here
- Active games and analysis sessions restore after process death or app updates
- Screen stays awake while the app is in the foreground
Existing Mobile Maia installs update in place.


