website: two hidden mockups - M1 "the site is the dashboard", M2 hybrid
gates / gates (push) Failing after 7m1s

Design studies only. Nothing live changes, nothing is linked from a live page, both
carry noindex and /preview/ is already Disallow-ed in robots.txt. felhom-controller
was read ONLY (baseline dcd89364a4); nothing in it was touched.

M1  website/preview/m1/  - the website wearing the controller's shell
    index (Indítópult)   welcome card + all 58 launcher tiles
    alkalmazasok         the catalog in the site's own five buckets, vanilla search
    mentesek             the three backup levels, every number marked "minta"
    hogyan / teszteles / kapcsolat   today's copy inside the dashboard shell
M2  website/preview/m2/  - short hero beside a window holding a clickable launcher

Real data, not invented:
  * 58 apps from app-catalog-felhom.eu @ 8ea72aa: real names, logos, Hungarian
    taglines, use cases and first steps out of each .felhom.yml app_info.
  * Tile colours reproduce the controller's OWN tileColor (funcmap.go): FNV-1a 32
    of the slug -> hue, 45% 38%. No brand_color exists in the catalog, so every
    tile here is the colour a real launcher would paint.
  * Page copy is today's live website only.
  * Category labels are the five buckets alkalmazasok.html already uses. None invented.

The 58 is now measured, not quoted: 60 templates minus plant-it (abandoned) and
wger (hidden) = 58 offered, which is exactly what the site's prose says. See the
R-929 note in the audit folder.

Mockup rules honoured:
  * No value pretends to be live - every sample wears a "minta" badge.
  * No control does nothing: the disabled sidebar entries (Tárhely, Megosztás,
    Rendszermonitor, Beállítások) say "a saját dobozodon működik" rather than
    404-ing, and the contact form's submit is disabled with the same kind of hint.
    The consent text is the live one, unchanged.
  * App panels open with :target, so they work with JavaScript switched OFF and
    their text is real HTML a crawler can read - not JS-built content.
  * No login form anywhere. No external request, no AI or stock image.

CSS: website/preview/mockup.css is three labelled blocks so the shared-design
report can count them - adapted base (font URLs repointed /static -> /assets),
188 rules copied VERBATIM from the controller, and the mockup-only rules. The
burger is the website's own three-span control, copied rather than hand-rolling an
SVG: the shared sprite carries no i-menu.

scripts/site_gates.py gains a MOCKUPS set, with the reasoning in a comment. The
mockups keep every correctness check (BOM, emoji, banned strings and CDN hosts, no
<style>, cache-busting, <html lang>, clean tail, dashboard-picture language, the
picture-viewer rules) and are excluded from exactly the three chrome-consistency
checks a dashboard-shell study must fail by construction: nav/footer identical to
index.html, the NO_TWIN language globe, and analytics - the last deliberately, so a
hidden mockup cannot pollute the real stats. Delete the set with the directories.

