Commit Graph

20 Commits

Author SHA1 Message Date
Joe Tretter
008a322134 Complete ./ script paths in terminal tab completion 2026-05-18 19:52:50 -05:00
Joe Tretter
afb548d46f Make bisect playable and validate commit_in_future using Git author timestamps 2026-05-18 19:44:23 -05:00
Joe Tretter
ce58f46b48 Open app editor for interactive rebase todo 2026-05-18 19:01:12 -05:00
Joe Tretter
3f6a764603 Support interactive add/stage input flow 2026-05-13 19:12:06 -05:00
Joe Tretter
482483deed Fix interactive add/stage auto-update behavior 2026-05-13 19:03:12 -05:00
Joe Tretter
75c8396f00 Refresh native Git helper aliases after app upgrade
- 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.
2026-05-11 21:48:14 -05:00
Joe Tretter
8f829fb969 Misc Changes 2026-05-09 22:49:15 -05:00
Joe Tretter
0acf8c9ab0 Fix runtime diagnostics, rotation stability, and manpage search positioning
- 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.
2026-05-09 14:22:07 -05:00
Joe Tretter
4fab442939 Require native Git runtime and bundle full manpages
- 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
2026-05-08 17:43:46 -05:00
Joe Tretter
64743ff4a9 Move native level setups into level files
- 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.
2026-05-07 18:53:18 -05:00
Joe Tretter
7bfb761068 Restore Diff level working-tree change
- 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.
2026-05-07 17:00:04 -05:00
Joe Tretter
434bd8d97d Tighten Rm level validation
- 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.
2026-05-07 16:51:43 -05:00
Joe Tretter
8873755490 Compile Git for host and Android target platforms
- 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.
2026-05-07 15:26:38 -05:00
Joe Tretter
565028f64a Fix help callout anchoring and Push remote setup
- 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.
2026-05-07 09:57:50 -05:00
Joe Tretter
91e2df3ffe Improve upstream parity for level fixtures
- 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.
2026-05-07 09:21:04 -05:00
Joe Tretter
7bb14216ef Align tests with runtime sandbox and polish terminal help
- 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.
2026-05-06 22:12:25 -05:00
Joe Tretter
5727022baf Misc Changes 2026-05-06 20:44:34 -05:00
Joe Tretter
5c7c7ad29d Add del alias for rm helper command 2026-05-05 20:12:08 -05:00
Joe Tretter
b8c4096123 Add exercise description onboarding bubble
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
2026-05-05 20:08:51 -05:00
Joe Tretter
16d7809150 Auto-commit after successful build: update app gameplay/UI, improve build setup
Changed files:\napp/build.gradle.kts
app/src/main/java/solutions/tretter/githugandroid/GameModels.kt
app/src/main/java/solutions/tretter/githugandroid/GitHelpCommands.kt
app/src/main/java/solutions/tretter/githugandroid/GitHugApp.kt
app/src/main/java/solutions/tretter/githugandroid/GitRuntime.kt
app/src/main/java/solutions/tretter/githugandroid/Visual.kt
app/src/main/java/solutions/tretter/githugandroid/levels/AdvancedLevels.kt
app/src/main/java/solutions/tretter/githugandroid/levels/LevelCatalog.kt
app/src/test/java/solutions/tretter/githugandroid/GitHelpCommandsTest.kt
app/src/test/java/solutions/tretter/githugandroid/GitSandboxEngineTest.kt
2026-05-05 19:27:33 -05:00