Repositories

PwrGit indexes repositories from folders you nominate and lists them in the sidebar. The list is meant to survive being long: lenses narrow it, pins float the ones you care about, every row says what it would pull and push without being opened, and Command+K finds anything by name without scrolling at all — see Search and navigation.

Profiles

A profile is a workspace. It carries:

Each profile opens in its own window. The Profiles menu lists them all with New Profile… and Manage Profiles…, and the first nine get Command+1 through Command+9 (Ctrl+1–Ctrl+9 on Windows and Linux). Picking a profile opens its window, or focuses it if it is already open. The profile chip at the top of the sidebar names the profile and the address it commits as.

The commit identity is applied per commit

PwrGit does not write user.email into a repository’s config to change your identity. It passes the profile’s identity to each commit as it makes it, which means:

The commit box in the rail reads as <email> so you can see which identity is about to sign, before it does. See Commit.

Repo folders and discovery

PwrGit does not scan your disk uninvited. Each profile has a list of repo folders, and PwrGit searches those for git repositories:

Add folders from Add folders… at the top of the sidebar, or from Settings → Profiles → Edit…. A profile with no folders can do little else: Clone… and Fork… stay disabled until one exists, because both need somewhere to put the result.

Repo folders are also what makes a repository belong to a profile — a checkout under ~/work shows up in the profile whose folders include ~/work.

When PwrGit looks again. A profile is rescanned when its window opens, at most once a day; whenever you change its folders; and promptly — at most once every ten minutes per repository — when a repository’s folder disappears, so a deleted checkout leaves the sidebar without waiting for tomorrow. A scan removes repositories only when every repo folder could be read: an unmounted drive does not empty the list. Repositories you cloned or forked through PwrGit are recorded as added by hand, and no scan removes them.

The sidebar

The sidebar is a tree: repositories at the top level, each expanding into its worktrees, pull requests, branches, tags and remotes. Selecting a worktree is what drives the rest of the window.

From the top, it holds:

The sidebar in the Focused lens: 9 focused, with Browse all 11. openclaw is expanded with a Current pill, a fork badge 6 behind and 8 worktrees. main is primary and 6 behind upstream; five working worktrees follow, feat/token-miser selected with 4 changes and PR #19, then More worktrees, Finished 2, Pull requests 500 with 313 failing, and Branches 13. AI features is Off.
The sidebar in the Focused lens. The Current pill says why openclaw is listed; the fork badge says how far behind upstream it is.

A repository row

Left to right, a repository row can carry:

Mark Means
↓n The primary checkout is n commits behind its upstream. A collapsed repository still says it is behind.
⑂ ↓n (outlined) A fork whose source has n commits the fork lacks.
Forge logo Where the repository is hosted. Click it to open the repository’s page in your browser.
No-push mark The forge says you cannot push here. Click it to fork — see Read-only checkouts.
Fork mark The repository is a fork.
Visibility mark Public, private or internal. Click it to ask the forge again.
n wts How many linked worktrees it has.
Star Pin the repository.
Reason pill In the Focused lens only: Current, Pinned, Viewed, Changes or 30d — see Lenses.

Forge marks need a connected CLI. A repository PwrGit has never been able to ask about carries no mark at all, which is different from one the forge declined to describe. Every mark has a hover card that opens on keyboard focus too.

The row’s ⋯ menu (named repository actions for screen readers):

Inside an expanded repository

An expanded repository draws its sections in this order:

  1. The primary checkout — the repository’s main working tree.
  2. Pinned — pinned worktrees, and pinned branches no worktree holds. See Branch pins.
  3. Working — in the Focused lens only, the linked worktrees with something going on.
  4. Worktrees — the linked worktrees, headed Other worktrees once some are shown above, or More worktrees in Focused. It draws up to six worktrees still in flight, then Finished n and View all n worktrees…. See Worktrees.
  5. Pull requests — Merge requests on GitLab — the repository’s open requests across its forge remotes. See Pull requests.
  6. Branches, with n ahead, n behind and n gone chips on the heading. Each chip opens the refs browser filtered to those branches.
  7. Tags.
  8. Remotes.

Long lists end in View all n …, which opens the refs browser — the same rows, searchable, on tabs for Worktrees, Branches, Tags, Remotes and Pull requests. Anything a sidebar row can do, its refs-browser row can do too.

The sidebar in the All lens with openclaw expanded, fork badge 6 behind. In order: main, primary, 6 behind upstream; Worktrees 8, six rows with PR chips and feat/token-miser selected; Finished 2; View all 8 worktrees; New worktree; Pull requests 500, 313 failing; Branches 13 with 1 ahead, 1 behind and 2 gone chips; Tags 476; Remotes 2.
An expanded repository: checkouts first, then its pull requests, branches, tags and remotes.

Arrangement and sort

Remote status on every row

