VisualJJ brings the Jujutsu version control to VS Code (and compatible editors). It's Git-compatible and integrates with GitHub so you can create PRs without leaving the editor.
Beta: We're actively developing VisualJJ. If something doesn't work as expected, please email team@visualjj.com.
What VisualJJ does
Shows your change tree (commit graph) in a dedicated view.
Lets you edit, describe, and publish a change:
Create Pull Request on GitHub.
Ship Now to push directly (useful for non-GitHub remotes or solo projects).
Navigate the tree:
Jump here to start new work from any point.
Double-click any draft change (off main) to continue editing it.
Transform history:
Rebase onto main, split, squash, revert, duplicate.
Drag-and-drop rebase in the tree.
Quick start (60 seconds)
Open a folder with a Git repository and enable VisualJJ for it.
Open VisualJJ view: click the VisualJJ icon in the Side Bar (or Command Palette → "View: Show VisualJJ").
Make a small edit, then in VisualJJ: Set Description… → Create Pull Request.
Note: Sign in to GitHub to create Pull Requests. If the repository doesn't use GitHub as a remote, use Ship Now to publish your change.
Common workflows
Start review for commits: select the top change of your work and run Create Pull Request. VisualJJ includes the full stack.
Keep up to date with main: click Fetch, then run Rebase onto main from the context menu when the view shows main is ahead of your commits. Click Push to update PRs on GitHub.
Break up a large commit: use Split to separate unrelated files before publishing.
Squash small commits: start a new change to mark the next step of work, use Squash to combine them later.
Requirements & compatibility
Git: your local repository remains in Git format. Your usual Git tools continue to work.
Jujutsu: VisualJJ uses Jujutsu under the hood. No separate installation is required.
Environments: Desktop, WSL, SSH, and DevContainers are supported.
Telemetry & privacy
VisualJJ sends minimal, anonymous usage data (e.g., feature usage, errors) to help improve the extension.
It respects VS Code's telemetry setting. If telemetry is disabled in VS Code, VisualJJ does not send usage events.
No personal code or repository contents are transmitted.