Commit Graph
2327 Commits
Author SHA1 Message Date
Rūdolfs Ošiņš 06aaa6a97c Run tests against latest radicle 1.6.1 and httpd 0.24.0 2026-02-26 11:38:28 -06:00
Rūdolfs Ošiņš bd3b660b17 httpd: Release 0.24.0 releases/0.24.0 2026-02-26 09:43:02 -06:00
justarandomgeek eaed75b803 update axum-listener to 0.2.2 2026-02-26 09:13:23 -06:00
justarandomgeek c69d095600 disable SIGHUP handler for windows 2026-02-26 09:13:23 -06:00
justarandomgeek e3db969604 disable Unix Domain Sockets for windows 2026-02-26 09:13:23 -06:00
Rūdolfs Ošiņš 2bbb35b2f1 Improve comment 2026-02-26 09:06:49 -06:00
Rūdolfs Ošiņš 7dd70638f5 Improve /node api endpoint response time
Work around an issue where radicle-node takes a long time to respond to
status and config requests blocking the UI because we use the node
avatar from the config in almost all layouts.
2026-02-26 09:03:10 -06:00
Defelo d4eeccb90f Show parents on commit page 2026-02-25 10:08:01 -06:00
Rūdolfs Ošiņš c21389a828 Upgrade radicle crates to latest versions
radicle 0.18.0 -> 0.21.0
radicle-surf 0.22.0 -> 0.27.0
radicle-term 0.14.0 -> 0.17.0
radicle-crypto 0.13.0 -> 0.15.0

Fixes the following issues:
  - broken pinned repo listing while repos are being fetched
  - broken source tree browser when there are `[]` characters in folder names
2026-02-24 23:06:24 -06:00
Ivan Shapovalov 1b6d2830d7 httpd: accept /{rid}.git/{nid}/ paths as GIT_NAMESPACE-d remotes
This patch adds support for serving `/{rid}/{nid}/...` paths as
`GIT_NAMESPACE`-d http remotes, using `{nid}` as the namespace.
Radicle's on-disk repo storage already uses a Git-namespace-compatible
notion for peer refs (`refs/namespaces/*`), so it is merely a matter of
passing the right `$GIT_NAMESPACE` to the `git http-backend` process.

This way, it becomes possible to directly clone or fetch from URLs like
`http://httpd.domain.tld/z3gqcJUoA1n9HaHKufZs5FCSGazv5.git/z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM`
to directly access the given node's ref namespace:

    $ cd radicle-explorer
    $ git remote add intelfx https://iris.radicle.xyz/z4V1sjrXqjvFdnCUbxPFqd5p4DtH5/z6MkqbVudjUcuxUmwWfW6U886CnhoX5wmkEDsAXju9F9UBAo
    $ git pull intelfx work/httpd-git-namespace // or fetch, or ...

Instead of mucking about with

    $ git fetch origin refs/namespaces/{nid}/refs/heads/{branch}:refs/heads/{branch}
2026-02-24 11:57:12 -06:00
Defelo 29b952a3ff Show all repos if there are no pinned repos 2026-02-05 16:28:46 -06:00
Rūdolfs Ošiņš b0b6d1663e Document the release process in RELEASE.md 2026-01-21 12:44:02 -06:00
Rūdolfs Ošiņš 5b4d5d5df9 Adapt heartwood changelog script for radicle-httpd 2026-01-21 11:38:40 -06:00
Rūdolfs Ošiņš 3d55ca4833 Make release scripts executable from anywhere in the repo 2026-01-21 11:38:00 -06:00
Rūdolfs Ošiņš a4a3f65ffe Update the release scripts to match our canonical tags 2026-01-21 11:37:37 -06:00
Rūdolfs Ošiņš 14162868f2 httpd: Release 0.23.0 releases/0.23.0 2026-01-21 09:40:35 -06:00
Rūdolfs OšiņšandFintan Halpenny 7dfca539b4 httpd: Add SIGHUP config reloading
Enable hot-reloading of web configuration (pinned repos, avatar, banner,
description) by sending SIGHUP to the process, eliminating the need for
server restarts when updating these settings.

