Radicle is a peer-to-peer, local-first code collaboration stack built on Git.
Radicle 1.2.0
02.06.2025The 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 -sSf https://radicle.xyz/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-agentconnection fails - The remote helper will print
git range-diffs when creating new patch revisions rad seedandrad unseedcan now take multiple RIDsrad cob [create | update]have been addedrad config schemafor emitting a JSONSchema of the configuration- Better syntax highlighting
rad cob showhandles 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_receiptscrate 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.
6f25d73dbuild: remove quotes from rust-version fintan.halpenny@gmail.come9cf91e1cob: bump major version fintan.halpenny@gmail.come6ef767fradicle: remove job cob fintan.halpenny@gmail.comf4c8ff7achore: prepare crates release fintan.halpenny@gmail.comcaf9e241cli: fix outputs fintan.halpenny@gmail.comae1165fabuild: do not assumeradremote fintan.halpenny@gmail.comedcfcae7build: fix ssh symlinking fintan.halpenny@gmail.com40e9b7babuild: update cargo-zigbuild version to 0.20 fintan.halpenny@gmail.com7dcfe457build: Dockerfile uses Rust version fromrust-toolchain.tomlfintan.halpenny@gmail.com924b9328cli: change announcement message fintan.halpenny@gmail.comd1ba665eradicle: introduce sync::announce tests fintan.halpenny@gmail.comaa7dcd92radicle: use a struct to help announce success counts fintan.halpenny@gmail.com5a0c14cfradicle: ensure preferred seeds are announced to fintan.halpenny@gmail.comc57d43f2radicle: schemars test should be behind feature flag fintan.halpenny@gmail.com5b4cbc2cradicle: introduce announcer fintan.halpenny@gmail.comfa9c6cd1radicle: move PrivateNetwork tonode::syncfintan.halpenny@gmail.comcc96b9edcli: improve rad clone fintan.halpenny@gmail.com059c8045radicle: fix build when schemars feature is not enabled aclopte@gmail.com1a67ac18cli: reword sync replicas help lorenz.leutgeb@radicle.xyzeec4dd45radicle: improve sync fetching fintan.halpenny@gmail.comc205322cnode: fix e2e reader limit test fintan.halpenny@gmail.comb608a788cli:rad config schemaemits JSON Schema n4ch7@r1v3nd3115a2f26eacli/node/status: Redesign lorenz.leutgeb@radicle.xyzee12f76ccli/tests: Fix nextest running via Nix lorenz.leutgeb@radicle.xyz9988b63bcob: abstract namespace identifier fintan.halpenny@gmail.com1f4fcc5eradicle: move tosignaturecrate fintan.halpenny@gmail.com41f9048dnix: Add flake check that builds at MSRV lorenz@leutgeb.xyz105b65c2workspace: set rust-version (MSRV) liw@liw.fi9f2c4e39chore: use watch_file in .envrc fintan.halpenny@gmail.com5a0a334dbuild(debian/rules): install into a location where Debian expects liw@liw.fie0d18b86systemd: Add example configuration for DNS-SD lorenz@leutgeb.xyz98cf054bgit: Add .direnv to .gitignore lorenz@leutgeb.xyzf5fa84fatest: set name and email for repository fixture fintan.halpenny@gmail.com59a10214hook: Makecargo checkandcargo clippyonly execute pre-push lorenz@leutgeb.xyz5553a147cli/tests: Relax expectations inrad-clone-partial-fail.mdlorenz@leutgeb.xyzf30760d6cob: Add CobAction::produces_identifier and validation lorenz@leutgeb.xyze4d23fe5cli: Introducecob [create|update]lorenz@leutgeb.xyz547614a5cli-test: Add current working directory to PATH lorenz@leutgeb.xyz30182233cli: Allow multiple RIDs forrad unseedsekhat@temporus.me6bbe919ccli: allow multiple RIDs forrad seedsekhat@temporus.mea90aabb1node: rate limiter for channel reads fintan.halpenny@gmail.comf13afe49remote-helper: Printgit range-diffinvocation lorenz@leutgeb.xyz6dcd5627node: upload-pack inter-thread communication fintan.halpenny@gmail.comce8ac663radicle: usegit fetchover libigt2 in checkout fintan.halpenny@gmail.coma9fa31e5docs: add links to to README.md to home page and Zulip liw@liw.ficbca3af2chore: shellcheck fixes lorenz@leutgeb.xyzce07e92aAdd Git pre-commit hooks via Nix lorenz@leutgeb.xyz77386b0fbuild: Upload Git archive of heartwood lorenz@leutgeb.xyz10daedf9**cli: Add ‘rad node inventory –nid'** *<richard@levitte.org>* 8fd04483radicle: usegit pushto avoidlibgit2push fintan.halpenny@gmail.com433483e0Add Lorenz Leutgeb to.gitsignerslorenz@leutgeb.xyzdc1ff882cli/sync: Also print node addresses lorenz@leutgeb.xyz72913b8cfetch: integrate the latestgix-protocolintoradicle-fetchsebastian.thiel@icloud.com96637acachore: update rust-toolchain fintan.halpenny@gmail.com47c785b9signals: Usesignals_receiptscrate instead kcired@pm.mec05434ebcli: add emoji picker torad issue reacttippfehlr@gmail.com2af090eacli: fallible comment selector fintan.halpenny@gmail.com7eb07e1bchore(debian/changelog): update package version to match upstream liw@liw.fi13ba2ef0fix(debian/rules): cargo install offline liw@liw.fiebc8d037ci(.radicle/ambient.yaml): CI plan for Radicle CI Ambient adapter liw@liw.fi9abedf44cli: Don’t use ‘signer’ where not necessary richard@levitte.org538648c5cli: document disallow and edit options in manpages fintan.halpenny@gmail.coma5665412Cargo.lock: update crossbeam-channel to 0.5.15 istankovic@posteo.net9ef9c5d5radicle: add Op::load method fintan.halpenny@gmail.comc847a16eradicle: return iterator types for db policies fintan.halpenny@gmail.com7de82b50radicle: useAliasinfollowfintan.halpenny@gmail.com6940ac42radicle: reverse lookup for AliasStore fintan.halpenny@gmail.com3dba4fbccli: cargo fmt fintan.halpenny@gmail.comdd5f7396radicle: generic Transaction::initial fintan.halpenny@gmail.com170915ffnix: Nix flake maintenance fintan.halpenny@gmail.comc2863c08radicle: extend emoji support fintan.halpenny@gmail.coma9a4aac3docs, cli: Mention feedback, also via e-mail lorenz@leutgeb.xyza7230682cli: provide error context for ssh-agent connect fintan.halpenny@gmail.comffc86f8abuild: ensure zigbuild install doesn’t break reproducible build yorgos.work@proton.me3b5fac17crypto: RefCell instead of Mutex in Agent lorenz@leutgeb.xyz62d000f7radicle: fixparse_ref_*documentation fintan.halpenny@gmail.comee0d19f2man: make a note on draft patches fintan.halpenny@gmail.com4cced3ddcli: add remaining patch actions fintan.halpenny@gmail.com7d28d1e6ci: don’t build docs for depedencies liw@liw.fidfe89fb3ci: only deny warnings, not all clippy lints liw@liw.fia1cd0e2fcli: Add--titleand--descriptionedit option yorgos.work@proton.mef0390e00cli: print success to console onrad issue statefintan.halpenny@gmail.comffbdabe4cli: add comment edit for rad issue fintan.halpenny@gmail.com98598746radicle: addlist_by_statusmethod tocob::issue::Issuesme@sebastinez.dev7c902b69radicle: Addresolvesandlabelsmethod tocob::patch::Revisionme@sebastinez.dev65982434radicle: documentparse_refandparse_ref_namespacedfintan.halpenny@gmail.com41c33901radicle: use rlim_t when working with limits leah@vuxu.orgc8062bc4docs: note that node logs may also be in the system journal liw@liw.fi4c82bb4cradicle: add some documentation for node::events::Event liw@liw.fi2929146cradicle: clarify RefsAt description liw@liw.fib6cf6feacli: Fixrad lshelp message me@sebastinez.dev87cb7bf5build: Update zig installation method yorgos.work@proton.me87f6956ebuild: Fixes to release script cloudhead@radicle.xyzd274b28ascripts: Small fix to contributor count cloudhead@radicle.xyzd9c76893cli: bump version to 0.12.1 fintan.halpenny@gmail.com19bbdbcacli: fix syntax highlighting fintan.halpenny@gmail.com7ed72ec9cli: Fix some clippy lints cloudhead@radicle.xyz61865b5bcob: fix documentation fintan.halpenny@gmail.com8e2fe644scripts: Improve changelog script cloudhead@radicle.xyz5fe3d5a7cli: Handle broken pipe incob showcloudhead@radicle.xyz7616dcb7cli/cob: Output JSON Lines lorenz@leutgeb.xyz8865b559cli/cob: Allow showing multiple COBs at once lorenz@leutgeb.xyz289e59bbterm: Bump version to 0.12.0 cloudhead@radicle.xyzb4f18f43cli: Bump to 0.12.0 lorenz@leutgeb.xyz1fa1cafecli: Update tree-sitter lorenz@leutgeb.xyzfd892d00Updateradicleto 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