## jj-vcs/jj — v0.44.0…v0.45.0

_119 commits._

### Features
- **jj-core: add description to Cargo.toml** (795bfd7)
- **template docs: Add some more info about default color labels** (08f5df7)
- **jj-core: add LICENSE file** (6aac2ea)
- **object_id: add missing docs** (5302b25)
- **cli: add WorkspaceCommandEnvironment::workspace_root() for convenience** (07cf83b)
- **util snapshot: Add examples** (9d7c63f)
- **cli:converge: new jj converge command** (9dd95ff)
- **crates: Add the `jj-core` crate** (2afb2cb)
- **config: add -K (quit-on-intr) to default less pager flags** (3a81f83)
- **git: introduce try_find_remote() wrapper that omits remotes without URLs** (4553d23)
- **tests: add a few more nodes to test_find_recursive_merge_commits() sample** (50eb27e)
- **bisect: distinguish Found from (new) FoundDespiteSkips** (f3b6c3b)

### Fixes
- **mise: fix codespell tasks on Windows by running them through pwsh** (bc32b44)
- **stacked_table: fix get_head_locked to preserve newly saved table after merging parent and child** (0a9b869)
- **nix: fix usage of `isLinux`, `isDarwin`** (b93845b)
- **cli fix: copyedit doc comment** (0fa35ae)
- **exec: Fix typo in docs** (7fa941e)

