Radish alpha
r
rad:z371PVmDHdjJucejRoRYJcDEvD5pp
Radicle website including documentation and guides
Radicle
Git
radicle.xyz _posts 2025-06-02-radicle-1.2.0.md

The Radicle team is delighted to announce the release of Radicle 1.2.0. This release contains 106 commits by 16 contributors 📈.

To upgrade or install, head to the download section, or run the following command from your terminal:

curl -sSLf {{ site.url }}/install | sh -s -- --version=1.2.0

Huge thanks to all the contributors, many of which are contributors from outside of the team. We appreciate the community that is being built here 🌱

Thank you to:

  • 🌱 Derick Eddington
  • 🌱 Ivan Stanković
  • 🌱 Lars Wirzenius
  • 🌱 Leah Neukirchen
  • 🌱 Richard Levitte
  • 🌱 Sebastian Martinez
  • 🌱 Sekhat Temporus
  • 🌱 Yorgos Saslis
  • 🌱 tippfehlr

Improved Repository Timings

There has been a huge improvement in initialising larger repositories. This was, unfortunately, due to libgit2 being a lot slower than git when performing file protocol push and fetches (thanks for creating an issue 10 years ago Linus).

Better rad sync Output

There has been a concerted effort to improve the fetching and announcing output when using rad sync. This also helped us improve rad clone which should not include many error messages, while also succeeding.

Breaking Changes

No breaking changes, as far as we are aware. Please report any issues via Radicle or message us on Zulip.

General Improvements

CLI

  • Output JSON lines for rad cob
  • Allow showing multiple COBs at once
  • Improvements to help documentation
  • The full set of actions for patches are now available via rad patch
  • Better error context when ssh-agent connection fails
  • The remote helper will print git range-diffs when creating new patch revisions
  • rad seed and rad unseed can now take multiple RIDs
  • rad cob [create | update] have been added
  • rad config schema for emitting a JSONSchema of the configuration
  • Better syntax highlighting
  • rad cob show handles broken pipes
  • Avoiding obtaining a signer when it is not necessary
  • Print node addresses when syncing

Library

  • Patch revisions can now be labelled and resolve comments
  • Issues can be listed by status
  • Extend the set of emojis that are supported
  • Provide an API to do a reverse lookup from aliases to NIDs
  • Use signals_receipts crate for improved signal handling
  • Integrate more up-to-date Gitoxide crates
  • Ensuring an MSRV of 1.81

Changelog

Here is the full Radicle 1.2.0 changelog.

Checksums

179cc84f9bca81cc6bec0a2b70d0a5fdd569db128973d755025022f81eeb07de  radicle-1.2.0-x86_64-unknown-linux-musl.tar.xz
63768853edd038bdb7dbf540c0ab9a6963cd6bf1bcf3e048d0eb0969544f5ffa  radicle-1.2.0-aarch64-unknown-linux-musl.tar.xz
3fdb2f97d9bab419c9f066f73b5f175284197ef3d1116e7d91428c1c672f1739  radicle-1.2.0-aarch64-apple-darwin.tar.xz
c2d45feebc9d7c71158e6c2430a3f39e3cd631323e496d3a9ce0625ce115ff0b  radicle-1.2.0-x86_64-apple-darwin.tar.xz
---
title: "Radicle 1.2.0"
image: radicle-1.png
redirect_from: /2025/06/02/radicle-1.2.html
---

The Radicle team is delighted to announce the release of Radicle 1.2.0. This
release contains 106 commits by 16 contributors 📈.

To upgrade or install, head to the [download](/download) section, or run the
following command from your terminal:

```
curl -sSLf {{ site.url }}/install | sh -s -- --version=1.2.0
```

**Huge** thanks to all the contributors, many of which are contributors from outside of the team. We appreciate the community that is being built here 🌱

Thank you to:
- 🌱 Derick Eddington
- 🌱 Ivan Stanković
- 🌱 Lars Wirzenius
- 🌱 Leah Neukirchen
- 🌱 Richard Levitte
- 🌱 Sebastian Martinez
- 🌱 Sekhat Temporus
- 🌱 Yorgos Saslis
- 🌱 tippfehlr

## Improved Repository Timings

