23 releases
Uses new Rust 2024
| new 0.3.20 | Feb 12, 2026 |
|---|---|
| 0.3.19 | Feb 12, 2026 |
| 0.2.0 | Feb 3, 2026 |
| 0.1.0 | Feb 3, 2026 |
#553 in Command line utilities
525KB
12K
SLoC
Tij
Text-mode Interface for Jujutsu - A TUI for the Jujutsu version control system, inspired by tig.
Why Tij?
Jujutsu (jj) makes Git's painful operations easy and safe. Tij brings that power to a visual interface:
| Git's Pain | jj's Solution | Tij's UI |
|---|---|---|
git stash management |
Always-committed working copy | One-key context switching |
git rebase -i complexity |
jj edit + auto-rebase |
Visual history editing |
git reflog recovery |
jj undo / jj op log |
Operation history view |
| Commit splitting | jj split |
Integrated diff editor |
| Conflicts block work | Keep conflicts, continue working | Visual conflict status |
Installation
# From crates.io (recommended)
cargo install tij
# From source
git clone https://github.com/nakamura-shuta/tij.git
cd tij && cargo install --path .
Requirements: Rust 1.88+, Jujutsu in PATH
Quick Start
cd /path/to/jj-repo
tij
Press ? for help, q to quit.
Features
Implemented
| Area | Features |
|---|---|
| Views | Log / Diff / Status / Help / Operation History / Blame |
| History Editing | Describe (d quick edit / Ctrl+E external editor) / Edit / New / New from selected / Commit / Squash / Abandon / Split / Rebase (revision/source/insert-after/insert-before) / Absorb |
| Conflict Resolution | Resolve List View / :ours / :theirs / External merge tool / Conflict jump |
| Recovery | Undo / Redo / Operation Restore |
| Bookmarks | Create / Move / Delete (multi-select) / Track remote / Jump |
| Git Integration | Fetch / Push (with dry-run preview, force push warnings, and protected bookmark detection) |
| Diff | Compare two revisions (jj diff --from --to) |
| Usability | Revset filtering / Text search / Adaptive status bar / Dynamic context-aware hints |
Planned
| Area | Features |
|---|---|
| Views | Bookmark View |
| Customization | Keybindings config / Themes |
Revset Examples
Press r to filter commits:
all() # Show all commits
@-..@ # Recent commits
author(email) # By author
ancestors(main) # Branch history
See jj revset docs for more.
Default Display
Tij uses jj's default revset (recent/relevant commits). To see all:
- Press
r, typeall(), Enter - Or set in
~/.jjconfig.toml:[revsets] log = "all()"
Development
cargo test # All tests (unit + integration)
cargo test --lib # Unit tests only
cargo test --tests # Integration tests only
cargo insta test # Snapshot tests
Test categories: Unit (363), Integration (50+), Snapshot (7), Property-based (15)
Acknowledgments
License
MIT
Dependencies
~15–22MB
~415K SLoC