website: M3 goes live - the whole site switches to the controller's shell at once
gates / gates (push) Failing after 13m11s
gates / gates (push) Failing after 13m11s
Part D. Every public page now wears the controller's frame around the website's
own content. One commit, as asked: never half old, half new.
20 pages switched (12 Hungarian incl. the hidden prices page, 8 English)
website/preview/ deleted entirely - A, M1, M2 and M3 studies all gone
robots.txt: the Disallow: /preview/ line removed with them
site.css?v=22 / shell.css?v=22 on every page
PROVED before pushing, not after:
* HEAD TAGS: title, meta description, keywords, author, robots, canonical, every
hreflang, all seven Open Graph tags, all four Twitter tags and the JSON-LD
captured on all 19 pages before the switch and compared after. The ONLY
difference anywhere is the dash substitution inside the two FAQ pages'
FAQPage JSON-LD - verified by applying the same substitution to the "before"
copy and getting an exact match. Nothing else moved.
* VISIBLE TEXT: identical to the live pages word for word, legal texts identical
with no substitution permitted at all.
* No page is left noindex (the two download pages' noindex,follow is their own,
pre-existing and unchanged), no page mentions /preview/, every page has a
footer, no page overflows at 390px.
THE HEAD-TAG DIFF EARNED ITS PLACE. The home page was about to ship carrying
`noindex, nofollow` from the preview, and had lost meta keywords, meta author, all
seven Open Graph tags, all four Twitter tags and the LocalBusiness JSON-LD -
because its head was hand-built while every other page carried its live one over.
The diff caught it; nothing on the rendered page would have. The generator now
uses the live head for EVERY page including the home one.
szolgaltatasok-nonpublic.html was converted too. It is in no menu and was not in
the brief's list, but leaving one page on the old chrome would have left the site
half-switched - which is the one thing part D was not allowed to do.
scripts/site_gates.py: SHELL is now the real page set; MOCKUPS is empty; gate 3's
old nav/footer loop keeps working for any page added later WITHOUT the shell, and
skips the ones that have it.
This commit is contained in:
+101
-59
@@ -1,6 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<html lang="en" class="no-js">
|
||||
<head>
|
||||
<script>document.documentElement.className=document.documentElement.className.replace('no-js','js');</script>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Looking for testers — a home server, free during the test | Felhom.eu</title>
|
||||
@@ -37,44 +38,62 @@
|
||||
}
|
||||
</script>
|
||||
<!-- shared assets: bump ?v= together on any site.css/icons.svg change -->
|
||||
<link rel="stylesheet" href="/assets/site.css?v=21">
|
||||
<link rel="stylesheet" href="/assets/site.css?v=22">
|
||||
<link rel="stylesheet" href="/assets/shell.css?v=22">
|
||||
<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-teszteles">
|
||||
<nav>
|
||||
<div class="container">
|
||||
<a href="/en/" class="logo">
|
||||
<img class="logo-mark" src="/assets/logo-mark.svg" alt="" aria-hidden="true">
|
||||
<img class="logo-word" src="/assets/logo-wordmark.png" alt="felhom.eu">
|
||||
<body class="shell page-teszteles">
|
||||
<header class="mobile-topbar">
|
||||
<a href="/en/" class="mobile-topbar-logo"><img src="/assets/logo_notext_white.svg" alt="Felhom.eu"></a>
|
||||
<button type="button" class="nav-burger" id="navBurger" aria-expanded="false" aria-controls="sidebar" aria-label="Menu">
|
||||
<span class="hamburger-box"><span class="hamburger-line"></span><span class="hamburger-line"></span><span class="hamburger-line"></span></span>
|
||||
</button>
|
||||
</header>
|
||||
<div class="nav-backdrop" id="navBackdrop" hidden></div>
|
||||
<nav class="sidebar" id="sidebar">
|
||||
<div class="sidebar-header">
|
||||
<a href="/en/" class="sidebar-logo-link">
|
||||
<img src="/assets/logo_notext_white.svg" alt="" class="sidebar-logo" aria-hidden="true">
|
||||
<img src="/assets/logo-wordmark.png" alt="felhom.eu" class="sidebar-word">
|
||||
</a>
|
||||
<ul class="nav-links">
|
||||
<li><a href="/en/#services">Services</a></li>
|
||||
<li><a href="/en/apps">Apps</a></li>
|
||||
<li><a href="/en/technology">Technology</a></li>
|
||||
<li><a href="/en/backups">Backups</a></li>
|
||||
<li><a href="/en/faq">FAQ</a></li>
|
||||
<li><a href="/en/contact">Contact</a></li>
|
||||
<li class="lang-globe-li"><details class="lang-globe"><summary class="lang-globe-btn" aria-label="Language" title="Language"><svg class="ico-lg" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-globe"/></svg></summary><ul class="lang-globe-menu"><li><a href="/teszteles" lang="hu" hreflang="hu" class="lang-globe-item">Magyar</a></li><li><a href="/en/testing" lang="en" hreflang="en" class="lang-globe-item current" aria-current="true">English</a></li></ul></details></li>
|
||||
</div>
|
||||
<ul class="nav-links">
|
||||
<li><a href="/en/"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-home"/></svg>Home</a></li>
|
||||
<li><a href="/en/#services"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-rocket"/></svg>Services</a></li>
|
||||
<li class="nav-group">
|
||||
<button type="button" class="nav-group-toggle" aria-expanded="false" aria-controls="nav-group-apps"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-package"/></svg>Applications<svg class="ico nav-chevron" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-chevron-down"/></svg></button>
|
||||
<ul id="nav-group-apps" class="nav-links nav-links-sub nav-links-nested">
|
||||
<li><a href="/en/apps">All applications</a></li>
|
||||
<li><a href="/en/apps#files-office">Files & Office</a></li>
|
||||
<li><a href="/en/apps#media-entertainment">Media & Entertainment</a></li>
|
||||
<li><a href="/en/apps#home-lifestyle">Home & Lifestyle</a></li>
|
||||
<li><a href="/en/apps#productivity-knowledge">Productivity & Knowledge</a></li>
|
||||
<li><a href="/en/apps#system-development">System & Development</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="/en/technology"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-layers"/></svg>Technology</a></li>
|
||||
<li><a href="/en/backups"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-shield-check"/></svg>Backups</a></li>
|
||||
</ul>
|
||||
<div class="sidebar-bottom">
|
||||
<a href="/en/testing" class="btn btn-outline sidebar-cta">Apply as a tester →</a>
|
||||
<div class="nav-group-label">About Felhom</div>
|
||||
<ul class="nav-links nav-links-sub">
|
||||
<li><a href="/en/#how-it-works">How it works</a></li>
|
||||
<li><a href="/en/faq">FAQ</a></li>
|
||||
<li><a href="/en/contact">Contact</a></li>
|
||||
</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 class="sidebar-footer">
|
||||
<details class="lang-globe"><summary class="lang-globe-btn" aria-label="Language" title="Language"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-globe"/></svg></summary><ul class="lang-globe-menu"><li><a href="/teszteles" lang="hu" hreflang="hu" class="lang-globe-item">Magyar</a></li><li><a href="/en/testing" lang="en" hreflang="en" class="lang-globe-item current" aria-current="true">English</a></li></ul></details>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="mobile-overlay" id="mobileOverlay"></div>
|
||||
|
||||
<main>
|
||||
<section class="page-header">
|
||||
<div class="container">
|
||||
<main class="content">
|
||||
<div class="page-header">
|
||||
<h1>Become a <span>tester</span></h1>
|
||||
<p>We are starting to run the system for real in a few households. There is no fee during the test, we do the setup, and we pay for the domain. In return we ask you to tell us what does not work.</p>
|
||||
</div>
|
||||
</section>
|
||||
<p class="page-lede">We are starting to run the system for real in a few households. There is no fee during the test, we do the setup, and we pay for the domain. In return we ask you to tell us what does not work.</p>
|
||||
|
||||
|
||||
<!-- Hungary only -->
|
||||
<section class="content-section">
|
||||
@@ -91,14 +110,14 @@
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<h2>Who it is <span>for</span></h2>
|
||||
<p>We are not looking for IT people — we are looking for families who will really use it</p>
|
||||
<p>We are not looking for IT people – we are looking for families who will really use it</p>
|
||||
</div>
|
||||
<div class="info-card">
|
||||
<h3><svg class="ico-lg" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-home"/></svg> A household that wants its data back at home</h3>
|
||||
<p>If your photos, your scanned paperwork and your films live with a foreign provider today, and you would rather keep them at home on your own machine — we are looking for you.</p>
|
||||
<p>If your photos, your scanned paperwork and your films live with a foreign provider today, and you would rather keep them at home on your own machine – we are looking for you.</p>
|
||||
<p><strong>No IT knowledge is needed.</strong> We set the server up at your home and we operate it. You use it from the browser, like any other site.</p>
|
||||
<div class="highlight-box">
|
||||
<p>What you do need is <strong>patience</strong>. This is a test, not a finished product. You will find faults — that is the point of it.</p>
|
||||
<p>What you do need is <strong>patience</strong>. This is a test, not a finished product. You will find faults – that is the point of it.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -109,31 +128,31 @@
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<h2>What you <span>need</span></h2>
|
||||
<p>Three things — and we pay for the third</p>
|
||||
<p>Three things – and we pay for the third</p>
|
||||
</div>
|
||||
|
||||
<div class="info-card">
|
||||
<h3><svg class="ico-lg" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-cpu"/></svg> 1. A machine that can stay on</h3>
|
||||
<!-- source: website/en/faq.html — same answers as the Hungarian FAQ -->
|
||||
<p>The server sits in your home and runs all the time, so it has to be quiet and economical. From the FAQ: most households are well served by a mini PC (for example an Intel N100 with 16-32 GB of RAM) — quiet, economical at 15-35 W, and small enough for the shelf next to the router.</p>
|
||||
<p>An older machine can work too: a former desktop PC can make a good server. During the first conversation we check whether the machine you have is up to the job (enough RAM, storage and reliability). Power draw and noise matter — an old gaming PC works, but it costs considerably more per month than a modern mini PC.</p>
|
||||
<p>If you have no machine, that is not a blocker — we work out what suits you during the first conversation. More detailed configurations are on the <a href="/en/technology">Technology</a> page.</p>
|
||||
<!-- source: website/en/faq.html – same answers as the Hungarian FAQ -->
|
||||
<p>The server sits in your home and runs all the time, so it has to be quiet and economical. From the FAQ: most households are well served by a mini PC (for example an Intel N100 with 16-32 GB of RAM) – quiet, economical at 15-35 W, and small enough for the shelf next to the router.</p>
|
||||
<p>An older machine can work too: a former desktop PC can make a good server. During the first conversation we check whether the machine you have is up to the job (enough RAM, storage and reliability). Power draw and noise matter – an old gaming PC works, but it costs considerably more per month than a modern mini PC.</p>
|
||||
<p>If you have no machine, that is not a blocker – we work out what suits you during the first conversation. More detailed configurations are on the <a href="/en/technology">Technology</a> page.</p>
|
||||
</div>
|
||||
|
||||
<div class="info-card">
|
||||
<h3><svg class="ico-lg" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-radio-tower"/></svg> 2. Home internet</h3>
|
||||
<!-- source: website/en/faq.html — „What internet connection do I need?" -->
|
||||
<p>For use at home, any connection is enough, because the apps run on your own local network rather than over the internet. If you also want to reach your server from elsewhere — from work, or on holiday — then upload speed is what counts: at least 10 Mbps is recommended, and more is better.</p>
|
||||
<!-- source: website/en/faq.html – „What internet connection do I need?" -->
|
||||
<p>For use at home, any connection is enough, because the apps run on your own local network rather than over the internet. If you also want to reach your server from elsewhere – from work, or on holiday – then upload speed is what counts: at least 10 Mbps is recommended, and more is better.</p>
|
||||
</div>
|
||||
|
||||
<div class="info-card">
|
||||
<h3><svg class="ico-lg" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-globe"/></svg> 3. A domain — which we pay for</h3>
|
||||
<h3><svg class="ico-lg" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-globe"/></svg> 3. A domain – which we pay for</h3>
|
||||
<!-- source: operator ruling D1, 2026-10-10 (CONTEXT.md); documentation/architecture/01-topology-and-trust.md §7 -->
|
||||
<p>Your server and your apps are reached through <strong>your own domain</strong> — never a name under felhom.eu. Your dashboard becomes <code>felhom.your-domain.hu</code>, and every app gets its own subdomain.</p>
|
||||
<p>Your server and your apps are reached through <strong>your own domain</strong> – never a name under felhom.eu. Your dashboard becomes <code>felhom.your-domain.hu</code>, and every app gets its own subdomain.</p>
|
||||
<div class="highlight-box">
|
||||
<p><strong>The domain is registered in your name, and we pay the fee for two years during the test.</strong> So the domain is yours: when the test ends, or if you leave, <strong>you keep the domain</strong> and carry on paying for it yourself. We do not ask for it back and we do not take it with us.</p>
|
||||
</div>
|
||||
<p>We manage the domain's DNS settings during the test with an access token that <strong>can see that one domain only</strong> — it reaches nothing else.</p>
|
||||
<p>We manage the domain's DNS settings during the test with an access token that <strong>can see that one domain only</strong> – it reaches nothing else.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -143,7 +162,7 @@
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<h2>What you <span>get</span></h2>
|
||||
<p>The same list as section 3 of the test terms — no more and no less</p>
|
||||
<p>The same list as section 3 of the test terms – no more and no less</p>
|
||||
</div>
|
||||
<div class="info-card">
|
||||
<!-- source: documentation/legal/feltetelek-1.0.md §3 (same promises, no new ones) -->
|
||||
@@ -156,7 +175,7 @@
|
||||
<li>We <strong>update</strong> the apps and the system, usually at night, in a window you choose.</li>
|
||||
<li>And as above: <strong>we pay for the domain for two years.</strong></li>
|
||||
</ul>
|
||||
<p>What we do <strong>not</strong> promise — we commit to no availability and no response time — is in section 5 of the <a href="/feltetelek">test terms (Hungarian)</a>. It is worth reading before you apply.</p>
|
||||
<p>What we do <strong>not</strong> promise – we commit to no availability and no response time – is in section 5 of the <a href="/feltetelek">test terms (Hungarian)</a>. It is worth reading before you apply.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -166,11 +185,11 @@
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<h2>What we <span>ask for</span></h2>
|
||||
<p>Not money — neither from you nor to us</p>
|
||||
<p>Not money – neither from you nor to us</p>
|
||||
</div>
|
||||
<div class="info-card">
|
||||
<h3><svg class="ico-lg" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-message-square"/></svg> Tell us what is wrong</h3>
|
||||
<p>This is the only thing we ask in return. What is annoying, what is unclear, what does not work. A "I could not find that button" is worth the most to us — that is how we learn what to fix.</p>
|
||||
<p>This is the only thing we ask in return. What is annoying, what is unclear, what does not work. A "I could not find that button" is worth the most to us – that is how we learn what to fix.</p>
|
||||
|
||||
<h3 style="margin-top: 24px;"><svg class="ico-lg" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-shield-check"/></svg> Keep a copy of your own</h3>
|
||||
<!-- source: documentation/legal/feltetelek-1.0.md §4 -->
|
||||
@@ -189,7 +208,7 @@
|
||||
<h3><svg class="ico-lg" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-users"/></svg> Up to 5 households</h3>
|
||||
<!-- source: operator ruling D2, 2026-10-10 (CONTEXT.md) -->
|
||||
<p>The closed test runs with <strong>up to 5 households</strong>. The number is small because one person operates the system, and we want time for every tester. The test is <strong>just starting</strong>, so <strong>all 5 places are open</strong>.</p>
|
||||
<p>If it fills up, we will say so — and tell you when a place opens again.</p>
|
||||
<p>If it fills up, we will say so – and tell you when a place opens again.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -198,7 +217,7 @@
|
||||
<section class="cta-section">
|
||||
<div class="container">
|
||||
<h2>Interested? <span>Apply</span></h2>
|
||||
<p>Send us a message — it <strong>commits you to nothing</strong>, we just talk first. We go through whether you have a suitable machine, and what you would use it for.</p>
|
||||
<p>Send us a message – it <strong>commits you to nothing</strong>, we just talk first. We go through whether you have a suitable machine, and what you would use it for.</p>
|
||||
<a href="/en/contact?tema=zart-teszt" class="cta-button">Apply as a tester →</a>
|
||||
</div>
|
||||
</section>
|
||||
@@ -211,21 +230,14 @@
|
||||
</div>
|
||||
<div class="info-card">
|
||||
<ul>
|
||||
<li><a href="/feltetelek">The closed test terms (Hungarian)</a> — what you get, what we do not promise, and how to leave.</li>
|
||||
<li><a href="/adatkezeles">Privacy notice (Hungarian)</a> — what data we handle, for how long, and why.</li>
|
||||
<li><a href="/en/faq">FAQ</a> — the most common questions, from the machine to the backups.</li>
|
||||
<li><a href="/feltetelek">The closed test terms (Hungarian)</a> – what you get, what we do not promise, and how to leave.</li>
|
||||
<li><a href="/adatkezeles">Privacy notice (Hungarian)</a> – what data we handle, for how long, and why.</li>
|
||||
<li><a href="/en/faq">FAQ</a> – the most common questions, from the machine to the backups.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="container">
|
||||
<p>© 2026 felhom.eu – Your own cloud, your own rules. Felhom serves households in Hungary.</p>
|
||||
<p class="footer-legal">Operated by Nagyfenyvesi Viktor · <a href="mailto:info@felhom.eu">info@felhom.eu</a> · <a href="/adatkezeles">Privacy notice (Hungarian)</a> · <a href="/feltetelek">Terms (Hungarian)</a></p>
|
||||
</div>
|
||||
</footer>
|
||||
<script>
|
||||
(function() {
|
||||
var hamburger = document.getElementById('hamburger');
|
||||
@@ -287,5 +299,35 @@
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
<footer>
|
||||
<div class="container">
|
||||
<p>© 2026 felhom.eu – Your own cloud, your own rules. Felhom serves households in Hungary.</p>
|
||||
<p class="footer-legal">Operated by Nagyfenyvesi Viktor · <a href="mailto:info@felhom.eu">info@felhom.eu</a> · <a href="/adatkezeles">Privacy notice (Hungarian)</a> · <a href="/feltetelek">Terms (Hungarian)</a></p>
|
||||
</div>
|
||||
</footer>
|
||||
<script>
|
||||
(function(){
|
||||
var b=document.getElementById('navBurger'),s=document.getElementById('sidebar'),k=document.getElementById('navBackdrop');
|
||||
if(!b||!s||!k)return;
|
||||
function open(){s.classList.add('is-open');k.hidden=false;document.body.classList.add('nav-open');b.setAttribute('aria-expanded','true');}
|
||||
function close(){s.classList.remove('is-open');k.hidden=true;document.body.classList.remove('nav-open');b.setAttribute('aria-expanded','false');}
|
||||
b.addEventListener('click',function(){s.classList.contains('is-open')?close():open();});
|
||||
k.addEventListener('click',close);
|
||||
document.addEventListener('keydown',function(e){if(e.key==='Escape'&&s.classList.contains('is-open')){close();b.focus();}});
|
||||
s.querySelectorAll('a').forEach(function(l){l.addEventListener('click',close);});
|
||||
window.addEventListener('resize',function(){if(window.innerWidth>768)close();});
|
||||
})();
|
||||
document.addEventListener('click',function(e){
|
||||
var btn=e.target.closest?e.target.closest('.nav-group-toggle'):null;
|
||||
if(!btn)return;
|
||||
var g=btn.closest('.nav-group');if(!g)return;
|
||||
var willOpen=!g.classList.contains('is-open');
|
||||
document.querySelectorAll('.nav-group.is-open').forEach(function(x){
|
||||
x.classList.remove('is-open');
|
||||
var t=x.querySelector('.nav-group-toggle');if(t)t.setAttribute('aria-expanded','false');
|
||||
});
|
||||
if(willOpen){g.classList.add('is-open');btn.setAttribute('aria-expanded','true');}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user