A macOS desktop app that shows git repos as a navigable folder tree. Built with Tauri v2, Svelte 5, and the git2 Rust crate.
Overview: repo status, remotes, and recent commits. Changes: staged/unstaged files with an inline diff view.npm install -g pnpmxcode-select --install# Frontend dependencies
pnpm install
# Rust dependencies are handled automatically by Cargo
# when you run any tauri command
pnpm tauri dev
This starts the Vite dev server with HMR and compiles the Rust backend. The app window opens automatically.
pnpm tauri build
Produces a macOS .app bundle in src-tauri/target/release/bundle/macos/.
pnpm check
On first launch, the app prompts you to set a root directory path. This is saved to:
~/.config/git-explorer/config.json
Example config:
{
"root_path": "/Users/you/Code"
}
Rust backend (src-tauri/src/commands.rs): All git operations via the git2 crate
scan_directory — walks directory tree, identifies git repos, fetches from remotesget_repo_status — branch, staged/unstaged/untracked counts, ahead/behind, remote URLsget_commit_log — recent commits with hash, message, author, timestampload_config / save_config — persist settings to ~/.config/git-explorer/config.jsonSvelte 5 frontend — runes only ($state, $derived, $effect, $props), no stores
App.svelte — layout, state management, Tauri IPCFolderTree.svelte — expandable directory tree with status indicatorsRepoDetail.svelte — branch info, changes, commits, remotes, ahead/behindSearchBar.svelte — repo name filter| Color | Meaning |
|---|---|
| Green | Clean — no changes, up to date |
| Yellow | Dirty — uncommitted changes |
| Blue | Ahead of remote |
| Red | Behind remote |
| Orange | Diverged (both ahead & behind) |
Apache License 2.0 — see LICENSE.