# Jujutsu v0.35.0 - Product: Jujutsu (https://whatsnew.fyi/product/jujutsu) - Vendor: jj-vcs - Date: 2025-11-06 - Version: v0.35.0 - Original notes: https://github.com/jj-vcs/jj/releases/tag/v0.35.0 - Permalink: https://whatsnew.fyi/product/jujutsu/releases/v0.35.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Workspaces can now have their own separate configuration via `.jj/workspace-config.toml` and `jj config` subcommands support `--workspace` layer option - **added** — Use `jj bookmark track` to associate local bookmarks with a specific remote before pushing without `--allow-new` - **added** — New `jj git colocation` command with `status`, `enable`, and `disable` subcommands to convert between colocated and non-colocated workspaces - **added** — New `jj tag set` and `jj tag delete` commands to create, update, and delete tags locally - **added** — Templates now support a `.split(separator, [limit])` method on strings - **added** — `-G` short form available for `--no-graph` in `jj log`, `jj evolog`, `jj op log`, `jj op show`, and `jj op diff` - **added** — `jj metaedit` now accepts `-m`/`--message` option to non-interactively update the change description - **added** — The `CryptographicSignature.key()` template method now works for SSH signatures and returns the public key fingerprint - **added** — Added `template-aliases.empty_commit_marker` configuration option - **added** — Add support for `--when.workspaces` and `--when.hostnames` config scopes - **added** — `jj bisect run` accepts command and arguments directly as positional arguments - **added** — New commit template keywords `local_tags` and `remote_tags` to show only local or remote tags - **added** — `jj git clone` now supports `--branch` option to specify branches to fetch during clone - **added** — Revsets now support logical operators in string patterns - **changed** — Divergent changes are no longer marked red in immutable revisions - **removed** — The deprecated flag `--summary` of `jj abandon` has been removed - **removed** — The deprecated command `jj backout` has been removed, use `jj revert` instead - **removed** — Removed deprecated config options `signing.sign-all`, `core.watchman.register_snapshot_trigger`, and `diff.format` - **deprecated** — `jj bisect run --command ` is deprecated in favor of `jj bisect run -- ` - **deprecated** — `jj metaedit --update-committer-timestamp` was renamed to `jj metaedit --force-rewrite` - **fixed** — `jj metaedit --author-timestamp` twice with the same value no longer edits the change twice - **fixed** — `jj squash` fixed improper revision rebase when both `--insert-after` and `--insert-before` were used - **fixed** — `jj undo` can now revert fetch and import operations involving tag updates - **fixed** — Fixed parsing of `files(expr)` revset expression including parentheses - **fixed** — Fixed `jj describe --stdin` to append a final newline character ###### About jj is a Git-compatible version control system that is both simple and powerful. See the [installation instructions](https://jj-vcs.github.io/jj/v0.35.0/install-and-setup/) 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 ` is deprecated in favor of `jj bisect run -- `. * `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](https://github.com/jj-vcs/jj/issues/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](https://github.com/jj-vcs/jj/issues/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 run --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 repositori _[Truncated at 4000 characters — full notes: https://github.com/jj-vcs/jj/releases/tag/v0.35.0]_