Repository navigation
v0.7.2
Before you double-click
This build is not signed or notarized, so macOS blocks the first launch. Allow it once:
- macOS 15 Sequoia and later — double-click, dismiss the warning, then open
System Settings ▸ Privacy & Security and click Open Anyway. Apple removed the
Control-click shortcut for unsigned apps in macOS 15, so right-clicking does not help.- macOS 13–14 — right-click the app ▸ Open, then confirm.
Only the first launch asks.
The Git plugin, from a first pass into something worth reaching for — and the host change that
made the last of it possible.
Added
-
The Git plugin grew from two columns and five commands into something worth reaching for. A
panel with the working tree's changes, staging, unstaging, discarding and committing (amend
included), and any file's diff opening in the app's own compare window — no second diff
implementation. A history window: commits with a lane graph, what each one changed, a diff per
file, and the same window for one file's history. Blame as a table, each line's commit openable
as a diff. Branches and stashes: switch, create, merge, delete, stash push/pop/drop, and
fetch/pull/push that can be cancelled instead of appearing to hang — credentials are left entirely to
the SSH agent and git's own credential helper, and a conflicted file opens as ours against theirs.
.gitignorefrom the context menu (this file, this file type, this folder), and revert or
cherry-pick a commit from the history window, each refusing up front when the working tree is not
clean rather than stopping half-way through. -
Tags. The Branches window has a third list: create a tag (typing a message makes it annotated),
delete it, switch to it — with a plain warning that a tag is not a branch and HEAD ends up detached — and
push a tag, which is its own action becausegit pushdoes not carry tags. Previously the plugin
showed branches and stashes and no tags at all. -
The history shows where the branches and tags are. A commit row now names the refs pointing at it:
● main,↗ origin/main,⚑ v1.0. -
Right-click, Return and Cmd+R work in every Git window. Each list has a context menu with its own
actions, right-clicking selects the row under the cursor first, Return does what a double-click does, and
Cmd+R reloads — a commit made in a terminal used to leave a Git window quietly out of date with no way to
refresh it. You can also copy what these windows are actually asked for: a commit hash, a subject, a file
path, a blamed line, a branch or tag name. And Push/Pull are in the Git panel, next to the commit. -
Tidy up the commits you have not pushed yet.
Rebase…lists the commits ahead of the upstream and
lets you squash, fix up, drop, reorder or reword them, then rewrites the branch — with a plain refusal
when something is in the way (uncommitted changes, an open conflict, no upstream) instead of git's
terminal wording. If a rebase stops in a conflict, the same window becomes Continue / Skip / Abort, so a
half-finished branch is not something you have to finish in a terminal. -
A conflict can now be resolved in the app.
Resolve Conflict…used to show ours against theirs
and leave the conflict markers in the file — the actual resolution happened somewhere else. It now opens
a list of the file's conflicted regions with a decision per region (take ours, take theirs, take both,
leave open), writes the file and stages it. It refuses to stage while a region is still open, because
git will happily commit<<<<<<<, and it refuses to touch a file whose markers it cannot read rather
than guessing at them. Not a merge editor: for a region that needs both sides interleaved by hand, the
editor is one button away. -
A plugin command that talks to the network no longer freezes the window. A plugin can now declare a
command long-running; the app then runs it in the background, shows a small progress window with the
command's own output, and lets you cancel it — which actually stops the work rather than just closing the
window. Git's Push and Pull use it: an unreachable server used to lock the whole application up for as
long as the network took to give up. -
A push that fails for want of a password now has somewhere to look.
Credentials…says what this
repository authenticates with — SSH or HTTPS, whether a credential helper is configured, whether an SSH
agent is running and actually holds a key — and offers one action: let git keep credentials in the macOS
Keychain. The plugin never asks for, shows or stores a passphrase; it configures git's own helper and
otherwise points at the SSH agent. -
"Open on the Web" for a file, a commit or a branch. Built from the remote's URL — GitHub, GitLab,
Bitbucket, Azure DevOps — with no API, no token and no account. A file link points at the branch your
colleagues can actually see. For a host whose link layout is unknown it offers the repository page rather
than guessing at a URL that would 404.
Fixed
-
The Git status column no longer lies inside a linked worktree or a submodule. There
.gitis a
file rather than a directory, so the plugin was watching an index file that does not exist: a commit or
agit addmade outside the app reached the column only after a delay. It now asks git where its
directory really is. The column also leads with a small glyph —● Modified,⚠ Conflict,
? Untracked— so a listing can be scanned rather than read. -
A Git plugin window drew its content in a narrow strip down the middle. An 820-point window held
a 436-point commit list, with the header floating in the centre. All four windows now fill.