Rows report how far they are ahead of and behind their remotes without being selected. PwrGit checks only the rows on screen, and only while a PwrGit window is focused: each repository at most once a minute, linked worktrees batched into one git ls-remote --heads per remote, and only branches whose tip moved are fetched. Resting the pointer on a row for three-quarters of a second, or selecting it, checks it at once. Local counts — uncommitted changes, ahead, behind — are recomputed for visible rows every 30 seconds (every two minutes while no PwrGit window is focused), and immediately when Git changes a repository’s refs or index, including from a terminal.

The full rules, timeouts and network back-off are in Sync → Remote status.

Lenses

Five icon filters sit above the tree. Each icon’s hover card names its lens and count, a dot marks the lenses with anything in them, and the active one spells out its count.

Lens Shows
Focused The current repository, pinned ones, ones you viewed in the last 30 days, ones with uncommitted, unpushed or unpublished work, and ones with a commit in the last 30 days
Pinned Repositories you pinned, or that hold a pinned worktree or branch — drag to arrange
Behind Repositories with a worktree behind its upstream
Stale Repositories with worktrees safe to prune
All Every indexed repository, A–Z

Focused is a priority ladder, not a score: each repository takes the first rule it matches, shown as its reason pill — Current, Pinned, Viewed, Changes, 30d — and sorts by it. It shows twelve repositories at first, then Show all n focused. A new profile opens on All until there is anything to focus on.

Stale counts a worktree that is clean and is not the primary checkout, the default branch, missing or locked — and whose pull request merged, or which is in the default branch or diverged and untouched for more than 14 days. See Finding prunable worktrees, or Maintenance to check every repository at once.

A lens with nothing in it is dimmed, and its hover card says what would fill it. The arrow keys move between the lenses you can enter.

Branch pins

Repositories, worktrees and local branches pin independently. Pin a branch from the star on its row in the refs browser, or with Command+P (Ctrl+P) on its result in the Command Palette.

The Command Palette — Command+K or Command+F (Ctrl+K / Ctrl+F), or Jump to repo… — has its own page: Search and navigation.

Clone

Clone… in the sidebar opens a dialog with three parts: what to clone, how to connect, and where to put it.

The source box searches your forge as you type — it does not enumerate every repository you can see first, so the dialog is usable immediately. You can also type owner/name directly. A half-typed owner prefix like pwrdrvr/micro is treated as an owner-scoped search rather than an exact miss.

Progress reports as it runs. A cloned repository is listed straight away and fetches its forge details during the session.

The Clone a repository dialog with openclaw/openclaw picked from the GitHub search results. Under Clone from, The original is tagged read-only and Your fork, huntharo/openclaw, is selected and tagged checked out, already at /Users/huntharo/Developer/openclaw. Two organization chips under Fork into are blurred. The button reads Reveal checkout.
Clone the original or your fork. When your fork is already checked out, the dialog offers to reveal it.

Fork

Fork… — in the sidebar, on a repository’s ⋯ menu, or on a remote — forks on the forge and either clones your copy or switches an existing checkout over to it. Forks, fork routes, Fork in place and Switch origin to my fork are covered in Forges → Forks; cloning your fork in Clone your fork; pulling from a fork’s source is in Sync.

Remotes

The Remotes section of an expanded repository, and the refs browser’s Remotes tab (⋯ → Manage remotes…), list every remote with its fetch and push URLs and its branches.

Repository setup

⋯ → Repository setup…, or type setup in the Command Palette, opens a sheet showing what Git will do in this repository that isn’t in its files. It reads; the one thing it writes is this clone’s own exclude file, when you ask it to.

Hooks names the directory Git reads hooks from and why — Git’s default .git/hooks, or a core.hooksPath and where that setting came from. Each active hook shows what it calls, when it last ran, how long it took, and whether it passed or its exit code. Hooks left in .git/hooks while core.hooksPath points elsewhere are listed as not run, with a warning — and a specific one when a shadowed pre-push calls Git LFS, because LFS files may then not upload when you push. Hook map… lays out every hook Git can run at each operation.

Ignore rules lists the layers Git consults, in order:

Layer File Applies to
Team rules .gitignore Committed, shared with everyone. Open in editor.
This clone .git/info/exclude This checkout only. Edit inline.
This Mac ~/.config/git/ignore Every repository on this machine, whatever the platform — the label reads This Mac on Windows and Linux too. Open file.

Test a path answers whether a path is ignored, and if so by which file, line and pattern.

The Repository setup sheet for PwrSnap on its Hooks page, with Hooks 4 and Ignore rules 78 in the nav. Git reads hooks from .git/hooks, Git's default, shared by every worktree in this clone. Four hooks — post-checkout, post-commit, post-merge and pre-push — each call git lfs. 14 sample files are collapsed. Buttons: Open hooks directory, Reveal directory, Hook map.
Repository setup: which hooks Git will actually run, and why.

Not yet