Co-authored-by: Fintan Halpenny <fintan.halpenny@gmail.com>
2026-01-20 15:55:21 -06:00
Rūdolfs Ošiņš ebe4e426e8 Improve localhost detection 2026-01-17 09:35:54 -06:00
Rūdolfs Ošiņš 8f52b2bdfb Support *.localhost subdomains
In the new always-on-node service we'll want to test things locally with
domains that look like this: rudolfs.localhost:3080
2026-01-13 12:49:18 -06:00
Defelo 0fae94fce4 httpd: Remove unused struct 2026-01-12 15:01:48 -06:00
Rūdolfs Ošiņš c72494f620 Enable localhost connections in radicle-explorer
Allow radicle-explorer to connect to a locally running radicle-httpd via
https://app.radicle.xyz/nodes/localhost. This was previously disabled to
encourage use of Radicle Desktop, but is now useful for testing the new
always-on node in local development environments.

Remove support for /nodes/radicle.local, an undocumented and unused convention.

Fix remote node loading when Cloudflare URL-encodes port separator (: → %3A).
2026-01-12 14:38:50 -06:00
Rūdolfs Ošiņš 4c20d626e8 Add script for app.radicle.xyz deployments
Our Cloudflare deployments via GitHub broke. We can run deployments
manually to app.radicle.xyz via:

  npm run deploy

This also takes care of injecting the plausible.io script.
2026-01-09 16:55:19 -06:00
Rūdolfs Ošiņš eec96f5121 Fix linter warnings
Fixes svelte/no-reactive-reassign errors when running scripts/check.

It slipped through code review, regression from:
https://app.radicle.xyz/nodes/seed.radicle.garden/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5/patches/d77e0646b32cac18187a72bd5f36b501a08040ba
https://github.com/radicle-dev/radicle-explorer/actions/runs/17741958964/job/50417893170
2026-01-09 14:57:19 -06:00
Rūdolfs Ošiņš fadd614636 httpd: Release 0.22.0 releases/0.22.0 2026-01-07 13:24:49 -06:00
Defelo 699835d3fb httpd: Fix git handler
Apply the `SocketAddr` -> `DualAddr` change made in commit `4d062d83` to
the git handler and update the unit tests accordingly.
2026-01-06 14:49:20 +01:00
Sebastian Martinez 30fd309e04 httpd: Improve build README 2025-12-23 15:18:52 +01:00
Sebastian Martinez ad845ba66f httpd: Update upload script 2025-12-23 14:53:31 +01:00
Sebastian Martinez 8c2f15d619 httpd: Release 0.21.0 2025-12-23 12:57:43 +01:00
Sebastian Martinez 4d062d8347 httpd: Add axum-listener and use axum for unix-sockets directly 2025-12-23 12:33:43 +01:00
Rūdolfs Ošiņš 97ad0a865e httpd: Make radicle-httpd work with unix sockets 2025-12-19 17:48:22 +01:00
Cameron Eldridge 97dac7e28f Add rudimentary "Browse all repos on node" view
Seemed to me there was no way to browse all the repositories being seeded on a node.
On the massive public nodes this is not that useful a feature since there are too many
and too jumbled an assortment, but for a smaller personal node, this feature might be
valuable to make the explorer's contents a bit easier to explore.

Went with the most unintrusive implementation of this idea for now; just enough
that it "does the job" (you can access this view, and paginate the results)
but does not have any of the bells and whistles it should have (search/filtering,
sorting, page query parameters support).

