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.
To allow some very basic hyperlinking in commit descriptions we can
replace fully specified urls with a valid scheme into
`radicle-external-link` components.
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.
Instead of panicking when trying to handle non utf8 lines we should
return `null` as line output.
This way we can on the frontend detect if a file has any lines the api
wasn't able to parse and fallback to show a file as a `Binary File`
We are returning `assignees` in patches as `Author` since March 2024, so
we should also parse patches with the correct zod schema.
This shouldn't break any up to date `radicle-httpd`
Changes the display of embeds from being markdown images to markdown
links.
Mimics the way embeds work on the desktop app and allows other embeds to
work too like pdfs, videos, etc.
Instead of relying on a `apiVersion` config variable that has to be
changed and semver respected we use a deployment id that is new on each
deployment to do cache busting
In case of a `ResponseParseError` instead of comparing the versions of
httpd and the web client strictly, we should make sure to check if httpd
fulfills the web clients version requirement (to be the same major
version) and else fallback to a more verbose error about the different
versions.
We don't really need the `clipboard` prop.
By switching between stats in patches and issue listings the clipboard
props aren't been recomputed.
Wrote a test that should make sure this doesn't break in the future.
Previously assignees were displayed using a chip, which while it looked
nice had the following issues:
- It only showed the node ID rather than the alias (and actually the
node ID was cut off)
- It wasn't clickable to go to the user's profile
- It was not a consistent experience with the rest of the users
displayed around the application (e.g. in reviews, uploader, branches
view).
Turns out "content-type: text; charset=utf-8" wasn't valid, it had to be
"content-type: text/plain; charset=utf-8" for browsers to recognise it
properly.