Commit Graph

139 Commits

Author SHA1 Message Date
Joe Tretter
07f3ec8f30 Misc Changes 2026-05-19 16:53:41 -05:00
Joe Tretter
a1bb78c600 Fix conflict commit-all flow and terminal copy line breaks 2026-05-19 16:35:00 -05:00
Joe Tretter
ceb0d503f4 Require real merge commit and keep level tests embedded 2026-05-19 16:18:58 -05:00
Joe Tretter
5db02adbe9 Fix upstream fixture-backed level setups 2026-05-19 15:52:22 -05:00
Joe Tretter
2091713409 Changed Editor Close button to read "Dismiss" instead.
Configured VSCode Kotlin language server to use the project-local JDK 17.
2026-05-19 15:29:45 -05:00
Joe Tretter
b5e9038c84 Expand manpage and terminal output sizing 2026-05-19 13:58:15 -05:00
Joe Tretter
b48244d4c2 Match hunk edit format and upload build artifacts 2026-05-19 12:10:44 -05:00
Joe Tretter
bea901acfe Split oversized runtime, sandbox, and interactive add files into focused helpers 2026-05-18 21:49:43 -05:00
Joe Tretter
ed0b81e587 Open patch hunk editor for git add -p edit command 2026-05-18 21:10:17 -05:00
Joe Tretter
4c5d68c1cb Start patch dialog for git add -p 2026-05-18 21:02:42 -05:00
Joe Tretter
eb24866a7a Handle interactive add menu commands 2026-05-18 20:39:06 -05:00
Joe Tretter
3c437c980a Get rid of incorrect last step in bisect level. 2026-05-18 20:28:12 -05:00
Joe Tretter
1ce4df1209 Ask for last good commit in bisect level 2026-05-18 20:19:34 -05:00
Joe Tretter
008a322134 Complete ./ script paths in terminal tab completion 2026-05-18 19:52:50 -05:00
Joe Tretter
9bf1d610f8 Include Android versionCode in APK and AAB artifact names 2026-05-18 19:46:31 -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
f5bd5f5a60 Run rebase sequence editor through shell 2026-05-18 19:07:17 -05:00
Joe Tretter
ce58f46b48 Open app editor for interactive rebase todo 2026-05-18 19:01:12 -05:00
Joe Tretter
d4e2c8714c Remove brittle interactive rebase shortcuts 2026-05-18 18:37:10 -05:00
Joe Tretter
06b56010d0 Misc Changes 2026-05-15 12:52:50 -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
618e6e36bd Add hidden diagnostic skin toggle
- Open a hidden diagnostics dialog after tapping the header seven times within fifteen seconds.
- Let the diagnostics dialog toggle the pane color/stripe skin on demand.
- Restore the normal app background and pane colors by default.
- Stop Scaffold from preserving the bottom navigation-bar inset while the keyboard is visible.
- Apply bottom navigation padding only when the IME is not open.
2026-05-13 18:35:36 -05:00
Joe Tretter
bd6568357f Add diagnostic pane coloring
- Give each top-level pane a distinct temporary diagnostic color and stripe pattern.
- Give the root app background a separate purple diagnostic color so empty space outside panes is identifiable.
2026-05-13 17:48:01 -05:00
Joe Tretter
dec1340082 Remove empty terminal black areas
- Hide the terminal output viewport when there are no output lines on a newly loaded level.
- Reduce the minimum output history height so short output does not create a large empty black panel.
- Use the pane surface color for the app background so normal spacing between cards is not black.
2026-05-13 17:40:48 -05:00
Joe Tretter
0fb73f869c Fix terminal pane height with soft keyboard
- Make pane containers wrap their content instead of filling the IME-adjusted viewport.
- Make the terminal surface content-height driven so it no longer expands into a large black area above the keyboard.
2026-05-13 15:15:40 -05:00
Joe Tretter
61951408de Fix soft-keyboard level advance behavior
- Keep terminal focus without explicitly reopening the software keyboard after command field recreation.
- Preserve submitted-command IME echo suppression when advancing to the next level.
- Recreate the terminal input field when loading a level so stale editor state is discarded.
2026-05-13 15:05:02 -05:00
Joe Tretter
e8bcf660d9 Add git pushing after every commit.
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.
2026-05-12 18:02:39 -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
4bac818571 Align level parity docs and fetch/status validation
- 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.
2026-05-11 21:36:12 -05:00
Joe Tretter
316323a00c Misc Changes 2026-05-11 20:20:13 -05:00
Joe Tretter
7e55084815 Misc Changes 2026-05-11 19:19:51 -05:00
Joe Tretter
8f829fb969 Misc Changes 2026-05-09 22:49:15 -05:00
Joe Tretter
f49e8a96b1 Add app-native interactive Git dialogs
- 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.
2026-05-09 15:41:55 -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
300bd262dd Misc Changes 2026-05-08 21:08:38 -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
6444ad07c6 Add git re-entry alias for packaged runtime helpers
- 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.
2026-05-07 16:28:52 -05:00
Joe Tretter
83bb5a1457 Create packaged Git exec aliases for helper commands
- 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.
2026-05-07 15:46:06 -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
8e88b5e7c5 Fix Push level native repository setup
- 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.
2026-05-06 22:40:06 -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
e1b2d7f7a1 Misc Changes 2026-05-06 21:28:44 -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