Skip to content
Oeiuwq Faith Blog OpenSource Porfolio

anthrofract/jjdag

A TUI to manipulate the Jujutsu DAG.

anthrofract/jjdag.json
{
"createdAt": "2026-02-10T22:28:02Z",
"defaultBranch": "master",
"description": "A TUI to manipulate the Jujutsu DAG.",
"fullName": "anthrofract/jjdag",
"homepage": "",
"language": "Rust",
"name": "jjdag",
"pushedAt": "2026-03-06T23:24:39Z",
"stargazersCount": 43,
"topics": [],
"updatedAt": "2026-03-10T04:04:25Z",
"url": "https://github.com/anthrofract/jjdag"
}

![]!(screenshot.png)

A Rust TUI to manipulate the Jujutsu DAG.

Inspired by the great UX of Magit.

Very much a work in progress, consider this a pre-alpha release. But I already use it personally for almost all jj operations.

Once you run the program you can press ? to show the help info. Most of the commands you can see by running jj help in the terminal are implemented.

  • Browse the jj log tree with dynamic folding/unfolding of commits and file diffs.
  • Multi-key command sequences with transient-menu style help popups. For example type gpa to run jj git push --all, or gpt to run jj git push --tracked, or ss to squash the selected revision into its parent.
  • Output from jj commands is displayed in the bottom panel.
  • Mouse support: left click to select, right click to toggle folding, and scroll wheel to scroll.
  • jj abandon
  • jj absorb
  • jj bookmark create
  • jj bookmark delete
  • jj bookmark forget
  • jj bookmark move
  • jj bookmark rename
  • jj bookmark set
  • jj bookmark track
  • jj bookmark untrack
  • jj commit
  • jj describe
  • jj diff
  • jj duplicate
  • jj edit
  • jj evolog
  • jj file track
  • jj file untrack
  • jj git fetch
  • jj git push
  • jj interdiff
  • jj metaedit
  • jj new
  • jj next
  • jj parallelize
  • jj prev
  • jj rebase
  • jj redo
  • jj resolve
  • jj restore
  • jj revert
  • jj sign
  • jj simplify-parents
  • jj squash
  • jj status
  • jj undo
  • jj unsign

With cargo:

Terminal window
cargo install --git https://github.com/anthrofract/jjdag

Or with the nix flake:

inputs.jjdag.url = "github:anthrofract/jjdag";