### Backend
- **release: 0.45.0** (8da2b7b)
- **mise: remove broken windows-specific config** (90cfe99)
- **cli: target primary config file for {edit,set,unset} --user** (c09b0c3)
- **cli: allow targeting specific file in {edit,set,unset} with --file** (e2c7ebe)
- **cargo: bump the cargo-dependencies group with 5 updates** (057fe05)
- **cli: propagate error and async-ness from print_unmatched_explicit_paths()** (5b2fdc1)
- **cli: log: propagate error and async-ness from unmatched explicit paths test** (b8b168b)
- **gerrit: Warn about possible divergence for automatically added trailers** (08a18f4)
- **gerrit: Clean up documentation** (e9e2892)
- **rustfmt: disable wrap_comments for now** (820ed8a)
- **config: include untracked_remote_tags() in immutable_heads()** (efe0cf1)
- **github: bump CI timeout once more** (e8ae58a)
- **core: move ref_name from jj-lib** (e2c93b3)
- **stacked_table: simplify get_head_locked() branching** (6631dbd)
- **cli: warn when sign-on-push skips immutable commits** (2af2ebb)
- **ref_name: reimplement formatting without using revset parser** (31e8937)
- **symbol_util: extract and optimize revset::format_string()** (9181bfb)
- **dsl_util: extract string formatting and parsing primitives to core** (8b615cb)
- **core: complete the documentation for the `Matcher` trait and module** (69eb145)
- **core: Move the `Matcher` trait and all implementations** (d8f580b)
- **cli: Change wording of `--no-graph` flags** (f2bdea4)
- **squash: Print hint when `--revision` resolves to multiple revisions** (43bc505)
- **core: move `graph` module from `jj-lib`** (e56912b)
- **core: move `conflict_labels` module from `jj-lib`** (13e3640)
- **core: move `merge` module from `jj-lib`** (9cf8e1e)
- **lib: turn inherent `Merge` impls into extension traits** (6398bfe)
- **arrange: scroll viewport to keep selection visible** (847db9f)
- **core: remove unused pollster dependency** (5f56e2c)
- **config-schema: specify type of color names** (033f381)
- **matchers: wrap globset::Glob in newtype to enforce parsing options** (4f30a27)
- **repo_path: move parse_fs_path() to jj-lib::ui_path** (4c771a1)
- **cli: run: don't omit "rebased descendants" message** (191f327)
- **cli: run: respect --quiet flag when printing status messages** (fc5603e)
- **run: do not rewrite commits when tree is unchanged** (879b909)
- **git: drop stale cache-tree before writing colocated index** (8ef9bee)
- **core: complete the documentation for `repo_path` and `file_util`** (4eb3035)
- **core: Move `repo_path` and `file_util` into it** (1f95fec)
- **repo_path: move RepoPathUiConverter to separate module** (7190eda)
- **repo_path: finish documentation of RepoPathUiConverter** (abea5a3)
- **core: move object_id from jj-lib, reorganize exports as public macro** (a475cdf)
- **lib: move CommidId/ChangeId display tests to backend module** (1296920)
- **str_util: make `StringMatcher` `Send` and `Sync`** (733c4ed)
- **git: reopen gix::Repository when worktree path matters** (00512fe)
- **tests: wrap git::import_head() and reset_head() calls** (fa84ed9)
- **core: move content_hash from jj-lib** (b42eac7)
- **lib: move ContentHash impl back to merge module** (a413000)
- **lib: remove redundant #[macro_use] attribute** (756a41a)
- **lib: don't reference internal modules as jj_lib::** (3c7553c)
- **cli: git: don't track Git HEAD of non-colocated repositories** (c61a519)
- **completion: honor diff selectors in path completion** (32942a5)
- **cli: git-push: consolidate formatting of operation descriptions** (9d905d5)
- **tests: create colocated workspace when Git HEAD matters** (792ca38)
- **tests: remove redundant git::import_head() calls** (ef5739c)
- **lib: find_divergent_changes returns commits in a definite order.** (7e7ca71)
- **lib: converge also uses timestamp to break ties when choosing producer commit** (c41c1ee)
- **tests: merge_tools: use associated types for SM tests** (76587cd)
- **core: move `str_util` module from `jj-lib`** (93ba64d)
- **core: move `hex_util` module from `jj-lib`** (f7b7822)
- **core: move `diff` module from `jj-lib`** (8648e96)
- **core: move `dag_walk` and `dag_walk_async` from `jj-lib`** (b6f1307)
- **describe: Update outdated editor documentation** (e8cc299)
- **web/docs: unbreak website build, refresh npm deps a bit** (8ff36a8)
- **cli: log: resolve query intersected with prioritize expression independently** (7e504e2)
- **revset: extract helper that wraps expression in "resolved" at_operation() node** (074ea0b)
- **revset: ensure at_operation(op, filter..) resolution is scoped** (7510ef4)
- **run: stop running remaining revisions after a command fails** (12618c2)
- **cli: remove mutable part from unchecked_start_working_copy_mutation()** (5835b4e)
- **npm: bump js-yaml from 4.3.0 to 4.3.1 in /web/docs** (ede0888)
- **cli: reset Git HEAD when updating a stale working copy** (d372bab)
- **index: turn ChangeIdIndex trait async** (e262f60)
- **index: make has_id() async** (a47d644)
- **repo: remove redundant .clone() from view forwarding functions** (4ae2382)
- **git_backend: Avoid double-computing the `gix::Hash::Oid`** (cdd15da)
- **index: make shortest_unique_commit_id_prefix_len() async** (09448c1)
- **index: make resolve_commit_id_prefix() async** (651f841)
- **github: bump the github-dependencies group with 2 updates** (2e63a1e)
- **cargo: bump the cargo-dependencies group across 1 directory with 3 updates** (6ed6335)
- **cargo: bump gix to 0.86.0** (7b6eb3b)
- **tests: use syntactically valid config example in invalid remotes test** (b7a9381)
- **view: rename remove_wc_commit() to remove_workspace()** (e4f6029)
- **git: track HEAD per worktree** (f3115e3)
- **index: make changed_paths_in_commit() async** (675d72a)
- **lib: remove some unused imports** (36d6b7e)
- **releasing.md: suggest `cargo publish --workspace`** (6e98d06)
- **index: make common_ancestors() async** (786e65a)
- **conflicts: don't drop a trailing CR when parsing a materialized conflict** (f1d7a87)
- **lib: move ContentHash impl for Merge to content_hash module** (2720683)
- **lib: move Merge<Tree> impls from merge module to tree module** (8a29775)
- **lib: move TreeValue-specific Merge impls to backend module** (d89eca0)
- **merge: rewrite with_new_file_ids() using only public Merge API** (c894cfa)
- **template: decouple error message from std lib impl** (6ed8d10)
- **changelog: Move entry to unreleased section** (ebd362b)
- **rewrite: implement find_recursive_merge_commits() without using machine stack** (f5e7311)
- **rewrite: minor cleanup in find_recursive_merge_commits()** (2a8e011)

### Docs
- **docs: add tracked/untracked_remote_tags() revset functions** (6aa0015)
- **docs: mention jj converge in docs/guides/divergence.md** (7007d08)
- **docs: add vaghinak-vardanyan to paid_contributors.md** (253d3be)
- **docs: add pmandloi28 to paid_contributors.md** (a73aaa5)
- **docs: add technical explanation of revset evaluation** (f4c039f)
- **docs: Clarify that `JJ_CONFIG` only overrides user configs** (8f29cac)

### Chore
- **chore: update cargo deps** (b1ed296)
- **chore: update nix flake lockfile** (b765360)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/jj-vcs/jj?utm_source=github-action)._