ISO 1.29.0 source + an English download page (R-559 slice 4, source only)
gates / gates (push) Successful in 23s
gates / gates (push) Successful in 23s
THE IMAGE IS NOT BUILT AND NOT PUBLISHED BY THIS COMMIT. Publishing to iso.felhom.eu is public and irreversible and its runbook requires a proof install on BOTH menu entries plus the 16-criterion gate run against the exact uploaded bytes. That is the operator's step. The download pages therefore still name 1.28.0 - the image that is actually published - and a new site gate refuses the two pages naming different files or hashes. Three texts a person meets before any dashboard become bilingual: Hungarian block first, byte for byte as before, then English, inside the same frame. The pairing banner, the bound banner, /etc/issue (and the postinst's byte-coupled copy), plus an English half on the GRUB entries. The Hungarian is a GOLDEN, not a grep: test/golden/*.hu.txt were captured from the script at183727db9cbefore one English line existed, and the harness asserts each banner's first N lines are exactly the golden. Red-proofed by one changed byte, by an "a" planted in the English block, and by an over-wide line. R-586, found on the way in: running the harness UNCHANGED at the base commit failed two R-496 checks. The script paints with `>`, which truncates a FILE but is a no-op on a console device; ISO 1.28.0's new bound banner (c033b3b) paints straight after the pairing one and wiped it before the check read it.c033b3bdid not touch the harness, and nobody saw it because the harness is in no gate and no CI run. Fixed with a FIFO; production code untouched. The harness being ungated is still open. The release gate's G16 required every Felhom string to be Hungarian and would have STOPPED this publication. Operator ruling 1b of 2026-09-17 supersedes that scope, so G16 is rewritten rather than waived: Hungarian FIRST, pinned by the golden, each secret named once per language. letoltes.html changes by four lines only. The English link is not in the nav - the nav is a shared block site_gates.py pins across every page, and the gate convicted the first attempt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
@@ -1,3 +1,23 @@
|
||||
## 2026-09-18 — an English download page (R-559)
|
||||
|
||||
- **`website/en/download.html`** — the English twin of `letoltes.html`. Same installer, same checksum,
|
||||
same structure; `<html lang="en">`, its own English nav and footer, `hreflang` alternates both ways
|
||||
(`x-default` points at the Hungarian), and an entry in `sitemap.xml`.
|
||||
- **`letoltes.html` changed by FOUR lines and nothing else**: three `hreflang` alternates and one
|
||||
`English` link in the page header. The link is deliberately **not** in the nav — the nav is a shared
|
||||
block that `site_gates.py` pins across every page, and the gate convicted the first attempt, which
|
||||
is how the link found its right home.
|
||||
- **The rest of the marketing site stays Hungarian** (operator ruling 1b, 2026-09-17).
|
||||
- **New gate 12: the two download pages must name the SAME installer file and the SAME checksum.**
|
||||
Publishing an ISO now means editing a filename, a size and a 64-character hash on two pages; update
|
||||
one and forget the other and an English reader checks a new image against an old hash, fails, and is
|
||||
told by the page itself not to use the file. Red-proofed both ways.
|
||||
- `en/download.html` is registered in `PAGES` and in the new `EN_PAGES` set, which exempts it from the
|
||||
Hungarian nav/footer comparison and from nothing else.
|
||||
|
||||
**Published:** the site's normal path — push to `main`, git-sync picks it up in ~1–2 min. No
|
||||
`site.css` change, so no cache-bust bump was needed.
|
||||
|
||||
# website/ changelog (newest on top)
|
||||
|
||||
## 2026-09-15 — New page: /letoltes (the installer download)
|
||||
|
||||
@@ -0,0 +1,158 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Download — the Felhom installer | Felhom.eu</title>
|
||||
<meta name="description" content="The Felhom home server installer: download, checksum, and what to check before you install.">
|
||||
<meta name="robots" content="noindex, follow">
|
||||
<link rel="canonical" href="https://felhom.eu/en/download">
|
||||
<link rel="alternate" hreflang="hu" href="https://felhom.eu/letoltes">
|
||||
<link rel="alternate" hreflang="en" href="https://felhom.eu/en/download">
|
||||
<link rel="alternate" hreflang="x-default" href="https://felhom.eu/letoltes">
|
||||
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://felhom.eu/en/download">
|
||||
<meta property="og:title" content="Download the Felhom installer">
|
||||
<meta property="og:description" content="Download, checksum, and what to check before you install.">
|
||||
<meta property="og:image" content="https://felhom.eu/assets/og-image.png">
|
||||
<meta property="og:locale" content="en_GB">
|
||||
<meta property="og:site_name" content="Felhom.eu">
|
||||
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Download the Felhom installer">
|
||||
<meta name="twitter:description" content="Download, checksum, and what to check before you install.">
|
||||
<meta name="twitter:image" content="https://felhom.eu/assets/og-image.png">
|
||||
<!-- shared assets: bump ?v= together on any site.css/icons.svg change -->
|
||||
<link rel="stylesheet" href="/assets/site.css?v=2">
|
||||
<link rel="icon" type="image/png" href="/assets/logo_favicon_2.svg">
|
||||
<script defer src="https://stats.felhom.eu/script.js" data-website-id="d419db57-5e1c-48df-bdb3-c29f25fb1661"></script>
|
||||
</head>
|
||||
<body class="page-letoltes">
|
||||
<nav>
|
||||
<div class="container">
|
||||
<a href="/" class="logo">
|
||||
<img src="/assets/logo.png" alt="Felhom.eu logo">
|
||||
<span class="logo-text">felhom.eu</span>
|
||||
</a>
|
||||
<ul class="nav-links">
|
||||
</ul>
|
||||
<button class="hamburger" id="hamburger" aria-label="Open menu" aria-expanded="false">
|
||||
<span class="hamburger-box">
|
||||
<span class="hamburger-line"></span>
|
||||
<span class="hamburger-line"></span>
|
||||
<span class="hamburger-line"></span>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="mobile-overlay" id="mobileOverlay"></div>
|
||||
|
||||
<main>
|
||||
<section class="page-header">
|
||||
<div class="container">
|
||||
<h1>The Felhom <span>installer</span></h1>
|
||||
<p>This page is for someone who has received an installation guide from their operator. The installer turns a whole machine into a Felhom server.</p>
|
||||
<p><a href="/letoltes" lang="hu" hreflang="hu">Magyar</a></p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="content-section">
|
||||
<div class="container">
|
||||
<div class="info-card">
|
||||
<h3><svg class="ico-lg" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-triangle-alert"/></svg> Before you download</h3>
|
||||
<p>Installing <strong>erases every piece of data</strong> on the disk you select. The installer never chooses for you: it lists the disks with their size and type, and overwrites the one you pick.</p>
|
||||
<p>Unplug the external drive you use for backups before you start. If you are not certain which disk is the right one, <strong>stop and call your operator</strong>.</p>
|
||||
<p>The guide from your operator describes every step, screen by screen. Do not start without it.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="content-section alt-bg">
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<h2>Download</h2>
|
||||
<p>Felhom installer 1.28.0 (based on Proxmox VE 9.2)</p>
|
||||
</div>
|
||||
<div class="info-card">
|
||||
<p><a href="https://iso.felhom.eu/felhom-installer-1.28.0-pve9.2-1.iso"><strong>felhom-installer-1.28.0-pve9.2-1.iso</strong></a> — 1.6 GB (1,705,322,496 bytes)</p>
|
||||
<p>Checksum (SHA-256):</p>
|
||||
<div class="highlight-box">
|
||||
<p><code>a4cd9b6ddcb55bae3700ab307084d2b699330cc20710688d5816318f04f6d635</code></p>
|
||||
</div>
|
||||
<p>The same checksum as a file: <a href="https://iso.felhom.eu/felhom-installer-1.28.0-pve9.2-1.iso.sha256">felhom-installer-1.28.0-pve9.2-1.iso.sha256</a></p>
|
||||
<p>To check it on Linux or macOS: <code>sha256sum felhom-installer-1.28.0-pve9.2-1.iso</code>. On Windows, in PowerShell: <code>Get-FileHash felhom-installer-1.28.0-pve9.2-1.iso</code>. The string it prints must match the one above. If it does not match, do not use the file — download it again.</p>
|
||||
<p>The downloaded file has to be written to a USB stick of at least 4 GB (with Balena Etcher or Rufus, for example). The guide covers that too.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="container">
|
||||
<p>© 2026 felhom.eu — Your own cloud, your own rules</p>
|
||||
</div>
|
||||
</footer>
|
||||
<script>
|
||||
(function() {
|
||||
var hamburger = document.getElementById('hamburger');
|
||||
var navLinks = document.querySelector('.nav-links');
|
||||
var overlay = document.getElementById('mobileOverlay');
|
||||
var body = document.body;
|
||||
|
||||
if (!hamburger || !navLinks || !overlay) {
|
||||
console.warn('[mobile-menu] Missing elements:', {
|
||||
hamburger: !!hamburger,
|
||||
navLinks: !!navLinks,
|
||||
overlay: !!overlay
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
function openMenu() {
|
||||
hamburger.classList.add('is-active');
|
||||
navLinks.classList.add('is-open');
|
||||
overlay.classList.add('is-visible');
|
||||
body.classList.add('menu-open');
|
||||
hamburger.setAttribute('aria-expanded', 'true');
|
||||
hamburger.setAttribute('aria-label', 'Close menu');
|
||||
}
|
||||
|
||||
function closeMenu() {
|
||||
hamburger.classList.remove('is-active');
|
||||
navLinks.classList.remove('is-open');
|
||||
overlay.classList.remove('is-visible');
|
||||
body.classList.remove('menu-open');
|
||||
hamburger.setAttribute('aria-expanded', 'false');
|
||||
hamburger.setAttribute('aria-label', 'Open menu');
|
||||
}
|
||||
|
||||
hamburger.addEventListener('click', function() {
|
||||
if (navLinks.classList.contains('is-open')) {
|
||||
closeMenu();
|
||||
} else {
|
||||
openMenu();
|
||||
}
|
||||
});
|
||||
|
||||
overlay.addEventListener('click', closeMenu);
|
||||
|
||||
navLinks.querySelectorAll('a').forEach(function(link) {
|
||||
link.addEventListener('click', closeMenu);
|
||||
});
|
||||
|
||||
document.addEventListener('keydown', function(e) {
|
||||
if (e.key === 'Escape' && navLinks.classList.contains('is-open')) {
|
||||
closeMenu();
|
||||
}
|
||||
});
|
||||
|
||||
window.addEventListener('resize', function() {
|
||||
if (window.innerWidth > 900 && navLinks.classList.contains('is-open')) {
|
||||
closeMenu();
|
||||
}
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -7,6 +7,9 @@
|
||||
<meta name="description" content="A Felhom otthoni szerver telepítője: letöltés, ellenőrző összeg, és mire figyelj a telepítés előtt.">
|
||||
<meta name="robots" content="noindex, follow">
|
||||
<link rel="canonical" href="https://felhom.eu/letoltes">
|
||||
<link rel="alternate" hreflang="hu" href="https://felhom.eu/letoltes">
|
||||
<link rel="alternate" hreflang="en" href="https://felhom.eu/en/download">
|
||||
<link rel="alternate" hreflang="x-default" href="https://felhom.eu/letoltes">
|
||||
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://felhom.eu/letoltes">
|
||||
@@ -56,6 +59,7 @@
|
||||
<div class="container">
|
||||
<h1>A Felhom <span>telepítő</span></h1>
|
||||
<p>Ez az oldal annak szól, aki az üzemeltetőtől telepítési útmutatót kapott. A telepítő egy teljes gépet alakít át Felhom szerverré.</p>
|
||||
<p><a href="/en/download" lang="en" hreflang="en">English</a></p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
@@ -35,4 +35,9 @@
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.3</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://felhom.eu/en/download</loc>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.3</priority>
|
||||
</url>
|
||||
</urlset>
|
||||
Reference in New Issue
Block a user