Commit Graph
3468 Commits
Author SHA1 Message Date
Rūdolfs Ošiņš 152088105b Fix cargo audit reported warnings 2026-08-28 17:58:57 +02:00
Rūdolfs Ošiņš 8ec4610b9a Fix npm audit reported warnings 2026-08-28 17:53:34 +02:00
Daniel NormanandRūdolfs Ošiņš b1acb3eb4d Integrate radicle-artifact into explorer
- Add release read API to httpd as cargo feature enabled by default
- Add Releases and Release views to the UI
- Filter out redacted artifacts and mark delegate authors
- Degrade releases UI gracefully with older radicle-httpd versions
- Hide fully redacted releases
- Skip releases in the list endpoint when every artifact was redacted by
  its author or a delegate, so no empty release entries are shown
- Keep them reachable with showRedacted=true and by release id
- Add e2e tests for the release routes

Co-Authored-By: Rūdolfs Ošiņš <rudolfs@osins.org>
2026-08-28 16:33:14 +02:00
Brandon Oxendine 3ac4249651 Match the reaction and edit button sizes
The reaction trigger sits in a block wrapper, so its icon formed a line
box and took the leading with it, leaving the button taller than the
edit one beside it. It also carried its own padding, colour and hover
fill, on top of the ones the action around it already provides.

The action is now a fixed square with its content centred, so its size
no longer depends on the shape of whatever it wraps.
2026-08-27 17:48:32 +02:00
Brandon Oxendine 66d849faaa Let the Guide sidebar button be hidden 2026-08-27 14:38:03 +02:00
Daniel Norman 8f2ddcf489 Cache npm dependencies in Buildkite
- Add twemoji as npm dependency instead of build download
- Package build assets with a Vite plugin instead of scripts
- Keep the eslint and prettier caches in one directory
2026-08-26 17:44:04 +02:00
Brandon Oxendine 880db5e538 Add Cmd+, shortcut to open Settings
Handle Cmd+, (Ctrl+, on Linux/Windows) in the global keydown handler
to toggle the Settings modal, matching the existing font-size and
Escape shortcuts.
2026-08-25 17:46:21 +02:00
Kaiya 51edb93b7d Update Caddy example in README.md 2026-08-25 17:18:44 +02:00
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
Julien Donck ab5aaa0382 Remove the FAQ from the marketing site
The FAQ shipped here was a verbatim copy of the one on radicle.dev,
carrying a canonical tag that already pointed search engines at that
original. Drop the duplicate and redirect /faq to radicle.dev/faq so
existing links still reach the content.
2026-08-25 11:36:01 +02:00
andreolf fc31f33fad Support <details> collapsing in markdown
The markdown sanitizer's allowlist did not include the <details> and
<summary> tags, so GitHub-style collapsible sections were stripped and
their contents rendered flat. Add both tags to ALLOWED_TAGS and the
"open" attribute to ALLOWED_ATTR, so collapsible sections render and
<details open> starts expanded.

Closes 390f3f2958
2026-08-25 11:05:44 +02:00
andreolf 96730dc1f4 Shorten PWA short_name to "Radicle"
The installed-app home-screen label (short_name) in the web app
manifest was the full "Radicle Explorer". Shorten it to "Radicle" so
it reads well as an app label, while keeping name as "Radicle
Explorer", the project's full name.
2026-08-25 11:02:10 +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
Lorenz Leutgeb 678cdee6b1 httpd/git: Pass Git-Protocol header
Reports of incompatibility with clients that require version 2 of the
Git protocol, were reported, see
<https://radicle.zulipchat.com/#narrow/channel/570942-Garden/topic/preserve.20.60Git-Protocol.60.20header/near/616710464>.

Version negotiation depends on the `Git-Protocol` header, which may be
passed via the environment variable `GIT_PROTOCOL` as documented in
`man:git-http-backend(1)` (see sections "Environment" and "Examples").
2026-08-24 10:32:53 +02:00
Skye Soss cd8c7cac6a Use a table for the radicle-job patch entry
The inline table added in 935b023 spans multiple lines, which TOML 1.0
forbids. Rust 1.97.1 accepts it, but cargo-tauri's hook shells out to
the cargo from nixpkgs (1.91.1), which rejects it and fails the Nix
build.
2026-08-16 13:30:36 -05:00
Skye Soss b261f59f0d nix: Add hash for radicle-job git dependency
935b023 patched radicle-job to a git source, so Cargo.lock now carries
a git+https entry. importCargoLock cannot vendor a git dependency
without an explicit hash.
2026-08-16 13:30:25 -05:00
Skye Soss 86a409c247 nix: Update rust-overlay for Rust 1.97.1
The toolchain was bumped to 1.97.1 in 843a2d0, but the pinned
rust-overlay predates that release and only knows stable channels up
to 1.95.0.
2026-08-16 13:30:14 -05:00
Rūdolfs Ošiņš 5d3ab09afb Update arch package to v0.15.0 2026-08-14 18:37:12 +02:00
Rūdolfs Ošiņš e3ac6cad0e Release v0.15.0 2026-08-14 18:37:02 +02:00
Rūdolfs Ošiņš f54ba3e9d3 Fix npm audit issues 2026-08-14 18:22:45 +02:00
Rūdolfs Ošiņš 6af586303f Move the diff settings into the settings modal
Grouped with the code font in a section of their own, replacing the
per-view popover in the commit, changes and review views.
2026-08-14 17:30:47 +02:00
Rūdolfs Ošiņš 9fed2b0099 Restructure the review view's controls
- Add a sticky row over both columns, its left half the comment
  column's own header
