63 Commits
Author SHA1 Message Date
Rūdolfs Ošiņš f3138ae30a Show branch names decoded in the branch selector
Closes c639643a8e
2026-08-25 15:38:10 +02:00
Rūdolfs OšiņšandGuillaume 8cfcf11a88 Decode percent-encoded identifiers in URLs
Cloudflare's single-page-application fallback percent-encodes the
path on a fresh load or reload, so `rad:z4V1...` arrives as
`rad%3Az4V1...` and leaks into links and the seed command.

Only identifiers are decoded: revision and path segments stay
encoded, because branch and tag lookups are keyed on the encoded
name.

The seed command needs a second fix: the repo path segment is an
alias when one was used, and `rad seed <alias>` is not valid, the
`rad seed` command only supports RIDs and not aliases.

Co-Authored-By: Guillaume <guillaume.alabre@gmail.com>
2026-08-25 14:52:32 +02:00
andreolf 8bb45aa11d Render GitHub blob image URLs
Image URLs pointing at a GitHub "blob" page, such as
https://github.com/<owner>/<repo>/blob/<ref>/<path>, serve an HTML
page rather than the raw image bytes, so they render as broken images
in markdown.

Add a canonicalizeGithubImageUrl helper that appends ?raw=true to such
URLs, which makes GitHub redirect to the raw content. URLs already
pointing at the raw content, via ?raw=true or raw.githubusercontent.com,
are left unchanged, as are non-GitHub and non-URL sources.

Wire the helper into the markdown image loop so external image URLs are
canonicalized while relative paths keep resolving against the repo's raw
endpoint.
2026-08-24 16:23:09 +02:00
Rūdolfs Ošiņš 256b060770 Resolve repo aliases in JSON and raw API 2026-07-29 14:05:06 +02:00
Georgios Jason Efstathiou c01e22ac87 Add e2e and unit tests for explore, search, and marketing 2026-07-15 15:42:22 +02:00
Rūdolfs Ošiņš 3f798744bb Use linkify-it for commit description URLs
Replace the hand-rolled URL regex with `linkify-it` (already a
transitive dep via `marked-linkify-it`). Add unit tests.
2026-05-06 09:54:04 +02:00
Rūdolfs Ošiņš 7e725f3bdf Move public deployment from app.radicle.xyz to radicle.network 2026-04-23 00:08:23 +02: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
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
Sebastian Martinez 2c362adffb Update dependencies 2025-05-21 13:40:52 +02:00
Sebastian Martinez a34056b2bf Remove sinon in favor of existing APIs of playwright and vitest
We where using `sinon` in the `playwright` tests to simulate a different
time, which since `playwright@1.45.0` can be done with the Clock API
calling `page.clock.setFixedTime`.

And to test the mutex executor we can use the vitest utils spy function
`vi.fn()` instead of `sinon.spy()`
2024-08-29 10:11:04 +02:00
Sebastian Martinez 868f7b1e2d Rename files from project(s) to repo(s) 2024-08-22 09:43:06 +02:00
Sebastian Martinez cf08c83913 Update naming of project(s) to repo(s) 2024-08-22 09:43:06 +02:00
Rūdolfs Ošiņš 06cc5595c8 Upgrade eslint 2024-08-19 15:25:31 +02:00
Rūdolfs Ošiņš c0049f83ba Redesign node view and use it as the landing-page 2024-07-26 10:20:01 +02:00
Sebastian Martinez 1775dd284d Rename missed state -> status occurrences 2024-07-15 14:43:15 +02:00
Sebastian Martinez dd61f5cf5c Remove local httpd features and experimental features
Updates API version to 2.0.0
2024-07-04 11:48:41 +02:00
Sebastian Martinez b8171e3a3f Simplify sidebar context boxes
Also starts removing features that relied on the web client handling
local httpd instances
2024-07-02 12:49:35 +02:00
Sebastian Martinez 4b579d13a9 Add InlineTitle component
This new component doesn't rely on marked.js but escapes any special
characters and then replaces any backtick with a <code> HTML tag to
render any inline codeblocks in all titles.
2024-07-01 13:05:08 +02:00
Sebastian Martinez e326f48cbf Update seeding policy schema 2024-06-28 13:59:35 +02:00
Sebastian Martinez 0c7ea70c1b Update eslint config to flat config
Since the legacy config is being deprecated at the end of 2024, we
should start moving to the eslint flat config.

I avoided the tseslint config helper function so we avoid wrapping
magic.

This seems to have triggered more checking since any checks in svelte
files have appeared and the $$Generic type that is being deprecated had
to be rewritten.

Also fixes some any types that weren't caught previously
2024-05-27 17:35:16 +02:00
Sebastian Martinez 0c46e67f88 Handle absolute markdown links with leading slash
This commit also handles relative linking when there is no path yet.
Aka not having `/tree/..` in the URL.
2024-04-04 22:24:53 +02:00
Rūdolfs Ošiņš 127efc49a5 Revert "Handle absolute markdown links with leading slash"
This reverts commit 2efd0ad58e.

