commit 45083822abc3b398298461fab6cdc1de5719834d
parent 3679220c64e03aaebdd5c2e4d7c23334ae329ea4
Author: Joris Hartog <jorishartog@hotmail.com>
Date: Fri, 14 Aug 2026 00:40:36 +0200
Refine downloads page layout
Diffstat:
3 files changed, 36 insertions(+), 63 deletions(-)
diff --git a/www/assets/iuna-downloads.js b/www/assets/iuna-downloads.js
@@ -32,14 +32,6 @@
description: "Desktop installer for Windows.",
file: "iuna-" + tag + "-windows-x86_64-desktop-setup.exe",
button: "Download setup.exe"
- },
- {
- label: "Checksums",
- title: "SHA256SUMS",
- description: "SHA-256 checksums for available files.",
- file: "SHA256SUMS",
- button: "Download checksums",
- hideCard: true
}
];
@@ -55,24 +47,6 @@
});
}
- function formatBytes(value) {
- if (!Number.isFinite(value) || value <= 0) {
- return "unknown";
- }
-
- var units = ["B", "KB", "MB", "GB"];
- var size = value;
- var unit = 0;
- while (size >= 1024 && unit < units.length - 1) {
- size /= 1024;
- unit += 1;
- }
-
- return new Intl.NumberFormat(undefined, {
- maximumFractionDigits: size >= 10 || unit === 0 ? 0 : 1
- }).format(size) + " " + units[unit];
- }
-
function checkArtifact(artifact) {
return fetch(base + artifact.file, { method: "HEAD", cache: "no-store" })
.then(function (response) {
@@ -95,16 +69,12 @@
return;
}
- var cards = files.filter(function (file) {
- return !file.hideCard;
- });
-
- if (cards.length === 0) {
+ if (files.length === 0) {
container.innerHTML = '<article class="card"><span class="tag pending">Pending</span><h2>No artifacts yet</h2><p class="muted">Release files have not been uploaded for this version.</p></article>';
return;
}
- container.innerHTML = cards.map(function (file) {
+ container.innerHTML = files.map(function (file) {
return [
'<article class="card">',
'<span class="tag">' + escapeHtml(file.label) + '</span>',
@@ -116,22 +86,6 @@
}).join("");
}
- function renderFiles(files) {
- var body = document.querySelector("[data-download-files]");
- if (!body) {
- return;
- }
-
- if (files.length === 0) {
- body.innerHTML = '<tr><td colspan="2" class="muted">No files found.</td></tr>';
- return;
- }
-
- body.innerHTML = files.map(function (file) {
- return '<tr><td><a href="' + escapeHtml(base + file.file) + '">' + escapeHtml(file.file) + '</a></td><td>' + escapeHtml(formatBytes(file.size)) + '</td></tr>';
- }).join("");
- }
-
function hydrateStaticText() {
var versionNodes = document.querySelectorAll("[data-download-version]");
var linuxFile = "iuna-" + tag + "-linux-x86_64.tar.gz";
@@ -149,6 +103,5 @@
Promise.all(artifacts.map(checkArtifact)).then(function (results) {
var files = results.filter(Boolean);
renderCards(files);
- renderFiles(files);
});
}());
diff --git a/www/assets/static-listing.css b/www/assets/static-listing.css
@@ -268,6 +268,11 @@ body > h3 {
margin: 18px 0 28px;
}
+.download-grid {
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+ margin-bottom: 10px;
+}
+
.card {
min-width: 0;
border: 1px solid var(--line);
@@ -320,6 +325,23 @@ body > h3 {
.muted { color: var(--muted); }
+.checksum-link {
+ margin: 0 0 28px;
+ font-size: 13px;
+}
+
+.source-build {
+ margin-top: 28px;
+}
+
+.source-build h2 {
+ margin-bottom: 8px;
+}
+
+.source-build p {
+ margin-top: 0;
+}
+
#content, #files, #branches, #tags {
border: 1px solid var(--line);
border-radius: 8px;
@@ -338,5 +360,10 @@ hr {
nav { display: none; }
h1 { font-size: 34px; }
.grid { grid-template-columns: 1fr; }
+ .download-grid { grid-template-columns: 1fr; }
table { display: block; overflow-x: auto; }
}
+
+@media (min-width: 781px) and (max-width: 1020px) {
+ .download-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
+}
diff --git a/www/downloads.html b/www/downloads.html
@@ -34,7 +34,7 @@
<p>Release artifacts for iuna <span data-download-version>${IUNA_VERSION}</span>.</p>
</section>
- <div class="grid" data-download-cards>
+ <div class="grid download-grid" data-download-cards>
<article class="card">
<span class="tag pending">Checking</span>
<h2>Downloads</h2>
@@ -42,22 +42,15 @@
</article>
</div>
- <h2>Files</h2>
- <table>
- <thead>
- <tr>
- <th>File</th>
- <th>Size</th>
- </tr>
- </thead>
- <tbody data-download-files>
- <tr><td colspan="2" class="muted">Checking files.</td></tr>
- </tbody>
- </table>
+ <p class="checksum-link"><a href="/downloads/SHA256SUMS">SHA256 checksums</a></p>
- <pre><code>git clone https://getiuna.org/git/iuna.git
+ <section class="source-build">
+ <h2>Build from source</h2>
+ <p class="muted">Clone the repository and run a local release build.</p>
+ <pre><code>git clone https://getiuna.org/git/iuna.git
cd iuna
cargo run --release</code></pre>
+ </section>
</main>
<script>
window.IUNA_DOWNLOADS_VERSION = "${IUNA_VERSION}";