Skip to content

Merge from upstream #39

Open
yumin-chen wants to merge 165 commits into
Chen-Software:mainfrom
radicle-dev:master
Open

Merge from upstream #39
yumin-chen wants to merge 165 commits into
Chen-Software:mainfrom
radicle-dev:master

Conversation

@yumin-chen

Copy link
Copy Markdown

No description provided.

sebastinez and others added 30 commits April 23, 2025 11:00
 1. When `git archive` errors, do not require an exit code, but just use
    the `ExitStatus` we already have. This requires less unwrapping.
    Also, the previous default of 0 was misleading, since 0 is returned
    upon successful termination.
 2. Use "refname" instead of "refspec" as these are different concepts.
    Refer to <https://git-scm.com/docs/git-check-ref-format> and in
    particular
    <https://git-scm.com/docs/git-check-ref-format#Documentation/git-check-ref-format.txt---refspec-pattern>.
 3. Only allow appending ".tar.gz" to commit IDs, not to refnames,
    because refnames may contain the suffix ".tar.gz". It might look
    weird, but it is not forbidden to do `git branch foo.tar.gz`.
 4. `char::is_ascii` does not help sanitize refnames to file names. In
    particular we have `'/'.is_ascii() == true`. Replace forward slashes
    with two underscores.
To allow some very basic hyperlinking in commit descriptions we can
replace fully specified urls with a valid scheme into
`radicle-external-link` components.
Based on the work done in commit
`a73c5490b160435a0ef5408b54185c9f698cb73f` there are a few places that
make the app not load in case dom storage aka localStorage is disabled.
The `-c` argument (and its corresponding value) must come *before* the
first subcommand to be effective. This error was introduced in commit
5f22e1b.
Instead of hardcoding the version of the Rust alpine file, introduce an
`ARG` in
the `Dockerfile`. In `build/build`, we determine the version by
inspecting
`rust-toolchain.toml`, and pass this value in. This ensures that the
binaries
are built using the same toolchain that we develop with.

Co-authored-by: Fintan Halpenny <fintan.halpenny@gmail.com>
Don't run prettier on a rust crate
brandonhaslegs and others added 30 commits May 6, 2026 12:47
Replace global setConfig with an exported sanitizeConfig passed
inline. The global config leaked into mermaid's internal
strict-mode sanitization, stripping valid SVG diagrams.
'loose' allowed HTML and click directives in diagram labels,
bypassing the DOMPurify pass on the surrounding markdown.
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.
Hoist the dynamic import and initialize() into a
module-scoped promise. Previous code re-ran initialize()
on every afterUpdate that had a mermaid block.
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.
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
```
Bump radicle-surf to 0.27.1
Bump radicle-term to 0.18.0
Bump radicle-crypto to 0.17.0
These crates are interlocked: radicle-job 0.6.0 requires radicle
0.24.x, so they must be bumped together.
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.
This way we can still navigate to the single commit view.
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.
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>
Add quick explainer for odd bash 3.2 workaround in docker harness.
`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.
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>
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.