Commit Graph
61 Commits
Author SHA1 Message Date
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
Adrian Duke 1f4de60bac just: Add minimum version to CONTRIBUTING and HACKING 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
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
Adrian Duke c627e68fdb node/reactor: Demote reactor lag log to DEBUG
Demote from WARN to DEBUG as no actions to remedy can be taken by users.
2026-03-19 21:07:51 +00:00
Adrian Duke fa82bd5f76 cli/tests: Refactor watch command tests 2026-03-11 10:51:57 +00:00
Adrian Duke 7d2842a458 cli/tests: Refactor remote command tests 2026-03-11 10:51:57 +00:00
Adrian Duke c1ab7c386e cli/tests: Refactor policy command tests 2026-03-11 10:51:57 +00:00
Adrian Duke 18d7f99e33 cli/tests: Refactor patch command tests 2026-03-11 10:51:57 +00:00
Adrian Duke 4ffabde605 cli/tests: Refactor node command tests 2026-03-11 10:51:57 +00:00
Adrian Duke b2568f0b47 cli/tests: Refactor jj command tests 2026-03-11 10:51:57 +00:00
Adrian Duke 4753b889dc cli/tests: Refactor issue command tests 2026-03-11 10:51:57 +00:00
Adrian Duke 8bf655ef97 cli/tests: Refactor init command tests 2026-03-11 10:51:57 +00:00
Adrian Duke a1c1b03b66 cli/tests: Refactor inbox command tests 2026-03-11 10:51:57 +00:00
Adrian Duke cd4532ecd5 cli/tests: Refactor id command tests 2026-03-11 10:51:57 +00:00
Adrian Duke dac099e4f1 cli/tests: Refactor git command tests 2026-03-11 10:51:57 +00:00
Adrian Duke d39e485c13 cli/tests: Refactor cob command tests 2026-03-11 10:51:57 +00:00
Adrian Duke 1f3dc6aea0 cli/tests: Refactor clone command tests 2026-03-11 10:51:57 +00:00
Adrian DukeandLorenz Leutgeb d36ed7c8af remote-helper/protocol: Introduce Line and Command
A new module to model the domain of protocol lines and commands
being exchanged is introduced.

This is to increase readability and to pave the way for a
future sans I/O version of the binary crate.

Co-authored-by: Lorenz Leutgeb <lorenz.leutgeb@radicle.xyz>
2026-02-18 00:07:35 +01:00
Adrian Duke 27493c2229 remote-helper/service: Introduce NodeSession
Prefactor to add a trait capturing behaviour of the node.
2026-02-18 00:04:14 +01:00
Adrian Duke 56253b529e remote-helper/service: Introduce GitService
Prefactor to introduce `trait GitService` around the behaviour of
`fetch_pack` and `send_pack`.
2026-02-18 00:03:00 +01:00
Adrian Duke bd30e80b9a remote-helper/list: Remove printing to stdio
Prefactor to aid testing.
2026-02-18 00:00:14 +01:00
Adrian Duke d88ef3fa66 e2e: Introduce 3 tests for block command
1. It disconnects an active connection.
2. A blocked peer can not connect to us.
3. A blocked peer can not be fetched from.
2026-02-17 16:12:04 +01:00
Adrian Duke 1fa14ef529 protocol/service: Use block list for connections
The service learns to consult the policies database to check if a
`NodeId` is blocked.

When a node is blocked the service will prevent any inbound or
outbound connection.

In the case of an inbound connection, a disconnect must be submitted
to the reactor.

In the case of an outbound connection, nodes are filtered out from any
connection lists, and prevented from submitting a connect to the
reactor.
2026-02-17 16:12:04 +01:00
Adrian Duke 94e0a5128d node: Add block command to control socket
Introduces the ability to explicitly block a peer via the node control
socket. Previously, the node only exposed follow and unfollow commands.
While the underlying policy database schema supported a Block variant,
there was no mechanism to trigger this state via the client handle.

The new block command:

 1. Updates the node's follow policy to Block.
 2. Immediately disconnects the peer if a session is active.
2026-02-17 16:12:04 +01:00
Adrian Duke c96aea0699 node/e2e: Fix test_non_fastforward_identity_doc
This test was flakey.
2026-02-16 21:39:11 +01:00
Adrian Duke 832598ceb7 cli: Warn user about implicit seeding policy
To prepare for future changes, warn users if their config file currently
does not explicitly specify a default seeding policy.

Because there are now potentially multiple warnings generated that all
relate to the configuration file, group these together and adjust the
wording to be more uniform.
2026-02-16 21:39:11 +01:00
Adrian Duke cee3659ed5 radicle: Introduce radicle::node::config::Scope
The `SeedingPolicy` type now requires a `Scope`, however existing
configurations allow it to not be specified.

