A keyboard-driven terminal user interface (TUI) for exploring git repository history with filtering, search, and expandable details.
- Fast Keyboard Navigation: Up/down arrows to scroll, Cmd+up/down to jump to oldest/newest
- Smart Filtering: Filter by author, date range, or commit message
- Expanded Details: Press Enter to see full commit info and file changes
- Beautiful Terminal UI: Responsive, colorful interface using ratatui
- Error Handling: Graceful handling of non-git directories and edge cases
- Rust 1.70+ (for building)
- Git (for the repo you want to explore)
Clone and build from source:
git clone https://github.com/keiron/loggit.git
cd loggit
cargo build --release
./target/release/loggitRun in any git repository:
loggitThe application will display commits from the current repository, newest first.
↑/↓- Scroll up/down through commitsCmd+↑/Cmd+↓- Jump to oldest/newest commit
Enter- Expand selected commit to see full detailsEsc- Close expanded view or cancel search/- Open search/filter mode?- Show help modal with all keybindingsq- Quit application
Press / to enter search mode. Use filter syntax:
author:name- Show commits by author (case-insensitive)date:YYYY-MM-DD- Show commits on a specific datedate:START..END- Show commits in a date rangemessage:keyword- Show commits containing keyword in message
Combine filters: author:Jane message:bug
Press Enter to apply, Esc to cancel.
src/
├── main.rs # Application entry point and event loop
├── git.rs # Git layer: shells to git, parses output
├── data.rs # Data layer: in-memory repository indexing
├── input.rs # Input handler: keyboard event routing
├── render.rs # Render layer: terminal drawing with ratatui
├── tabs/
│ ├── mod.rs # Tab trait definition
│ └── commit_browser.rs # CommitBrowserTab implementation
└── lib.rs # Public API exports
See CLAUDE.md for architecture notes and development guidelines.
Run tests:
cargo testFormat code:
cargo fmtLint with clippy:
cargo clippySee docs/TESTING.md for comprehensive testing guide.
- Minimum Terminal Size: 80x20 characters
- Git: Must be run inside a git repository
- Memory: Suitable for repositories up to ~100k commits
MIT License
Contributions are welcome! Please ensure all tests pass and code is formatted with cargo fmt.
- File analysis tab showing which files change most frequently
- Author statistics tab with contribution metrics
- Interactive rebase support
- Branch browser
- Mouse support
- Performance optimizations for very large repositories