Radicle is a peer-to-peer, local-first code collaboration stack built on Git.
Radicle 1.7.0 – Daffodil
18.03.2026Spring has sprung, where we’re writing from, and Daffodils are in season!
The Radicle team are springing into action and announcing the release of Radicle 1.7.0 (748ddad), code name Daffodil. The Daffodil is the national flower of Wales and starts to pop up in February/March – guiding us into the spring time.
This release consists of 226 commits from 11 contributors. Thank you to all the amazing contributors who provided valuable work this release:
- Aaron Würth
- Defelo
- justarandomgeek
- Matthias Beyer
- Sebastian Martinez
- srestegosaurio
- Yorgos Saslis
Installation
curl -sSLf https://radicle.xyz/install | sh -s -- --no-modify-path --version=1.7.0
⚠️ Security Fix
This release contains a security fix, and so it is highly recommended that you update all of your nodes. The information on the vulnerability will be disclosed on the 2026-03-23, with a full write-up at https://radicle.xyz/2026/03/23/vulnerability-disclosure.
We have taken the time to scan all existing repositories on our public seeds, and have not detected any active exploitation of the vulnerability with malicious intent as of today, 2026-03-18.
New Features
Improved rad/sigrefs
The “Signed References” feature was reimplemented.
The commits in refs/rad/sigrefs will now only verify if they carry an appropriate value for refs/rad/root in the associated refs blob.
This reference was introduced in commit 989edacd564fa658358f5ccfd08c243c5ebd8cda, which was released via version 1.1.0.
A new reference, refs/rad/sigrefs-parent, is now recorded in the refs blob, when writing a new entry.
If present, its target must match the parent commit. This is to prevent a replay of a previous refs/rad/sigrefs commit.
It is optional to maintain backwards compatibility, and might become mandatory (like refs/rad/root does in this release) in the future.
Further, the new implementation detects replay of refs blobs.
In order to do so, it walks the history of refs/rad/sigrefs backwards to the root commit, if refs/rad/sigrefs-parent is not set.
Blocking Policies
For those familiar with rad block, you may be aware that you can block a NodeId.
Previous to this release, the blocked node’s references would be rejected during a fetch.
However, it would not be blocked on the connection management level.
With the changes included in this release, blocked nodes are now also blocked at the connection level.
Any attempts for inbound or outbound connections will be rejected.
Include a Wider Set of References
The references of a remote were restricted to heads, tags, notes, rad, and cobs.
This is too restrictive, and does not allow the extensibility that Git affords us as users.
The restriction is now lifted, and the only references that are filtered out are refs/tmp/heads; used by radicle-remote-helper to create temporary patches.
Better Errors for rad id Updates
Using rad id to update the identity document as a non-delegate would result in unclear errors.
Now, when a non-delegate user attempts to update the document, they will have a clearer error given to them.
$ rad id update \
--repo rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji \
--title "Add myself!" \
--delegate did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk \
--no-confirm
✗ Error: did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk is not a delegate, and only delegates are allowed to create a revision
✗ Hint: bob (you) is attempting to modify the identity document but is not a delegate!
Improved I/O Usage
Radicle uses sqlite for local state storage, and it was configured to use journal_mode = WAL, and the default value of synchronous = FULL.
It was recently found that this combination would result in a high amount of I/O operations for a long running node.
The journal_mode and synchronous pragmas are now configurable from rad config edit.
The new default values for both are WAL and NORMAL, respectively. This results in less I/O operations.
On power loss, transactions might be rolled back, but SQLite still guarantees consistency in this mode.
Fixed Bugs
Windows
Use winsplit on Windows
When preparing commands to execute, the shlex crate was used on all platforms.
The semantics on Windows are different (e.g. ‘\’ is a path separator on Windows but marks an escape sequence on Unix-like systems).
This lead to issues when attempting to execute child processes, and was fixed by using winsplit on Windows instead.
Prevent git-upload-pack Zombies
One of our Windows users noticed that git-upload-pack processes would never be reaped, resulting in zombie processes.
These zombie processes are now prevented by using the “Job” API of the operating system to group child processes and their children.
Signal Handling Support
Signal handling is now supported, and so the radicle-node executable will now respect signals on Windows.
Responsive CLI Commands
Users of the rad CLI would often encounter the following output:
✗ Error: timed out reading from control socket
The reason for this was that the request/response pattern that was implemented never accounted for errors.
When the Service would receive a request that resulted in a failure, it would log it, and move on.
The Service has now learned to respond with errors.
This will improve the above error scenarios by providing more information about the error that occurred.
IPv6 Address Parsing
Parsing addresses involving an IPv6 host failed if they were enclosed in square brackets, e.g. in rad node connect z6Mk...@[::1]:8776.
Also, ambiguous addresses would parse, e.g. ::1:8776 would be indistinguishable from [::1]:8776.
Since a port number is always required along with a host when providing an address, IPv6 addresses now always require brackets to avoid confusion.
Existing IPv6 addresses that are stored in the sqlite database are migrated automatically on node startup.
Deprecations
rad fork
The rad fork command was confusing, and mislead users as to what its purpose was.
Many believed it to create a hard-fork of the repository.
Instead, it pushed the default branch to the local user’s namespace.
The command is now deprecated, and you should use git push instead.
Breaking Changes
Seeds No Longer Contains Fetching Information
If you are using the radicle-node control socket, and request Seeds information, then expect a breaking change to the output.
The Connected state of a peer no longer contains fetching information, which was separated out.
This has resulted in the entire fetching value being removed.
Changes to rad node debug Information
The rad node debug information for ongoing fetches contained the number of subscribers awaiting for results, this was removed.
COB Type Names are More DNS Compliant
The TypeName strings defined in radicle-cob are restricted to reflect the size limits on domain names as specified in RFC-1035.
These restrictions are:
- A total length of 255 bytes.
- A max component length of 63 bytes.
Human-readable Timeout Durations
Several rad commands take a --timeout option, and each one would vary in units, e.g. seconds, milliseconds.
These options now take human-readable durations as values, e.g. “9s” for 9 seconds, “1min” for 1 minute, etc.
This is a breaking change since these options now require the unit to be specified.
Changelog
This release contains 226 commit(s) by 11 contributor(s).
748ddadefetch: MakeRemoteRefsan alias lorenz.leutgeb@radicle.xyz35d71f59fetch: RemoveDelegateStatuslorenz.leutgeb@radicle.xyz363a7231fetch: Remove dead code fromDataRefslorenz.leutgeb@radicle.xyz725ced09fetch: Prune remotes with sigrefs failures fintan.halpenny@gmail.com6967bf8fradicle: Automatically upgrade sigrefs lorenz.leutgeb@radicle.xyz20598d39radicle: Remove unusedSyncedAt::loadlorenz.leutgeb@radicle.xyz0f9eace8crypto: Remove markersVerifiedandUnverifiedlorenz.leutgeb@radicle.xyz304a6631radicle: Remove generics for verification markers lorenz.leutgeb@radicle.xyz393eca39node/e2e:rad/sigrefs-parentis not fetched fintan.halpenny@gmail.comd40fa9a3radicle/sigrefs: Switch to new implementation fintan.halpenny@gmail.comd3bc868eradicle/sigrefs: Rewrite Signed References fintan.halpenny@gmail.com52a660fdnode/test: SetRAD_RNG_SEEDlorenz.leutgeb@radicle.xyz99d92421Use humantime to parse timeouts mail@beyermatthias.de52e55812cli: Don’t override existing seeding scope inrad seedmail@defelo.de281f92e9cli/tests: Add test forrad clone --scopemail@defelo.deeea36177useCONIN$instead of/dev/ttyon windows justarandomgeek@gmail.coma1fd9e04radicle: Updatesqliteto 0.37 fintan.halpenny@gmail.com07369771node: Migrate IPv6 addresses in database lorenz.leutgeb@radicle.xyz9e8f09a1Remove stray files fintan.halpenny@gmail.com0c47d06fradicle/storage/refs: Strengthen Encapsulation fintan.halpenny@gmail.comf4495e92radicle/device:impl Keypair for BoxedSignerlorenz.leutgeb@radicle.xyz74fa4425crypto: RequireSigner: signature::Signerlorenz.leutgeb@radicle.xyz06fae85ecrypto:impl Signerbased onKeypairlorenz.leutgeb@radicle.xyzf2ad5454crypto:impl signature::KeypairReffor Signers lorenz.leutgeb@radicle.xyz768ecf56crypto: Addimpl Verifier for PublicKeyfintan.halpenny@gmail.com01c60388git-metadata: Add parsing ofCommitDatafintan.halpenny@gmail.com58624148git-metadata: AddCommitData::strip_signaturesfintan.halpenny@gmail.com60871de8git-metadata: Add derivable traits fintan.halpenny@gmail.com0e45347bradicle/storage: ImproveValidationerror lorenz.leutgeb@radicle.xyzba9c09faradicle/refs: BetterSignedRefsEncapsulation fintan.halpenny@gmail.com39a58dednode/test: UseArbitraryforSignedRefsfintan.halpenny@gmail.comf7ff4d8fradicle/arbitrary: Moveimpl Arbitraryof refs fintan.halpenny@gmail.comb8502397protocol/wire: Remove SignedRefs encoding/decoding fintan.halpenny@gmail.comba8d6b88radicle/storage: Remove unused Remote methods fintan.halpenny@gmail.come78d477bradicle/git: Remove unusedfn remote_refslorenz.leutgeb@radicle.xyz759a6fb9radicle: Compilerad::fork_remoteonly for tests fintan.halpenny@gmail.com7bac1714CHANGELOG: fix typo fintan.halpenny@gmail.comcb3ca622radicle/CHANGELOG: remove variant typo fintan.halpenny@gmail.com9dbbb01dradicle: removeTryFromfintan.halpenny@gmail.com57da7799radicle: Add aloadmethod toradicle::profile::Homeme@sebastinez.devff85c74ecli: Add blank line after issue reply header mail@beyermatthias.de1b986af0cli/tests: Refactor workflow test fintan.halpenny@gmail.comfa82bd5fcli/tests: Refactor watch command tests adrian.duke@gmail.com45e6afd0cli/tests: Refactor utility command tests fintan.halpenny@gmail.comd282e0d0cli/tests: Refactor sync command tests fintan.halpenny@gmail.com7d2842a4cli/tests: Refactor remote command tests adrian.duke@gmail.comc1ab7c38cli/tests: Refactor policy command tests adrian.duke@gmail.com18d7f99ecli/tests: Refactor patch command tests adrian.duke@gmail.com4ffabde6cli/tests: Refactor node command tests adrian.duke@gmail.comb2568f0bcli/tests: Refactor jj command tests adrian.duke@gmail.com4753b889cli/tests: Refactor issue command tests adrian.duke@gmail.com8bf655efcli/tests: Refactor init command tests adrian.duke@gmail.coma1c1b03bcli/tests: Refactor inbox command tests adrian.duke@gmail.comcd4532eccli/tests: Refactor id command tests adrian.duke@gmail.comdac099e4cli/tests: Refactor git command tests adrian.duke@gmail.comd39e485ccli/tests: Refactor cob command tests adrian.duke@gmail.com1f3dc6aecli/tests: Refactor clone command tests adrian.duke@gmail.com7a1e6a24cli/tests: Refactor checkout command tests fintan.halpenny@gmail.com5aaf978fradicle: Configure database connections on open lorenz.leutgeb@radicle.xyzf3afe7b0radicle/config/sqlite: Usesynchronous = NORMALlorenz.leutgeb@radicle.xyzf4aee203radicle: Make SQLite pragmas configurable yorgos.work@proton.me6cc3da95radicle/node/db: Model SQLitesynchronouspragma yorgos.work@proton.med36bf41fradicle/node/db: Directly represent SQLite pragmas yorgos.work@proton.me9ff67562cli: Format IPv6 addresses in square brackets mail@defelo.dedf8e4e6cnode: Parse IPv6 addresses in square brackets mail@defelo.de7c923608radicle: fix to schemars of DefaultSeedingPolicy fintan.halpenny@gmail.com6291cae5cli: addrad config schemato therad-configtest fintan.halpenny@gmail.comf018b434node: control debug serialization of FetcherState fintan.halpenny@gmail.com9ea1ea24Revert “node/debug: Use derived serializers” fintan.halpenny@gmail.come9245b63cli: don’t override existing seeding scope inrad clonemail@defelo.deb04f487bterm: Update to 0.17.0 fintan.halpenny@gmail.com9a98cf7bkeccak: Update to 0.1.6 fintan.halpenny@gmail.combab3f82afetch: Update to 0.17.0 fintan.halpenny@gmail.coma0b434c3localtime: add description in Cargo.toml fintan.halpenny@gmail.com9dba9130core: use “data-types” instead of “data types” fintan.halpenny@gmail.comf9a36ef7systemd: Update to 0.12.0 fintan.halpenny@gmail.com18d6ce94protocol: Update 0.5.0 fintan.halpenny@gmail.comc0ae5e32node: Update to 0.17.0 fintan.halpenny@gmail.com963b4dedcrypto: Update to 0.15.0 fintan.halpenny@gmail.com84e9ffe4cob: Update to 0.18.0 fintan.halpenny@gmail.com186d8d30cli: Update to 0.18.0 fintan.halpenny@gmail.com3a110746radicle: Update to 0.21.0 fintan.halpenny@gmail.com15666467radcile/cob/identity: mark ApplyError as non_exhaustive fintan.halpenny@gmail.comd596b14ebuild: Pin Zig to 0.13.0 fintan.halpenny@gmail.com4c759a26build: Update macos-sdk to include IOKit, libconv, and libcharset fintan.halpenny@gmail.com57a44daebuild: Update cargo-zigbuild to 0.22.1 fintan.halpenny@gmail.com89478b16cargo/git2: Update to 0.20.4 fintan.halpenny@gmail.com423cf604nix: update to 25.11 fintan.halpenny@gmail.com30701cc6node/runtime: MakeRuntime::runmore readable lorenz.leutgeb@radicle.xyz057edf55node/reactor: IntroduceLAG_TIMEOUTlorenz.leutgeb@radicle.xyzae06111enode/reactor: RewriteRuntime::runlorenz.leutgeb@radicle.xyz4d7b942bremote-helper: Renameto_branch_namelorenz.leutgeb@radicle.xyz6d2a99e1remote-helper: Remove Unused Error Variants lorenz.leutgeb@radicle.xyza69420b9remote-helper: Rework Visibility Modifiers lorenz.leutgeb@radicle.xyzd36ed7c8remote-helper/protocol: Introduce Line and Command adrian.duke@gmail.com27493c22remote-helper/service: IntroduceNodeSessionadrian.duke@gmail.com56253b52remote-helper/service: IntroduceGitServiceadrian.duke@gmail.combd30e80bremote-helper/list: Remove printing to stdio adrian.duke@gmail.com119445cecli-test: Movelet mut argscloser to its uses lorenz.leutgeb@radicle.xyz56ece480cli-test: Remove special handling forradlorenz.leutgeb@radicle.xyz3cd1af1dcli-test: Configureescargotproperly lorenz.leutgeb@radicle.xyz5aca9bf1cli-test: Refactor Path Handling lorenz.leutgeb@radicle.xyzd88ef3fae2e: Introduce 3 tests for block command adrian.duke@gmail.coma4806f27node/test: check remote events forEvent::PeerDisconnectedfintan.halpenny@gmail.com1fa14ef5protocol/service: Use block list for connections adrian.duke@gmail.com94e0a512node: Add block command to control socket adrian.duke@gmail.com4286590ffetch: moveComponent::fromoutside of loop fintan.halpenny@gmail.com0e9d7607hooks: Enable typos, fix reported errors lorenz.leutgeb@radicle.xyz5fa68ed8node: Usegix_packetlinelorenz.leutgeb@radicle.xyzc96aea06node/e2e: Fix test_non_fastforward_identity_doc adrian.duke@gmail.com832598cecli: Warn user about implicit seeding policy adrian.duke@gmail.comcee3659eradicle: Introduceradicle::node::config::Scopeadrian.duke@gmail.com306d0afbprotocol: Note on peering and fetches adrian.duke@gmail.com0684d1cccli: Changed the default scope from all to followed for clone and seed adrian.duke@gmail.comdd13eed1cli: Do not print scope in block table adrian.duke@gmail.comb5e8776efetch: Improverefs/rad/idresolution adrian.duke@gmail.com84320919node/tests/e2e: use assert_eq! in test fintan.halpenny@gmail.com7862e108Update gix-* crates fintan.halpenny@gmail.com39157117fetch: introduce domain type RefPrefix fintan.halpenny@gmail.com8070f98afetch/transport/ls_refs: Post-filter of references fintan.halpenny@gmail.com980ed561protocol/service: renameResponder::newtoResponder::oneshotfintan.halpenny@gmail.com0d628a45protocol: refactor to use Responder fintan.halpenny@gmail.comb1eedd3bprotocol/service: introduce Responder type fintan.halpenny@gmail.com61a9b214protocol/service: introduce Result synonym fintan.halpenny@gmail.com2c197215protocol: opaque command error fintan.halpenny@gmail.com38713a8eprotocol/service: dropchanqualifier fintan.halpenny@gmail.com912a5ca4protocol/service: create command module fintan.halpenny@gmail.comfa94638aradicle/storage/init: Remove placeholder files lorenz.leutgeb@radicle.xyz7425ae4bssh: Treat “connection refused” on Windows lorenz.leutgeb@radicle.xyz5099c25dnode/debug: Use derived serializers lorenz.leutgeb@radicle.xyza1fa3801protocol: Depend oncypheraddrnotcyphernetlorenz.leutgeb@radicle.xyzd530f126node/test: Remove unused fileenvironment.rslorenz.leutgeb@radicle.xyz730d696dnode/test: Bind to loopback interface lorenz.leutgeb@radicle.xyzdfe3b501radicle/git/raw:Confignot used on Windows lorenz.leutgeb@radicle.xyzed2b36cfcli-test: Log line of assertion being executed lorenz.leutgeb@radicle.xyz9055a204cli-test: Add placeholder for executable extension lorenz.leutgeb@radicle.xyze831aeb5cli-test: Do not storebinslorenz.leutgeb@radicle.xyz8fbdd46ccli-test: Cheat to find coreutils on Windows lorenz.leutgeb@radicle.xyz4894657bcli-test: Simplify cargo path handling lorenz.leutgeb@radicle.xyz25d1974ccli-test: Deduplicate populatingbinslorenz.leutgeb@radicle.xyz44f52f4ccli-test: Fix uses ofPATH_SEPARATORlorenz.leutgeb@radicle.xyzdd122f10cli/test: Ignorerad_diffon Windows lorenz.leutgeb@radicle.xyz5974fa32windows: Add installer build lorenz@lap-21-0150.mpi-inf.mpg.dec06b00e3CVE-2026-25727 fintan.halpenny@gmail.com31607cf7CVE-2026-25541 fintan.halpenny@gmail.com2d0db3c6CVE-2025-58160 fintan.halpenny@gmail.com03bbe524signals: Add support for Windows lorenz.leutgeb@radicle.xyz865abd35protocol/fetcher: IntroRefsToFetchlorenz.leutgeb@radicle.xyz9081c11bprotocol/fetcher: RemovefromfromQueuedFetchlorenz.leutgeb@radicle.xyz53a12869protocol/service: Remove unnecessary arg lorenz.leutgeb@radicle.xyz94d7799fprotocol/fetcher/state: Typo lorenz.leutgeb@radicle.xyz56ee626aprotocol/fetcher: Delete unused file lorenz.leutgeb@radicle.xyz41f77a49RELEASE: start at rc.1 fintan.halpenny@gmail.com613c4e83protocol: separate subscribers by RefsAt fintan.halpenny@gmail.com993428dfnode: donwgrade log error to trace for disconnection fintan.halpenny@gmail.comaeba81f4core: add documentation toRepoId::from_canonicalfintan.halpenny@gmail.com35a01898core: guard on expected multibase fintan.halpenny@gmail.com8ee32168radicle: remove file fintan.halpenny@gmail.comebf7d876node: Control viauds_windowsnotwinpipelorenz.leutgeb@radicle.xyz90cf37c4node: On Windows, use job for upload-pack child lorenz.leutgeb@radicle.xyz990edbf0windows: Introduce new crate lorenz.leutgeb@radicle.xyz50fb228aterm/editor: Implementexistsfor Windows lorenz.leutgeb@radicle.xyz450b664aterm/editor: Usecfg-attribute instead of macro lorenz.leutgeb@radicle.xyz8fb2d96bradicle/profile: No pager from Git on Windows lorenz.leutgeb@radicle.xyz930ec175term, cli:winsplitovershlexon Windows lorenz.leutgeb@radicle.xyz537eaba8Use rust-analyzer from tool chain in devShell aaron.wuerth@posteo.ded7a4137esystemd: remove redundant lines from system unit lcdt@disroot.org27ee6e10ci: Enable debugging on Windows lorenz.leutgeb@radicle.xyzfefa2837cli/init: Canonicalize path before comparison lorenz.leutgeb@radicle.xyzffbbb374cli-test: Path separation compatible with Windows lorenz.leutgeb@radicle.xyzfaeee9f3crypto: Optionally provide JSON Schema lorenz.leutgeb@radicle.xyz82ad52b1cob: further restrict TypeName fintan.halpenny@gmail.comfe09cd4acob: split up typename tests fintan.halpenny@gmail.com204db22bcob: enable sha1 feature fintan.halpenny@gmail.com1cab036cprotocol/service: Wire upFetcherServicefintan.halpenny@gmail.com9e208909protocol: IntroduceFetcherServicefintan.halpenny@gmail.comf0e3ca34protocol: IntroduceFetcherStatefintan.halpenny@gmail.com7cf73300radicle/storage/refs: DeriveHashforRefsAtfintan.halpenny@gmail.comeccfd6bacli: optional message for issue comments fintan.halpenny@gmail.comc33c26facli: fix casing for warning of preferred_seeds fintan.halpenny@gmail.com15adb161protocol: missed formatting fintan.halpenny@gmail.com91eb6fc0protocol: ensureconnectsupports connecting address fintan.halpenny@gmail.com36d5a4c8protocol: use helper method fintan.halpenny@gmail.com73f9a350protocol: reuse session address for reconnect fintan.halpenny@gmail.com589925e3radicle/node: avoid unnecessary allocations inEmitter::emit_allmail@defelo.de8b1d4751protocol: batch inventory removals and events insync_routingmail@defelo.ded2ab7b1bRELEASE: include patch releases fintan.halpenny@gmail.com1c9a1b4fRELEASE: Add file documenting the release process fintan.halpenny@gmail.come63c3097cli/fork: Deprecate lorenz.leutgeb@radicle.xyzb937a938radicle-cli: more helpful error for non-delegate updates adrian.duke@gmail.com60959f7ecli: promote WithHint hint type to String adrian.duke@gmail.com67a4a712radicle: add new error type for unauthorized non-delegates adrian.duke@gmail.combd5436d7core: Fix doctest lorenz.leutgeb@radicle.xyzb41ce2e6radicle/canonical: provide public Canonical JSON link fintan.halpenny@gmail.comf6d3dae4CHANGELOG: Release 1.6.1 fintan.halpenny@gmail.coma4e66d14radicle: Allow all references to be included in sigrefs mail@defelo.de67dee655Release 1.6.0 CHANGELOG fintan.halpenny@gmail.com6d1abd28node: downgradeerror!logs fintan.halpenny@gmail.comb020543cnode: downgradewarn!logs fintan.halpenny@gmail.comee1f5542protocol: downgradeerror!logs fintan.halpenny@gmail.comeeadffa6node: update comment fintan.halpenny@gmail.com958422a7node/routing: remove error scenario from Database::prune fintan.halpenny@gmail.com95b3d109protocol: downgradewarn!logs fintan.halpenny@gmail.com9236277afetch: removetarget: "fetch"fintan.halpenny@gmail.come3cb36d9fetch: clean up logging fintan.halpenny@gmail.comd860ec15cli: Remove deadfn parse_remoteadrian.duke@gmail.com53cb8da8clippy: Deny and fixmust_use_candidateadrian.duke@gmail.com2df32c00clippy: Denyfn_params_excessive_boolsadrian.duke@gmail.com4c1b7fcdclippy: Deny and fixindex_slicingadrian.duke@gmail.com0855af00clippy: Deny and fixunneeded_field_patternadrian.duke@gmail.com9cc2c869clippy: Deny and fixwildcard_enum_match_armadrian.duke@gmail.com001aba0dclippy: Deny and fixfallible_impl_fromadrian.duke@gmail.com02318f19radicle: Re-exportradicle_core::RepoIdfintan.halpenny@gmail.com73827f53radicle: Re-exportradicle_core::NodeIdfintan.halpenny@gmail.com7c016f92core: Introduce NodeId fintan.halpenny@gmail.comd5fea632core: Introduce RepoId fintan.halpenny@gmail.comaf3f0762chore: Update thiserror from 1 to 2 lorenz.leutgeb@radicle.xyzd98033a1localtime: localise the localtime dependency fintan.halpenny@gmail.com3168107dfetch: surface underlying I/O error fintan.halpenny@gmail.com75b665ffnode/wire: manage logs for error establishing connection fintan.halpenny@gmail.com47dc2c56protocol/service: defensive storage.contains check fintan.halpenny@gmail.coma46f8eb1node: useoutbound.getoveroutbound.get_mutfintan.halpenny@gmail.comb8a6e1a5radicle/cob/stream: skip commits that do not have a manifest fintan.halpenny@gmail.comcf023f75cob: allow hyphens inTypeNamemail@defelo.de352c29c2cargo(deny): allow Zlib fintan.halpenny@gmail.coma66d44ebworkspace: update git-ref-format-core and radicle-surf fintan.halpenny@gmail.com
Checksums
e6de41ba2b2efd07b9ab008717d720184f8385c3bb93ad5c4a37f257179ecfed radicle-1.7.0-x86_64-apple-darwin.tar.xz
0dd4d185bd6a1e5588ec879471678c482b0cc27d92cb2cc3b22982e63e920049 radicle-1.7.0-aarch64-unknown-linux-musl.tar.xz
dd9b734dc7b7b7132e7a27e5a53e268276870bbebd195ff6c0e1273ec2984dea radicle-1.7.0-aarch64-apple-darwin.tar.xz
e23ad2f616d9730db5ae4eb730baad1373172e2dcaec1fef2c6b199dba514378 radicle-1.7.0-x86_64-unknown-linux-musl.tar.xz