gitwig

πŸ“‚ Item status indicators

Each repository card shows icons and badges reflecting its state:

General Icons

Compact Status Suffixes

For git repositories, the status indicator shows compact counts for any non-zero values:

Suffix Meaning Colour
N+ N files staged for commit Cyan
N! N files modified but not staged Yellow
N? N untracked files Muted
Nβœ• N conflicted files Red / Danger
N↑ N commits ahead of upstream (needs push) Bold Green
N↓ N commits behind upstream (needs pull/fetch) Bold Yellow

When all counts are zero, the indicator shows ● clean. Press ? or h at any time to see the legend inside the app.

⚠ Staging Divergence (⚠ PARTIAL)

When a repository has both staged changes and unstaged changes (modified or untracked) coexisting simultaneously, Gitwig will display a yellow ⚠ PARTIAL warning badge next to the repository name on its card.

Active Repository State Badges

When a repository has an active Git operation or special state, Gitwig displays a colored status badge:

Git LFS Badges ([LFS])

Files tracked by Git LFS will display a blue [LFS] badge next to their names in:

Global Summary Header Bar

The high-level dashboard stats at the top of the homepage show:

The four sections render as tabs and double as filters: click one, or cycle with Tab / Shift+Tab, to show only the matching repositories. The active tab is drawn as a highlighted block, and Esc returns to the unfiltered list. When a sticky label filter is active (L), the applied label is pinned as a ● label β–Ά chip at the left of the tab strip β€” click it to reopen the label picker β€” and all tab counts scope to that label.

Auto-Refresh & Manual Refresh

Items support ~ and ~/... expansion, so ~/code/gitwig resolves to your home directory.

Gitwig automatically refreshes all repository statuses in the background every 10 seconds using non-blocking background threads, ensuring the home dashboard is always live and up-to-date. You can also press R to manually refresh the selected item’s status immediately (e.g. after running a git command externally); the status bar briefly flashes Refreshed to confirm.

Fetch Outcome Indicators

Besides the manual bulk fetch (F), Gitwig also fetches repositories automatically in the background on a schedule: every auto_fetch_interval_mins minutes (default 10, 0 disables), with an optional per-repository interval override in the Repository Settings popup (s on the Overview screen).

While a fetch round is running, each card’s status column shows a Braille spinner and fetching.... When the fetch finishes, the outcome replaces the status for about 30 seconds:

Indicator Meaning
βœ“ done The remote was reached and refs were updated.
βœ— auth denied Credentials were rejected, or the account lacks permission on this remote.
βœ— host key The remote’s SSH host key is unknown, changed, or could not be verified.
βœ— not found The remote URL resolves, but the repository does not exist or is not visible.
βœ— unreachable DNS, routing, TLS, or proxy failure β€” the host could not be contacted.
βœ— no remote The repository has no remote configured, so there is nothing to fetch. Shown in warning colour rather than error colour.
βœ— timed out The remote accepted the connection but did not reply within fetch_timeout_secs.
βœ— local error Git refused the fetch locally (lock file, unwritable ref, and similar).
βœ— failed The failure did not match a known category; open the details for the raw output.

Successful results fade after the 30-second window and the card returns to its normal status. Failures are kept so an unreachable repository does not silently look healthy again β€” after the window the card shows its normal status with a small trailing βœ—.

Press E on a failed repository to open the full, sanitised git output along with the remote URL and a suggested remedy. Gitwig never lets git, ssh, or a credential helper prompt on the terminal, so a private or unreachable remote can no longer corrupt the display or hang the app.