# Jujutsu v0.38.0 - Product: Jujutsu (https://whatsnew.fyi/product/jujutsu) - Vendor: jj-vcs - Date: 2026-02-05 - Version: v0.38.0 - Original notes: https://github.com/jj-vcs/jj/releases/tag/v0.38.0 - Permalink: https://whatsnew.fyi/product/jujutsu/releases/v0.38.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'. --- - **changed** — Per-repo and per-workspace config is now stored outside the repo for security reasons, with automatic migration of legacy repos - **changed** — Minimum supported git command version is now 2.41.0 - **removed** — Deprecated ui.always-allow-large-revsets setting and all: revset modifier have been removed - **changed** — @ revset symbols can now be resolved to remote tags with tags prioritized ahead of bookmarks - **removed** — Legacy placeholder support for unset user.name or user.email has been removed - **changed** — If any side of a conflicted file is missing a terminating newline, the materialized file in the working copy will no longer be terminated by a newline - **deprecated** — The revset function diff_contains() has been renamed to diff_lines() - **changed** — jj git fetch now shows details of abandoned commits by default, matching jj abandon output format - **added** — jj workspace root now accepts an optional --name argument to show the root path of the specified workspace - **changed** — jj git push --bookmark will now automatically track the bookmark if it isn't tracked with any remote already - **added** — Add git_web_url([remote]) template function that converts a git remote URL to a web URL - **added** — New divergent() revset function for divergent changes - **changed** — String pattern values in revsets and templates can now be substituted by aliases - **added** — New config option remotes..auto-track-created-bookmarks that only applies to bookmarks created locally - **added** — jj tag list can now be filtered by revset - **changed** — Conflict markers will use LF or CRLF as the line ending according to the contents of the file - **added** — New experimental jj git fetch --tag flag to fetch tags in the same way as bookmarks - **added** — New remote_tags() revset function to query remote tags - **added** — New builtin hyperlink() template function that gracefully falls back to text when outputting to a non-terminal - **fixed** — jj git init --colocate now refuses to run inside a Git worktree with a helpful error message ###### 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.38.0/install-and-setup/) to get started. ###### Release highlights * Per-repo and per-workspace config is now stored outside the repo, for security reasons. This is not a breaking change because we automatically migrate legacy repos to this new format. `.jj/repo/config.toml` and `.jj/workspace-config.toml` should no longer be used. ###### Breaking changes * The minimum supported `git` command version is now 2.41.0. macOS users will need to either upgrade "Developer Tools" to 26 or install Git from e.g. Homebrew. * Deprecated `ui.always-allow-large-revsets` setting and `all:` revset modifier have been removed. * `@` revset symbols can also be resolved to remote tags. Tags are prioritized ahead of bookmarks. * Legacy placeholder support used for unset `user.name` or `user.email` has been removed. Commits containing these values will now be pushed with `jj git push` without producing an error. * If any side of a conflicted file is missing a terminating newline, then the materialized file in the working copy will no longer be terminated by a newline. ###### Deprecations * The revset function `diff_contains()` has been renamed to `diff_lines()`. ###### New features * `jj git fetch` now shows details of abandoned commits (change IDs and descriptions) by default, matching the `jj abandon` output format. [#3081](https://github.com/jj-vcs/jj/issues/3081) * `jj workspace root` now accepts an optional `--name` argument to show the root path of the specified workspace (defaults to the current one). When given a workspace that was created before this release, it errors out. * `jj git push --bookmark ` will now automatically track the bookmark if it isn't tracked with any remote already. * Add `git_web_url([remote])` template function that converts a git remote URL to a web URL, suitable for opening in a browser. Defaults to the "origin" remote. * New `divergent()` revset function for divergent changes. * String pattern values in revsets and templates can now be substituted by aliases. For example, `grep(x) = description(regex:x)` now works. * A new config option `remotes..auto-track-created-bookmarks` behaves similarly to `auto-track-bookmarks`, but it only applies to bookmarks created locally. Setting it to `"*"` is now the closest replacement for the deprecated `git.push-new-bookmarks` option. * `jj tag list` can now be filtered by revset. * Conflict markers will use LF or CRLF as the line ending according to the contents of the file. [#7376](https://github.com/jj-vcs/jj/issues/7376) * New *experimental* `jj git fetch --tag` flag to fetch tags in the same way as bookmarks. If specified, tags won't be fetched implicitly, and only tags matching the pattern will be fetched as `@` tags. The fetched remote tags will be tracked by the local tags of the same name. * New `remote_tags()` revset function to query remote tags. * New builtin `hyperlink()` template function that gracefully falls back to text when outputting to a non-terminal, instead of emitting raw OSC 8 escape codes. [#7592](https://github.com/jj-vcs/jj/issues/7592) ###### Fixed bugs * `jj git init --colocate` now refuses to run inside a Git worktree, providing a helpful error message with alternatives. [#8052](https://github.com/jj-vcs/jj/issues/8052) * `jj git push` now ensures that tracked remote bookmarks are updated even if there are no mappings in the Git fetch refspecs. [#5115](https://github.com/jj-vcs/jj/issues/5115) * `jj git fetch`/`push` now forwards most of `git` stderr outputs such as authentication requests. [#5760](https://github.com/jj-vcs/jj/issues/5760) * Conflicted bookmarks and _[Truncated at 4000 characters — full notes: https://github.com/jj-vcs/jj/releases/tag/v0.38.0]_