site_gates.py green.
This commit is contained in:
2026-10-11 12:13:23 +02:00
parent 0c86e698b0
commit 063ba83e41
9 changed files with 5978 additions and 3 deletions
+116
View File
@@ -0,0 +1,116 @@
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="robots" content="noindex, nofollow">
<meta name="description" content="Mockup: kapcsolatfelvétel a vezérlőpult felületén.">
<title>Kapcsolat · Felhom.eu mockup</title>
<link rel="stylesheet" href="/preview/mockup.css?v=1">
<link rel="icon" type="image/png" href="/assets/logo_favicon_2.svg">
</head>
<body class="mockup">
<header class="mobile-topbar">
<a href="index.html" 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="Menü">
<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">
<img src="/assets/logo_notext_white.svg" alt="Felhom.eu" class="sidebar-logo">
</div>
<ul class="nav-links">
<li><a href="index.html"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-rocket"/></svg>Indítópult</a></li>
<li><a href="alkalmazasok.html"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-cloud"/></svg>Alkalmazások</a></li>
<li><a href="mentesek.html"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-shield"/></svg>Biztonsági mentés</a></li>
<li><span class="nav-off" title="a saját dobozodon működik"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-hard-drive"/></svg>Tárhely<span class="nav-off-hint">a saját dobozodon működik</span></span></li>
<li><span class="nav-off" title="a saját dobozodon működik"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-layout-grid"/></svg>Megosztás<span class="nav-off-hint">a saját dobozodon működik</span></span></li>
<li><span class="nav-off" title="a saját dobozodon működik"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-cpu"/></svg>Rendszermonitor<span class="nav-off-hint">a saját dobozodon működik</span></span></li>
<li><span class="nav-off" title="a saját dobozodon működik"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-settings"/></svg>Beállítások<span class="nav-off-hint">a saját dobozodon működik</span></span></li>
</ul>
<div class="sidebar-bottom">
<div class="nav-group-label">A Felhomról</div>
<ul class="nav-links nav-links-sub">
<li><a href="hogyan.html">Hogyan működik</a></li>
<li><a href="teszteles.html">Tesztelés</a></li>
<li><a href="kapcsolat.html" class="active">Kapcsolat</a></li>
</ul>
<div class="sidebar-footer">
<span class="version">mockup</span>
</div>
</div>
</nav>
<main class="content">
<div class="page-header"><h2>Kapcsolat</h2></div>
<p class="form-hint">Írj nekünk bátran. A mockupban az űrlap nem küld semmit.</p>
<div class="alerts-container">
<div class="alert-banner alert-banner-info">
<span class="alert-icon"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-info"/></svg></span>
<span class="alert-message">Ez egy bemutató oldal: a küldés gomb szándékosan ki van kapcsolva. Az éles űrlap a <a class="alert-link" href="/kapcsolat">felhom.eu/kapcsolat</a> címen működik.</span>
</div>
</div>
<form class="mockup-form" onsubmit="return false">
<div class="form-row">
<div class="form-group">
<label for="name">Név <span class="required">*</span></label>
<input class="form-control" type="text" id="name" name="name" placeholder="Teljes neved">
</div>
<div class="form-group">
<label for="email">Email <span class="required">*</span></label>
<input class="form-control" type="email" id="email" name="email" placeholder="pelda@email.hu">
</div>
</div>
<div class="form-group">
<label for="subject">Tárgy <span class="required">*</span></label>
<select class="form-control" id="subject" name="subject">
<option value="" disabled selected>Válassz témát...</option>
<option value="zart-teszt">Zárt teszt: jelentkezem tesztelőnek</option>
<option value="erdeklodes">Érdeklődés: szeretném megismerni a szolgáltatást</option>
<option value="arajanlat">Árajánlat kérés: konkrét igényeim vannak</option>
<option value="tamogatas">Támogatás: meglévő szerveremet érintő kérdés</option>
<option value="egyeb">Egyéb</option>
</select>
</div>
<div class="form-group">
<label for="message">Üzenet <span class="required">*</span></label>
<textarea class="form-control" id="message" name="message" rows="5" placeholder="Írd le, miben segíthetünk..."></textarea>
</div>
<div class="checkbox-group">
<input type="checkbox" id="privacy" name="privacy">
<label for="privacy">Elolvastam az <a href="/adatkezeles" target="_blank" rel="noopener">Adatkezelési tájékoztatót</a>, és hozzájárulok, hogy a megadott nevemet, e-mail-címemet, üzenetemet és csatolt fájljaimat a megkeresésem megválaszolására kezeljék. Az üzenetet levélküldő és levelezési szolgáltatók továbbítják. A hozzájárulásomat bármikor visszavonhatom az info@felhom.eu címen.</label>
</div>
<div class="form-actions">
<button type="submit" class="btn btn-primary" disabled>Üzenet küldése →</button>
<span class="nav-off-hint is-inline">a mockupban nem küld, az éles oldalon működik</span>
</div>
</form>
<div class="app-info-grid">
<div class="app-info-card">
<h3>Közvetlen email</h3>
<p><a class="app-info-link" href="mailto:info@felhom.eu">info@felhom.eu</a></p>
</div>
<div class="app-info-card">
<h3>Ki áll mögötte</h3>
<p>A Felhom mögött egy ember áll: <strong>Nagyfenyvesi Viktor</strong>. Ha írsz, ő válaszol.</p>
</div>
</div>
</main>
<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;b.setAttribute('aria-expanded','true');}
function close(){s.classList.remove('is-open');k.hidden=true;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')close();});
})();
</script>
</body>
</html>