samuelba

Jujutsu (jj) GUI

Ukemi

A visual interface for Jujutsu (jj) in VS Code.

In judo, ukemi is the art of falling safely. With jj and undo, every change is safe to try.

Ukemi sidebar: change graph with a stacked pull request, bookmarks, workspaces and evolution
Change graph, bookmarks, workspaces and evolution.
Pull request hover listing pipeline jobs, with stack position 2 of 2
CI jobs on a stacked pull request.

Features

  • Change graph

    See changes, bookmarks, tags, workspaces and conflicts. The working copy has a red seal. Filter by Recent, Mine, My history, Stack or Working copy (the working copy and its last 5 first parents), and set the history depth. Recent also shows the last 10 commits on the trunk. Changed files appear as a list or a tree.

  • Drag and drop

    Drag a change onto another to rebase it with its descendants. Hold Alt to move only that change, Ctrl to duplicate it, or Ctrl and Alt to duplicate it with its descendants. Drag a file to move its changes, or hold Ctrl to copy them. Drag a bookmark to move it.

  • Edit history

    Describe, create, edit, squash, split, abandon, duplicate and revert from the change. Rebase onto the trunk or another change, or insert the change before or after another. Ship to Trunk Now moves the trunk bookmark and pushes it. Start a new working copy on the trunk, or on a bookmark, request or revision. When a local bookmark and a remote bookmark share a name, Ukemi asks which one to use.

  • Bookmarks

    List local and remote bookmarks, and filter them by name. Open, edit, rename, delete, forget, track, untrack or push a bookmark. Start a pull or merge request, or a new workspace, from the menu.

  • Workspaces

    Open a workspace in this window or a new one. Open a terminal, refresh it, reveal it in the graph, or start a new change in it.

  • Split by hunks

    Select hunks in a split editor. Those hunks go into a new change before the original. You can also split by files.

  • Evolution

    Follow each amend, describe, snapshot and rebase of the selected change. Click a version to see what it changed, compare it with the current version, or restore its files.

  • Diffs

    Click a file to see its diff. Source Control shows the working copy when the Git extension does not. An optional editor-title button opens the jj diff.

  • Sync

    Fetch, push the current bookmark, push all bookmarks, undo and redo from the toolbar. Auto fetch stays off until you turn it on. SSH uses your agent. HTTPS uses your git credential helper, then your GitHub or GitLab sign-in.

  • Pull and merge requests

    Create a GitHub pull request or a GitLab merge request from a change. The proposed target is the parent bookmark, so the next request in a stack points at the one below it. Hover a request to see its jobs, then merge and clean up.

  • Stacked requests

    Requests that build on each other show their position, such as 2/3, next to the request number. Sync Stack pushes the bookmarks and points each request at the one below it, or at the trunk once that one is merged. On GitHub, synced stacks also appear in GitHub's stack view. Rebase Stack onto Trunk rebases the whole stack and offers to sync it.

  • Clean up

    Review merged and conflicted bookmarks, deleted remote bookmarks, workspaces that are not open, and divergent changes, then apply the selection.

  • Many repositories

    Ukemi finds repositories in subfolders. When it finds more than one, pick it in the dropdown. It follows the active editor.

No setup

When jj is missing, Ukemi downloads the official static release and checks its SHA-256 digest. That binary can be added to PATH in integrated terminals.

Requirements

Linux, tested on Ubuntu 24.04 and Fedora 44. jj 0.40 or later. Ukemi downloads jj 0.46 when you agree.