Radicle is a peer-to-peer, local-first code collaboration stack built on Git. Radicle 1.3.0 The Radicle team is delighted to announce the release of Radicle 1.3.0 (29043134a). This release contains 48 commits by 7 contributors. We would like to thank everyone for their continued effort in helping us improve the Radicle protocol and tooling via their contributions and usage reports 👾 Installation curl -sSf https://radicle.xyz/install | sh -s -- --no-modify-path --version=1.3.0 Canonical References This feature has been under way for quite some time, and we are proud to announce that it’s ready for you to use! Canonical reference rules have been introduced via an identity payload entry under the identifier xyz.radicle.crefs . Here’s an example of the payload that includes a single rule for tags that live under refs/tags/releases/* : "xyz.radicle.crefs": { "rules": { "refs/tags/releases/*": { "allow": [ "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz", "did:key:z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz", "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM" ], "threshold": 2 } } } 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 is checked when performing a rad id update . For a more detailed history and usage of canonical references, check out the accompanying post. 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, git-remote-rad and radicle-node are blockers for full Windows support. 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. Improved Log Rotation The rotation of logs under .radicle/node now works using a numbered system, i.e. node.log.1 , node.log.2 , etc. The current running node will log to node.log , which is a symlink to most recent number. This means that logs will be persisted between runs, which will require occasional cleanup. Display Full Node ID We have improved the formatting for Node IDs and node addresses. 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. Stable Order for Pinned Repositories The pinned repositories now maintain their insertion order, meaning that they should not be reordered by any other factors other than the user’s decision on which repositories should appear first. Relax Pushes for git-remote-rad The git-remote-rad would always expect a working copy and a reference when performing pushes. These constraints are relaxed to allow a bare Git repository and any kind of Git revision. This should improve the experience for users of jj . Connect Attempts will Error If a connection attempt would not happen due to an error, the result of the error was never returned. This would often lead to timeouts when using rad node connect . We now return the error and can report it instead of waiting for a timeout. Default Branch Picker 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 . Changelog For a full list of changes, see below: 7a9d4512f radicle: fix Canonical::quorum doc link [email protected] [email protected] 5d467418b term: Revert using inquire to spawn editor [email protected] [email protected] 4934473b8 cli/node: Improve log rotation [email protected] [email protected] 3d352f23e canonical: Support Annotated Tags [email protected] [email protected] 54fd8c40a node: clean up logging [email protected] [email protected] 174792813 node: register backtrace [email protected] [email protected] 0aaa81f82 cli: mention binary names as part of unknown [email protected] [email protected] fdb1ac4e3 radicle: Fix clippy::result_large_err [email protected] [email protected] 5bab3f9cc clippy: Allow doc_overindented_list_items [email protected] [email protected] 906803378 chore: Automated fixes generated by clippy [email protected] [email protected] 586eefc3e rust-toolchain: 1.85 → 1.88 [email protected] [email protected] efeefd0da chore(debian/changelog): update package version to match upstream [email protected] [email protected] 2a47bc0c7 term: provide default HELP message [email protected] [email protected] a998ce691 ssh: provide path on connect error [email protected] [email protected] 8224819fe radicle/profile: Enable home detection on Windows [email protected] [email protected] 1e0a14ddc ssh: Remove dependency on log [email protected] [email protected] 8e6279a38 ssh: Remove dependency on byteorder [email protected] [email protected] 95b3303eb term: Remove unused dependency shlex [email protected] [email protected] 009436efa ssh: Use winpipe for SSH agent on Windows [email protected] [email protected] 070550153 radicle: Depend on winpipe for Windows support [email protected] [email protected] 08b535d56 radicle: Only set file limits on Unix [email protected] [email protected] e7fb5647a term: Remove dependency on libc [email protected] [email protected] 70fb0d3fe term: Use inquire for spawning the editor [email protected] [email protected] a28fd65e8 term/ansi: Remove unused Windows module [email protected] [email protected] d46d36ece term/spinner: Only handle signals on Unix [email protected] [email protected] 92d77f9ec crypto/ssh/keystore: Reduce scope of DirBuilderExt [email protected] [email protected] 37ea81766 cli: improve default branch pick [email protected] [email protected] 85ddcace0 docs: fix installation instructions in README.md [email protected] [email protected] 7c4b71ab8 radicle: Keep pinned repos ordered in config [email protected] [email protected] 1fa30e2e8 cli: test missing commits for canonical quorum [email protected] [email protected] afe64d517 remote-helper: improve canonical handling [email protected] [email protected] 14444a43e remote-helper: refactor pushing action [email protected] [email protected] a9f75d47e remote-helper: allow any revision in push src [email protected] [email protected] da72557cf git-remote-rad: Allow pushing from bare repositories [email protected] [email protected] 271ef497d crypto: Fix scope of ssh-key dependency [email protected] [email protected] 0e3f3f03d cli: Improve formatting of Node IDs and addresses [email protected] [email protected] 010d5134e protocol: fix Frame docstring [email protected] [email protected] 3c5668edd protocol: Reimplement encoding on top of bytes [email protected] [email protected] 1c20f64a2 node, protocol: Refactor [email protected] [email protected] 61c468778 protocol: Create skeleton by moving from radicle-node [email protected] [email protected] b9759c586 radicle: Make node::Link copy and add is_* [email protected] [email protected] 408d4f27e chore: add canonical references to CHANGELOG [email protected] [email protected] 820122516 cli: test canonical tags [email protected] [email protected] ff365e2d8 radicle: disallow default branch [email protected] [email protected] a69397386 cli: extract document update logic [email protected] [email protected] 7f646666b radicle: canonical references payload [email protected] [email protected] af6cf03ac radicle: canonical reference rules [email protected] [email protected] fb8681f5b radicle: connect returns ConnectError [email protected] Checksums