Skip to content

floatpane/loom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo

loom

A beautiful Git commit and rebase editor for the terminal.

Go Version GitHub release License

loom is a lightweight TUI that replaces GIT_EDITOR for writing commit messages and interactive rebasing. It provides syntax-highlighted commit messages, conventional-commit autocomplete, co-author suggestions, a scrollable diff view, and a floating suggestion popup styled after VSCode and nvim-cmp.

Features

  • Commit message editor — syntax highlighting for conventional commits, trailers (Co-authored-by, Reviewed-by, Signed-off-by, etc.), and bullet points
  • Interactive rebase editor — change actions (pick, reword, edit, squash, fixup, drop), reorder commits, and expand inline diffs
  • Floating autocomplete — VSCode/nvim-style suggestion popup at the cursor position, powered by the bubble-overlay library
  • Conventional commit typesfeat, fix, docs, refactor, and more, with descriptions
  • Trailer autocomplete — suggests trailer names (Co-authored-by:, Reviewed-by:, …) and person values from git history and a persistent local store
  • Persistent people — co-authors and reviewers are saved to ~/.loom/people.json and recalled across sessions
  • Diff view — scrollable, syntax-highlighted diff with line numbers for 15+ languages

Installation

Homebrew

brew tap floatpane/loom
brew install loom

Snap

sudo snap install loom

Build from source

go install github.com/floatpane/loom@latest

Download binary

Download the latest binary from the releases page.

Usage

Set loom as your Git editor:

git config --global core.editor "loom"
git config --global sequence.editor "loom"

Or use it ad-hoc:

GIT_EDITOR=loom git commit
GIT_EDITOR=loom git rebase -i HEAD~5

loom automatically detects whether the file is a git-rebase-todo or a commit message and launches the appropriate interface.

Rebase command

loom also includes a convenience rebase command that fetches and rebases the current branch onto its upstream default branch:

loom rebase

This fetches the latest changes from the current branch's upstream remote and rebases onto upstream/<default-branch> (or the current remote's default branch if no upstream is configured).

To rebase a specific PR's branch without leaving your current branch:

loom rebase pr 123

This checks out PR #123's branch, rebases it onto its upstream, then returns you to the branch you were on.

Contributing

Pull requests are welcome. Please follow the PR template format.

License

MIT

About

Beatiful and powerful editor for Git

Resources

License

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Sponsor this project

 

Contributors