Commit Graph

121 Commits

Author SHA1 Message Date
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
edec66bfe6 Refactor large Kotlin source files
- Split core game models from sandbox engine, native level setup, and repo state saving.

- Move app overlays and completion helpers out of GitHugApp.

- Extract the terminal special key bar into its own component.
2026-05-09 13:52:13 -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
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
344ff99f0a Add terminal input onboarding bubble 2026-05-05 19:54:33 -05:00
Joe Tretter
9d09eb1385 Fix level transition scrolling and keyboard blank-space behavior
Use commit-summary.txt for AndroidProjectTooling auto-commit messages
2026-05-05 19:48:29 -05:00
Joe Tretter
42c898f648 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/GitHugApp.kt
2026-05-05 19:38:00 -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
Joe Tretter
6200fdc912 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/levels/AdvancedLevels.kt
2026-05-02 23:18:28 -05:00
Joe Tretter
c3c672eb27 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/GitRuntime.kt
2026-05-02 23:08:19 -05:00
Joe Tretter
4963123b3b 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/GitEditorCommands.kt
app/src/main/java/solutions/tretter/githugandroid/GitHugApp.kt
app/src/main/java/solutions/tretter/githugandroid/GitMessageEditorDialog.kt
app/src/main/java/solutions/tretter/githugandroid/GitRuntime.kt
app/src/test/java/solutions/tretter/githugandroid/GitEditorCommandsTest.kt
2026-05-02 23:03:00 -05:00
Joe Tretter
01d10f31c2 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/Terminal.kt
2026-05-02 22:56:12 -05:00
Joe Tretter
893fa2b56e 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/Terminal.kt
2026-05-02 22:49:09 -05:00
Joe Tretter
d1922eb0a2 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/TextEditorDialog.kt
2026-05-02 22:41:32 -05:00
Joe Tretter
42b9be0921 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/Terminal.kt
app/src/main/java/solutions/tretter/githugandroid/TextEditorDialog.kt
2026-05-02 22:32:59 -05:00
Joe Tretter
65c44ccf62 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/GitHugApp.kt
2026-05-02 22:29:46 -05:00
Joe Tretter
4727b314b4 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/Exercise.kt
2026-05-02 22:27:43 -05:00
Joe Tretter
6ad1cc2860 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/ManPageDialog.kt
app/src/main/java/solutions/tretter/githugandroid/Terminal.kt
2026-05-02 22:25:53 -05:00
Joe Tretter
842e734554 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/ManPageDialog.kt
app/src/main/java/solutions/tretter/githugandroid/Terminal.kt
app/src/main/java/solutions/tretter/githugandroid/TextEditorDialog.kt
2026-05-02 22:22:57 -05:00
Joe Tretter
ca20b0a358 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/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/ManPageDialog.kt
app/src/test/java/solutions/tretter/githugandroid/GitHelpCommandsTest.kt
2026-05-02 22:09:20 -05:00
Joe Tretter
dcd5589d74 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/GitHugApp.kt
app/src/main/java/solutions/tretter/githugandroid/TextEditorDialog.kt
2026-05-02 22:04:37 -05:00
Joe Tretter
17f19ca0ba 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/EditorCommands.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/TextEditorDialog.kt
app/src/test/java/solutions/tretter/githugandroid/EditorCommandsTest.kt
2026-05-02 21:50:34 -05:00
Joe Tretter
d6c4c4a2df 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/GitRuntime.kt
app/src/test/java/solutions/tretter/githugandroid/LevelSolutionsTest.kt
2026-05-02 21:36:42 -05:00
Joe Tretter
02f26be3fa Auto-commit after successful build: improve build setup
Changed files:\napp/build.gradle.kts
2026-05-02 20:31:59 -05:00
Joe Tretter
8bcfa2bee4 Switched to Chatgpt 5.5 and codex. 2026-05-02 20:29:31 -05:00