Download Latest Version jj-v0.36.0-x86_64-apple-darwin.tar.gz (9.4 MB)
Email in envelope

Get an email when there's a new version of Jujutsu VCS

Home / v0.35.0
Name Modified Size InfoDownloads / Week
Parent folder
jj-v0.35.0-x86_64-pc-windows-msvc.zip 2025-11-06 8.5 MB
jj-v0.35.0-aarch64-pc-windows-msvc.zip 2025-11-06 8.0 MB
jj-v0.35.0-x86_64-apple-darwin.tar.gz 2025-11-06 9.4 MB
jj-v0.35.0-x86_64-unknown-linux-musl.tar.gz 2025-11-06 9.7 MB
jj-v0.35.0-aarch64-apple-darwin.tar.gz 2025-11-06 8.9 MB
jj-v0.35.0-aarch64-unknown-linux-musl.tar.gz 2025-11-06 9.0 MB
jj-v0.35.0-docs-html.tar.gz 2025-11-06 1.7 MB
README.md 2025-11-06 6.0 kB
v0.35.0 source code.tar.gz 2025-11-06 2.2 MB
v0.35.0 source code.zip 2025-11-06 2.5 MB
Totals: 10 Items   59.9 MB 0

About

jj is a Git-compatible version control system that is both simple and powerful. See the installation instructions to get started.

Release highlights

  • Workspaces can now have their own separate configuration. For instance, you can use jj config set --workspace to update a configuration option only in the current workspace.

  • After creating a local bookmark, it is now possible to use jj bookmark track to associate the bookmark with a specific remote before pushing it. When pushing a tracked bookmark, it is not necessary to use --allow-new.

  • The new jj git colocation enable and jj git colocation disable commands allow converting between colocated and non-colocated workspaces.

Breaking changes

  • The remote_bookmarks(remote=pattern) revset now includes Git-tracking bookmarks if the specified pattern matches git. The default is remote=~exact:"git" as before.

  • The deprecated flag --summary of jj abandon has been removed.

  • The deprecated command jj backout has been removed, use jj revert instead.

  • The following deprecated config options have been removed:

  • signing.sign-all
  • core.watchman.register_snapshot_trigger
  • diff.format

Deprecations

  • jj bisect run --command <cmd> is deprecated in favor of jj bisect run -- <cmd>.

  • jj metaedit --update-committer-timestamp was renamed to jj metaedit --force-rewrite since the old name (and help text) incorrectly suggested that the committer name and email would not be updated.

New features

  • Workspaces may have an additional layered configuration, located at .jj/workspace-config.toml. jj config subcommands which took layer options like --repo now also support --workspace.

  • jj bookmark track can now associate new local bookmarks with remote. Tracked bookmarks can be pushed without --allow-new. #7072

  • The new jj git colocation command provides sub-commands to show the colocation state (status), to convert a non-colocated workspace into a colocated workspace (enable), and vice-versa (disable).

  • New jj tag set/delete commands to create/update/delete tags locally. Created/updated tags are currently always exported to Git as lightweight tags. If you would prefer them to be exported as annotated tags, please give us feedback on #7908.

  • Templates now support a .split(separator, [limit]) method on strings to split a string into a list of substrings.

  • -G is now available as a short form of --no-graph in jj log, jj evolog, jj op log, jj op show and jj op diff.

  • jj metaedit now accepts -m/--message option to non-interactively update the change description.

  • The CryptographicSignature.key() template method now also works for SSH signatures and returns the corresponding public key fingerprint.

  • Added template-aliases.empty_commit_marker. Users can override this value in their config to change the "(empty)" label on empty commits.

  • Add support for --when.workspaces config scopes.

  • Add support for --when.hostnames config scopes. This allows configuration to be conditionally applied based on the hostname set in operation.hostname.

  • jj bisect run accepts the command and arguments to pass to the command directly as positional arguments, such as jj bisect --range=..main -- cargo check --all-targets.

  • Divergent changes are no longer marked red in immutable revisions. Since the revision is immutable, the user shouldn't take any action, so the red color was unnecessarily alarming.

  • New commit template keywords local/remote_tags to show only local/remote tags. These keywords may be useful in non-colocated Git repositories where local and exported @git tags can point to different revisions.

  • jj git clone now supports the --branch option to specify the branch(es) to fetch during clone. If present, the first matching branch is used as the working-copy parent.

  • Revsets now support logical operators in string patterns.

Fixed bugs

  • jj metaedit --author-timestamp twice with the same value no longer edits the change twice in some cases.

  • jj squash: fixed improper revision rebase when both --insert-after and --insert-before were used.

  • jj undo can now revert "fetch"/"import" operation that involves tag updates. #6325

  • Fixed parsing of files(expr) revset expression including parentheses. #7747

  • Fixed jj describe --stdin to append a final newline character.

Contributors

Thanks to the people who made this release happen!

  • Alpha Chen (@kejadlen)
  • Angel Ezquerra (@AngelEzquerra)
  • ase (@adamse)
  • Austin Seipp (@thoughtpolice)
  • Benjamin Brittain (@benbrittain)
  • bipul (@bipulmgr)
  • Brian Schroeder (@bts)
  • Bryce Berger (@bryceberger)
  • Cole Helbling (@cole-h)
  • Daniel Luz (@mernen)
  • David Higgs (@higgsd)
  • Defelo (@Defelo)
  • Fedor (@sheremetyev)
  • Gabriel Goller (@kaffarell)
  • Gaëtan Lehmann (@glehmann)
  • George Christou (@gechr)
  • Ilya Grigoriev (@ilyagr)
  • Isaac Corbrey (@icorbrey)
  • James Coman (@jamescoman)
  • Joseph Lou (@josephlou5)
  • Lander Brandt (@landaire)
  • Martin von Zweigbergk (@martinvonz)
  • Michael Chirico (@MichaelChirico)
  • Owen Brooks (@owenbrooks)
  • Peter Schilling (@schpet)
  • Philip Metzger (@PhilipMetzger)
  • Remo Senekowitsch (@senekor)
  • Ross Smyth (@RossSmyth)
  • Scott Taylor (@scott2000)
  • Steve Fink (@hotsphink)
  • Steve Klabnik (@steveklabnik)
  • Theo Buehler (@botovq)
  • Theodore Dubois (@tbodt)
  • Theodore Keloglou (@sirodoht)
  • Yuya Nishihara (@yuja)
Source: README.md, updated 2025-11-06