Files
radicle.xyz/_posts/2025-09-30-radicle-1.5.0.md
T

176 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Radicle 1.5.0 – Hibiscus 🌺"
image: radicle-1.png
---
The Radicle team is delighted to announce the release of Radicle 1.5.0 (5fea9ac0), code name *Hibiscus*.
The Hibiscus flower tends to bloom from late spring through autumn, and can be made into a nice warming tea.
So grab your cup and take a seat, while we walk through this 1.5.0 release.
This release consists of 74 commits from 7 contributors.
Thanks to the following contributors for their effort in making Radicle better:
- yorgos
- defelo
- Sebastian
- Matthias
## Installation
```
curl -sSf {{ site.url }}/install | sh -s -- --no-modify-path --version=1.5.0
```
## Better Support for Bare Repositories
Some improvements to supporting bare repositories have been made for `rad` and
`git-remote-rad`. For `rad`, the `rad clone` command has learned a new flag
`--bare`, which clones the repository into a bare repository, as opposed to
having a working tree (see [gitrepository-layout](https://git-scm.com/docs/gitrepository-layout/2.49.0)).
`git-remote-rad` (our Git remote helper), also learned to better handle bare
repositories, when using `git push` and `git fetch` with a `rad://` remote.
For `jj` users, this begins to unlock being able to use `jj` without co-location
of the Git repository. Further improvements to interoperability with `jj` are
in progress and will be released in future versions.
## Introducing the `patch.branch` Option
Continuing on the theme of making `jj` users happy, `git-remote-rad` can now
handle the option `-o patch.branch[=<name>]`. When the option is passed without
a name, i.e. `-o patch.branch`, an upstream branch will be created which is
named after the patch being created – `patches/<PATCH ID>`. Alternatively, the
`<name>` value is used if supplied.
This allows you to specify if you want a tracking branch (or bookmark in `jj`)
for the patch. This means that you can avoid using `rad patch checkout`.
## Improved `rad patch show`
The `rad patch show` command has received some love by improving its output. The
`Base` of the patch is now always output, where before it was behind the
`--verbose` flag.
The previous output would differentiate "updates", where the original author
creates a new revision, and "revisions", where another author creates a
revision. This could be confusing since updates are also revisions. Instead, the
output shows a timeline of the root of the patch and each new revision, without
any differentiation. The revision identifiers, head commit of the revision, and
author are still printed as per usual.
## Structured Logging
The `radicle-node` has learned to output structure logging using the new
`--log-logger structured` and `--log-format json` option pairs. If they are not
specified, then the logging will remain the same as per usual.
## Deprecations in `rad`
It is important to note that we are now emitting deprecation and obsoletion
warnings for several `rad` commands and options.
For `rad diff`, the whole command is deprecated, and `git diff` should be used
instead. It is better to use the tools that already exist in this case.
The option `rad self --nid` was deprecated in favor of `rad node status --only nid`.
The reason for this is that we will be making efforts to separate the cryptographic
identity of user and node.
For this case, the node will – in a future version – read the location of the
secret key to use from configuration or arguments at runtime. This means that a
running node is required to report the correct Node ID – and the command cannot
rely on the default location, which is shared with the user.
The options `rad patch review [--patch | --delete]` are marked as obsolete,
since their functionality never worked as intended. Reviews are something that
requires more research and time to implement. These commands will likely be
removed before a next major release, since their lack of functionality is
confusing.
## Changelog
This release contains 74 commit(s) by 7 contributor(s).
* `5fea9ac05` **node: Add `--log-logger structured` and `--log-format json`** *<me@sebastinez.dev>*
* `e56311739` **node: Refactor logging initialization** *<lorenz.leutgeb@radicle.xyz>*
* `9793b4e7b` **systemd: Require Linux for journal module** *<yorgos.work@proton.me>*
* `e70850cb3` **remote-helper: Add patch.branch option** *<mail@defelo.de>*
* `6a43e83dd` **Release 1.3.1** *<fintan.halpenny@gmail.com>*
* `7b00bf2e3` **cli/patch/review: Obsoletion Warning** *<lorenz.leutgeb@radicle.xyz>*
* `8dd17e2a6` **cli/warning: Add `fn obsolete`** *<lorenz.leutgeb@radicle.xyz>*
* `7d1db6a01` **cli/diff: Deprecation Warning** *<lorenz.leutgeb@radicle.xyz>*
* `8558cc223` **cli/self: `--nid` deprecation warning to stderr** *<lorenz.leutgeb@radicle.xyz>*
* `3fb04623a` **cli/warning: Add `fn deprecate`** *<lorenz.leutgeb@radicle.xyz>*
* `2635562c9` **cli/node/status: Add `--only nid`** *<lorenz.leutgeb@radicle.xyz>*
* `8afd55ff6` **build: update release files location** *<fintan.halpenny@gmail.com>*
* `d2e10fdef` **cli/tests/commands: Clean up test `rad_patch`** *<erik@zirkular.io>*
* `19210faab` **protocol/service: Change `Routing table updated..` from info to debug** *<me@sebastinez.dev>*
* `86472fdcc` **remote-helper/fetch: Improve error handling** *<lorenz.leutgeb@radicle.xyz>*
* `f542df183` **radicle: Use `git fetch-pack` for "local fetch"** *<lorenz.leutgeb@radicle.xyz>*
* `20663a4e3` **remote-helper: Use `git send-pack` for "internal push"** *<lorenz.leutgeb@radicle.xyz>*
* `f9ff484c9` **cli: Make `rad patch show` prettier** *<lorenz.leutgeb@radicle.xyz>*
* `43246fe6c` **remote-helper: Parse base revision early** *<lorenz.leutgeb@radicle.xyz>*
* `ef2796186` **remote-helper: List `HEAD`** *<lorenz.leutgeb@radicle.xyz>*
* `101fbff80` **ci: Deny `cargo doc` warnings** *<erik@zirkular.io>*
* `14fcf5067` **docs: fix doc string linking** *<fintan.halpenny@gmail.com>*
* `ee9e6de5f` **remote-helper: Do not assume remote name** *<lorenz.leutgeb@radicle.xyz>*
* `6b9ff4f99` **cli/init: Allow `--setup-signing` with bare repos** *<lorenz.leutgeb@radicle.xyz>*
* `fd93240b9` **cli/git: Remove dead code `fn view_diff`** *<lorenz.leutgeb@radicle.xyz>*
* `86ea33b0c` **cli/clone: Add flag `--bare`** *<lorenz.leutgeb@radicle.xyz>*
* `766e281d3` **radicle: Allow creating bare clones** *<lorenz.leutgeb@radicle.xyz>*
* `e528c40a0` **radicle-cli: Test initializing from bare repos** *<lorenz.leutgeb@radicle.xyz>*
* `606882f01` **remote-helper: Simplify handling of `GIT_DIR`** *<lorenz.leutgeb@radicle.xyz>*
* `354565c57` **radicle: Handle `GIT_DIR` more uniformly** *<lorenz.leutgeb@radicle.xyz>*
* `4e6746796` **remote-helper: Refactor option handling** *<lorenz.leutgeb@radicle.xyz>*
* `876d22b07` **remote-helper: Remove unused push error variant** *<lorenz.leutgeb@radicle.xyz>*
* `550fcccc2` **remote-helper: Do not hard-code binary name** *<lorenz.leutgeb@radicle.xyz>*
* `897404164` **remote-helper: Make crate binary-only** *<lorenz.leutgeb@radicle.xyz>*
* `66adbffd6` **term: Use static template in spinner initialization** *<fintan.halpenny@gmail.com>*
* `8fc37e331` **term: Move to indicatif spinner** *<erik@zirkular.io>*
* `ee9ecfda7` **remote-helper: Remove `SyncWriter` in favor of `PaintTarget`** *<erik@zirkular.io>*
* `153a8f9fb` **node: Remove `SyncWriter` in favor of `PaintTarget`** *<erik@zirkular.io>*
* `11a109ef4` **term: Introduce `PaintTarget`** *<erik@zirkular.io>*
* `379037956` **remote-helper: Prevent doubly verifying each push** *<lorenz.leutgeb@radicle.xyz>*
* `a0f6cbf5f` **radicle: Move interpretation of output to binary** *<lorenz.leutgeb@radicle.xyz>*
* `0a8317c35` **remote-helper: Interpret verbosity option** *<lorenz.leutgeb@radicle.xyz>*
* `11e8b89b2` **radicle/src/git: additionally specify pruneTags for remote** *<fintan.halpenny@gmail.com>*
* `646d4360e` **cli/node: Replace manual pushing with Table::extend()** *<mail@beyermatthias.de>*
* `2f2823267` **cli/issue: Replace manual pushing with Table::extend()** *<mail@beyermatthias.de>*
* `8554e996b` **cli/diff: Replace manual pushing with Table::extend()** *<mail@beyermatthias.de>*
* `fbef60eed` **cli/sync: Replace manual pushing with Table::extend()** *<mail@beyermatthias.de>*
* `370ae3643` **cli/patch: Replace manual iterator partitioning with Itertools::partition_result()** *<mail@beyermatthias.de>*
* `3f489354b` **cli: Add itertools dependency** *<mail@beyermatthias.de>*
* `9c2f97abe` **cli/remote: Replace manual building table from iterator** *<mail@beyermatthias.de>*
* `4bd45cdab` **cli/inbox: Replace manual building table from iterator** *<mail@beyermatthias.de>*
* `016cab1db` **term/table: Add Table::with_opts() to set options after Table obj was constructed** *<mail@beyermatthias.de>*
* `fb458537b` **cli/patch: Replace manual building table from iterator** *<mail@beyermatthias.de>*
* `41a742ed9` **term/table: Add impl FromIterator for Table** *<mail@beyermatthias.de>*
* `ff021d588` **cli: Rewrite `#[path="…"]` module declarations** *<mail@beyermatthias.de>*
* `11fc98c9c` **term: Replace manual Extend impl for Table** *<mail@beyermatthias.de>*
* `f00d1d674` **cli/self: Stop printing information about the node** *<lorenz.leutgeb@radicle.xyz>*
* `e1af550a0` **cli/node: Print Node ID** *<lorenz.leutgeb@radicle.xyz>*
* `9b7529baa` **hooks: Filter for "radicle.{xyz,zulipchat.com}"** *<lorenz.leutgeb@radicle.xyz>*
* `b301fa6a0` **doc: Mention handling of "radicle.xyz"** *<lorenz.leutgeb@radicle.xyz>*
* `79505fa90` **radicle/test/fixtures: Use "radicle.xyz" as `const`** *<lorenz.leutgeb@radicle.xyz>*
* `1a3fda547` **radicle/explorer: Allow overriding default URL** *<lorenz.leutgeb@radicle.xyz>*
* `e2c476a38` **radicle/test: Don't hard-code "radicle.xyz"** *<lorenz.leutgeb@radicle.xyz>*
* `2127782b7` **term: Remove dependency on `anyhow`** *<lorenz.leutgeb@radicle.xyz>*
* `edd88a59b` **term: Remove `mod command`** *<lorenz.leutgeb@radicle.xyz>*
* `79d928551` **node: Remove dependency on `anyhow`** *<lorenz.leutgeb@radicle.xyz>*
* `4bf3ab6fb` **github/actions: Add a workflow to build** *<lorenz.leutgeb@radicle.xyz>*
* `55cdd880b` **radicle-term: Pass in `mut self` rather than rebinding** *<mail@beyermatthias.de>*
* `19c484e95` **radicle-term: Optimize impl of VStack::children()** *<mail@beyermatthias.de>*
* `93388e366` **radicle-term: Preallocate in Line::spaced()** *<mail@beyermatthias.de>*
* `3036509e4` **radicle-term: Add testcase for Line::spaced()** *<mail@beyermatthias.de>*
* `23b9d3063` **radicle: Remove unnecessary clone()** *<mail@beyermatthias.de>*
* `29a95fb1a` **radicle-fetch: Replace manual std::matches!() impl** *<mail@beyermatthias.de>*
* `ded0d19d5` **protocol/wire/test: Define `fn roundtrip` and macro** *<lorenz.leutgeb@radicle.xyz>*
## Checksums
```
d94e3b65d2585c7f7b5e31a5d55af8a7ff156cd4c45a7b728501e6f54353600e radicle-1.5.0-aarch64-apple-darwin.tar.xz
4c27f2428873d99532337991f977255aa4023beedd6d53178ce3abdc529df8dc radicle-1.5.0-aarch64-unknown-linux-musl.tar.xz
57523bc4ff575f2cdf94df3f4e3bf814cc46f2fd497fcfdd885e9bcdd7d4fb26 radicle-1.5.0-x86_64-apple-darwin.tar.xz
9c9277df40c0f144e0b5bcde9cfe2e81c0f8a1ee4f2cb9313ef942ab0c811022 radicle-1.5.0-x86_64-unknown-linux-musl.tar.xz
```