Commit Graph

3099 Commits

Author SHA1 Message Date
Fintan Halpenny fe353ea7e9 codespell: Rule for ... -> …
Creates a new .codespell-dictionary.txt to extend the default set of rules.

The first rule is `...|…`.
2026-04-17 14:36:58 +01:00
Adrian Duke 179a080867 just: Introduce commit-msg hook for typos
Add a `commit-msg` hook to continuously run `typos` against the COMMIT_MSG.
2026-04-17 14:36:58 +01:00
Adrian Duke f6bf13422d just: Fix doublestar expansion in check-scripts 2026-04-17 14:36:58 +01:00
Adrian Duke 083c9d1abc just: Replace inline scripts with script file calls 2026-04-17 14:36:58 +01:00
Adrian Duke 421a43376d just: Drop underline from output styline 2026-04-17 14:36:58 +01:00
Adrian Duke 6744384acf just: Extract inline bash scripts out to files
Enables `shellcheck` checking.
2026-04-17 14:36:58 +01:00
Lorenz Leutgeb df31702b8b flake: Add `just` to development shell 2026-04-17 14:36:58 +01:00
Lorenz Leutgeb fc12414778 just: Rename `HOOK_NAME` to just `HOOK` 2026-04-17 14:36:58 +01:00
Fintan Halpenny 112c901de8 flake: Add codespell
Nix users may not have `codespell` installed globally.
Introduce it in the `devShell` so they have it locally in `heartwood`.
2026-04-17 14:36:58 +01:00
Fintan Halpenny 69ccabacdd just: Use bash to perform install-hook confirmation
The `[confirm()]` tag had issues on linux with string interpolation,
switches to using a bash based read for confirmation.
2026-04-17 14:36:58 +01:00
Adrian Duke 1f4de60bac just: Add minimum version to CONTRIBUTING and HACKING 2026-04-17 14:36:58 +01:00
Fintan Halpenny 11e80d3094 just: Check for file before removing in install-hooks
The `rm` command would fail if the hook did not exist.
First check for existence and then remove.
2026-04-17 14:36:58 +01:00
Fintan Halpenny a74befd2a7 just: Expand shellcheck glob to all shell scripts 2026-04-17 14:36:58 +01:00
Fintan Halpenny 983e5e19d9 just: Use full argument names for codespell 2026-04-17 14:36:58 +01:00
Adrian Duke 3e9df1c8e4 just: Remove existing hooks during install-hooks 2026-04-17 14:36:58 +01:00
Adrian Duke ffe5b9ed08 just: Better doc comment for check-keywords 2026-04-17 14:36:58 +01:00
Adrian Duke b0af317eaa hacking: Update docs with 'just' commands 2026-04-17 14:36:58 +01:00
Adrian Duke 6e2b710358 contributing: Update docs with 'just' commands 2026-04-17 14:36:58 +01:00
Adrian Duke 1df1acabfa git-hook-template: minor output formatting 2026-04-17 14:36:58 +01:00
Adrian Duke 4e0f739c29 just: Add post-checkout hook 2026-04-17 14:36:58 +01:00
Adrian Duke 09cd3eeb82 just: Add check-hooks to confirm presence and integrity 2026-04-17 14:36:58 +01:00
Adrian Duke eb8467cb6f just: Introduce output formatting 2026-04-17 14:36:58 +01:00
Adrian Duke bdb2a1fc7f just: Introduce pre-commit and pre-push installer
Copies the template script into the git hooks DIR to prevent a potential
attacker overwriting its contents. Also introduces a check before
running the hook against sensitive files from `master`, if there are
changes between the branch and `master`, asks user to confirm
continuation of hook execution.
2026-04-17 14:36:58 +01:00
Adrian Duke 576bc6d6af just: Add groupings and parallel where possible 2026-04-17 14:36:58 +01:00
Adrian Duke 3082f9976d just: Add pre-commit hook 2026-04-17 14:36:58 +01:00
Adrian Duke 9310b1eff2 just: Add more pre-push tasks
Migrating further pre-push checks from `flake.nix`
2026-04-17 14:36:57 +01:00
Adrian Duke 9210f0871a just: Introduce justfile with pre-push hook cmds
As part of migrating from `flake.nix` to a more universal task runner
that can manage git hooks too.
2026-04-17 14:36:58 +01:00
Adrian Duke 430868ffb1 codespell: Add 'ser' to `ignore-words-list`
codespell is misidentifying `::serde::ser` as `::serde::set`.
2026-04-16 21:01:52 +02:00
Adrian Duke 9c6bcd2778 cli: Fix typo "writeable" → "writable"
Detected by `typos`.
2026-04-16 21:01:11 +02:00
Lorenz Leutgeb ac3eba09a1 I2P Support
Co-authored-by: ps
2026-04-15 12:01:50 +01:00
Lorenz Leutgeb 9b9b5ca996 cargo: Update `cyphernet` from 0.5.2 to 0.5.3
The main change that needs adjustment on our side is that
`impl EcPk for ec25519::PublicKey` changed from `Compressed = [u8; 32]`
to `Compressed = amplify::Bytes32`.

