Releases: teckperry/self-hosted-git-client
Release list
v1.2.2
v1.2.2
Fixed
- Stash content now shows in full. Selecting a stash in the graph could show only part of it — or nothing at all for a stash of untracked files. The detail panel now renders the complete stashed content (both tracked and untracked files) via
git stash show --include-untracked, and drops the misleading "needs rebase" note for stashes.
macOS builds are ad-hoc signed (open with right-click → Open); pick the arm64 or Intel installer for your Mac. Windows .exe and Linux .AppImage/.deb are also attached.
v1.2.1
v1.2.1
Security
Defensive hardening of the Electron main process and the IPC boundary — no behaviour change for normal use, thanks to a great first community contribution by @fabriziosalmi 🙏
- Renderer sandbox enabled;
webviewdisabled; top-frame navigation to external origins blocked (safe web links open in your browser instead). - External URLs passed to the OS are limited to http/https/mailto — no
file:/custom schemes. - Git transport safety: reject the
ext::/fd::remote-helper URLs (which can run arbitrary commands) and pinprotocol.ext.allow=neveras defence-in-depth; validate refs/branches/tags/hashes so a crafted value can't flip a git subcommand. - SSH key names can't escape
~/.ssh(no path traversal). - Update downloads pinned to GitHub's release-asset hosts.
- Tightened Content-Security-Policy.
Internal
- The updater's release repository is now derived from
package.json'srepositoryfield, so forks/rebrands only change it in one place.
macOS builds are ad-hoc signed (open with right-click → Open); pick the arm64 or Intel installer for your Mac. Windows .exe and Linux .AppImage/.deb are also attached.
v1.2.0
v1.2.0
Fixed
- Endless repo-switching loop. Switching repos while a background refresh or fetch was still in flight could bounce the app between the two repositories forever (most visible after the window sat in the background, or when switching right after a fetch started). Stale cycles now discard their results the moment the active repo changes, so the loop is impossible — whatever the timing.
Added
- Default diff view setting. The diff editor now opens in split view by default, and a new Default diff view option in Settings lets you pick split or inline. The in-editor toggle still works as a session override.
Also included
- The README got a full product makeover with real in-app screenshots, generated by a new env-guarded screenshot mode (inert in normal runs).
macOS builds are ad-hoc signed (open with right-click → Open); pick the arm64 or Intel installer for your Mac. Windows .exe and Linux .AppImage/.deb are also attached.
v1.1.0
v1.1.0
Smarter background sync
- Auto-fetch now fires the moment the window comes back into view and when you switch repos, on top of the periodic timer (default now 5 minutes, configurable in Settings).
- It never gets in your way: the local state refreshes instantly, the network fetch runs in the background on its own process (a thin sweeping bar under the toolbar shows it), and overlapping triggers are throttled to one fetch per repo every 15s.
Author avatars
- Commit authors now show their GitHub profile picture in the graph and detail panel — derived locally from the noreply commit email, with no API calls, no login, no third-party services. Other emails keep the initials badge, which is also the offline fallback. One cached download per author.
macOS builds are ad-hoc signed (open with right-click → Open); pick the arm64 or Intel installer for your Mac. Windows .exe and Linux .AppImage/.deb are also attached.
v1.0.0
v1.0.0 — first stable release 🎉
The self-hosted Git client reaches 1.0. Everything runs locally: open any repo, browse history, and drive the common Git workflows from a clean desktop UI.
Highlights since 0.1.9
- Interactive rebase — reorder, drop, squash and fixup commits from a planner (branch menu or a commit's menu); conflicts drop into the merge editor.
- Merge-conflict resolution — conflicts appear in the sidebar; a 3-pane editor (ours / theirs / result) lets you pick lines and see the result live, with per-file staging blocked until resolved.
- Undo the last branch action (reflog-based, non-destructive).
- Settings panel — theme, background-fetch interval, git identity.
- Open a commit or branch in the browser, and a toast when auto-fetch finds new commits upstream.
Also in 1.x (from the 0.1 line)
Commit graph with lanes and per-day grouping, full-file diff editor (inline & split) with minimap, in-app & in-editor search, stash management, branch rename, inline commit reword, force-push with lease, tags, SSH key manager, and auto-update.
macOS builds are ad-hoc signed (open with right-click → Open); pick the arm64 or Intel installer for your Mac. Windows .exe and Linux .AppImage/.deb are also attached.
v0.1.9
v0.1.9
Branches
- Rename a local branch from the branch context menu (
git branch -m). The dialog explains how to finish the rename on the remote by hand (push the new name, then delete the old remote branch).
Commits
- Reword the latest commit's message inline in the detail panel: every commit shows its message in the same box, read-only by default; for the HEAD commit an Update description button unlocks it (Save / Cancel, ⌘/Ctrl+Enter, Esc). Message-only amend — preserves the author and doesn't fold staged changes.
- When a push is rejected as non-fast-forward (e.g. after rewording), the app offers a safe force push with lease instead of just failing.
macOS builds are ad-hoc signed (open with right-click → Open); pick the arm64 or Intel installer for your Mac.
v0.1.8
v0.1.8
Search
- Search across the app with Cmd/Ctrl+F. A floating bar (bottom-right) lets
you find by branch/tag name, commit message, author, hash or changed file
name; matching commits stay bright in the graph while the rest dim. A spinner
shows while the file-name pass is still running. - In-editor code search. With the diff editor open, Cmd/Ctrl+F searches the
open file's code instead: matching lines stay bright, the rest dim (inline and
split), with a matching-line count.
Detail panel
- Long commit descriptions are capped and scroll vertically instead of pushing
the file list down.
macOS builds are ad-hoc signed (open with right-click → Open); pick the arm64 or
Intel installer for your Mac.
v0.1.7
v0.1.7
Graph
- Compact commit rows — shorter rows fit more commits on screen.
- Fewer labels per commit — a busy commit shows the first label plus a "+X"
chip; hovering reveals all of them in a foreground popover, so the row height
stays constant. - Detached HEAD marker — a HEAD chip now appears (only) when you're on a
detached HEAD, marking your position when no branch is current.
Branches
- Auto fast-forward on checkout — switching to an existing branch that
tracks an upstream pulls it to the remote's latest (ff-only; never merges).
Layout
- The right panel is 10% narrower by default, giving the graph more room.
macOS builds are ad-hoc signed (open with right-click → Open); pick the arm64 or
Intel installer for your Mac.
v0.1.6
v0.1.6
Graph labels
- Fewer, clearer branch labels. A branch's local and remote refs now share
one label per name, marked with a local (branch) and/or remote (cloud) icon
instead of theorigin/text. - HEAD is folded into the current branch. The separate HEAD badge is gone;
the current branch is shown as a solid, bold chip in its own graph color. The
in-graph node highlight for the current branch is unchanged. - Labels are a touch larger for legibility.
macOS builds are ad-hoc signed (open with right-click → Open); pick the arm64 or
Intel installer for your Mac.
v0.1.5
v0.1.5
Fixes
- Deleting a local branch now works even when it isn't fully merged
(e.g. after a squash merge). The app uses a force delete after an explicit
confirmation; the branch is still recoverable from git's reflog.
macOS builds are ad-hoc signed (open with right-click → Open); pick the arm64 or
Intel installer for your Mac.