- Move collapse-all and the diff settings into it, out of the topbar
- Switch the column between the review's comments and a file tree
- Toggle between every file in the revision and only the commented ones
- Put the column away entirely, giving the diff the full width
- Keep a pixel under the bar so the first file keeps its top edge
2026-08-14 17:30:47 +02:00
Rūdolfs Ošiņš aa18be10e1 Let the diff's side columns scroll
`max-height: 100%` resolved against an auto-height box, so it was
dropped and the commit list and comment column grew past the port
instead of scrolling inside it.
2026-08-14 17:30:47 +02:00
Rūdolfs Ošiņš 9196e4f726 Share the file-tree status mapping 2026-08-14 17:30:47 +02:00
Rūdolfs Ošiņš 3d4fb16281 Tighten the patch tab bar 2026-08-14 17:30:47 +02:00
Rūdolfs Ošiņš 2c9c382073 Say who resolved a comment
The comment records only that it is resolved, so the name comes from the
resolve operation in the patch's log. Adds the action to timeline
threads too, and shapes the badge like a review's verdict.
2026-08-14 17:30:46 +02:00
Rūdolfs Ošiņš d7d8fcce93 Add a comment stepper to the Changes tab
Walks the comments on the diff in the order they are rendered, merged
into the control that filters which of them are shown.
2026-08-14 17:30:46 +02:00
Rūdolfs Ošiņš ef3a6341e7 Add a comment column to the review view
Lists every line comment in the review beside the files; clicking one
scrolls the diff to it and rings it briefly.
2026-08-14 17:30:46 +02:00
Rūdolfs Ošiņš 01e057b5d6 Show only commented files in the review view
Even out the page's vertical rhythm while there: one gap owns the
spacing between blocks, so it holds whichever blocks a review has.
2026-08-14 17:30:46 +02:00
Rūdolfs Ošiņš 75ebece30d Keep merge and review rows out of author runs 2026-08-14 17:30:46 +02:00
Rūdolfs Ošiņš a7c35340ec Allow deleting discussion comments 2026-08-14 17:30:46 +02:00
Rūdolfs Ošiņš 1ca4f76575 Trim the diff payload to a manifest
The tree-sitter highlighter goes with it: the hunk types name its
`Paint` spans and it implements `ToPretty` for them, so neither side
can be removed on its own.
2026-08-14 17:30:46 +02:00
Rūdolfs Ošiņš 42a141bd8b Render patch changes with Pierre 2026-08-14 17:30:46 +02:00
Rūdolfs Ošiņš bdd5b49b8d Match the Latest badge to the other badges 2026-08-14 17:30:46 +02:00
Daniel Norman ab514fe0d4 Add buildkite ci pipelines
The pipelines are supposed to be a drop-in replacement for the current
github actions pipelines.

The github workflows have been restructured into 4 pipelines to take
advantage of the buildkite caching mechanism.
2026-08-12 10:29:58 +02:00
Rūdolfs Ošiņš e20a1493cc Make OG cards work on Mastodon 2026-08-11 10:50:42 +02:00
Rūdolfs Ošiņš 7a5fa363be Remove unused patch read commands and diff helper
`revision_by_patch_and_id` and `review_by_patch_and_revision_and_id`
were registered as Tauri commands but never invoked: the patch view
resolves a revision or review from the revisions it already holds. Drop
the commands, their registrations and the `revision_by_id` / `review_by_id`
port methods, which had no other callers.

`fileDiffName` in `diffText` has had no callers since it was added.
2026-08-10 12:54:39 +02:00
Brandon Oxendine d19d1f21f1 Add patch deletion 2026-08-10 12:54:39 +02:00
Brandon Oxendine 62e150c29a Rebuild the patch page, review UI, and activity timeline 2026-08-10 12:54:39 +02:00
Brandon Oxendine 030b5fe1f1 Show absolute timestamps on hover 2026-08-10 08:35:49 +02:00
Brandon OxendineandRūdolfs Ošiņš 20f5aa1f1e Add dismissible hints
Co-authored-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2026-08-10 08:35:44 +02:00
Brandon Oxendine a03c413343 Add an author hover card 2026-08-10 08:35:41 +02:00
Rūdolfs Ošiņš 427cece985 Release 0.27.0 releases/0.27.0 2026-07-29 16:39:45 +02:00
Rūdolfs Ošiņš 048f4a831b Load the peer selector after render
Listing remotes verifies signed refs for every peer and took seconds
on large repositories, blocking navigation.

Resolve revisions from the canonical refs already on the repo object,
fetching a single remote when the route names a peer, and load the
full listing after render. Tags living only on a remote no longer
resolve as bare revisions.
2026-07-29 16:21:23 +02:00
Rūdolfs Ošiņš 3e500f8231 Dedupe in-flight requests in cached()
The cache only stored resolved values, so callers asking for the same
key while a request was still in flight each issued their own. The
peer selector makes this easy to hit: Source and History render their
own Header, so switching tabs while the remote listing loads fires a
second copy of a request that takes seconds.

Cache the promise instead, evicting it on rejection so failures still
retry.
2026-07-29 16:21:23 +02:00
Rūdolfs Ošiņš 16807eeeff Start local httpd in release mode
An unoptimised build is slow enough on large repositories to get in
the way of local development.
2026-07-29 16:21:23 +02:00
Rūdolfs Ošiņš 256b060770 Resolve repo aliases in JSON and raw API 2026-07-29 14:05:06 +02:00
Rūdolfs Ošiņš 8d8339165c Show git-clone alias in clone button 2026-07-29 13:10:05 +02:00
Rūdolfs Ošiņš aaffb991ac Use the diff-stats endpoint for patch badges
So the badges stop fetching the full diff just for insertions and
deletions; the patch view did it on every load. Falls back to the
full diff when the backend doesn't serve the new endpoint.
2026-07-29 09:36:31 +02:00