199 lines
8.9 KiB
Markdown
199 lines
8.9 KiB
Markdown
# 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.22.0
|
|
|
|
### Added
|
|
|
|
- SQLite configuration is modeled as `radicle::node::db::config::Config`
|
|
and can be configured via `radicle::profile::config::Config`.
|
|
The two pragmas `journal_mode` and `synchronous` are exposed this way.
|
|
- `radicle::storage::git::Validation` has a new `Read` variant to surface
|
|
read errors encountered during validation.
|
|
- `radicle::storage::refs::Error` has new `Read` and `Write` variants.
|
|
|
|
### Changed
|
|
|
|
- The default configuration for the SQLite pragma `synchronous` is changed
|
|
from `FULL` to `NORMAL`, which generates less I/O operations. On power
|
|
loss, transactions might be rolled back, but SQLite still guarantees
|
|
consistency in this mode.
|
|
- Opening database connections requires specification of a configuration.
|
|
`radicle::Profile` conveniently provides methods that supply the
|
|
configuration from `radicle::Profile::config`.
|
|
- The `TryFrom<PathBuf>` implementation for `Home` is removed in favor of using
|
|
the `Home::new` and `Home::load` methods.
|
|
- `radicle::storage::Remote`, `radicle::storage::Remotes`, and
|
|
`radicle::storage::refs::SignedRefs` no longer carry a generic verification
|
|
state type parameter. The `Verified` and `Unverified` marker types previously
|
|
from `radicle-crypto` have been removed; the structs now represent a single,
|
|
unified state.
|
|
- `radicle::node::config::Config` has a new required `database` field. Existing
|
|
struct literals must be updated to include this field.
|
|
- `radicle::storage::git::Validation::MismatchedRef` has a new `remote` field.
|
|
Exhaustive match arms and struct literal construction must be updated.
|
|
- `radicle::identity::doc::update::delegates` no longer takes a generic type
|
|
parameter.
|
|
|
|
### Removed
|
|
|
|
- `radicle::storage::refs::Updated` enum was removed.
|
|
- `radicle::node::db::JournalMode` enum was removed. Journal mode is now
|
|
configured via `radicle::node::db::config::Config`.
|
|
- `radicle::git::remote_refs` function was removed.
|
|
- `radicle::node::seed::SyncedAt::load` method was removed.
|
|
- `radicle::storage::Remote::verified` and `Remote::unverified` constructor
|
|
methods were removed following the removal of the verification state type
|
|
parameter.
|
|
- `radicle::storage::Remotes::unverified` method was removed.
|
|
- `radicle::storage::refs::SignedRefs::new`, `SignedRefs::verified`,
|
|
`SignedRefs::verify`, `SignedRefs::save`, and `SignedRefs::unverified` methods
|
|
were removed.
|
|
- `radicle::storage::refs::Refs::verified`, `Refs::signed`,
|
|
`Refs::from_canonical`, and `Refs::canonical` methods were removed.
|
|
- `radicle::storage::refs::Error` variants `InvalidSignature`, `Signer`,
|
|
`Canonical`, `MissingIdentityRoot`, `MissingIdentity`, and
|
|
`MismatchedIdentity` were removed.
|
|
- The public fields `refs`, `signature`, and `id` of
|
|
`radicle::storage::refs::SignedRefs` are now `#[doc(hidden)]` and are no
|
|
longer part of the public API.
|
|
|
|
### 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
|
|
namespaces changes should be announced. A corresponding enum variant
|
|
`radicle::node::Command::AnnounceRefsFor` is added.
|
|
- `radicle::node::Handle::seeds_for` now allows specifying for which
|
|
namespaces sync status should be reported. A corresponding enum variant
|
|
`radicle::node::Command::SeedsFor` is added.
|
|
|
|
### 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>`. 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.
|
|
- Some re-exports from `git-ref-format-core` were moved from `radicle::git`
|
|
to `radicle::fmt`.
|
|
- The crate now re-exports `radicle::git::Oid` from a new `radicle-oid` crate,
|
|
in an effort to decrease dependence on `git2` via `radicle-git-ext`. This
|
|
new object identifier type does not implement `Deref` anymore. Use `Into`
|
|
to convert to a `git2::Oid` as necessary.
|
|
- Re-exports of `radicle-git-ext` were removed, as this dependency is removed.
|
|
Instead of `radicle_git_ext::Error`, use `git2::Error` (re-exported as
|
|
`radicle::git::raw::Error`) together with the new extension trait
|
|
`radicle::git::raw::ErrorExt`.
|
|
|
|
### Deprecated
|
|
|
|
- `radicle::node::Handle::announce_refs` is deprecated in favor of
|
|
`radicle::node::Handle::announce_refs_for`.
|
|
- `radicle::node::Handle::seeds` is deprecated in favor of
|
|
`radicle::node::Handle::seeds_for`.
|
|
|
|
### 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` variant was corrected 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
|
|
|
|
- Introduce a node event for canonical reference updates, `Event::CanonicalRefUpdated`.
|
|
Whenever the node fetches new updates, it checks if canonical references can
|
|
be updated. The node has learned how to return these results and emit them as
|
|
node events. This is a breaking change since it adds a new variant the `Event`
|
|
type.
|
|
- Add `#[non_exhaustive]` to `Event` to prevent any further breaking changes
|
|
when adding new variants.
|
|
|
|
### Changed
|
|
|
|
- `radicle::profile::Home::socket` defaults to the path `\\.\pipe\radicle-node`
|
|
on Windows. The behavior on Unix-like systems has *not* changed.
|
|
|
|
### Removed
|
|
|
|
- `radicle::node::DEFAULT_SOCKET_NAME`, use `radicle::profile::Home::socket`
|
|
instead.
|
|
|
|
### Security
|