There has been a huge improvement in initialising larger repositories. This was, unfortunately, due to `libgit2` being a lot slower than `git` when performing file protocol push and fetches (thanks for [creating an issue](https://github.com/libgit2/libgit2/issues/2836) 10 years ago Linus).

## Better `rad sync` Output

There has been a concerted effort to improve the fetching and announcing output when using `rad sync`. This also helped us improve `rad clone` which should not include many error messages, while also succeeding.

## Breaking Changes

No breaking changes, as far as we are aware. Please report any issues via Radicle or message us on [Zulip](radicle.zulipchat.com).

## General Improvements

### CLI

- Output JSON lines for `rad cob`
- Allow showing multiple COBs at once
- Improvements to help documentation
- The full set of actions for patches are now available via `rad patch`
- Better error context when `ssh-agent` connection fails
- The remote helper will print `git range-diff`s when creating new patch revisions
- `rad seed` and `rad unseed` can now take multiple RIDs
- `rad cob [create | update]` have been added
- `rad config schema` for emitting a JSONSchema of the configuration
- Better syntax highlighting
- `rad cob show` handles broken pipes
- Avoiding obtaining a signer when it is not necessary
- Print node addresses when syncing

### Library

- Patch revisions can now be labelled and resolve comments
- Issues can be listed by status
- Extend the set of emojis that are supported
- Provide an API to do a reverse lookup from aliases to NIDs
- Use `signals_receipts` crate for improved signal handling
- Integrate more up-to-date Gitoxide crates
- Ensuring an MSRV of 1.81

## Changelog

Here is the full Radicle 1.2.0 changelog.

* `6f25d73d` **build: remove quotes from rust-version** *<fintan.halpenny@gmail.com>*
* `e9cf91e1` **cob: bump major version** *<fintan.halpenny@gmail.com>*
* `e6ef767f` **radicle: remove job cob** *<fintan.halpenny@gmail.com>*
* `f4c8ff7a` **chore: prepare crates release** *<fintan.halpenny@gmail.com>*
* `caf9e241` **cli: fix outputs** *<fintan.halpenny@gmail.com>*
* `ae1165fa` **build: do not assume `rad` remote** *<fintan.halpenny@gmail.com>*
* `edcfcae7` **build: fix ssh symlinking** *<fintan.halpenny@gmail.com>*
* `40e9b7ba` **build: update cargo-zigbuild version to 0.20** *<fintan.halpenny@gmail.com>*
* `7dcfe457` **build: Dockerfile uses Rust version from `rust-toolchain.toml`** *<fintan.halpenny@gmail.com>*
* `924b9328` **cli: change announcement message** *<fintan.halpenny@gmail.com>*
* `d1ba665e` **radicle: introduce sync::announce tests** *<fintan.halpenny@gmail.com>*
* `aa7dcd92` **radicle: use a struct to help announce success counts** *<fintan.halpenny@gmail.com>*
* `5a0c14cf` **radicle: ensure preferred seeds are announced to** *<fintan.halpenny@gmail.com>*
* `c57d43f2` **radicle: schemars test should be behind feature flag** *<fintan.halpenny@gmail.com>*
* `5b4cbc2c` **radicle: introduce announcer** *<fintan.halpenny@gmail.com>*
* `fa9c6cd1` **radicle: move PrivateNetwork to `node::sync`** *<fintan.halpenny@gmail.com>*
* `cc96b9ed` **cli: improve rad clone** *<fintan.halpenny@gmail.com>*
* `059c8045` **radicle: fix build when schemars feature is not enabled** *<aclopte@gmail.com>*
* `1a67ac18` **cli: reword sync replicas help** *<lorenz.leutgeb@radicle.xyz>*
* `eec4dd45` **radicle: improve sync fetching** *<fintan.halpenny@gmail.com>*
* `c205322c` **node: fix e2e reader limit test** *<fintan.halpenny@gmail.com>*
* `b608a788` **cli: `rad config schema` emits JSON Schema** *<n4ch7@r1v3nd311>*
* `5a2f26ea` **cli/node/status: Redesign** *<lorenz.leutgeb@radicle.xyz>*
* `ee12f76c` **cli/tests: Fix nextest running via Nix** *<lorenz.leutgeb@radicle.xyz>*
* `9988b63b` **cob: abstract namespace identifier** *<fintan.halpenny@gmail.com>*
* `1f4fcc5e` **radicle: move to `signature` crate** *<fintan.halpenny@gmail.com>*
* `41f9048d` **nix: Add flake check that builds at MSRV** *<lorenz@leutgeb.xyz>*
* `105b65c2` **workspace: set rust-version (MSRV)** *<liw@liw.fi>*
* `9f2c4e39` **chore: use watch_file in .envrc** *<fintan.halpenny@gmail.com>*
* `5a0a334d` **build(debian/rules): install into a location where Debian expects** *<liw@liw.fi>*
* `e0d18b86` **systemd: Add example configuration for DNS-SD** *<lorenz@leutgeb.xyz>*
* `98cf054b` **git: Add .direnv to .gitignore** *<lorenz@leutgeb.xyz>*
* `f5fa84fa` **test: set name and email for repository fixture** *<fintan.halpenny@gmail.com>*
* `59a10214` **hook: Make `cargo check` and `cargo clippy` only execute pre-push** *<lorenz@leutgeb.xyz>*
* `5553a147` **cli/tests: Relax expectations in `rad-clone-partial-fail.md`** *<lorenz@leutgeb.xyz>*
* `f30760d6` **cob: Add CobAction::produces_identifier and validation** *<lorenz@leutgeb.xyz>*
* `e4d23fe5` **cli: Introduce `cob [create|update]`** *<lorenz@leutgeb.xyz>*
* `547614a5` **cli-test: Add current working directory to PATH** *<lorenz@leutgeb.xyz>*
* `30182233` **cli: Allow multiple RIDs for `rad unseed`** *<sekhat@temporus.me>*
* `6bbe919c` **cli: allow multiple RIDs for `rad seed`** *<sekhat@temporus.me>*
* `a90aabb1` **node: rate limiter for channel reads** *<fintan.halpenny@gmail.com>*
* `f13afe49` **remote-helper: Print `git range-diff` invocation** *<lorenz@leutgeb.xyz>*
* `6dcd5627` **node: upload-pack inter-thread communication** *<fintan.halpenny@gmail.com>*
* `ce8ac663` **radicle: use `git fetch` over libigt2 in checkout** *<fintan.halpenny@gmail.com>*
* `a9fa31e5` **docs: add links to to README.md to home page and Zulip** *<liw@liw.fi>*
* `cbca3af2` **chore: shellcheck fixes** *<lorenz@leutgeb.xyz>*
* `ce07e92a` **Add Git pre-commit hooks via Nix** *<lorenz@leutgeb.xyz>*
* `77386b0f` **build: Upload Git archive of heartwood** *<lorenz@leutgeb.xyz>*
* `10daedf9` **cli: Add 'rad node inventory --nid <nid>'** *<richard@levitte.org>*
* `8fd04483` **radicle: use `git push` to avoid `libgit2` push** *<fintan.halpenny@gmail.com>*
* `433483e0` **Add Lorenz Leutgeb to `.gitsigners`** *<lorenz@leutgeb.xyz>*
* `dc1ff882` **cli/sync: Also print node addresses** *<lorenz@leutgeb.xyz>*
* `72913b8c` **fetch: integrate the latest `gix-protocol` into `radicle-fetch`** *<sebastian.thiel@icloud.com>*
* `96637aca` **chore: update rust-toolchain** *<fintan.halpenny@gmail.com>*
* `47c785b9` **signals: Use `signals_receipts` crate instead** *<kcired@pm.me>*
* `c05434eb` **cli: add emoji picker to `rad issue react`** *<tippfehlr@gmail.com>*
* `2af090ea` **cli: fallible comment selector** *<fintan.halpenny@gmail.com>*
* `7eb07e1b` **chore(debian/changelog): update package version to match upstream** *<liw@liw.fi>*
* `13ba2ef0` **fix(debian/rules): cargo install offline** *<liw@liw.fi>*
* `ebc8d037` **ci(.radicle/ambient.yaml): CI plan for Radicle CI Ambient adapter** *<liw@liw.fi>*
* `9abedf44` **cli: Don't use 'signer' where not necessary** *<richard@levitte.org>*
* `538648c5` **cli: document disallow and edit options in manpages** *<fintan.halpenny@gmail.com>*
* `a5665412` **Cargo.lock: update crossbeam-channel to 0.5.15** *<istankovic@posteo.net>*
* `9ef9c5d5` **radicle: add Op::load method** *<fintan.halpenny@gmail.com>*
* `c847a16e` **radicle: return iterator types for db policies** *<fintan.halpenny@gmail.com>*
* `7de82b50` **radicle: use `Alias` in `follow`** *<fintan.halpenny@gmail.com>*
* `6940ac42` **radicle: reverse lookup for AliasStore** *<fintan.halpenny@gmail.com>*
* `3dba4fbc` **cli: cargo fmt** *<fintan.halpenny@gmail.com>*
* `dd5f7396` **radicle: generic Transaction::initial** *<fintan.halpenny@gmail.com>*
* `170915ff` **nix: Nix flake maintenance** *<fintan.halpenny@gmail.com>*
* `c2863c08` **radicle: extend emoji support** *<fintan.halpenny@gmail.com>*
* `a9a4aac3` **docs, cli: Mention feedback, also via e-mail** *<lorenz@leutgeb.xyz>*
* `a7230682` **cli: provide error context for ssh-agent connect** *<fintan.halpenny@gmail.com>*
* `ffc86f8a` **build: ensure zigbuild install doesn't break reproducible build** *<yorgos.work@proton.me>*
* `3b5fac17` **crypto: RefCell instead of Mutex in Agent** *<lorenz@leutgeb.xyz>*
* `62d000f7` **radicle: fix `parse_ref_*` documentation** *<fintan.halpenny@gmail.com>*
* `ee0d19f2` **man: make a note on draft patches** *<fintan.halpenny@gmail.com>*
* `4cced3dd` **cli: add remaining patch actions** *<fintan.halpenny@gmail.com>*
* `7d28d1e6` **ci: don't build docs for depedencies** *<liw@liw.fi>*
* `dfe89fb3` **ci: only deny warnings, not all clippy lints** *<liw@liw.fi>*
* `a1cd0e2f` **cli: Add `--title` and `--description` edit option** *<yorgos.work@proton.me>*
* `f0390e00` **cli: print success to console on `rad issue state`** *<fintan.halpenny@gmail.com>*
* `ffbdabe4` **cli: add comment edit for rad issue** *<fintan.halpenny@gmail.com>*
* `98598746` **radicle: add `list_by_status` method to `cob::issue::Issues`** *<me@sebastinez.dev>*
* `7c902b69` **radicle: Add `resolves` and `labels` method to `cob::patch::Revision`** *<me@sebastinez.dev>*
* `65982434` **radicle: document `parse_ref` and `parse_ref_namespaced`** *<fintan.halpenny@gmail.com>*
* `41c33901` **radicle: use rlim_t when working with limits** *<leah@vuxu.org>*
* `c8062bc4` **docs: note that node logs may also be in the system journal** *<liw@liw.fi>*
* `4c82bb4c` **radicle: add some documentation for node::events::Event** *<liw@liw.fi>*
* `2929146c` **radicle: clarify RefsAt description** *<liw@liw.fi>*
* `b6cf6fea` **cli: Fix `rad ls` help message** *<me@sebastinez.dev>*
* `87cb7bf5` **build: Update zig installation method** *<yorgos.work@proton.me>*
* `87f6956e` **build: Fixes to release script** *<cloudhead@radicle.xyz>*
* `d274b28a` **scripts: Small fix to contributor count** *<cloudhead@radicle.xyz>*
* `d9c76893` **cli: bump version to 0.12.1** *<fintan.halpenny@gmail.com>*
* `19bbdbca` **cli: fix syntax highlighting** *<fintan.halpenny@gmail.com>*
* `7ed72ec9` **cli: Fix some clippy lints** *<cloudhead@radicle.xyz>*
* `61865b5b` **cob: fix documentation** *<fintan.halpenny@gmail.com>*
* `8e2fe644` **scripts: Improve changelog script** *<cloudhead@radicle.xyz>*
* `5fe3d5a7` **cli: Handle broken pipe in `cob show`** *<cloudhead@radicle.xyz>*
* `7616dcb7` **cli/cob: Output JSON Lines** *<lorenz@leutgeb.xyz>*
* `8865b559` **cli/cob: Allow showing multiple COBs at once** *<lorenz@leutgeb.xyz>*
* `289e59bb` **term: Bump version to 0.12.0** *<cloudhead@radicle.xyz>*
* `b4f18f43` **cli: Bump to 0.12.0** *<lorenz@leutgeb.xyz>*
* `1fa1cafe` **cli: Update tree-sitter** *<lorenz@leutgeb.xyz>*
* `fd892d00` **Update `radicle` to 0.14** *<cloudhead@radicle.xyz>*

## Checksums

```
179cc84f9bca81cc6bec0a2b70d0a5fdd569db128973d755025022f81eeb07de  radicle-1.2.0-x86_64-unknown-linux-musl.tar.xz
63768853edd038bdb7dbf540c0ab9a6963cd6bf1bcf3e048d0eb0969544f5ffa  radicle-1.2.0-aarch64-unknown-linux-musl.tar.xz
3fdb2f97d9bab419c9f066f73b5f175284197ef3d1116e7d91428c1c672f1739  radicle-1.2.0-aarch64-apple-darwin.tar.xz
c2d45feebc9d7c71158e6c2430a3f39e3cd631323e496d3a9ce0625ce115ff0b  radicle-1.2.0-x86_64-apple-darwin.tar.xz
```