There's a bug with root-level links in markdown docs.
2024-03-29 16:48:28 +01:00
Sebastian Martinez 2efd0ad58e Handle absolute markdown links with leading slash 2024-03-29 11:54:54 +01:00
Sebastian Martinez 1c54038055 Handle error in AssigneeInput when chars outside of the bs58 charset
Also improves the UX and only shows validation errors on submit, and not
during input.
2024-03-22 09:00:47 +01:00
Rūdolfs Ošiņš ad1fdca446 Show RID on ProjectCard 2024-03-13 10:39:59 +01:00
Rūdolfs Ošiņš 08d16dbbeb Implement two column layout 2024-01-02 11:48:19 +00:00
Sebastian Martinez 3b16632e3d Remove willow.radicle.garden from httpd-api router unit tests 2023-12-07 13:27:11 +01:00
Rūdolfs Ošiņšanddnlklmn d914710396 Implement new design
Co-authored-by: dnlklmn <pelicansinberlin@gmail.com>
Signed-off-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2023-10-13 18:05:19 +02:00
Sebastian Martinez 9f68848bc0 Update dependencies
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-09-27 07:56:26 +02:00
Rūdolfs Ošiņš 5cd098187c Rename "project.tree" to "project.source"
This aligns better with the component and tab naming.

Signed-off-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2023-08-08 15:35:27 +02:00
Rūdolfs Ošiņš 0146ca00b5 Update the UI to work with the new COB schema
Signed-off-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2023-08-08 10:53:49 +02:00
Sebastian Martinez 4525771264 Use /nodes/ in URL instead of /seeds/
We still allow already published URLs with `/seeds/` in them to be
resolved.

Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
Signed-off-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2023-07-31 16:58:45 +02:00
Thomas Scholtes 29e3295f45 Represent issue status filter in route
Signed-off-by: Thomas Scholtes <geigerzaehler@axiom.fm>
2023-07-24 12:15:35 +02:00
Thomas Scholtes aae50a2fda Use structured routing for patch views
Signed-off-by: Thomas Scholtes <geigerzaehler@axiom.fm>
2023-07-19 15:14:53 +02:00
Sebastian Martinez 14ba807e55 Set the httpd port for the test suite to be 8081.
Also where possible use the `config.seeds.defaultHttpdPort` instead of
hardcoding it.

Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-07-17 15:19:31 +02:00
Thomas Scholtes 50088a5c8a Make pathToRoute tests more readable
We switch the test for `pathToRoute` from a paramterized test to regular
tests. I had a lot of trouble finding the right properties to change
when a test in this group failed. The line number was not helpful at all
and the test description was burried inside an object.

We also rename `pathToRoute` to `urlToRoute` because the function takes
a `URL` as an argument.

Signed-off-by: Thomas Scholtes <geigerzaehler@axiom.fm>
2023-07-17 11:44:27 +02:00
Thomas Scholtes 283b665b31 Switch to flat project route type
We switch to a project route type that is just a union. This has the
following advantages

* It’s much easier to construct project routes. Fewer properties are
  needed and there are no nested objects.
* We eliminate the implicitly shared properties `path`, `peer`,
  `revision` and `route` which only belonged to the tree route.
* The structure of the project route is more regular and thus easier to
  understand.

Signed-off-by: Thomas Scholtes <geigerzaehler@axiom.fm>
2023-07-17 11:27:57 +02:00
Thomas Scholtes d0a280be02 Simplify project route resolving
Signed-off-by: Thomas Scholtes <geigerzaehler@axiom.fm>
2023-07-12 15:24:06 +02:00
Thomas Scholtes d7442d23ae Add tests for projectRouteToPath
Signed-off-by: Thomas Scholtes <geigerzaehler@axiom.fm>
2023-07-09 13:34:11 +02:00
Thomas Scholtes c6afc56beb Test that route building and parsing leave routes invariant
We replace the tests for `routeToPath` with a test that calls
`pathToRoute(routeToPath(route))`. These test do not only cover the
assertions of the previous tests but also check an important invariant
for route parsing and building.

I’m not using `test.each` here because this makes the tests less
readable.

Signed-off-by: Thomas Scholtes <geigerzaehler@axiom.fm>
2023-07-03 13:24:00 +02:00
Rūdolfs Ošiņš 3f7a58c489 Handle app URL translation into seed BaseUrl in one place
To make the code easier to reason about we handle all app URL encoding
and decoding and the related seed BaseUrl extraction in a single place.

Signed-off-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2023-06-28 10:51:59 +02:00
Sebastian Martinez 4df9810088 Rename hostnamePort to hostAndPort
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-06-14 16:19:05 +02:00
Rūdolfs OšiņšandThomas Scholtes a331721c9f Move project source browsing loading into the router
Co-authored-by: Thomas Scholtes <geigerzaehler@axiom.fm>
Signed-off-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2023-06-13 14:24:27 +02:00
Sebastian Martinez 889b13303b Extract markdown from source-browsing fixture
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-06-05 15:08:32 +02:00
Sebastian Martinez 99f27350c1 Fix out-of-state commit listing when refreshing page after push
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-06-01 10:09:12 +02:00
Rūdolfs Ošiņš b997b12353 Implement data loading in router
Signed-off-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2023-05-11 10:51:35 +02:00
Rūdolfs Ošiņš 85dc1c3552 Port mutexExecutor from Upstream
Signed-off-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2023-05-11 10:50:26 +02:00
Rūdolfs Ošiņš c8c251fabd Add httpd-client api library
Signed-off-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2023-04-11 15:31:08 +02:00