Radish alpha
h
rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5
Radicle Heartwood Protocol & Stack
Radicle
Git
release: 1.3.0
Merged fintohaps opened 9 months ago
12 files changed +92 -36 0e48723b 0e48723b
modified CHANGELOG.md
@@ -7,17 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

-
- Introduce canonical reference rules via a payload entry in the identity
-
  document. The payload is identified by `xyz.radicle.crefs`, and the payload
-
  currently contains one key `rules`, which is followed by the set of rules. For
-
  each rule, there is a reference pattern string to identify the rule, which in
-
  turn is composed of the `allow` and `threshold` values. The canonical
-
  reference rules are now used to check for canonical updates. The rule for the
-
  `defaultBranch` of an `xyz.radicle.project` is synthesized from the identity
-
  document fields: `threshold` and `delegates`. This means that a rule for that
-
  reference is not allowed within the rule set. This checked when performing a
-
  `rad id update`.
-

## Release Highlights

## Deprecations
@@ -26,6 +15,73 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## Fixed Bugs

+
## 1.3.0 - 2025-08-12
+

+
## Release Highlights
+

+
### Canonical References
+

+
Introduce canonical reference rules via a payload entry in the identity
+
document. The payload is identified by `xyz.radicle.crefs`, and the payload
+
currently contains one key `rules`, which is followed by the set of rules. For
+
each rule, there is a reference pattern string to identify the rule, which in
+
turn is composed of the `allow` and `threshold` values. The canonical reference
+
rules are now used to check for canonical updates. The rule for the
+
`defaultBranch` of an `xyz.radicle.project` is synthesized from the identity
+
document fields: `threshold` and `delegates`. This means that a rule for that
+
reference is not allowed within the rule set. This checked when performing a
+
`rad id update`.
+

+
### Introducing `radicle-protocol`
+

+
This set of changes is mostly cosmetic for the time being. A new crate,
+
`radicle-protocol`, was introduced to provide a home for a sans I/O
+
implementation of the Radicle protocol. The crate currently defines the inner
+
workings of the protocol, and `radicle-node` depends on this.
+

+
Note here that we switched to use the `bytes` crate, and we witnessed a panic
+
from this crate while using a pre-release. It has not showed up again, but we
+
introduced the use of backtraces to help identify the issue further. So, please
+
report a backtrace if the `radicle-node` stops due to this issue.
+

+
### Path to Windows
+

+
We made an effort to start paving some of the way to being able to use Radicle
+
on Windows. The first step was taken for this, and you can now use the `rad` CLI
+
on a Windows machine – without WSL.
+

+
Currently, `radicle-node` is still not compatible with Windows.
+
However, the sans I/O approach mentioned above will provide a way
+
forward for implementing a `radicle-node` that works on Windows, and we will
+
continue to look into other fixes required for getting full Windows support.
+

+
### Display Full Node IDs
+

+
Node IDs and and node addresses have improved formatting. The CLI will output
+
shortened forms of NIDs and addresses when the output is transient, and the full
+
form where it is presented to the user. This will allow you to be able to copy
+
and paste these identifiers.
+

+
## New Features
+

+
- Canonical reference rule in the identity payload, identified by
+
  `xyz.radicle.crefs`.
+
- The `git-remote-rad` executable can now be called from bare repositories and
+
  can push any kind of Git revision, greatly improving the experience for users
+
  of `jj`.
+
- The pinned repositories now maintain their insertion order.
+
- Improved error reporting during canonical reference calculations. This will
+
  provide users with more information on error cases that can occur when
+
  computing canonical references.
+
- When running `rad init` the default value for the `defaultBranch` of the
+
  repository is now by provided the branch you are on or the Git configuration
+
  option `init.defaultBranch`.
+

+
## Fixed Bugs
+

+
- Connection attempts will now return an error if they fail. Before the change,
+
  the connection attempts would timeout.
+

## 1.2.0 - 2025-06-02

