About this project

Kuroban (九路盤, "nine-road board") is a Go application written from scratch in Kotlin and Jetpack Compose for the Mudita Kompakt, a phone with an E Ink screen. It is not a fork; it uses Mudita's own MMD design system so it matches the apps the phone ships with, and bundles GNU Go as the playing engine. What it does: - 9x9 board only. The engine supports other sizes, but the author notes 19x19 on a 360dp-wide panel would give 18dp touch targets. - Play against GNU Go at two strengths, as either colour, or two players passing one device back and forth. - Handicap of 2 to 5 stones, presented as the finer dial for balancing a game than difficulty settings. - Set up a position by hand: place black and white stones anywhere, choose which colour plays, and continue with hint, undo and end-of-game counting still available. - Hint asks the engine for its move and shows it as a preview stone; nothing is committed by asking. - Tap to preview, tap again to place, so a stray touch never plays a stone; a Place button does the same. - Undo a move, and against GNU Go its reply too; finished games can be taken back into. - Two passes end the game and GNU Go scores it, including determining dead stones, marked with an x. - Saves the game in progress, including undo history, across phone restarts. - No permissions and no network access. The engine: GNU Go 3.8 runs as a child process and is spoken to over GTP on stdin/stdout. The README states the engine is authoritative for legality, ko, captures and scoring, and that the app implements no Go rules of its own. A build script (engine/build-gnugo.sh) rebuilds it. On difficulty: the README reports self-play measurements indicating levels 1 and 3 are indistinguishable, as are levels 5 and 10, with the real step between 3 and 5, and level 10 costing roughly ten times the thinking time of level 5. GNU Go's Monte Carlo mode is described as stronger but taking about 14 seconds per move on the device, with no cheap version. Building requires the Android SDK, plus the NDK and a host C compiler if rebuilding the engine. Gradle tasks cover unit tests and release assembly; releases are built by a GitHub Actions workflow on v* tags, which rebuilds the engine from the vendored tarball and checks the APK's signing certificate. Release builds need a keystore in signing/ (gitignored); without it assembleRelease produces an unsigned APK. Debug builds use the standard Android debug key. Distribution: an APK is published on GitHub Releases with a .sha256 alongside, and the repository can be added to Obtainium for update notifications. The application id is stated to be settled, so updates install over existing installations. Licence: GPL-3.0-only. GNU Go (Copyright 1999-2009 Free Software Foundation, GPLv3 or later) is bundled, with its unmodified source tarball and build script included. The README also points readers to the free book 81 Little Lions by Immanuel deVillers as an introduction to the 9x9 board; it is not bundled with the app.