Also remove `impl Deref for PublicKey` to avoid dependents of
`radicle-crypto` depend on a particular implementation, and make the
anonymous member private.

See
<f42396139a>.
2026-04-15 11:59:15 +01:00
Lorenz Leutgeb 91b2fd8986
clippy: Deny `unwrap_used`
In the places where `unwrap_used` is currently at `warn`, change it to
be `deny` (stricter).
2026-04-15 10:06:05 +02:00
Lorenz Leutgeb 4d57ba496d
rust: Disallow lint `dead_code` 2026-04-15 10:06:05 +02:00
Lorenz Leutgeb c23a257f3c
clippy: Configure lint `unwrap_used`
By setting `allow-unwrap-in-tests`, we can avoid repeating
`allow(clippy::unwrap_used)` many times over.
2026-04-15 10:06:05 +02:00
Lorenz Leutgeb dbec748c47
clippy: Disallow unused lints
The following clippy lints were allowed in the past but are not
required anymore:
 - box_default
 - large_enum_variant
 - let_unit_value
 - or_fun_call
2026-04-15 10:06:05 +02:00
Lorenz Leutgeb 63f9607423
clippy: Disallow lint `iter_nth_zero` 2026-04-15 10:06:05 +02:00
Lorenz Leutgeb f87d254395
clippy: Disallow lint `identity_op` 2026-04-15 10:06:05 +02:00
Lorenz Leutgeb 33a8c09f78
clippy: Disallow lint `match_like_matches_macro` 2026-04-15 10:06:05 +02:00
Lorenz Leutgeb ca732015fb
clippy: Disallow lints `collapsible_*`
The three lints `collapsible_{if,else_if,match}` are disallowed.
2026-04-15 10:06:05 +02:00
Lorenz Leutgeb 44244dc00f
clippy: Disallow lint `type_complexity`
We just need two exceptions.
2026-04-15 10:06:05 +02:00
Lorenz Leutgeb ffc81154e4
clippy: Disallow lint `enum_variant_names`
We just need one exception.
2026-04-15 10:06:05 +02:00
Lorenz Leutgeb ae55d935bc
cargo/workspace/lints: Shorten notation
Also sort lints by name.
2026-04-15 10:05:56 +02:00
Adrian Duke 547a753768 simulation: Add README with overview and plan
Introduce the `simulation` directory in anticipation of migrating the
`radicle simulation network` repository. Introduce a loose plan and
explainer of how it will work.
2026-04-15 08:51:03 +01:00
Lorenz Leutgeb 94f65a71db
cargo: Remove unused dependencies
A number of dependencies were unused, causing confusion. Remove them.
2026-04-15 01:50:14 +02:00
Richard Levitte adfd89f609 cli-test: Respect `CARGO_TARGET_DIR`
`radicle-cli-test` initiates `cargo` builds under the assumption
that the target directory is always within the source directory.
However, the user may have a different idea, specified with the
environment variable `CARGO_TARGET_DIR` (supported by `cargo`, see
https://doc.rust-lang.org/cargo/reference/environment-variables.html).

Add support for `CARGO_TARGET_DIR`, with a fallback to 'target'
at the top of the source tree if `CARGO_TARGET_DIR` is undefined.
2026-04-15 00:18:39 +02:00
Lorenz Leutgeb 80c1bba76f
radicle: Prevent `RAD_SOCKET` from polluting tests
The value of `RAD_SOCKET` influences the outcome of `cargo test`.

Users that set this environment variable to, e.g. point `rad` at
a socket at a custom location, were surprised that execution of
tests would interact with their node.

Split `Home::socket` into two functions. `Home::socket_default` is
"pure" and only dependent on the path represented by `Home`. On the
other hand, `Home::socket_from_env` interprets the environment.

Most users will want to use `Home::socket_from_env`.
2026-04-09 17:53:49 +02:00
Lorenz Leutgeb a2de55cbb9 radicle/crefs: Use `GetPayload` to load
Using `GetPayload`, `GetRawCanonicalRefs` can be implemented
generically.
2026-04-08 11:17:46 +01:00
Lorenz Leutgeb 5167367918 radicle: Introduce `trait GetPayload`
This new trait can be implemented by any struct that allows loading of
payloads. Currently, this only applies to the identity document.
2026-04-08 11:13:28 +01:00
Lorenz Leutgeb aa28567035 radicle/crefs: Refactor `GetCanonicalRefs`
There is only one type that can really construct canonical references,
which is the the identity document. Remove the corresponding method
from the trait and rename it to `GetRawCanonicalRefs` accordingly.
2026-04-08 11:13:28 +01:00
Lorenz Leutgeb ef101d9ab9 radicle/crefs/protect: Module for protected refs
Separate module for the concern of protecting `refs/rad`.

Note that this also fixes a bug, as previously all refs
*starting with* `refs/rad`, such as `refs/radieschen` were protected.
2026-04-08 11:02:25 +01:00