Commit Graph
2419 Commits
Author SHA1 Message Date
Georgios Jason Efstathiou b201ddd501 radicle-search: Add search backend and httpd endpoints 2026-07-13 10:53:17 +02:00
Rūdolfs Ošiņš 8e2148599e Probe archive download support on demand
The source and commit views hit the /raw archive endpoint with a
HEAD request on every page load to decide whether to show the
download UI. That endpoint runs `git archive` server-side.

Move detection to user interaction: the clone popover probes when
the Download tab is opened, and the commit view checks on click,
navigating on success or showing a message on failure.

Cache only successful results per URL so transient or moving-ref 404s
aren't latched for the session.
2026-06-11 13:38:49 +02:00
Lorenz LeutgebandRūdolfs Ošiņš 09cb50bbf1 httpd/raw: Stream the result of git archive
The result of `git archive` is written to memory and only then sent off
via the network.

Instead of buffering potentially large archives, stream the response
body.

Co-authored-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2026-06-11 13:07:03 +02:00
Lorenz Leutgeb 3c5e970bad httpd/raw: Do not archive for HEAD requests
`git archive` is executed for HEAD requests, even though the resulting
archive is never sent to the client.

Resolve this by taking the HTTP method as an argument an only producing
the archive if the request method is not HEAD.
2026-06-10 18:00:41 +02:00
Georgios Jason Efstathiou dded3703ee Annotate the test-e2e-docker bash 3.2 array guard
Add quick explainer for odd bash 3.2 workaround in docker harness.
2026-06-03 17:57:38 +02:00
Georgios Jason EfstathiouandClaude Opus 4.8 3414b6a5e2 Fix test-e2e-docker under bash 3.2 on macOS
The non-local path leaves EXTRA_ENV as an empty array, and expanding
"${EXTRA_ENV[@]}" under `set -u` errors with "unbound variable" on
bash 3.2 (the version shipped on macOS), aborting before the suite
runs. Guard the expansion with ${EXTRA_ENV[@]+...} so an empty array
expands to nothing instead.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 17:11:43 +02:00
Rūdolfs Ošiņš a3386040d5 Dedupe job runs by runId to fix duplicate keys
The same run can appear under multiple job COBs at a commit,
causing an each_key_duplicate crash. Keep one view per runId,
letting a terminal status override a stale "started" one.
2026-05-29 17:03:49 +02:00
Georgios Jason Efstathiou a304fa471b Run e2e tests in a Docker container 2026-05-29 13:35:13 +02:00
Rūdolfs Ošiņš 17cd7adcb8 Harden rendered markdown links 2026-05-28 16:16:41 +02:00
Rūdolfs Ošiņš 747d9b05f9 Restrict job log links to http(s) URLs 2026-05-28 16:16:41 +02:00
Rūdolfs Ošiņš 74b3c079ad Show a commit message placeholder when there is no message
This way we can still navigate to the single commit view.
2026-05-28 10:25:40 +02:00
Rūdolfs Ošiņš 676597a669 Add a .npmrc cooldown setting of 7 days 2026-05-22 09:34:41 +02:00
Rūdolfs Ošiņš d80658a9f0 Upgrade all npm dependencies with a 7 day cooldown 2026-05-22 09:34:15 +02:00
Rūdolfs Ošiņš 7fbbbd3224 Fix did wrapping in JobCob dropdown 2026-05-22 08:53:05 +02:00
Rūdolfs Ošiņš 18953e9b08 Redesign JobCob popover 2026-05-21 15:47:18 +02:00
Rūdolfs Ošiņš 900074b282 Center checkmark icon in viewBox 2026-05-21 12:57:51 +02:00
Rūdolfs Ošiņš 915d309e14 Tolerate null agent in /node response
Public seeds return `"agent": null` because their deployed httpd
binaries can't parse i2p/onion rows that newer nodes write to the
address table — `AddressStore::get` fails and the handler falls back
to `None`. Allow null in the zod schema and hide the user-agent row
in the UI when it's missing.

Workaround until heartwood ships `StoreExt::agent_of` (reads only
the `agent` column, no address hydration) and httpd adopts it.
2026-05-21 12:33:15 +02:00
Rūdolfs Ošiņš 7ae8d607fe httpd: Bump radicle to 0.24.0 and radicle-job to 0.6.0
These crates are interlocked: radicle-job 0.6.0 requires radicle
0.24.x, so they must be bumped together.
2026-05-18 18:04:52 +02:00
Rūdolfs Ošiņš 3afaa8469a httpd: Bump radicle-surf, radicle-term and radicle-crypto
Bump radicle-surf to 0.27.1
Bump radicle-term to 0.18.0
Bump radicle-crypto to 0.17.0
2026-05-18 17:51:18 +02:00
Rūdolfs Ošiņš fe42175e8c Update npm dependencies with a 5 day cooldown 2026-05-12 17:05:27 +02:00
Rūdolfs Ošiņš 09840c0aa8 Mask error stack in visual snapshots
This prevents flakes in the visual test suite due to stack frame naming
mismatches in the command copy code box.

