Radish alpha
r
Radicle website including documentation and guides
Radicle
Git (anonymous pull)
Log in to clone via SSH
perf: Move Scripts to Head and Defer
Lorenz Leutgeb committed 21 days ago
commit cd875ccdd0653aa6d9fde7ec7e7307390bb84263
parent 34b92095093d355efe83ced275dcefe300607990
8 files changed +94 -80
modified _includes/latest-release.html
@@ -21,24 +21,7 @@
  </span>
</blockquote>

+
<script defer src="{{ '/assets/js/latest-release.js' | relative_url }}"></script>
<script>
-
  const release = document.getElementById('release');
-

-
  fetch("https://files.radicle.dev/releases/latest/radicle.json")
-
    .then(res => res.json())
-
    .then(data => {
-
      if (data.timestamp === "{{ site.data.releases.radicle.timestamp }}") {
-
        console.info("Release data is up to date.")
-
        return;
-
      }
-

-
      const version = data.version;
-
      const commit = data.commit;
-
      const release = document.getElementById("release");
-
      const releaseInfo = document.getElementById("release-info");
-

-
      releaseInfo.innerText = `Radicle ${version}`;
-
      document.getElementById("release-commit").innerText = commit;
-
      document.getElementById("release-timestamp").innerText = `(${new Date(data.timestamp * 1000).toISOString()})`;
-
    });
-
</script>
+
  document.addEventListener('DOMContentLoaded', () => updateLatestRelease("{{ site.data.releases.radicle.timestamp }}"));
+
</script>

\ No newline at end of file
modified _layouts/index.html
@@ -2,13 +2,17 @@
<html>
<head>
{% include meta.html %}
-
<link rel="stylesheet" type="text/css" href="{{ "/assets/css/page.css" | relative_url }}"/>
+
<link rel="stylesheet" type="text/css" href="{{ '/assets/css/page.css' | relative_url }}"/>
<meta rel="me" href="{{ '@radicle@toot.radicle.xyz' | fedi_to_https }}" /><!-- old account -->
<meta rel="me" href="{{ site.fedi | fedi_to_https }}" />
<link rel="alternate" type="application/rss+xml" title="RSS Feed for the Radicle Website" href="/feed.xml" />
{% for url in page.preconnect %}
<link rel="preconnect" href="{{ url }}" />
{% endfor %}
+
{% for script in page.scripts %}
+
<script defer src="{{ script | prepend: '/assets/js/' | append: '.js' | relative_url }}"></script>
+
{% endfor %}
+
<script defer src="{{ 'toggle-theme' | prepend: '/assets/js/' | append: '.js' | relative_url }}"></script>
</head>
<body>
  <img class="desktop" width="160" height="160" id="ribbon" src="/assets/images/ribbon.svg" usemap="#ribbon-map"/>
@@ -37,20 +41,5 @@
    {{ content }}
  </main>
  {% include fixed.html %}
-
  <script src="{{ "/assets/js/toggle-theme.js" | relative_url }}"></script>
-
  <script>
-
    const copyButton = document.getElementById("install");
-
    const copyResult = document.getElementById("install-copy");
-
    const textToCopy = document.getElementById("install-command").innerText;
-

-
    copyButton.addEventListener("click", async function () {
-
      try {
-
        await navigator.clipboard.writeText(textToCopy);
-
        copyResult.innerText = "copied";
-
      } catch (err) {
-
        console.error("Failed to copy text: ", err);
-
      }
-
    });
-
  </script>
</body>
</html>
modified _layouts/page.html
@@ -6,6 +6,10 @@
  {% for url in page.preconnect %}
  <link rel="preconnect" href="{{ url }}" />
  {% endfor %}
+
  {% for script in page.scripts %}
+
  <script defer src="{{ script | prepend: '/assets/js/' | append: '.js' | relative_url }}"></script>
+
  {% endfor %}
+
  <script defer src="{{ 'toggle-theme' | prepend: '/assets/js/' | append: '.js' | relative_url }}"></script>
</head>
<body class="{{ page.variant }}">
  {% include header.html %}
@@ -13,6 +17,5 @@
    {{ content }}
  </main>
  {% include fixed.html %}
-
  <script src="{{ "/assets/js/toggle-theme.js" | relative_url }}"></script>
</body>
</html>
modified _pages/download.md
@@ -6,6 +6,8 @@ binary: ["unknown-linux-musl", "apple-darwin"]
arch: ["x86_64", "aarch64"]
preconnect:
 - https://files.radicle.dev
+
scripts:
+
 - download
---
This is Radicle's <strong class="highlight">download</strong> page,
which references various ways of downloading Radicle to your machine.
@@ -170,46 +172,9 @@ This will place binaries in `~/.radicle/bin` and manuals in `~/.radicle/man`,
and overwrite any existing Radicle binaries.

<script>
-
  {% for release in site.releases %}
-
  getRelease("{{ release.name }}", "{{ release.base }}", "{{ release.id }}", "{{ site.data.releases[release.id].timestamp }}");
-
  {% endfor %}
-

