Improve hardware keyboard and editor focus handling
- Map physical Tab, arrow, and Enter keys to the terminal actions used by the on-screen controls.
- Keep focus in the terminal input after command submission.
- Focus editor content fields when editor dialogs open.
- Rebuild the app-private git-exec helper directory when the packaged native Git binary changes.
- Remove stale helper aliases before recreating symlinks/copies.
- Add regression coverage for refreshing cached Git exec aliases across binary changes.
- Add LevelsCompare.md with setup and validation comparisons against Gazler/githug.
- Document that LevelsCompare.md must be updated when level behavior changes.
- Track FETCH_HEAD count in RepoState so the Fetch level can match upstream validation.
- Mirror upstream Status setup with staged files plus untracked database.yml.
- Keep Fetch from being solved by pull despite native Git FETCH_HEAD behavior.
- Bump app version and build debug APK.
- Open an interactive staging dialog for `git add -i`, `git stage -i`, and
`git add --interactive`, allowing paths to be selected before staging.
- Open an interactive rebase dialog for `git rebase -i` / `--interactive`, with
pick, squash, drop, commit-message editing, and reorder controls.
- Keep the existing synthetic runtime behavior available for direct engine/test calls,
while making app-entered interactive commands show real UI instead of auto-staging.
- Center manpage search navigation using actual text-layout highlight bounds instead
of approximate line and column math.
- Make editor dialogs use a full-screen IME-padded outer scroll container so controls
remain reachable when the keyboard pans or resizes the dialog.
- Expand the missing-native-Git message with the selected ABI, 32/64-bit ABI lists,
Android version, device model/platform details, expected binary path, and a request
to report the information so device support can be added.
- Use application-scoped DataStore delegates for game progress and pane layout
preferences to avoid duplicate DataStore instances during activity recreation, such
as screen orientation changes.
- Center manpage search matches in the visible scroll viewport when possible and apply
IME padding so keyboard-covered space is accounted for.
- Support mobile-friendly handling for interactive add/stage commands (`git add -i`,
`git stage -i`, and `git add --interactive`) by routing them through GitHug's
staging semantics instead of rejecting them or launching Git's terminal UI.
- Apply IME padding to editor dialogs so controls remain reachable while the keyboard
is displayed.
- Remove the app fallback path when native Git is unavailable and show a startup blocker instead
- Fix native level setup for staged file counting and cherry-pick parity
- Improve manpage loading/search and bundle full Git documentation assets
- Integrate Git cross-compilation into AndroidProjectTooling.sh and remove debug AAB support
- Delete NativeLevelFixtures.kt and make native repository setup an optional property of each Level.
- Move every existing native setup into its corresponding level file so setup, validation, and tests stay together.
- Add the missing Blame native setup with config.rb history and a Spider Man password commit.
- Add a native runtime regression that verifies `git blame config.rb` identifies Spider Man on the password line.
- Verify the full JVM test suite using the compiled host Git runtime.
- Add a dedicated native Diff fixture that commits baseline app.rb content and leaves an unstaged line-26 change from data.json to server.json.
- Update the Diff level setup metadata so app.rb is no longer represented as an empty file.
- Add a native runtime regression for `git diff` showing the expected line-26 hunk.
- Require the Rm level to stage or remove the tracked deleted file instead of treating the initial deleted worktree state as solved.
- Add a regression test proving read-only commands such as `ls` do not complete the Rm level.
- Verify the full JVM level solution suite with the compiled host Git runtime.
- Add a plain git alias in the runtime git-exec directory so Git's internal `git <helper>` re-entry can resolve on Android.
- Keep prefixed and unprefixed helper aliases plus GIT_EXEC_PATH/PATH wiring for direct helper lookup.
- Verify Push no longer reproduces `cannot run merge-base` or `cannot run fetch` in the host libgit.so runtime tests.
- Create a runtime git-exec directory containing git-* aliases that point at the packaged libgit.so binary.
- Set GIT_EXEC_PATH for every native Git invocation so Git subcommands like fetch, merge-base, upload-pack, and receive-pack resolve the same way in tests and on-device.
- Keep JVM tests on GitRepositoryRuntime with the compiled host libgit.so so Push exercises the packaged-runtime execution model.
- Rename CrossCompileGitForAndroid.sh to CompileGitForAllTargetPlatforms.sh and support host, Android-only, and all-target modes.
- Compile a development-host Git binary at build/host-git/libgit.so for JVM tests.
- Route level and sandbox tests through GITHUG_TEST_GIT_BINARY so they exercise the compiled host Git rather than the system Git fallback.
- Cross-compile packaged Git binaries for arm64-v8a, armeabi-v7a, x86, and x86_64 Android targets.
- Remove the temporary device-bound Pull rebase instrumentation path from the previous debugging attempt.
- Anchor startup help callouts inside the scrollable pane workspace so they scroll with the exercise and terminal content they point at.
- Rebuild the Push level remote as a bare sibling repo with a temporary worktree for the remote-only commit, avoiding Android non-bare remote push failures.
- Leave a visible local worktree edit in Push while enabling rebase autostash so status, diff, and pull --rebase all behave as expected.
- Add native Push setup coverage for diverged status output, plain diff output, and clean pull --rebase behavior.
- Add native per-level fixtures for complex histories, tags, branch graphs, rebases, resets, restores, stashes, and local remotes.
- Strengthen repository inspection so branch commit counts, remote-tracking branches, and detached tag checkouts reflect real Git state.
- Align Fetch, Pull, Push Branch, Branch At, and Rebase validators/tests with upstream-style repository state.
- Keep the prompt callout and native filesystem tab-completion fixes from the previous batch.
- Materialize the Push level with a real local/remote Git fixture that shares the first two commits, adds a remote-only fourth commit, and leaves a local third commit to rebase.
- Strengthen Push validation to require the rebased/pushed state and all expected files instead of only checking that a push command happened.
- Keep the level solution tests exercising the same native sandbox shape users see in the app.
- Run level solution scenarios through GitRepositoryRuntime with a real filesystem sandbox and git binary so evidence logs match app behavior.
- Materialize synthetic remotes as local bare repositories and configure upstream tracking for pull/push levels.
- Route mobile-hostile Git interactions through shared sandbox semantics for clone, patch add, interactive rebase, squash merge, submodule, stash, revert, and related flows.
- Relax affected level validators to inspect observable runtime state instead of fallback-only staged/index details.
- Show .git in ls output for native and fallback helper commands.
- Make tab completion resolve filenames and directories relative to the current working directory.
- Integrate help controls into the callout overlay and reposition the prompt callout above the terminal prompt.
- Add regression coverage for .git listing and subfolder completion.
Remove duplicate IME padding that caused keyboard gap
Add md alias for mkdir helper command
Add dir alias for ls helper command
Add cd.. shortcut for cd .. helper command