Radicle 1.9.0 – Hawthorn
Radicle is a peer-to-peer, local-first code<br>collaboration stack built on Git.
The Radicle team would like to announce the release of Radicle 1.9.0, code name Hawthorn.<br>The Hawthorn tree, or Mayflower, signifies the coming of summer, and has significance for many cultures.<br>In particular, the Hawthorn tree represents the door to the “other side” and is the home of the fairies in Irish culture.<br>It is forbidden to cut down the Hawthorn tree, unless you want to be cursed by the fairies.<br>So, this release represents being on the other side of the fixed security vulnerability in 1.8.0, and readying ourselves to ensure stronger foundations for the future.
This release contains 165 commits by 9 contributors, with a big thanks to:
Daniel Norman
Josh Soref
Richard Levitte
stefan
Wiktor Kwapisiewicz
Installation
curl -sSLf https://radicle.dev/install | sh -s -- --no-modify-path --version=1.9.0
In this Release
Domain Name Migration
Following a domain move of the project, the names of the bootstrap nodes have changed to: {iris,rosa}.radicle.{xyz → network}.<br>If you are still using the old names in the Radicle configuration, this will be detected and you will see warnings printed.<br>Similarly, if you are using systemd credentials, then you should migrate from xyz.radicle.node.* to dev.radicle.node.*.<br>The COB type names and payload IDs remain unchanged for backwards compatibility.
Revision Ranges in rad patch show
Each revision in the output of rad patch show now shows the base and head of the revision in the format: ...<br>The shortened form is used, but the full commit OID is used when --verbose is passed.<br>This makes comparing two revisions much easier in combination with git range-diff.<br>For example, here is a patch in heartwood:
╭───────────────────────────────────────────────────────────────────────────╮<br>│ Title .radicle/ambient: Add pre-plan action for rustup │<br>│ Patch 3bb6f611190fc40207cdee0d22c421b02a6bc717 │<br>│ Author fintohaps (you) │<br>│ Head d9f9d090bde88ba0b6596614579641a15acff871 │<br>│ Base 9158df5067429282cbec60292316c13b3d965c5a │<br>│ Commits ahead 1, behind 3 │<br>│ Status open │<br>│ │<br>│ To ensure the correct toolchain is used when building and testing the │<br>│ project, a pre-plan action is added for `rustup`. │<br>│ It uses the same `channel` as defined in the `rust-toolchain.toml`. │<br>│ A note is left about this duplication, and the possibility of it being │<br>│ supported in the future. │<br>├───────────────────────────────────────────────────────────────────────────┤<br>│ d9f9d09 .radicle/ambient: Add pre-plan action for rustup │<br>├───────────────────────────────────────────────────────────────────────────┤<br>│ ● Revision 3bb6f61 @ 9158df5..d9f9d09 by fintohaps (you) 5 days ago │<br>│ ↑ Revision 183d186 @ 9158df5..040ab10 by lars z6MkgEM…1b2w2FV 2 hours ago │<br>╰───────────────────────────────────────────────────────────────────────────╯
As long as the commits are fetched from fintohaps and lars, then you can run:
$ git range-diff 9158df5..d9f9d09 9158df5..040ab10<br>1: d9f9d090b = 1: d9f9d090b .radicle/ambient: Add pre-plan action for rustup<br>-: --------- > 2: 040ab1045 work around problems with Ambient Rust toolchain downloading
Showing that a new commit was added, and no other changes were made.
Nodes Advertise Radicle Version
Nodes will now advertise the version of Radicle they are running in the node announcement as part of the “user agent”, which is shared among the network.<br>For example, the value that will be shared by Radicle 1.9.0 will be /radicle:1.9.0/.<br>This value is also customizable by node operators via the configuration value node.userAgent. Refer to rad config schema for more information on the possible values.<br>Operators that choose to set a custom value are asked to keep the substring /radicle:{YOUR_VERSION}/ which allows for better telemetry regarding version distribution on the network.<br>To opt-out of sending any meaningful user agent, set node.userAgent = null.
Introducing I2P Support
In addition to connections via SOCKS proxy and Tor for *.onion hostnames, I2P hostnames are now supported.<br>These names are of the form *.i2p{,.alt}.<br>To enable making connections via I2P, configure node.i2p, for example:
"node": {<br>"i2p": {<br>"mode": "proxy",<br>"address": "127.0.0.1:4447"
Symbolic Canonical References
It is now possible to define symbolic canonical references for a repository.<br>The payload xyz.radicle.crefs was extended to accept an object with key “symbolic” next to “rules”.<br>Consider the following example:
"payload": {<br>"xyz.radicle.crefs": {<br>"rules": {<br>"refs/heads/qa": {<br>"allow": [<br>"did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk"<br>],<br>"threshold": 1<br>},<br>"refs/tags/*": {<br>"allow": "delegates",<br>"threshold": 1<br>},<br>},<br>"symbolic": {<br>"refs/heads/staging": "refs/heads/qa"
Delegates are allowed to create tags, and one particular user is allowed to control the branch named “qa”.<br>The team working on this repository used to call the “qa” branch “staging”, so they decided to keep a symbolic...