As part of this work, since the repos section gets much more complex, I extracted
the repos part of the page into its own component. Otherwise, it is just very simply
allowing the parameters to the `fetchRepoInfos` call to be manipulated from the page.
2025-09-15 16:02:35 +02:00
Sebastian Martinez 5cf657249f Update heartwood-release to 1.4.0 2025-09-15 13:28:18 +02:00
Sebastian Martinez af159b8735 Update node metadata test user agent regex 2025-09-15 13:28:18 +02:00
Cameron Eldridge e4ec27c06b Fix CSS for task lists in rendered Markdown
The previous CSS was setting the task-list element to be `display: flex`, but this
does not play well with a task list item that contains further nodes. Commonly,
a sub-list, but even a bolded bit of text is rendered with a bit of unpleasant
extra spacing.

Example:

- [ ] Task 1
    - Step 1: Do *thing*
    - Step 2: Do __another__ thing

Or since I'm not sure if that's going to be rendered via this interface,
just find such a file on the hosted version. [This](https://app.radicle.xyz/nodes/seed.radicle.garden/rad%3Az28AWjUMmH9kFFCw7W9GMSCHoA9zZ)
repository of mine is particularly offensive in this category.

To solve the issue, I have removed the flex, and additional turned the icon component
itself into an inline flex element, as it being a block element was likely part of
the reason the list became a flex container to begin with.
2025-09-15 13:28:18 +02:00
Defelo 23d608d433 Guess mime type based on path
Try to determine the mime type of a file first based on its path, then
based on its content.

The previous behavior (looking only at the file content) inferred a
mime type of `text/xml` for `.svg` files (instead of `image/svg+xml`)
which prevented them from being shown when embedded e.g. in a markdown
document.
2025-09-15 12:53:33 +02:00
Defelo ed41e5529a Add width and height to allowed attributes 2025-09-13 22:37:03 +02:00
Sebastian Martinez d5cf0612d5 httpd: Update dependencies
Required:
- removing the #[async_trait] declarations since that has been
stabilized in rust.
- axum 0.8.0 introduced new endpoints declarations with curly brackets.
2025-08-15 14:12:35 +02:00
Sebastian Martinez 2727615b53 Bump radicle crate to 0.18.0 2025-08-15 13:22:49 +02:00
Rūdolfs Ošiņš 781045b254 Run user did through decodeURIComponent before validating
We recently moved app.radicle.xyz to Cloudflare, which by default
normalizes all URLs to be encoded on redirect. The redirects happen
because we run in SPA mode.
2025-07-24 12:50:29 +02:00
Rūdolfs Ošiņš be5605acde httpd: Release 0.20.0 2025-07-18 14:16:04 +02:00
Rūdolfs Ošiņš 4cd680d464 Bump radicle crate to 0.16.1 2025-07-18 12:13:24 +02:00
Lorenz Leutgeb 329863f349 Add wrangler.toml 2025-07-17 20:27:08 +02:00
Sebastian Martinez 18afaa1251 Add file path and line for comments with code locations
Instead of only displaying a comment, we need to make sure users know
that this has been a line comment.

Linking to changes for the display of the comment is a bit trickier,
will do so in a follow up
2025-06-27 11:28:23 +02:00
Sebastian Martinez 0603f63cdf Add components to rust-toolchain file
This seems to be helping since GitHub changed the behavior of the rustup
toolchain install from the default profile to a minimal which excludes
fmt and clippy

source: https://github.com/rust-lang/rustup/issues/4337
2025-06-26 15:52:37 +02:00
Sebastian Martinez f966ef1773 Add .prettierignore
Don't run prettier on a rust crate
2025-06-26 15:52:37 +02:00
Sebastian Martinez 33b8ecde59 Add review comments and replies 2025-06-26 08:41:01 +02:00
Sebastian Martinez b1bcfc7cd8 Add debian packaging of radicle-httpd 2025-06-24 15:04:20 +02:00
Sebastian Martinez 3c66de391b Add debian package builder 2025-06-24 15:04:20 +02:00
Sebastian Martinez 9cd9673152 Use new naming of preferred seed nodes 2025-06-19 08:28:23 +02:00
Sebastian Martinez fd88be1602 httpd: Add a radicle-httpd.json file to each build 2025-06-17 13:13:51 +02:00