Commit Graph
2447 Commits
Author SHA1 Message Date
Rūdolfs Ošiņš 18641de76a httpd: Speed up opening files in large repositories
surf's blob() walks the whole history to find the commit that last
touched a file, taking seconds to minutes on large repositories.

Read the blob directly and resolve its last commit with
`git rev-list -1`, which uses the commit-graph, falling back to surf.
2026-07-29 09:36:31 +02:00
Rūdolfs Ošiņš 265ee59039 httpd: Raise open-file limit at startup
Resolving a repo's signed refs opens a descriptor per packfile, and
radicle storage can hold thousands, so the default limit is exhausted
and reads fail with spurious "missing object" errors.
2026-07-29 09:36:31 +02:00
Rūdolfs Ošiņš 8b30bc75d3 Upgrade npm packages with security advisories 2026-07-28 15:40:03 +02:00
Rūdolfs Ošiņš 4da6682a95 Suppress RUSTSEC-2023-0071 warning
We follow heartwood's lead on this.
2026-07-28 09:57:06 +02:00
Rūdolfs Ošiņš 57172e22b1 Upgrade cargo dependencies with cooldown 2026-07-28 09:55:09 +02:00
Rūdolfs Ošiņš cf7763d972 Bump all radicle crates to latest versions 2026-07-28 09:52:54 +02:00
Rūdolfs Ošiņš c1bda5f9e5 Bump Rust toolchain to 1.97.1 2026-07-28 09:22:15 +02:00
Rūdolfs Ošiņš c20bb5534d Fix prettier issue 2026-07-28 08:45:42 +02:00
Rūdolfs Ošiņš 9b1e1d20e1 Respect RUST_LOG in default httpd logger
Wire up an EnvFilter that reads RUST_LOG, defaulting
to "info", and enable the env-filter feature unconditionally.
2026-07-28 08:42:22 +02:00
Daniel Norman 19ab609aa3 Refine CLAUDE.md 2026-07-27 16:20:13 +02:00
Rūdolfs Ošiņš 77fd1383de Improve basic principles wording 2026-07-26 08:38:19 +02:00
Fintan Halpenny 53730d4cb3 flake.nix: Update to 26.05
Also remove radicle-node from the devShell output.
2026-07-23 10:05:39 +01:00
Rūdolfs Ošiņš 8e4349184a Upgrade npm dependencies honoring a 7 day cooldown 2026-07-22 14:43:52 +02:00
Brandon Oxendine 2afde78941 Stagger section entrance on marketing pages 2026-07-21 18:01:28 +02:00
Brandon Oxendine fa1af21819 Clean up marketing copy
Copy:

- Sentence case for headlines, guide titles, and doc headings (proper
  nouns kept capitalized).
- Removed em dashes from the home page.
- Tightened the "Programmable repos" line, clarified the explore CTA
  ("Explore the network"), rewrote the Claude skill card, simplified the
  Install headline, and fixed the Garden nav description to describe
  what Radicle Garden actually is (a hosted, always-on node).

Layout:

- Aligned the Garden promo on the Learn and landing pages (same copy and
  dimensions).
- Balanced the page-header and hero headlines so they don't leave a
  hanging word or widow.
- Line-break the Garden promo copy on desktop only.
- Animate the arrow on marketing buttons on hover, and drop the white
  button's opacity hover.
2026-07-21 17:58:59 +02:00
Daniel Norman 45c5787d68 Mention radicle-artifact in FAQ 2026-07-21 17:53:18 +02:00
Brandon Oxendine 1abb50f5d4 Redesign the How it works page
Rework the /principles page from a vertical slide presentation into a
 two-column layout.
2026-07-21 17:47:16 +02:00
Brandon Oxendine b7806bd934 Animate sidebar sub-nav unfurl
Add sidebar sub-nav expand/collapse unfurl, now driven by the CSS View
Transitions API instead of JS tweening. Each nav section is a
view-transition group that clips into a top-to-bottom reveal as it opens
or closes, with a masked gradient soft edge.

A small JS flag (`sidebar-unfurling` on the document element) gates the
gradient to actual open/close, since CSS can't tell a within-section
navigation from a section toggle.
2026-07-21 17:05:44 +02:00
Daniel Norman 524ff5dfa2 Exclude job COBs without runs from job list
- Filter out jobs that have no runs in `jobs_by_commit` so empty
  job COBs are not served to the frontend
- Add a unit test covering the filter via a stubbed `FindJobs`
2026-07-21 16:38:25 +02:00
Rūdolfs Ošiņš 3c2935704f Upgrade npm dependencies
This also upgrades dompurify to the latest version, outside our cooldown
window, for a security fix (verified safe with extra security checks).

Newer dompurify versions expose a bug where happy-dom renders one of our
custom elements incorrectly in tests, unlike real browsers. Switch the unit
test environment from happy-dom to jsdom to fix the failing tests.
2026-07-16 11:34:41 +02:00
Rūdolfs Ošiņš 447d8887a3 Bump httpd release version against which e2e tests run 2026-07-15 17:13:32 +02:00
Rūdolfs Ošiņš cb4ac69c29 Release 0.26.0 releases/0.26.0 2026-07-15 16:27:45 +02:00
Rūdolfs Ošiņš 221eb9b890 Serve landing homepage on the radicle.network deployment
The canonical radicle.network deployment serves the marketing landing
page at `/`, while self-hosted deployments keep the node view. Opt in
at build time without changing the default.
2026-07-15 15:42:22 +02:00
Rūdolfs Ošiņš 62b9c21f57 Release radicle-httpd and radicle-search together
radicle-search now ships in the same release as radicle-httpd: one
tag, one changelog, one reproducible build, with per-binary artifacts
in sibling folders on files.radicle.dev.

meilisearch-sdk: use the pure-Rust JWT backend (jwt_rust_crypto) instead
of jwt_aws_lc_rs, dropping aws-lc-sys, which fails to cross-compile to
the Apple targets under cargo-zigbuild.
2026-07-15 15:42:22 +02:00
Rūdolfs Ošiņš f5675e6268 Rename [iris|rosa].radicle.xyz -> [iris|rosa].radicle.network 2026-07-15 15:42:22 +02:00
Georgios Jason Efstathiou c01e22ac87 Add e2e and unit tests for explore, search, and marketing 2026-07-15 15:42:22 +02:00
025e7254f9 Add explore homepage and Radicle marketing site
Co-authored-by: Julien Donck <donckjulien@gmail.com>
Co-authored-by: Brandon Oxendine <brandon.oxendine@gmail.com>
2026-07-15 15:41:35 +02:00
Georgios Jason Efstathiou b32ae47abc http-client: Support search, info, and repo sort params 2026-07-13 10:53:17 +02:00
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