Skip to content

Ffisegydd/loggit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Loggit - Git Log Inspector TUI

A keyboard-driven terminal user interface (TUI) for exploring git repository history with filtering, search, and expandable details.

Features

  • 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

Getting Started

Prerequisites

  • Rust 1.70+ (for building)
  • Git (for the repo you want to explore)

Installation

Clone and build from source:

git clone https://github.com/keiron/loggit.git
cd loggit
cargo build --release
./target/release/loggit

Usage

Run in any git repository:

loggit

The application will display commits from the current repository, newest first.

Keybindings

Navigation

  • / - Scroll up/down through commits
  • Cmd+↑ / Cmd+↓ - Jump to oldest/newest commit

Actions

  • Enter - Expand selected commit to see full details
  • Esc - Close expanded view or cancel search
  • / - Open search/filter mode
  • ? - Show help modal with all keybindings
  • q - Quit application

Searching & Filtering

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 date
  • date:START..END - Show commits in a date range
  • message:keyword - Show commits containing keyword in message

Combine filters: author:Jane message:bug

Press Enter to apply, Esc to cancel.

Project Structure

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

Development

See CLAUDE.md for architecture notes and development guidelines.

Run tests:

cargo test

Format code:

cargo fmt

Lint with clippy:

cargo clippy

See docs/TESTING.md for comprehensive testing guide.

Requirements

  • Minimum Terminal Size: 80x20 characters
  • Git: Must be run inside a git repository
  • Memory: Suitable for repositories up to ~100k commits

License

MIT License

Contributing

Contributions are welcome! Please ensure all tests pass and code is formatted with cargo fmt.

Future Enhancements (Phase 2+)

  • 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 2

  •  
  •  

Languages