### Release Highlights
modified Cargo.lock
@@ -2525,7 +2525,7 @@ dependencies = [

[[package]]
name = "radicle"
-
version = "0.16.1"
+
version = "0.17.0"
dependencies = [
 "amplify",
 "base64 0.21.7",
@@ -2566,7 +2566,7 @@ dependencies = [

[[package]]
name = "radicle-cli"
-
version = "0.14.0"
+
version = "0.15.0"
dependencies = [
 "anyhow",
 "chrono",
@@ -2672,7 +2672,7 @@ dependencies = [

[[package]]
name = "radicle-fetch"
-
version = "0.12.0"
+
version = "0.13.0"
dependencies = [
 "bstr",
 "either",
@@ -2705,7 +2705,7 @@ dependencies = [

[[package]]
name = "radicle-node"
-
version = "0.12.0"
+
version = "0.13.0"
dependencies = [
 "amplify",
 "anyhow",
@@ -2770,7 +2770,7 @@ dependencies = [

[[package]]
name = "radicle-remote-helper"
-
version = "0.11.0"
+
version = "0.12.0"
dependencies = [
 "log",
 "radicle",
@@ -2782,7 +2782,7 @@ dependencies = [

[[package]]
name = "radicle-schemars"
-
version = "0.1.0"
+
version = "0.2.0"
dependencies = [
 "radicle",
 "schemars",
@@ -2801,7 +2801,7 @@ dependencies = [

[[package]]
name = "radicle-ssh"
-
version = "0.9.0"
+
version = "0.10.0"
dependencies = [
 "thiserror 1.0.69",
 "winpipe",
@@ -2835,7 +2835,7 @@ dependencies = [

[[package]]
name = "radicle-systemd"
-
version = "0.9.0"
+
version = "0.10.0"
dependencies = [
 "log",
 "systemd-journal-logger",
@@ -2843,7 +2843,7 @@ dependencies = [

[[package]]
name = "radicle-term"
-
version = "0.13.0"
+
version = "0.14.0"
dependencies = [
 "anstyle-query",
 "anyhow",
modified Cargo.toml
@@ -38,20 +38,20 @@ nonempty = "0.9.0"
pretty_assertions = "1.3.0"
qcheck = { version = "1", default-features = false }
qcheck-macros = { version = "1", default-features = false }
-
radicle = { version = "0.16", path = "crates/radicle" }
-
radicle-cli = { version = "0.14", path = "crates/radicle-cli" }
+
radicle = { version = "0.17", path = "crates/radicle" }
+
radicle-cli = { version = "0.15", path = "crates/radicle-cli" }
radicle-cli-test = { path = "crates/radicle-cli-test" }
radicle-cob = { version = "0.14", path = "crates/radicle-cob" }
radicle-crypto = { version = "0.12", path = "crates/radicle-crypto" }
radicle-dag = { version = "0.10", path = "crates/radicle-dag" }
-
radicle-fetch = { version = "0.12", path = "crates/radicle-fetch" }
+
radicle-fetch = { version = "0.13", path = "crates/radicle-fetch" }
radicle-git-ext = { version = "0.8", default-features = false }
-
radicle-node = { version = "0.12", path = "crates/radicle-node" }
+
radicle-node = { version = "0.13", path = "crates/radicle-node" }
radicle-protocol = { version = "0.1", path = "crates/radicle-protocol" }
radicle-signals = { version = "0.11", path = "crates/radicle-signals" }
-
radicle-ssh = { version = "0.9", path = "crates/radicle-ssh", default-features = false }
-
radicle-systemd = { version = "0.9", path = "crates/radicle-systemd" }
-
radicle-term = { version = "0.13", path = "crates/radicle-term" }
+
radicle-ssh = { version = "0.10", path = "crates/radicle-ssh", default-features = false }
+
radicle-systemd = { version = "0.10", path = "crates/radicle-systemd" }
+
radicle-term = { version = "0.14", path = "crates/radicle-term" }
schemars = { version = "1.0.4" }
serde = "1.0"
serde_json = "1.0"
modified crates/radicle-cli/Cargo.toml
@@ -3,7 +3,7 @@ name = "radicle-cli"
description = "Radicle CLI"
homepage.workspace = true
license.workspace = true
-
version = "0.14.0"
+
version = "0.15.0"
authors = ["cloudhead <cloudhead@radicle.xyz>"]
edition.workspace = true
build = "build.rs"
modified crates/radicle-fetch/Cargo.toml
@@ -3,7 +3,7 @@ name = "radicle-fetch"
description = "Radicle fetch protocol"
homepage.workspace = true
license.workspace = true
-
version = "0.12.0"
+
version = "0.13.0"
authors = ["Fintan Halpenny <fintan.halpenny@gmail.com>"]
edition.workspace = true
rust-version.workspace = true
modified crates/radicle-node/Cargo.toml
@@ -3,7 +3,7 @@ name = "radicle-node"
description = "The Radicle Node"
homepage.workspace = true
license.workspace = true
-
version = "0.12.0"
+
version = "0.13.0"
authors = ["cloudhead <cloudhead@radicle.xyz>"]
edition.workspace = true
build = "build.rs"
modified crates/radicle-remote-helper/Cargo.toml
@@ -3,7 +3,7 @@ name = "radicle-remote-helper"
description = "Radicle git remote helper"
homepage.workspace = true
license.workspace = true
-
version = "0.11.0"
+
version = "0.12.0"
authors = ["cloudhead <cloudhead@radicle.xyz>"]
edition.workspace = true
build = "build.rs"
modified crates/radicle-schemars/Cargo.toml
@@ -5,7 +5,7 @@ homepage.workspace = true
repository.workspace = true
license.workspace = true
edition.workspace = true
-
version = "0.1.0"
+
version = "0.2.0"
rust-version.workspace = true

[[bin]]
modified crates/radicle-ssh/Cargo.toml
@@ -4,7 +4,7 @@ description = "Radicle SSH library"
homepage.workspace = true
repository.workspace = true
license = "Apache-2.0"
-
version = "0.9.0"
+
version = "0.10.0"
authors = [
  "Fintan Halpenny <fintan.halpenny@gmail.com>",
  "Pierre-Étienne Meunier <pe@pijul.org>",
modified crates/radicle-systemd/Cargo.toml
@@ -5,7 +5,7 @@ homepage.workspace = true
repository.workspace = true
license.workspace = true
edition.workspace = true
-
version = "0.9.0"
+
version = "0.10.0"
rust-version.workspace = true

[dependencies]
modified crates/radicle-term/Cargo.toml
@@ -4,7 +4,7 @@ description = "Terminal library used by the Radicle CLI"
homepage.workspace = true
repository.workspace = true
license.workspace = true
-
version = "0.13.0"
+
version = "0.14.0"
authors = ["cloudhead <cloudhead@radicle.xyz>"]
edition.workspace = true
rust-version.workspace = true
modified crates/radicle/Cargo.toml
@@ -4,7 +4,7 @@ description = "Radicle standard library"
homepage.workspace = true
repository.workspace = true
license.workspace = true
-
version = "0.16.1"
+
version = "0.17.0"
authors = ["cloudhead <cloudhead@radicle.xyz>"]
edition.workspace = true
rust-version.workspace = true