{"id":48413695,"url":"https://github.com/noahbclarkson/rgitui","last_synced_at":"2026-04-18T13:07:01.848Z","repository":{"id":342468825,"uuid":"1173257656","full_name":"noahbclarkson/rgitui","owner":"noahbclarkson","description":"A GPU-accelerated desktop Git client built in Rust with GPUI","archived":false,"fork":false,"pushed_at":"2026-04-13T05:50:49.000Z","size":3405,"stargazers_count":141,"open_issues_count":2,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-13T07:27:16.924Z","etag":null,"topics":["catppuccin-mocha","catppucin","cross-platform","desktop-app","git","git-client","github","gpu-accelerated","gpui","open-source","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/noahbclarkson.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["noahbclarkson"]}},"created_at":"2026-03-05T07:03:42.000Z","updated_at":"2026-04-13T06:20:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/noahbclarkson/rgitui","commit_stats":null,"previous_names":["noahbclarkson/rgitui"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/noahbclarkson/rgitui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noahbclarkson%2Frgitui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noahbclarkson%2Frgitui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noahbclarkson%2Frgitui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noahbclarkson%2Frgitui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/noahbclarkson","download_url":"https://codeload.github.com/noahbclarkson/rgitui/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noahbclarkson%2Frgitui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31969835,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["catppuccin-mocha","catppucin","cross-platform","desktop-app","git","git-client","github","gpu-accelerated","gpui","open-source","rust"],"created_at":"2026-04-06T06:35:10.808Z","updated_at":"2026-04-18T13:07:01.842Z","avatar_url":"https://github.com/noahbclarkson.png","language":"Rust","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/icons/app-icon-256.png\" width=\"128\" alt=\"rgitui logo\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003ergitui\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  A GPU-accelerated desktop Git client built with \u003ca href=\"https://github.com/zed-industries/zed/tree/main/crates/gpui\"\u003eGPUI\u003c/a\u003e and Rust.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/noahbclarkson/rgitui/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/noahbclarkson/rgitui/actions/workflows/ci.yml/badge.svg?branch=main\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/noahbclarkson/rgitui/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/noahbclarkson/rgitui?label=release\u0026color=blue\" alt=\"Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-green\" alt=\"License: MIT\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/noahbclarkson/rgitui/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/downloads/noahbclarkson/rgitui/total?color=orange\" alt=\"Downloads\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr /\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/screenshots/main.png\" width=\"100%\" alt=\"rgitui screenshot\" /\u003e\n\u003c/p\u003e\n\n---\n\n\u003e [!WARNING]\n\u003e **rgitui is still in early, active development.** Expect bugs, rough edges, and breaking changes between releases. If you run into something, please [open an issue](https://github.com/noahbclarkson/rgitui/issues) — it genuinely helps.\n\n---\n\n## Highlights\n\n- **GPU-accelerated** rendering via [GPUI](https://github.com/zed-industries/zed/tree/main/crates/gpui) (Zed's UI framework) — smooth 60 fps, even on large repos\n- **Multi-repo tabs** — open several repositories at once and switch between them\n- **Interactive rebase** — pick, squash, reword, fixup, and drop commits visually\n- **AI commit messages** — optional Google Gemini integration to draft commit messages from your staged diff\n- **Cross-platform** — Windows, Linux (AppImage), and macOS (Intel + Apple Silicon)\n\n## Features\n\n### Git operations\n\n| Category | Operations |\n|----------|-----------|\n| **Working tree** | Stage / unstage / discard at file, hunk, and line level |\n| **Commits** | Commit, amend, cherry-pick, revert |\n| **Branches** | Create, checkout, rename, delete, switch |\n| **Tags** | Create (annotated \u0026 lightweight), delete, checkout |\n| **Stash** | Save, pop, apply, drop, create branch from stash |\n| **Remote** | Fetch, pull, push, force push; multi-remote support |\n| **Merge** | Merge with conflict detection; accept ours / theirs resolution |\n| **Rebase** | Interactive rebase with pick / squash / reword / fixup / drop |\n| **Bisect** | Start, good, bad, skip, reset |\n| **Worktrees** | Create, list, switch |\n| **Submodules** | Init, update, manage |\n| **Other** | Clean untracked files, undo stack, crash recovery |\n\n### Views\n\n- **Commit graph** — animated lane-based visualization with Bezier-curve edges and commit search\n- **Diff viewer** — unified, side-by-side, and three-way conflict modes with syntax highlighting (syntect)\n- **Blame view** — per-line author info with avatars\n- **File history** — commit history filtered to a single file\n- **Reflog** — reference log browser\n- **Global search** — full-repo search via `git grep`\n- **Detail panel** — commit metadata, file list with diff stats, cherry-pick controls\n\n### GitHub integration\n\n- Device-flow authentication\n- Create pull requests from the UI\n- Browse issues and pull requests (cached with 60s TTL)\n\n### UI\n\n- Drag-resizable sidebar, detail panel, diff viewer, and commit panel\n- Command palette (`Ctrl+P`) with context-aware commands\n- Toolbar with one-click fetch, pull, push, branch, stash, create PR, and more\n- Status bar showing branch, ahead/behind, staged/unstaged counts, and operation status\n- Toast notifications and confirmation dialogs for destructive actions\n- Animated splash screen\n\n### Theming\n\nBuilt-in themes:\n\n- **Catppuccin Mocha** (default)\n- **Catppuccin Latte**\n- **One Dark**\n- Custom JSON themes via the config directory\n\n### Performance\n\n- Pre-computed trig tables for graph rendering\n- LRU caching for styled diff rows, blame, file history, and avatars\n- Diff prefetching (±25 commits, 200-entry cache)\n- Parallelized diff stats, stash, and worktree enumeration\n- All git operations run on a background executor to keep the UI thread free\n\n## Installation\n\n### Pre-built binaries\n\nDownload the latest release for your platform from the [Releases](https://github.com/noahbclarkson/rgitui/releases) page:\n\n| Platform | Artifact |\n|----------|----------|\n| **Windows** | `.zip` (portable) or `.exe` installer (adds to PATH, integrates with Add/Remove Programs) |\n| **Linux** | `.AppImage` (recommended) or `.tar.gz` |\n| **macOS Apple Silicon** | `.dmg` (aarch64) |\n\nEach release includes a `SHA256SUMS.txt` file for verification.\n\n\u003e **Note:** Binaries are not code-signed. On Windows, click \"More info\" then \"Run anyway\" in SmartScreen. On macOS, right-click the app and choose \"Open\", or run `xattr -cr /Applications/rgitui.app` from the terminal. **macOS builds are experimental** — the `.dmg` may trigger Gatekeeper warnings. Building from source (`cargo build --release`) is reliable and recommended for macOS users.\n\n### Build from source\n\n**Prerequisites:**\n\n- Rust stable toolchain\n\n**Linux system dependencies:**\n\n```bash\nsudo apt-get install -y \\\n  build-essential cmake clang lld pkg-config \\\n  libasound2-dev libfontconfig-dev libfreetype-dev libgit2-dev \\\n  libglib2.0-dev libssl-dev libsqlite3-dev libva-dev \\\n  libvulkan1 libvulkan-dev libwayland-dev libx11-xcb-dev \\\n  libxcb1-dev libxkbcommon-x11-dev libxkbcommon-dev \\\n  libxcomposite-dev libxdamage-dev libxext-dev libxfixes-dev \\\n  libxrandr-dev libxi-dev libxcursor-dev libdrm-dev \\\n  libgbm-dev libzstd-dev vulkan-tools\n```\n\n**Build and run:**\n\n```bash\ngit clone https://github.com/noahbclarkson/rgitui.git\ncd rgitui\ncargo build --release\n./target/release/rgitui            # or: cargo run --release\n```\n\nOpen a specific repository:\n\n```bash\nrgitui /path/to/repo\n```\n\n## Keyboard shortcuts\n\n### Global\n\n| Key | Action |\n|-----|--------|\n| `Ctrl+P` | Command palette |\n| `Ctrl+,` | Settings |\n| `Ctrl+O` | Open repository |\n| `Ctrl+F` | Search commit graph |\n| `Ctrl+Shift+F` | Global search (`git grep`) |\n| `Ctrl+Shift+R` | Fetch |\n| `Ctrl+G` | Generate AI commit message |\n| `Ctrl+Enter` | Commit staged changes |\n| `Ctrl+S` | Stage all |\n| `Ctrl+U` | Unstage all |\n| `Ctrl+B` | Create branch |\n| `Ctrl+Z` | Stash save |\n| `Ctrl+Shift+Z` | Stash pop |\n| `Ctrl+Tab` | Next tab |\n| `Ctrl+W` | Close tab |\n| `F5` | Refresh |\n| `?` | Shortcuts help |\n\n### Navigation\n\n| Key | Action |\n|-----|--------|\n| `j` / `k` | Move down / up in active list |\n| `g` / `Shift+G` | Jump to first / last item |\n| `[` / `]` | Previous / next hunk (diff) or commit (detail panel) |\n| `Tab` / `Shift+Tab` | Cycle panel focus |\n| `Alt+1`..`Alt+4` | Focus sidebar / graph / detail / diff |\n| `Ctrl+[` / `Ctrl+]` | Resize detail panel |\n| `Ctrl+Up` / `Ctrl+Down` | Resize diff viewer |\n| `/` | Search in focused panel |\n\n### Diff viewer\n\n| Key | Action |\n|-----|--------|\n| `d` | Toggle unified / side-by-side |\n| `p` | Toggle line-selection mode |\n| `s` | Stage selected hunks/lines |\n| `u` | Unstage selected hunks/lines |\n| `Ctrl+C` | Copy selected lines |\n| `Ctrl+A` | Select all |\n\n### Sidebar\n\n| Key | Action |\n|-----|--------|\n| `Enter` / `Space` | Activate selected item |\n| `s` | Stage / unstage selected file |\n| `x` / `Delete` | Delete branch, tag, stash, or discard file |\n\n### Other views\n\n| Key | Action |\n|-----|--------|\n| `b` | Open blame view |\n| `h` | Open file history view |\n| `d` | Switch to diff view |\n| `Shift+D` | Toggle diff display mode |\n| `y` | Copy commit SHA |\n| `Shift+C` | Copy commit message |\n\n## Architecture\n\nCargo workspace with 9 crates:\n\n| Crate | Purpose |\n|-------|---------|\n| `rgitui` | Binary entry point, splash screen, window management |\n| `rgitui_workspace` | Root workspace view — sidebar, toolbar, panels, dialogs, command palette |\n| `rgitui_git` | Git operations via `git2` (local) and shell `git` (network), repository state |\n| `rgitui_graph` | Commit graph visualization — lane layout, Bezier edges, canvas rendering |\n| `rgitui_diff` | Virtualized diff viewer — unified, side-by-side, three-way conflict modes |\n| `rgitui_ui` | Reusable component library — buttons, labels, badges, modals, toasts, text inputs |\n| `rgitui_theme` | Theme system with semantic color tokens and JSON theme loader |\n| `rgitui_ai` | AI commit message generation (Google Gemini) |\n| `rgitui_settings` | Settings persistence (JSON config), keychain integration, workspace snapshots |\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.\n\n## License\n\n[MIT](LICENSE)\n","funding_links":["https://github.com/sponsors/noahbclarkson"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoahbclarkson%2Frgitui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnoahbclarkson%2Frgitui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoahbclarkson%2Frgitui/lists"}