Skip to Content

Diagnostics

When something behaves differently from the terminal, the diagnostics surfaces answer three questions: what command ran, which configuration applied, and what state the repository is in.

Git output

Git output shows the commands the application executed, their arguments and their output, streamed as they run. It is the first place to look when a Git operation fails in a way the UI summary does not explain.

  • Arguments are shown as executed, with credentials and URL userinfo redacted.
  • Long operations stream; a cancelled operation stops where it was cancelled.
  • Hook output appears here too, because hooks run as part of the Git command that triggered them.

The panel is a log, not a shell. It cannot run a command.

Effective Git config

The config viewer lists the effective value of every Git setting for the open repository, with its origin:

OriginMeaning
systemMachine-wide Git installation config
globalYour user config
localThe repository’s .git/config

Values are searchable and the whole list can be copied. It is the same view Git itself resolves, which makes it the fastest way to answer “why is this repository using that identity / signing key / pull strategy”.

Repository health

Repository health runs a bounded, local audit of the open repository. It never contacts a remote.

CheckWhat it reports
fsckCorrupt or missing objects, with the raw Git output capped for display
ObjectsLoose object count, packed state and disk usage
LargestThe largest blobs, up to a bounded list
BranchesMerged branches that can be deleted
RefsUpstreams that no longer exist, and other broken refs
CloneShallow or partial clones that explain missing history
LFSWhether LFS is used, whether git-lfs is installed, and how many files are still pointers
UntrackedLarge untracked files that would bloat the next commit

Findings are severity-ranked and each can offer an action: garbage collect, fsck, prune a gone remote branch, delete merged branches, pull LFS objects. Actions run through the same flows as the rest of the application and ask for confirmation where the flow does. Nothing runs automatically.

A check that cannot complete becomes a finding of its own, so a single failure does not hide the checks that succeeded. The scan is capped (50 000 objects, 2 000 untracked paths, 20 large items) and reports when it stopped early.

Diagnostics ZIP

Export diagnostics writes a ZIP into exports/logs under the data directory:

  • Application logs.
  • panic.log, if a previous run wrote one.
  • system.json with platform, version and data paths.
  • A copy of settings.json.
  • A short README explaining what the bundle contains.

The bundle does not include repository content, diffs, note bodies, tokens, agent environment values or the MCP token. Local paths and repository names can still appear in logs; read the bundle before sharing it publicly.

Logging

SettingRangeDefault
Leveldebug, info, warn, errorinfo
Max size1 to 100 MB per file10 MB
Max files1 to 505

Logs are structured (slog) with stable keys. They never contain diff bodies, note bodies, credentials or AI prompt contents. Rotation happens by size and count, so the total disk usage is bounded.

Log locations:

  • macOS: ~/Library/Logs/Gitwright
  • Windows: %AppData%\Gitwright\logs
  • Linux: ~/.config/Gitwright/logs

Open logs reveals the directory; Export diagnostics creates the bundle.

GUI PATH check

On macOS and Linux, a GUI application does not always inherit the PATH your shell has. Check GUI PATH compares the application’s environment with the login shell, and can copy the missing entries so you can fix the launch environment or set an absolute Git binary path in Settings.

Crash records

A fatal runtime error writes a crash record next to the logs rather than to a terminal no one is watching. Recovered panics in background work are logged normally. Both paths stay local; nothing is uploaded.

Next

  • Settings — logging level, backup and reset.
  • Troubleshooting — the problems these tools are used for.
  • Privacy — what a support bundle can contain.
Обновлено