-
  function getRelease(name, urlBase, releaseId, knownTimestamp) {
-
      const releases = document.getElementById(`${releaseId}-releases`);
-

-
      fetch(`${urlBase}/${releaseId}.json`)
-
        .then(res => res.json())
-
        .then(data => {
-
          if (data.timestamp === knownTimestamp) {
-
            console.info(`Release data for ${name} is up to date.`)
-
            return;
-
          }
-

-
          const version = data.version;
-
          const commit = data.commit;
-
          const release = document.getElementById(`${releaseId}-release-header`);
-
          const releaseName = document.getElementById(`${releaseId}-release-name`);
-
          const releaseInfo = document.getElementById(`${releaseId}-release-info`);
-

-
          document.querySelectorAll(`#${releaseId}-releases [data-release-binary]`).forEach((row) => {
-
            const arch = row.dataset.releaseArch;
-
            const binary = row.dataset.releaseBinary;
-
            const archive = `${releaseId}-${version}-${arch}-${binary}.tar.xz`;
-
            const url = `${urlBase}/${archive}`;
-

-
            row.querySelector(".release-arch").innerText = arch;
-
            row.querySelector(".release-url").innerText = archive;
-
            row.querySelector(".release-sig").innerText = ".sig";
-
            row.querySelector(".release-checksum").innerText = ".sha256";
-

-
            row.querySelector(".release-url").href = url;
-
            row.querySelector(".release-sig").href = `${url}.sig`;
-
            row.querySelector(".release-checksum").href = `${url}.sha256`;
-
          });
-

-
          release.classList.remove("loading");
-
          releaseName.innerText = `${name} ${version}`;
-
          releaseInfo.innerHTML = `Built from commit <code>${commit}</code> on ${new Date(data.timestamp * 1000).toISOString()}.`;
-
        });
-
    }
-
</script>
+
  document.addEventListener('DOMContentLoaded', () => {
+
    {% for release in site.releases %}
+
    getRelease("{{ release.name }}", "{{ release.base }}", "{{ release.id }}", "{{ site.data.releases[release.id].timestamp }}");
+
    {% endfor %}
+
  });
+
</script>

\ No newline at end of file
added assets/js/copy.js
@@ -0,0 +1,12 @@
+
const copyButton = document.getElementById("install");
+
const copyResult = document.getElementById("install-copy");
+
const textToCopy = document.getElementById("install-command").innerText;
+

+
copyButton.addEventListener("click", async function () {
+
  try {
+
    await navigator.clipboard.writeText(textToCopy);
+
    copyResult.innerText = "copied";
+
  } catch (err) {
+
    console.error("Failed to copy text: ", err);
+
  }
+
});

\ No newline at end of file
added assets/js/download.js
@@ -0,0 +1,38 @@
+
function getRelease(name, urlBase, releaseId, knownTimestamp) {
+
  const releases = document.getElementById(`${releaseId}-releases`);
+

+
  fetch(`${urlBase}/${releaseId}.json`)
+
    .then(res => res.json())
+
    .then(data => {
+
      if (data.timestamp === knownTimestamp) {
+
        console.info(`Release data for ${name} is up to date.`)
+
        return;
+
      }
+

+
      const version = data.version;
+
      const commit = data.commit;
+
      const release = document.getElementById(`${releaseId}-release-header`);
+
      const releaseName = document.getElementById(`${releaseId}-release-name`);
+
      const releaseInfo = document.getElementById(`${releaseId}-release-info`);
+

+
      document.querySelectorAll(`#${releaseId}-releases [data-release-binary]`).forEach((row) => {
+
        const arch = row.dataset.releaseArch;
+
        const binary = row.dataset.releaseBinary;
+
        const archive = `${releaseId}-${version}-${arch}-${binary}.tar.xz`;
+
        const url = `${urlBase}/${archive}`;
+

+
        row.querySelector(".release-arch").innerText = arch;
+
        row.querySelector(".release-url").innerText = archive;
+
        row.querySelector(".release-sig").innerText = ".sig";
+
        row.querySelector(".release-checksum").innerText = ".sha256";
+

+
        row.querySelector(".release-url").href = url;
+
        row.querySelector(".release-sig").href = `${url}.sig`;
+
        row.querySelector(".release-checksum").href = `${url}.sha256`;
+
      });
+

+
      release.classList.remove("loading");
+
      releaseName.innerText = `${name} ${version}`;
+
      releaseInfo.innerHTML = `Built from commit <code>${commit}</code> on ${new Date(data.timestamp * 1000).toISOString()}.`;
+
    });
+
}

\ No newline at end of file
added assets/js/latest-release.js
@@ -0,0 +1,21 @@
+
async function updateLatestRelease(knownTimestamp) {
+
  const release = document.getElementById('release');
+

+
  fetch("https://files.radicle.dev/releases/latest/radicle.json")
+
    .then(res => res.json())
+
    .then(data => {
+
      if (data.timestamp === knownTimestamp) {
+
        console.info("Release data is up to date.")
+
        return;
+
      }
+

+
      const version = data.version;
+
      const commit = data.commit;
+
      const release = document.getElementById("release");
+
      const releaseInfo = document.getElementById("release-info");
+

+
      releaseInfo.innerText = `Radicle ${version}`;
+
      document.getElementById("release-commit").innerText = commit;
+
      document.getElementById("release-timestamp").innerText = `(${new Date(data.timestamp * 1000).toISOString()})`;
+
    });
+
}

\ No newline at end of file
modified index.md
@@ -3,6 +3,9 @@ title: "Radicle: the sovereign forge"
layout: index
preconnect:
 - https://files.radicle.dev
+
scripts:
+
 - copy
+
 - latest-release
---

# Synopsis