Skip to content

Keep the board visible after jumping to an analyzed move - #116

Merged
oers merged 1 commit into
developmentfrom
claude/jump-keeps-board
Oct 1, 2026
Merged

oers merged 1 commit into
developmentfrom
claude/jump-keeps-board

Conversation

@oers

@oers oers commented Oct 1, 2026

Copy link
Copy Markdown
Owner

This fixes the following bug: after analyzing a game, tapping a move in the analysis list jumps there correctly. Once the evaluation for that position finishes, all discs disappear and only the evals stay on the board. The discs come back with the next undo or redo.

Cause

jumpToMove() loads the analyzed game and walks back to the tapped move with undo. Once the engine is waiting for input again, awaitJumpSettled() marks the jump as done. With practice mode on, that is when the evals are finished.

At that point awaitJumpSettled() called resetAndLoadOnGuiThread(). That method clears the board model (GameStateBoardModel.reset()), which is right for a new game, because the new game's first board arrives right after. After a jump, though, the engine just waits and sends no new board. So the board stayed empty, and only the candidate evals, which reset() doesn't touch, were drawn. The next undo or redo sent a board again.

Fix

The board model already shows the landed position, because every undo step of the walk updated it. So awaitJumpSettled() now only reloads the UI settings and no longer resets the board.

Test

New AnalysisTest#testBoardStaysVisibleAfterAJumpLands:

  • It analyzes a short game and jumps to ply 2.
  • It waits until the jump has landed, then checks that the board has 6 discs and that the score adds up to 6.

Before the fix, the board was empty at that point.

There is no Android SDK in my environment, so the emulator job (test) is the first place this compiles and runs.

🤖 Generated with Claude Code

https://claude.ai/code/session_01V5G4cWSLBkiNNK4KC3zvXM


Generated by Claude Code

Once a jump to a move from the analysis list had landed (with practice
mode on: once the evals for that position were done), awaitJumpSettled()
called resetAndLoadOnGuiThread(), which clears the board model. That is
meant for a new game, whose first board arrives right after; here the
engine just waits for input and sends no new board, so the board stayed
empty with only the evals on it until the next undo or redo.

The board model already shows the landed position (every undo of the
walk updated it), so only the UI settings are reloaded now.

New AnalysisTest#testBoardStaysVisibleAfterAJumpLands checks the discs
and the score on the board once the jump has landed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V5G4cWSLBkiNNK4KC3zvXM
@oers
oers merged commit f00ceff into development Oct 1, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants