# Jujutsu v0.37.0 - Product: Jujutsu (https://whatsnew.fyi/product/jujutsu) - Vendor: jj-vcs - Date: 2026-01-08 - Version: v0.37.0 - Original notes: https://github.com/jj-vcs/jj/releases/tag/v0.37.0 - Permalink: https://whatsnew.fyi/product/jujutsu/releases/v0.37.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** — A new syntax for referring to hidden and divergent change IDs is available: `xyz/n` where `n` is a number, allowing actions like `jj restore --from xyz/1 --to xyz` - **changed** — String patterns in revsets, command arguments, and configuration are now parsed as globs by default, with `substring:` or `exact:` prefix available as needed - **changed** — `remotes..auto-track-bookmarks` is now parsed the same way as in revsets and can be combined with logical operators - **changed** — `jj bookmark track`/`untrack` now accepts `--remote` argument, with the `@` syntax deprecated in favor of ` --remote=` - **changed** — On Windows, symlinks that point to a path with `/` are no longer supported as this path is invalid on Windows - **changed** — The template alias `format_short_change_id_with_hidden_and_divergent_info(commit)` has been replaced by `format_short_change_id_with_change_offset(commit)` - **removed** — Removed deprecated config options: `git.push-bookmark-prefix`, `ui.default-description`, `ui.diff.format`, `ui.diff.tool` - **removed** — Removed the deprecated `commit_id.normal_hex()` template method - **changed** — Template expansion that does not produce a terminating newline will not be fixed up by `jj log`, `jj evolog`, or `jj op log` - **changed** — The `diff` conflict marker style can now use `\\\\\\\` markers to indicate the continuation of a conflict label from the previous line - **deprecated** — The `git_head()` and `git_refs()` functions will be removed from revsets and templates - **added** — Updated the executable bit representation in the local working copy to allow ignoring executable bit changes on Unix with `working-copy.exec-bit-change = "respect" | "ignore"` - **changed** — `jj workspace add` now works for empty destination directories - **added** — `jj git remote` family of commands now supports different fetch and push URLs - **added** — `[colors]` table now supports `dim = true` attribute - **added** — In color-words diffs, context line numbers are now rendered with decreased intensity - **added** — `jj util gc` now prunes unreachable files in `.jj/repo/store/extra` to save disk space - **added** — Early version of a `jj file search` command for searching for a pattern in files like `git grep` - **added** — Conflict labels now contain information about where the sides of a conflict came from - **added** — `--insert-before` now accepts a revset that resolves to an empty set when used with `--insert-after` ###### 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.37.0/install-and-setup/) to get started. ###### Release highlights * A new syntax for referring to hidden and divergent change IDs is available: `xyz/n` where `n` is a number. For instance, `xyz/0` refers to the latest version of `xyz`, while `xyz/1` refers to the previous version of `xyz`. This allows you to perform actions like `jj restore --from xyz/1 --to xyz` to restore `xyz` to its previous contents, if you made a mistake. For divergent changes, the numeric suffix will always be shown in the log, allowing you to disambiguate them in a similar manner. ###### Breaking changes * [String patterns](docs/revsets.md#string-patterns) in revsets, command arguments, and configuration are now parsed as globs by default. Use `substring:` or `exact:` prefix as needed. * `remotes..auto-track-bookmarks` is now parsed the same way they are in revsets and can be combined with logical operators. * `jj bookmark track`/`untrack` now accepts `--remote` argument. If omitted, all remote bookmarks matching the bookmark names will be tracked/untracked. The old `@` syntax is deprecated in favor of ` --remote=`. * On Windows, symlinks that point to a path with `/` won't be supported. This path is [invalid on Windows](https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions). * The template alias `format_short_change_id_with_hidden_and_divergent_info(commit)` has been replaced by `format_short_change_id_with_change_offset(commit)`. * The following deprecated config options have been removed: - `git.push-bookmark-prefix` - `ui.default-description` - `ui.diff.format` - `ui.diff.tool` * The deprecated `commit_id.normal_hex()` template method has been removed. * Template expansion that did not produce a terminating newline will not be fixed up to provide one by `jj log`, `jj evolog`, or `jj op log`. * The `diff` conflict marker style can now use `\\\\\\\` markers to indicate the continuation of a conflict label from the previous line. ###### Deprecations * The `git_head()` and `git_refs()` functions will be removed from revsets and templates. `git_head()` should point to the `first_parent(@)` revision in colocated repositories. `git_refs()` can be approximated as `remote_bookmarks(remote=glob:*) | tags()`. ###### New features * Updated the executable bit representation in the local working copy to allow ignoring executable bit changes on Unix. By default we try to detect the filesystem's behavior, but this can be overridden manually by setting `working-copy.exec-bit-change = "respect" | "ignore"`. * `jj workspace add` now also works for empty destination directories. * `jj git remote` family of commands now supports different fetch and push URLs. * `[colors]` table now supports `dim = true` attribute. * In color-words diffs, context line numbers are now rendered with decreased intensity. * Hidden and divergent commits can now be unambiguously selected using their change ID combined with a numeric suffix. For instance, if there are two commits with change ID `xyz`, then one can be referred to as `xyz/0` and the other can be referred to as `xyz/1`. These suffixes are shown in the log when necessary to make a change ID unambiguous. * `jj util gc` now prunes unreachable files in `.jj/repo/store/extra` to save disk space. * Early version of a `jj file search` command for searching for a pattern in files (like `git grep`). * Conflict labels now contain information about where the sides of a conflict came from (e.g. `nlqwxzwn 7dd24e73 "first line of description"`). * `--insert-before` now accepts a revset that resolves to an empty set when used wit _[Truncated at 4000 characters — full notes: https://github.com/jj-vcs/jj/releases/tag/v0.37.0]_