13 KiB
13 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
Changed
Removed
Security
0.24.0
Added
- New public field
user_agentonradicle::node::config::Config. Struct-literal construction sites must include this field. - New variants
CanonicalRefsError::RawandValidationError::Protectedon existing exhaustive enums. Exhaustivematcharms must add cases for them. - Two new trait methods on
WriteRepository(also re-exported viaradicle::prelude):set_head_to_default_branchandset_default_branch_to_canonical_head. Neither has a default implementation, so downstream impls must provide both.
Changed
- To obtain the location of the control socket, do not use
Home::socket(which was removed), but instead chooseHome::socket_from_envorHome::socket_defaultdepending on your use-case. - COB layer API refactor:
- The
Storegained a new generic parameter,Access. This type parameter describes the access type for the store, read-only or read-write. These two modes are captured bycob::store::access::ReadOnlyandcob::store::access::WriteAs. TheWriteAsconstruction requires the signing and verifying key of the local operator. This means that all methods that previously needed aSigneras a parameter no longer need this parameter. - Due to the above, all
Mutstores, i.e.,IssueMut,PatchMut, andIdentityMut, now require aSignergeneric parameter. All access stores, i.e.,Issues,Patches, and theirCachecounterparts, all require anAccessgeneric parameter. Store::update,Store::create,Store::remove, andIssues::removenow take&mut selfinstead of&self.
- The
Issues::openandPatches::opennow require anAccessparameter.Identity::get_mutandIdentity::load_mutnow require aSignerparameter.Home::issues_mutandHome::patches_mutnow require aSignerparameter.Transaction::initial, andTransaction::commitnow require aStorethat isWriteAs.
Removed
- Profile-config types
radicle::profile::RawConfigandradicle::profile::ConfigPath. - Canonical-rules types
radicle::git::canonical::rules::PatternandPatternError, along withRules::iterandRule::default_branch. - Methods
IdentityMut::reloadandHome::socket. - Trait
radicle::identity::crefs::GetCanonicalRefs. - Enum variants
CanonicalRefsError::Json,ValidationError::RadRef, andDefaultBranchRuleError::Pattern. - Trait method
WriteRepository::set_head(superseded by the two new trait methods listed under Added).
0.23.0
Added
radicle::node::config::Confighas a new requiredfetchfield. Existing struct literals must be updated to include this field.radicle::node::command::Command::Fetchvariant has a newsigned_references_minimum_feature_levelfield.radicle::storage::refs::sigrefs::write::Update::Changedvariant has a newlevelfield.radicle::storage::refs::sigrefs::write::Update::Unchangedvariant has a newverifiedfield.radicle::storage::git::Validationhas a newInsufficientFeatureLevelvariant.radicle::storage::SignRepositorytrait has a new required methodforce_sign_refs.
Changed
radicle::storage::refs::sigrefs::write::SignedRefsWriter::newnow takes 5 parameters instead of 4.radicle::node::Handle::fetchnow takes 5 parameters instead of 4.
Removed
radicle::storage::refs::sigrefs::write::Update::Unchangedfieldscommit,refs, andsignaturewere removed.radicle::storage::refs::sigrefs::read::error::Verify::MissingIdentityvariant was removed.radicle::storage::refs::sigrefs::write::error::HeadvariantsBlob,Refs,Signature, andMissingPathwere removed.radicle::storage::refs::sigrefs::git::committerfunction was removed.radicle::storage::refs::sigrefs::git::Committer::from_env_or_elseandCommitter::from_envmethods were removed.radicle::storage::refs::sigrefs::read::VerifiedCommitmethodsid,signature,into_refs, andparentwere removed.radicle::storage::refs::RefsAt::loadmethod was removed.radicle::storage::refs::sigrefs::write::SignedRefsWriter::writemethod was removed.radicle::storage::refs::sigrefs::read::error::MissingIdentitystruct was removed.radicle::storage::refs::SignedRefsAtstruct was removed.
Security
- Loading
radicle::storage::refs::SignedRefsfrom a repository protects against replay attacks, graft attacks, and downgrade attacks.
0.22.0
Added
- SQLite configuration is modeled as
radicle::node::db::config::Configand can be configured viaradicle::profile::config::Config. The two pragmasjournal_modeandsynchronousare exposed this way. radicle::storage::git::Validationhas a newReadvariant to surface read errors encountered during validation.radicle::storage::refs::Errorhas newReadandWritevariants.
Changed
- The default configuration for the SQLite pragma
synchronousis changed fromFULLtoNORMAL, 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::Profileconveniently provides methods that supply the configuration fromradicle::Profile::config. - The
TryFrom<PathBuf>implementation forHomeis removed in favor of using theHome::newandHome::loadmethods. radicle::storage::Remote,radicle::storage::Remotes, andradicle::storage::refs::SignedRefsno longer carry a generic verification state type parameter. TheVerifiedandUnverifiedmarker types previously fromradicle-cryptohave been removed; the structs now represent a single, unified state.radicle::node::config::Confighas a new requireddatabasefield. Existing struct literals must be updated to include this field.radicle::storage::git::Validation::MismatchedRefhas a newremotefield. Exhaustive match arms and struct literal construction must be updated.radicle::identity::doc::update::delegatesno longer takes a generic type parameter.
Removed
radicle::storage::refs::Updatedenum was removed.radicle::node::db::JournalModeenum was removed. Journal mode is now configured viaradicle::node::db::config::Config.radicle::git::remote_refsfunction was removed.radicle::node::seed::SyncedAt::loadmethod was removed.radicle::storage::Remote::verifiedandRemote::unverifiedconstructor methods were removed following the removal of the verification state type parameter.radicle::storage::Remotes::unverifiedmethod was removed.radicle::storage::refs::SignedRefs::new,SignedRefs::verified,SignedRefs::verify,SignedRefs::save, andSignedRefs::unverifiedmethods were removed.radicle::storage::refs::Refs::verified,Refs::signed,Refs::from_canonical, andRefs::canonicalmethods were removed.radicle::storage::refs::ErrorvariantsInvalidSignature,Signer,Canonical,MissingIdentityRoot,MissingIdentity, andMismatchedIdentitywere removed.- The public fields
refs,signature, andidofradicle::storage::refs::SignedRefsare now#[doc(hidden)]and are no longer part of the public API.
Security
0.21.0
Added
radicle::node::command::Commandadded variantsAnnounceRefsFor,SeedsFor, andBlock.radicle::cob::identity::ApplyErrornow contains a new variantNonDelegateUnauthorized.radicle::node::Handleadded ablockmethod to allow setting the follow policy toPolicy::Block.radicle::node::Handle::announce_refs_fornow allows specifying for which namespaces changes should be announced. A corresponding enum variantradicle::node::Command::AnnounceRefsForis added.radicle::node::Handle::seeds_fornow allows specifying for which namespaces sync status should be reported. A corresponding enum variantradicle::node::Command::SeedsForis added.
Changed
- The discriminant values for
radicle::node::command::Commandhave changed. radicle::rad::CheckoutErroris now marked asnon_exhaustive.radicle::storage::git::Storage::repositories_by_idreturnsimpl Iterator<Item = Result<RepositoryInfo, RepositoryError>>instead ofResult<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::announcenow takes an additional parameter to specify for which namespaces changes should be announced.- Re-exports from
git2atradicle::git::rawwere limited, using the heartwood workspace as a filter. Dependents that require members that are not exported anymore will have to depend ongit2directly. - Some re-exports from
git-ref-format-corewere moved fromradicle::gittoradicle::fmt. - The crate now re-exports
radicle::git::Oidfrom a newradicle-oidcrate, in an effort to decrease dependence ongit2viaradicle-git-ext. This new object identifier type does not implementDerefanymore. UseIntoto convert to agit2::Oidas necessary. - Re-exports of
radicle-git-extwere removed, as this dependency is removed. Instead ofradicle_git_ext::Error, usegit2::Error(re-exported asradicle::git::raw::Error) together with the new extension traitradicle::git::raw::ErrorExt.
Deprecated
radicle::node::Handle::announce_refsis deprecated in favor ofradicle::node::Handle::announce_refs_for.radicle::node::Handle::seedsis deprecated in favor ofradicle::node::Handle::seeds_for.
Removed
radicle::storage::RepositoryError::GitExtwas removed as a variant, whereRepositoryError::Gitnow subsumes all Git errors.radicle::identity::doc::DocError::GitExtwas removed as a variant, whereDocError::Gitnow subsumes all Git errors.radicle::storage::refs::Error::GitExtwas removed as a variant, whereError::Gitnow subsumes all Git errors.radicle::cob::identity::ApplyError::GitExtwas removed as a variant, whereApplyError::Gitnow subsumes all Git errors.radicle::storage::Error::GitExtwas removed as a variant, whereError::Gitnow subsumes all Git errors.radicle::storage::git::cob::ObjectsError::GitExtwas removed as a variant, whereObjectsError::Gitnow subsumes all Git errors.radicle::git::canonical::rules::CanonicalError::Referenceswas removed as a variant, as it no longer occurs as an error.- The
radicle::node::State::Connectedvariant no longer has afetchingfield. Fetching information is now tracked in the service. - The data returned by
Seedscontainsstate, which in turn contained the fieldfetchingfor ongoing fetches of that node, if in theConnectedstate.Connectedno longer contains that field. radicle::identity::doc::RepoIdwas removed, along with its re-exports atradicle::identity::RepoIdandradicle::prelude::RepoId. The type is now provided by theradicle-corecrate.radicle::identity::doc::IdErrorwas removed, along with its re-export atradicle::identity::IdError.radicle::identity::doc::id::RAD_PREFIXconstant was removed.radicle::identity::doc::VersionErrorvariant was corrected toUnknownVersion, correcting the typo. The typo has been corrected toUnknownVersion.radicle::storage::git::RefErrorwas removed.radicle::storage::git::UserInfowas removed.radicle::storage::git::NAMESPACES_GLOB,radicle::storage::git::CANONICAL_IDENTITY, andradicle::storage::git::SIGREFS_GLOBstatic variables were removed.radicle::storage::git::trailers::SIGNATURE_TRAILERconstant was removed.- The
radicle::serde_ext::localtimemodule and its submodules (time,option::time,duration) were removed, including all associated serialize/deserialize functions. Theradicle-localtimecrate is introduced and provides these helpers. - The
radicle::schemars_ext::cryptomodule was removed, including thePublicKeyschema type. The schema is now provided byradicle-crypto. - The test storage modules under
radicle::test::storage::gitand 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 theEventtype. - Add
#[non_exhaustive]toEventto prevent any further breaking changes when adding new variants.
Changed
radicle::profile::Home::socketdefaults to the path\\.\pipe\radicle-nodeon Windows. The behavior on Unix-like systems has not changed.
Removed
radicle::node::DEFAULT_SOCKET_NAME, useradicle::profile::Home::socketinstead.