E.g.
```diff
-{"stack":"Error: Response error\n at Dx.fet
+{"stack":"Error: Response error\n at wx.fet
```
2026-05-12 16:50:43 +02:00
Rūdolfs Ošiņš 9391cd072f Replace @radicle/gray-matter with js-yaml frontmatter parser 2026-05-07 23:04:55 +02:00
Rūdolfs Ošiņš 6fb702f886 Recover gracefully from mermaid render errors
When mermaid.render fails, suppress mermaid's "Syntax error"
overlay and show our own small warning above the original code
block so the source stays visible. Subsequent diagrams in the
same document still render.
2026-05-07 18:31:28 +02:00
Rūdolfs Ošiņš 9ebc5f6b3b Initialize mermaid only once
Hoist the dynamic import and initialize() into a
module-scoped promise. Previous code re-ran initialize()
on every afterUpdate that had a mermaid block.
2026-05-07 18:31:28 +02:00
Rūdolfs Ošiņš 0bcc2b4c2d Lazy-load mermaid
Switch to a dynamic import in afterUpdate and drop
manualChunks so Rolldown auto-splits the lazy chunk.
Eager bundle drops from 1.3 MB to 610 KB gzipped.
2026-05-07 18:31:28 +02:00
Rūdolfs Ošiņš 3b85f70f88 Force mermaid securityLevel to strict
'loose' allowed HTML and click directives in diagram labels,
bypassing the DOMPurify pass on the surrounding markdown.
2026-05-07 18:31:28 +02:00
Rūdolfs Ošiņš 9e268d9ac0 Scope DOMPurify config to call sites
Replace global setConfig with an exported sanitizeConfig passed
inline. The global config leaked into mermaid's internal
strict-mode sanitization, stripping valid SVG diagrams.
2026-05-07 18:31:28 +02:00
Delioos faadd2906b feat(markdown): mermaid diagram support 2026-05-07 18:31:28 +02:00
Defelo c39af0a8e2 httpd: implement request and response streaming in git handler 2026-05-06 15:09:49 +02:00
Defelo 0b89857f21 httpd: use RequestDecompressionLayer in git handler 2026-05-06 15:09:49 +02:00
Brandon Oxendine a4c6f04028 Link issue and patch breadcrumbs to their status filter 2026-05-06 12:47:25 +02:00
Rūdolfs Ošiņš 9e669eaf05 Decode percent-escapes in OG card route segments 2026-05-06 10:57:21 +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
Yumin Chen 20be88e5da Allow radicle-external-link components in commit descriptions
To allow some very basic hyperlinking in commit descriptions we can
replace fully specified urls with a valid scheme into
`radicle-external-link` components within patches and git history.
2026-05-05 16:45:14 +02:00
Rūdolfs Ošiņš 613e5e1810 Fix node/user avatar generated wrongly from hostname
It should always be generated from the Node Id.
2026-05-05 16:01:01 +02:00
Defelo 2e19c93a9c Don't show node avatar in user view 2026-05-01 15:46:01 +02:00
Rūdolfs Ošiņš dbe0ed7f77 Add a link to radicle.dev to the node sidebar footer 2026-04-29 15:55:18 +02:00
Rūdolfs Ošiņš 4da9321a1d Revert "Link header Radicle logo to radicle.dev landing page"
This reverts commit 9e9a799c28.
2026-04-29 15:55:06 +02:00
Rūdolfs Ošiņš 9e9a799c28 Link header Radicle logo to radicle.dev landing page 2026-04-29 15:14:20 +02:00
Rūdolfs Ošiņš f472fe892b Add "Sort by activity" toggle to UserReposView 2026-04-29 12:12:35 +02:00
Rūdolfs Ošiņš e64aee34ca Cancel in-flight activity fetches on navigation 2026-04-29 12:12:12 +02:00
Rūdolfs Ošiņš 4ddca81f16 Add "Sort by activity" toggle to repo list 2026-04-29 12:12:03 +02:00
Rūdolfs Ošiņš 4dce10bc66 Show shimmer placeholder while activity loads 2026-04-29 12:11:59 +02:00
Rūdolfs Ošiņš 49274ac88c Load repo activity progressively per card 2026-04-29 12:11:50 +02:00
Shawn WebbandLorenz Leutgeb ad8b0699b4 httpd: Generate a prefix for Git archive downloads
GitHub and GitLab will prefix archive payloads with the name of the repo
and the refspec. This patch naively applies a prefix in similar fashion.

The refspec might contain filesystem path separators, like a forward
slash (`/`). GitHub and GitLab replace that with a hyphen (`-`). This
patch applies that same replacement.

The file name that is suggested to browsers (via the HTTP header
`Content-Disposition`) is changed to match the prefix.

The additional archive formats `tar` and `zip` are now supported as
well.

Users that relied on the archive *not* carrying the prefix introduced
here, may pass the query `?prefix=false` to get the old behavior.
This does not affect the `Content-Disposition` header, though. Users
who relied on the downloaded file be named in a certain way after,
and also used the file name from `Content-Disposition` for the name,
cannot get back the old behavior, but must instead rename the file.

Co-authored-by: Lorenz Leutgeb <lorenz.leutgeb@radicle.dev>
2026-04-27 14:23:23 +02:00
Rūdolfs Ošiņš d0a012dcf9 Revert "Update favicon and app icons"
This reverts commit 2556786a9e.
2026-04-24 13:09:54 +02:00
Brandon Oxendine 2556786a9e Update favicon and app icons 2026-04-24 10:26:38 +02:00
Rūdolfs Ošiņš 5a3337de88 httpd: Release 0.25.0 releases/0.25.0 2026-04-23 16:04:29 +02:00
Rūdolfs Ošiņš fc648a6392 httpd: Rename endpoint /xyz.radworks.job/ -> /jobs/ 2026-04-23 15:57:54 +02:00
Rūdolfs Ošiņš 269c6e52ea Rename [iris,rosa].radicle.dev -> [iris,rosa].radicle.network 2026-04-23 11:16:56 +02:00