Introduce a `radicle::node::config::Scope` type that allows for an
optional `policy::Scope`. The default value resolves to
`policy::Scope::All`. This preserves backwards compatibility for
existing configurations.
2026-02-16 21:39:11 +01:00
Adrian Duke 306d0afbfe protocol: Note on peering and fetches
As part of the work to change the default scope, one of the tests
surfaced an issue where the topology was Alice <--> Bob <--> Eve,
however because of the previous 'all' scope Alice could receive Eve
references via Bob, but since the scope was changed to 'follow' Alice
would need to have a direct connection to Eve. TODO left here for future
consideration.
2026-02-16 21:39:11 +01:00
Adrian Duke 0684d1ccdf cli: Changed the default scope from all to followed for clone and seed
The previous implementation used 'all' as the default for scope, this
could lead to surprising behaviour where a user would fetch all
references for cloned and seeded repositories. Instead have a progressive,
safe by default value - where it fetches only 'followed' references. Later
a user can decide to set the scope to 'all'. NOTE: the default policy
scope was not changed from 'all' and is intended to be changed at a
later date.
2026-02-16 21:39:11 +01:00
Adrian Duke dd13eed1d0 cli: Do not print scope in block table
Previous implementation used the default scope when a scope wasn't
present. Scope is not present when the policy is block, because block
doesn't have a scope. Instead use an empty string when printing the
block policy.
2026-02-16 21:39:11 +01:00
Adrian Duke b5e8776efd fetch: Improve refs/rad/id resolution
The previous resolution would favour one `Oid` over another, due to
the call to `Option::or`.

This was found to result in scenarios where an identity document being
advertised was older than the identity document that the fetching node
already has, and would not fetch namespaces by newly added delegates.

The resolution logic is updated to handle all cases for these `Oid`s,
and when they are both present, uses a commit graph check to see which
one is the latest.

An e2e test is added to check ensure behaviour works correctly.
2026-02-16 21:39:11 +01:00
Adrian Duke b937a93892 radicle-cli: more helpful error for non-delegate updates
When a non-delegate attempts to update the identity document, their
action will be rejected.

Provide a better error, along with a hint, to the non-delegate.
2026-01-22 10:38:28 +00:00
Adrian Duke 60959f7e83 cli: promote WithHint hint type to String
Changes the `Error::WithHint::hint` field to use a `String` type instead of
`&'static str`. This allows the caller to provide extra hint
information.

To make it easier to use an `Error::with_hint` constructor is added.
2026-01-22 10:36:47 +00:00
Adrian Duke 67a4a712e4 radicle: add new error type for unauthorized non-delegates
The previous error `UnexpectedState` was opaque, and ended up in a
confusing message when a user would try to edit the identity document
while not being a deleagte themselves.

Instead, provide a more specific error that mentions the `Did`
performing the action, and the action itself.

Note that the `UnexpectedState` variant was matched on during
evaluation, meaning that operations would still appear in the timeline
of the COB. With the change to the other variant, the timeline does
not record the operation anymore.
2026-01-22 10:24:26 +00:00
Adrian Duke d860ec15b3 cli: Remove dead fn parse_remote 2026-01-16 22:52:53 +01:00
Adrian Duke 53cb8da8ff clippy: Deny and fix must_use_candidate 2026-01-16 22:52:53 +01:00
Adrian Duke 2df32c0099 clippy: Deny fn_params_excessive_bools 2026-01-16 22:52:53 +01:00
Adrian Duke 4c1b7fcd80 clippy: Deny and fix index_slicing 2026-01-16 22:52:50 +01:00
Adrian Duke 0855af00a9 clippy: Deny and fix unneeded_field_pattern 2026-01-16 22:52:23 +01:00
Adrian Duke 9cc2c869b4 clippy: Deny and fix wildcard_enum_match_arm 2026-01-16 22:52:23 +01:00
Adrian Duke 001aba0d29 clippy: Deny and fix fallible_impl_from
Instead of changing `impl From<SystemTime> for LocalTime` to `TryFrom`,
the implementation was removed, as there are not many callsites, and
they are well served by `LocalTime::now`.

radicle-localtime: drop TryFrom SystemTime

radicle-node: switch SystemTime usage with LocalTime
2026-01-16 22:52:18 +01:00
Adrian Duke 5ed1b8e579 node: Fix test 'test_concurrent_fetches'
The test 'test_concurrent_fetches' is broken. It asserts over empty
sets nullifying its utility. Correct the test by changing it so that
sets to be asserted against are cloned.
2025-10-22 17:11:23 +02:00