History

Selecting a worktree draws its lineage graph — the commit history, as lanes, with branch chips on the tips and pull or merge request status where there is any.

The lineage graph

Each row is a commit: its lane marker, the subject, the author, and how long ago it landed. Clicking a commit loads its files into the rail on the right; clicking a file there opens that file’s diff for that commit. The whole commit as a single patch is one click further away, under Full diff, rather than being what you get by default.

It draws fetched work, not just local work

A branch that is behind its upstream has commits sitting in the object store that no local ref points at. Walking only local tips would silently omit them — the lane would look current while the sidebar said ↓2, with the rows you were looking for simply absent.

PwrGit walks those upstream commits too, and draws them dashed as fetched-but-not-applied. A branch that has diverged forks at the merge base, so its dashed leg runs past your own rows and bends back into your lane there.

That is the practical value: after a fetch, you can see what a pull would bring in before you run it.

Scope — Active or All branches

The graph header carries a scope toggle:

Active is the default. Settings → Experimental → Lineage Graph Scope flips the default to All branches for newly opened worktree views; the in-graph toggle still overrides it per view either way.

A repository with a lot of history is capped rather than drawn without limit — the graph keeps the most recently active branches rather than laying out hundreds of lanes. The branch of the worktree you are looking at is never dropped by that cap.

Branch chips and their menu

Branch tips carry a chip with the branch name. Its menu offers:

Hovering a pull request chip opens a card with real detail — diff size, commit count, branch names, timestamps — rendered from data already loaded. It issues no request of its own, so hovering around the graph does not generate forge traffic.

Anything the card does not know is simply absent. It is never shown as zero, which would be a stronger claim than the evidence supports.

Commit details and author identity

Right-clicking a commit gives you:

The commit context card adds when it was committed, its age, its change size, and which branch you are viewing it from.

Author avatars are proven, not guessed

Where a commit’s author has been matched to a forge account, PwrGit shows that account’s avatar. The match is deliberately conservative: it requires the exact commit SHA and the forge’s own record of the author. Where the forge has no linked account, a uniquely associated pull request can supply one — but only if its login matches the git author name or the local part of the email.

If none of that holds, you get the local git authorship and no avatar. PwrGit would rather show nothing than attach the wrong person’s face to a commit.

Avatars are cached on disk and served to the UI through a local URL, so the source URL never reaches the page and the image is not re-fetched on every hover.

The diff pane

The diff pane opens over the graph, from a changed file in the rail or from a commit. Its header has a close () control, and Escape closes it too.

It renders three things: a working-tree file’s diff (staged or unstaged), one file’s diff within a commit, and a whole commit as a single patch. Images are diffed as images rather than as unreadable binary hunks.

Not yet