tij-0.1.0 is not a library.
Tij
Text-mode Interface for Jujutsu - A terminal user interface (TUI) for the Jujutsu version control system, inspired by tig.
Features
- Log View: Browse commit history with DAG graph visualization
- Diff View: View changes with syntax-highlighted diffs (added/deleted/context lines)
- Status View: See working copy status and changed files
- Undo/Redo: Safely undo and redo jj operations
- Vim-like Navigation: Familiar keybindings (j/k, g/G, ↑/↓)
- Revset Filtering: Filter commits using jj's powerful revset expressions
- Search: Find commits by description, author, or bookmark name
Requirements
- Rust 1.85+ (Edition 2024)
- Jujutsu installed and available in PATH
Installation
From crates.io (Recommended)
From Source
# Clone the repository
# Build and install
Development Build
Usage
Run tij in any Jujutsu repository:
Or specify a path:
Key Bindings
Log View
| Key | Action |
|---|---|
j / ↓ |
Move down |
k / ↑ |
Move up |
g |
Go to top |
G |
Go to bottom |
Enter |
Open diff view |
d |
Edit description |
e |
Edit change (set working copy) |
c |
Create new change |
S |
Squash into parent |
A |
Abandon change |
x |
Split change (opens diff editor) |
r |
Revset filter |
/ |
Search |
n / N |
Next/prev search result |
u |
Undo |
Ctrl+R |
Redo |
s |
Status view |
Tab |
Switch view |
? |
Help |
q |
Quit |
Diff View
| Key | Action |
|---|---|
j / ↓ |
Scroll down |
k / ↑ |
Scroll up |
d / u |
Half page down/up |
g / G |
Top/bottom |
] / [ |
Next/prev file |
q |
Back |
Status View
| Key | Action |
|---|---|
j / ↓ |
Move down |
k / ↑ |
Move up |
Enter |
Open diff for file |
C |
Commit changes |
Tab |
Switch view |
q |
Quit |
Input Mode (Revset/Search)
| Key | Action |
|---|---|
Enter |
Submit |
Esc |
Cancel |
Backspace |
Delete character |
Revset Examples
Filter commits using jj's revset expressions:
# Show all commits
all()
# Show recent commits
@-..@
# Show commits by author
author(email)
# Show commits on a branch
ancestors(bookmark_name)
# Combine expressions
ancestors(main) & author(me)
See jj revset documentation for more.
Default Display Behavior
Tij respects jj's default revset configuration. By default, jj shows only "relevant" commits:
- Current working copy (
@) - Recent mutable commits
- Trunk branch (main/master)
This means older commits and unrelated branches may not appear in the initial view. To see all commits:
- Press
rto open revset input - Enter
all()and press Enter
To permanently change the default, add to ~/.jjconfig.toml:
[]
= "all()"
Development
# Run with cargo
# Run tests
# Run linter
# Format code