Radish alpha
h
rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5
Radicle Heartwood Protocol & Stack
Radicle
Git
Prepare crates for release
Merged fintohaps opened 2 months ago
16 files changed +305 -22 d596b14e 18d6ce94
modified Cargo.lock
@@ -2886,7 +2886,7 @@ checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"

[[package]]
name = "radicle"
-
version = "0.20.0"
+
version = "0.21.0"
dependencies = [
 "amplify",
 "base64 0.21.7",
@@ -2931,7 +2931,7 @@ dependencies = [

[[package]]
name = "radicle-cli"
-
version = "0.17.0"
+
version = "0.18.0"
dependencies = [
 "anyhow",
 "chrono",
@@ -2993,7 +2993,7 @@ dependencies = [

[[package]]
name = "radicle-cob"
-
version = "0.17.0"
+
version = "0.18.0"
dependencies = [
 "fastrand",
 "git-ref-format-core",
@@ -3035,7 +3035,7 @@ dependencies = [

[[package]]
name = "radicle-crypto"
-
version = "0.14.0"
+
version = "0.15.0"
dependencies = [
 "amplify",
 "cyphernet",
@@ -3123,7 +3123,7 @@ dependencies = [

[[package]]
name = "radicle-node"
-
version = "0.16.0"
+
version = "0.17.0"
dependencies = [
 "backtrace",
 "bloomy",
@@ -3176,7 +3176,7 @@ dependencies = [

[[package]]
name = "radicle-protocol"
-
version = "0.4.0"
+
version = "0.5.0"
dependencies = [
 "bloomy",
 "bytes",
modified Cargo.toml
@@ -43,20 +43,20 @@ pretty_assertions = "1.3.0"
proptest = "1.9"
qcheck = { version = "1", default-features = false }
qcheck-macros = { version = "1", default-features = false }
-
radicle = { version = "0.20", path = "crates/radicle" }
-
radicle-cli = { version = "0.17", path = "crates/radicle-cli" }
+
radicle = { version = "0.21", path = "crates/radicle" }
+
radicle-cli = { version = "0.18", path = "crates/radicle-cli" }
radicle-cli-test = { path = "crates/radicle-cli-test" }
-
radicle-cob = { version = "0.17", path = "crates/radicle-cob" }
+
radicle-cob = { version = "0.18", path = "crates/radicle-cob" }
radicle-core = { version = "0.1", path = "crates/radicle-core" }
-
radicle-crypto = { version = "0.14", path = "crates/radicle-crypto" }
+
radicle-crypto = { version = "0.15", path = "crates/radicle-crypto" }
radicle-dag = { version = "0.10", path = "crates/radicle-dag" }
radicle-fetch = { version = "0.16", path = "crates/radicle-fetch" }
radicle-git-metadata = { version = "0.1.0", path = "crates/radicle-git-metadata", default-features = false }
radicle-git-ref-format = { version = "0.1.0", path = "crates/radicle-git-ref-format", default-features = false }
radicle-localtime = { version = "0.1", path = "crates/radicle-localtime" }
-
radicle-node = { version = "0.16", path = "crates/radicle-node" }
+
radicle-node = { version = "0.17", path = "crates/radicle-node" }
radicle-oid = { version = "0.1.0", path = "crates/radicle-oid", default-features = false }
-
radicle-protocol = { version = "0.4", path = "crates/radicle-protocol" }
+
radicle-protocol = { version = "0.5", path = "crates/radicle-protocol" }
radicle-signals = { version = "0.11", path = "crates/radicle-signals" }
radicle-ssh = { version = "0.10", path = "crates/radicle-ssh", default-features = false }
radicle-systemd = { version = "0.11", path = "crates/radicle-systemd" }
added crates/radicle-cli/CHANGELOG.md
@@ -0,0 +1,64 @@
+
# Changelog
+

+
All notable changes to this project will be documented in this file.
+

+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+

+
## [Unreleased]
+

+
### Added
+

+
### Changed
+

+
### Removed
+

+
### Security
+

+
## 0.18.0
+

+
### Changed
+

+
- `radicle_cli::terminal::fail` now takes 1 parameter, the `anyhow::Error`
+
  instead of 2.
+
- `radicle_cli::commands::diff::run` now delegates to the `git diff` process,
+
  and only accepts the `Vec<OsString>` args.
+

+
### Removed
+

+
The `radicle-cli` crate is refactored to use the `clap` crate, and as a result
+
many things were removed from the public API.
+

+
- The `radicle_cli::terminal::args` module was removed, including the `Args`
+
  trait, the `Help` struct, the `Error` enum, and all parsing functions
+
  (`parse_value`, `finish`, `format`, `refstring`, `did`, `nid`, `rid`,
+
  `pubkey`, `addr`, `socket_addr`, `number`, `seconds`, `milliseconds`,
+
  `string`, `rev`, `oid`, `alias`, `issue`, `patch`, `cob`).
+
- The `radicle_cli::terminal::Command` trait was removed.
+
- `radicle_cli::terminal::run_command`, `radicle_cli::terminal::run_command_args`,
+
  and `radicle_cli::terminal::run_command_fn` were removed.
+
- The `radicle_cli::commands::help` module was removed, including
+
  `help::Options` and `help::run`.
+
- `radicle_cli::git::parse_remote` was removed.
+
- The `HELP` constant was removed from the following command modules: `auth`,
+
  `block`, `checkout`, `clone`, `cob`, `config`, `debug`, `diff`, `follow`,
+
  `fork`, `help`, `id`, `inbox`, `init`, `inspect`, `ls`, `node`, `patch`,
+
  `publish`, `remote`, `seed`, `self`, `sync`, `unblock`, `watch`.
+
- The `Options` struct was removed from the following command modules: `auth`,
+
  `block`, `checkout`, `clone`, `cob`, `config`, `debug`, `diff`, `follow`,
+
  `fork`, `help`, `id`, `inbox`, `init`, `inspect`, `ls`, `node`, `patch`,
+
  `publish`, `remote`, `seed`, `rad_self`, `sync`, `unblock`, `watch`.
+
- `radicle_cli::commands::patch::AssignOptions`,
+
  `radicle_cli::commands::patch::LabelOptions`, and
+
  `radicle_cli::commands::patch::CommentOperation` were removed.
+
- The following enums were removed from their respective command modules:
+
  `follow::Operation`, `follow::OperationName`, `id::Operation`,
+
  `id::OperationName`, `inspect::Target`, `node::Addr`, `node::Operation`,
+
  `node::OperationName`, `patch::Operation`, `patch::OperationName`,
+
  `remote::Operation`, `remote::OperationName`, `remote::ListOption`,
+
  `seed::Operation`, `sync::Operation`, `sync::SyncDirection`,
+
  `sync::SyncMode`, `sync::SortBy`.
+

+
### Security
+

+
*No security updates.*
modified crates/radicle-cli/Cargo.toml
@@ -3,7 +3,7 @@ name = "radicle-cli"
description = "Radicle CLI"
homepage.workspace = true
license.workspace = true
-
version = "0.17.0"
+
version = "0.18.0"
authors = ["cloudhead <cloudhead@radicle.xyz>"]
edition.workspace = true
build = "build.rs"
modified crates/radicle-cli/src/commands/id.rs
@@ -482,7 +482,8 @@ fn on_apply_err(e: &identity::ApplyError, profile: &Profile) -> anyhow::Error {
        | e @ radicle::cob::identity::ApplyError::Redacted
        | e @ radicle::cob::identity::ApplyError::DocUnchanged
        | e @ radicle::cob::identity::ApplyError::Git(_)
-
        | e @ radicle::cob::identity::ApplyError::Doc(_) => {
+
        | e @ radicle::cob::identity::ApplyError::Doc(_)
+
        | e => {
            anyhow!(e.to_string())
        }
    }
added crates/radicle-cob/CHANGELOG.md
@@ -0,0 +1,28 @@
+
# Changelog
+

+
All notable changes to this project will be documented in this file.
+

+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+

+
## [Unreleased]
+

+
### Added
+

+
### Changed
+

+
### Removed
+

+
### Security
+

+
## 0.18.0
+

+
### Removed
+

+
- The `radicle_cob::git::stable` module was removed, including the `STEP` and
+
  `STABLE_TIME` constants, and the `read_timestamp` and
+
  `with_advanced_timestamp` functions.
+

+
### Security
+

+
*No security updates.*
modified crates/radicle-cob/Cargo.toml
@@ -3,7 +3,7 @@ name = "radicle-cob"
description = "Radicle Collaborative Objects library"
homepage.workspace = true
repository.workspace = true
-
version = "0.17.0"
+
version = "0.18.0"
authors = [
  "Alex Good <alex@memoryandthought.me>",
  "Fintan Halpenny <fintan.halpenny@gmail.com>",
added crates/radicle-crypto/CHANGELOG.md
@@ -0,0 +1,36 @@
+
# Changelog
+

+
All notable changes to this project will be documented in this file.
+

+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+

+
## [Unreleased]
+

+
### Added
+

+
### Changed
+

+
### Removed
+

+
### Security
+

+
## 0.15.0
+

+
### Changed
+

+
- The following enums are now marked as `non_exhaustive`:
+
  `radicle_crypto::SignatureError`, `radicle_crypto::PublicKeyError`,
+
  `radicle_crypto::ssh::PublicKeyError`, `radicle_crypto::ssh::SignatureError`,
+
  `radicle_crypto::ssh::SecretKeyError`,
+
  `radicle_crypto::ssh::ExtendedSignatureError`,
+
  `radicle_crypto::ssh::keystore::Error`, and
+
  `radicle_crypto::ssh::keystore::MemorySignerError`.
+

+
### Removed
+

+
- The `radicle-git-ext` Cargo feature was removed.
+

+
### Security
+

+
*No security updates.*
modified crates/radicle-crypto/Cargo.toml
@@ -4,7 +4,7 @@ description = "Radicle cryptographic primitives"
homepage.workspace = true
repository.workspace = true
license.workspace = true
-
version = "0.14.0"
+
version = "0.15.0"
authors = [
  "cloudhead <cloudhead@radicle.xyz>",
  "Fintan Halpenny <fintan.halpenny@gmail.com>",
added crates/radicle-node/CHANGELOG.md
@@ -0,0 +1,41 @@
+
# Changelog
+

+
All notable changes to this project will be documented in this file.
+

+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+

+
## [Unreleased]
+

+
### Added
+

+
### Changed
+

+
### Removed
+

+
### Security
+

+
## 0.17.0
+

+
### Added
+

+
- The test `Handle` struct now has a `blocked` field.
+

+
### Removed
+

+
- The `radicle_node::wire` module was removed, including the `Wire` struct,
+
  the `Control` enum, the `dial` and `accept` functions, and the
+
  `NOISE_XK`, `DEFAULT_CONNECTION_TIMEOUT`, `DEFAULT_DIAL_TIMEOUT`, and
+
  `MAX_INBOX_SIZE` constants.
+
- The `radicle_node::control` module was removed, including the `Error` enum
+
  and the `listen` function.
+
- The `radicle_node::worker` module was removed, including the `Config`,
+
  `Pool`, `Task`, `TaskResult`, `FetchConfig`, `Channels`, and
+
  `ChannelsConfig` structs, the `ChannelEvent` enum, and the
+
  `worker::fetch::Handle` enum.
+
- The `radicle_node::worker::garbage` module was removed, including the
+
  `Expiry` enum, the `collect` function, and the `EXPIRY_DEFAULT` constant.
+

+
### Security
+

+
*No security updates.*
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.16.0"
+
version = "0.17.0"
authors = ["cloudhead <cloudhead@radicle.xyz>"]
edition.workspace = true
build = "build.rs"
added crates/radicle-protocol/CHANGELOG.md
@@ -0,0 +1,52 @@
+
# Changelog
+

+
All notable changes to this project will be documented in this file.
+

+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+

+
## [Unreleased]
+

+
### Added
+

+
### Changed
+

+
### Removed
+

+
### Security
+

+
## 0.5.0
+

+
### Added
+

+
- `radicle_protocol::service::DisconnectReason` added a `Policy` variant.
+
- `radicle_protocol::service::ConnectError` added `UnsupportedAddress` and
+
  `Blocked` variants.
+
- `radicle_protocol::service::command::Command` added a `Block` variant.
+
- `radicle_protocol::service::command::Command::AnnounceRefs` now carries an
+
  additional field for specifying namespaces.
+
- `radicle_protocol::service::command::Command::Seeds` now carries an
+
  additional field for specifying namespaces.
+

+
### Changed
+

+
- `radicle_protocol::service::session::Session::outbound` now takes 4
+
  parameters instead of 5. Fetching information is no longer tracked in the
+
  session.
+
- `radicle_protocol::service::session::Session::inbound` now takes 5
+
  parameters instead of 6. Fetching information is no longer tracked in the
+
  session.
+

+
### Removed
+

+
- `radicle_protocol::service::CommandError` was removed.
+
- `radicle_protocol::service::Error::GitExt` was removed as a variant, where
+
  `Error::Git` now subsumes all Git errors.
+
- The `queue` field was removed from the `Session` struct. Fetching information
+
  is now tracked in the service rather than per-session.
+
- The following methods were removed from `Session`: `is_at_capacity`,
+
  `is_fetching`, `queue_fetch`, `dequeue_fetch`, `fetching`, and `fetched`.
+

+
### Security
+

+
*No security updates.*
modified crates/radicle-protocol/Cargo.toml
@@ -3,7 +3,7 @@ name = "radicle-protocol"
description = "The Radicle Protocol"
homepage.workspace = true
license.workspace = true
-
version = "0.4.0"
+
version = "0.5.0"
authors = ["Radicle Team <team@radicle.xyz>"]
edition.workspace = true
rust-version.workspace = true
modified crates/radicle/CHANGELOG.md
@@ -9,6 +9,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added

+
### Changed
+

+
### Removed
+

+
### Security
+

+
## 0.21.0
+

+
### Added
+

+
- `radicle::node::command::Command` added variants `AnnounceRefsFor`,
+
  `SeedsFor`, and `Block`.
+
- `radicle::cob::identity::ApplyError` now contains a new variant
+
  `NonDelegateUnauthorized`.
- `radicle::node::Handle` added a `block` method to allow setting the follow
  policy to `Policy::Block`.
- `radicle::node::Handle::announce_refs_for` now allows specifying for which
@@ -20,11 +34,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Changed

+
- The discriminant values for `radicle::node::command::Command` have changed.
+
- `radicle::rad::CheckoutError` is now marked as `non_exhaustive`.
- `radicle::storage::git::Storage::repositories_by_id` returns
  `impl Iterator<Item = Result<RepositoryInfo, RepositoryError>>` instead of
-
  `Result<Vec<RepositoryInfo>, RepositoryError>`. Allowing callers to handle
-
  failures on a per-repository basis rather than having the entire operation
-
  fail if a single repository lookup fails.
+
  `Result<Vec<RepositoryInfo>, RepositoryError>`. The method now also requires
+
  one generic type parameter. Allowing callers to handle failures on a
+
  per-repository basis rather than having the entire operation fail if a single
+
  repository lookup fails.
+
- `radicle::node::Node::announce` now takes an additional parameter to specify
+
  for which namespaces changes should be announced.
- Re-exports from `git2` at `radicle::git::raw` were limited, using
  the heartwood workspace as a filter. Dependents that require members that
  are not exported anymore will have to depend on `git2` directly.
@@ -48,12 +67,53 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Removed

+
- `radicle::storage::RepositoryError::GitExt` was removed as a variant, where
+
  `RepositoryError::Git` now subsumes all Git errors.
+
- `radicle::identity::doc::DocError::GitExt` was removed as a variant, where
+
  `DocError::Git` now subsumes all Git errors.
+
- `radicle::storage::refs::Error::GitExt` was removed as a variant, where
+
  `Error::Git` now subsumes all Git errors.
+
- `radicle::cob::identity::ApplyError::GitExt` was removed as a variant, where
+
  `ApplyError::Git` now subsumes all Git errors.
+
- `radicle::storage::Error::GitExt` was removed as a variant, where
+
  `Error::Git` now subsumes all Git errors.
+
- `radicle::storage::git::cob::ObjectsError::GitExt` was removed as a variant,
+
  where `ObjectsError::Git` now subsumes all Git errors.
+
- `radicle::git::canonical::rules::CanonicalError::References` was removed as a
+
  variant, as it no longer occurs as an error.
+
- The `radicle::node::State::Connected` variant no longer has a `fetching`
+
  field. Fetching information is now tracked in the service.
- The data returned by `Seeds` contains `state`, which in turn contained the
  field `fetching` for ongoing fetches of that node, if in the `Connected`
  state. `Connected` no longer contains that field.
+
- `radicle::identity::doc::RepoId` was removed, along with its re-exports at
+
  `radicle::identity::RepoId` and `radicle::prelude::RepoId`. The type is now
+
  provided by the `radicle-core` crate.
+
- `radicle::identity::doc::IdError` was removed, along with its re-export at
+
  `radicle::identity::IdError`.
+
- `radicle::identity::doc::id::RAD_PREFIX` constant was removed.
+
- `radicle::identity::doc::VersionError::UnkownVersion` variant was renamed to
+
  `UnknownVersion`, correcting the typo.
+
  The typo has been corrected to `UnknownVersion`.
+
- `radicle::storage::git::RefError` was removed.
+
- `radicle::storage::git::UserInfo` was removed.
+
- `radicle::storage::git::NAMESPACES_GLOB`, `radicle::storage::git::CANONICAL_IDENTITY`,
+
  and `radicle::storage::git::SIGREFS_GLOB` static variables were removed.
+
- `radicle::storage::git::trailers::SIGNATURE_TRAILER` constant was removed.
+
- The `radicle::serde_ext::localtime` module and its submodules (`time`,
+
  `option::time`, `duration`) were removed, including all associated
+
  serialize/deserialize functions. The `radicle-localtime` crate is introduced
+
  and provides these helpers.
+
- The `radicle::schemars_ext::crypto` module was removed, including the
+
  `PublicKey` schema type. The schema is now provided by `radicle-crypto`.
+
- The test storage modules under `radicle::test::storage::git` and their
+
  submodules (`transport`, `cob`, `trailers`, `paths`, `temp`) were removed
+
  from the public API, along with all associated types, traits, and functions.

### Security

+
*No security updates.*
+

## 0.20.0

### Added
modified crates/radicle/Cargo.toml
@@ -4,7 +4,7 @@ description = "Radicle standard library"
homepage.workspace = true
repository.workspace = true
license.workspace = true
-
version = "0.20.0"
+
version = "0.21.0"
authors = ["cloudhead <cloudhead@radicle.xyz>"]
edition.workspace = true
rust-version.workspace = true
modified crates/radicle/src/cob/identity.rs
@@ -95,6 +95,7 @@ impl CobAction for Action {
}

/// Error applying an operation onto a state.
+
#[non_exhaustive]
#[derive(Error, Debug)]
pub enum ApplyError {
    /// Causal dependency missing.