LazyGit-inspired TUI for Git written in Common Lisp
Find a file
Glenn Thompson dbe2a65acb release: v0.17.0 - fix CI-built binaries, multi-arch builds
- Use explicit /dev/tty fd for all terminal ops instead of sb-sys:*stdin*
- Defer all terminal state to runtime initialization
- Multi-arch CI builds (linux-x86_64, darwin-arm64, darwin-x86_64)
- Bump version to 0.17.0
2026-04-16 19:25:57 +01:00
.github/workflows ci: bump actions/checkout to v5 (Node.js 24) 2026-04-15 15:23:10 +01:00
images docs: Add screenshots to README 2026-04-10 07:30:21 +01:00
src release: v0.17.0 - fix CI-built binaries, multi-arch builds 2026-04-16 19:25:57 +01:00
tests Fix ESC/arrow keys, w key cycling, and staged file display 2026-02-08 21:33:07 +03:00
.gitignore Add comprehensive test suite: setup script, smoke tests, and manual checklist 2026-02-08 10:52:12 +03:00
build.lisp Fix version display and suppress SBCL banner 2026-02-03 08:45:46 +03:00
CHANGELOG.md release: v0.17.0 - fix CI-built binaries, multi-arch builds 2026-04-16 19:25:57 +01:00
diagnose.lisp Replace stty subprocess calls with direct termios FFI 2026-02-07 12:16:19 +03:00
gilt-0.1.0.tar.gz Update CHANGELOG.md with v0.10.0 and v0.11.0 releases 2026-02-02 16:57:14 +03:00
gilt.asd Update all docs 2026-02-09 11:04:34 +03:00
GUIDE.md feat: SIGWINCH terminal resize handling + v0.16.0 release 2026-04-15 13:18:02 +01:00
Makefile Add advanced Git features 2026-02-02 13:55:32 +03:00
README.md docs: Add screenshots to README 2026-04-10 07:30:21 +01:00
ROADMAP.md Update all docs 2026-02-09 11:04:34 +03:00

Gilt

Git Interface for Lisp Terminal

A LazyGit-style Git TUI written in Common Lisp.

Screenshots

Main View

Gilt main view showing 5-panel layout

Diff View

Gilt diff view showing file changes

Features

  • Pure ANSI rendering - No ncurses dependency, direct terminal control
  • LazyGit-inspired UI - Familiar 5-panel layout with colored output
  • Full color diffs - 256-color support with syntax highlighting
  • Fast and responsive - Lightweight terminal interface
  • CLOS architecture - Clean, extensible object-oriented design
  • Comprehensive Git operations - Stage, commit, push, pull, merge, rebase, cherry-pick, and more
  • Interactive rebase - Full rebase UI with pick, reword, squash, fixup, drop, and reorder
  • Bisect - Binary search for bad commits with b:bad g:good Q:reset
  • Git blame view - View file blame with commit info
  • Commit search - Filter commits by message or author
  • Tag support - Create, delete, push, and view tags
  • Remote management - Add, rename remotes; delete remote branches; fetch
  • Submodule support - View and update submodules
  • Worktree management - View, add, and remove working directories
  • Stash management - List, apply, pop, drop, and rename stashes
  • Config viewer - Browse git config (local/global/system)
  • Git-flow integration - Feature, release, and hotfix workflows
  • Merge conflict resolution - Resolve with ours/theirs/edit, abort merge
  • Force push - Push with --force-with-lease option
  • Context-sensitive hints - Help bar updates based on active panel and view
  • Custom keybindings - Define shell commands in ~/.config/gilt/commands.conf
  • Status bar - Branch tracking info and operation status
  • Cross-platform Unix support - Works on NixOS, standard Linux, macOS, WSL2

Requirements

  • SBCL (Steel Bank Common Lisp)
  • Quicklisp
  • Git

Installation

Build Standalone Executable

make build

This creates a gilt executable you can run directly:

./gilt

Install System-Wide

sudo make install

Then run from anywhere:

gilt

Quick Start

  1. Navigate to a Git repository
  2. Run ./gilt (or gilt if installed)
  3. Use j/k to navigate, Tab to switch panels
  4. Press Space to stage files, c to commit
  5. Press q to quit

Documentation

See GUIDE.md for the complete user guide including:

  • Screen layout and panel descriptions
  • All keybindings
  • Common workflows (staging, committing, merging, squashing, etc.)
  • New features: blame view, commit search, tags, remotes, submodules, worktrees, config viewer
  • Troubleshooting tips

See CHANGELOG.md for version history.

Architecture

File Description
ansi.lisp ANSI escape sequence library
terminal.lisp Raw terminal input handling
ui.lisp Panel and dialog drawing
git.lisp Git command interface
views.lisp Main UI views
main.lisp Application entry point

Makefile Targets

Target Description
build Build standalone executable
install Install to /usr/local/bin
uninstall Remove from /usr/local/bin
clean Remove build artifacts
run Run from source

License

MIT