Thank you for your interest in contributing to rgitui! This document provides guidelines for contributing.
- Rust stable toolchain (see
rust-toolchain.toml) - System dependencies for GPUI (see below)
Linux:
sudo apt-get update
sudo apt-get install -y \
build-essential \
cmake \
clang \
lld \
gcc \
g++ \
pkg-config \
libasound2-dev \
libfontconfig-dev \
libfreetype-dev \
libgit2-dev \
libglib2.0-dev \
libssl-dev \
libsqlite3-dev \
libva-dev \
libvulkan1 \
libvulkan-dev \
libwayland-dev \
libx11-xcb-dev \
libxcb1-dev \
libxkbcommon-x11-dev \
libxkbcommon-dev \
libxcomposite-dev \
libxdamage-dev \
libxext-dev \
libxfixes-dev \
libxrandr-dev \
libxi-dev \
libxcursor-dev \
libdrm-dev \
libgbm-dev \
libzstd-dev \
vulkan-toolsWindows:
- Visual Studio Build Tools with C++ workload
macOS:
- Xcode Command Line Tools
# Clone and build
git clone https://github.com/noahbclarkson/rgitui.git
cd rgitui
cargo build
cargo run- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Make your changes
- Run checks:
cargo fmt --all cargo clippy --workspace --all-targets -- -D warnings cargo test --workspace - Commit your changes
- Push to your fork and open a Pull Request
- Follow standard Rust conventions
- Run
cargo fmtbefore committing - Ensure
cargo clippypasses without warnings - Write descriptive commit messages
rgitui is organized as a Cargo workspace with the following crates:
| Crate | Description |
|---|---|
rgitui |
Main binary entry point |
rgitui_workspace |
Root workspace view, panels, dialogs, and UI orchestration |
rgitui_git |
Git operations via libgit2, repository management |
rgitui_graph |
Commit graph visualization and layout |
rgitui_diff |
Diff viewer (unified and side-by-side) |
rgitui_ui |
Reusable UI components (buttons, labels, modals, etc.) |
rgitui_theme |
Theme system with semantic colors |
rgitui_settings |
Settings persistence, keychain integration |
rgitui_ai |
AI commit message generation |
Please use the GitHub issue template for bug reports. Include:
- Steps to reproduce
- Expected vs actual behavior
- Your environment (OS, version)