Skip to content

1.1.3

Choose a tag to compare

@github-actions github-actions released this 22 Jul 14:47

A fix release: when GitBox cannot do something, it now says which file and what to do about it.

Two errors started this. pull failed with 1 conflict prevents checkout, naming nothing. discardFile failed with unable to create file docker/mysql/.gitignore: Permission denied, naming a cause the app never explained. Neither told the user what to do next.

Fixed

A pull blocked by local changes names them, and offers a way through. libgit2 answers a refused checkout with a count — "1 conflict prevents checkout" — and no paths, which is nothing to act on. GitBox now collects the paths and reports local changes would be overwritten by pull: <files>, then offers to stash them, fast-forward, and restore them. If the restore conflicts, the stash is kept: popping is the step that can fail halfway, and someone who was just told "we stashed your work" has to be able to find it again.

Discarding a file no longer needs a system git. It shelled out to git checkout HEAD -- and git clean, which a packaged GitBox has no git to run, and which reported raw CLI stderr when it failed. It now runs through libgit2, picking the operation from whether HEAD knows the path — which also fixes discarding a file that was staged as new, where the old checkout could never match.

Permission failures explain themselves. Files a container created belong to another user, and no git implementation can write them. GitBox now names the file, and hands over the exact command to fix the ownership — scoped to that path and its parent, with a warning against adding -R on a directory a container writes to. The app does not run it: this is a privileged change to files it does not own, and that decision stays with you.

Errors read like errors again. Everything crossing Electron's IPC came back as Error invoking remote method 'gitbox:discardFile': Error: <the real thing>. That prefix names an internal channel and pushed the actual cause past the edge of the error banner. It is now stripped everywhere.

Restoring a stash is safe and matches git. libgit2's stash_pop drops the entry even when the apply leaves conflict markers behind — the only copy of the work would be a half-merged working tree. The entry is now kept in that case, as git stash pop does. Restored changes also come back unstaged rather than staged.

Added

Release notes after an update. The first launch on a new version shows what changed, pulled from that version's GitHub release — so there is no second copy of the notes to keep in sync. It appears once, and Settings › Updates can reopen it any time.

Downloads

  • Linux — AppImage, .deb, .rpm, .pacman
  • Windows.exe (NSIS installer) or .msi

Existing installs update in place through the built-in updater.