Files
felhom.eu/.claude/rules/website.md
T
admin 67b3fd23d1
gates / gates (push) Failing after 13m1s
website refresh: true numbers (56 apps), claims checked against the capability map, ten missing apps, an English twin of every public page (public, choice B), 404 page; site gates 13-18 + 11 decoys; R-902 opened
Part A: claim table documentation/audits/website-refresh-2026-10-08/claims.md; "100% open source" corrected
from the licence read; unbacked claims cut (firewall, RAID, snapshots, new-machine restore, self-managed
mode, household VPN, "never lost"). Part B: dawarich, docmost, grimmory, homebox, karakeep, mealie, metube,
radicale, recipe-importer, sparkyfitness cards; plant-it and wger cut (not offered). Part C: /en/ twins,
nav language switch, hreflang both ways, sitemap with xhtml:link, og-image-en.png. Part D: site_gates.py
twins/lang/same-apps/no-Hungarian/FAQ-JSON-LD/tail. Operator ruling 9 + choice B in 10-localisation.md §11,
§10.7. Register: R-902 (contact mailer source in no repo); R-813, R-784, R-559 annotated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012qRErfCoiTkvDK9N5XHbzb
2026-10-08 08:29:17 +02:00

3.1 KiB
Raw Blame History

paths
paths
website/**

Website — build, deploy, and the encoding fences

Deploy

The website auto-deploys via git-sync from main — just push, live in 1–2 min. No ArgoCD sync, no image build. Emergency edits: https://files.felhom.eu.

Do NOT pin the website to the installer tag. The sparse-checkout used to cover /website/ and /scripts/ in one sync; pinning that would turn every copy edit into a release. The installer's tag-based publishing is a separate mechanism — see the R-110 fence in the repo core CLAUDE.md.

Gates

Website changes go through python3 scripts/repo_gates.py, which runs site_gates.py. A new page must be registered in that gate — in TWINS together with its English twin, or by name in NO_TWIN — or it is unchecked (and the gate's walk refuses it).

site_gates.py asserts: BOM, emoji, nav/footer consistency per language set, analytics, CDN, design tokens, no embedded <style> blocks, cache-busting, the two download pages agreeing, and since 2026-10-08: the twin gate (every public Hungarian page has its English twin and back, matching hreflang, the nav's language switch pointing at its own twin, canonical at itself), lang per set, the same apps on both apps pages, no Hungarian on an English page (accent + ASCII-folded stems, controls printed), the FAQ JSON-LD equal to the visible answers, and nothing after </html>.

The two languages (operator ruling 2026-10-08, 10-localisation.md §10.7)

  • The Hungarian site is the default (x-default). Every public Hungarian page has an English twin under /en/ (/alkalmazasok → /en/apps, /technologiak → /en/technology, /biztonsagimentes → /en/backups, /gyik → /en/faq, /kapcsolat → /en/contact, /letoltes → /en/download). Exceptions, by name: szolgaltatasok-nonpublic.html (stays Hungarian) and 404.html.
  • A new public page needs its twin in the same commit. A change to a page's claims is made on both pages of the pair in the same commit; the English promises nothing the Hungarian does not.
  • English words: the dashboard's (en.json: Dashboard, Launcher, Backup); app names and „Felhom" stay; no „please"/„kindly"; prices stay in Ft. The English footer says Felhom serves households in Hungary.
  • No Accept-Language redirect and no language cookie — a visitor lands on the page they asked for.

The encoding fences

  • All website/ HTML is UTF-8 with BOM. Preserve it. An editor that strips the BOM is a silent, whole-file change.
  • Emoji count is zero. The design system forbids them; the gate enforces it.
  • Cache-busting: bump the asset query string when CSS or JS changes, or browsers serve the old file and the change looks like it did not deploy.

Copy

Customer-facing copy is Hungarian first, with an English twin (above); tone and terminology rules live in the felhom-ui-design skill — use it rather than inventing phrasing. Every claim must rest on a PROVEN-LIVE or IMPLEMENTED row of 00-capability-map.md (the claim table of the last refresh: documentation/audits/website-refresh-2026-10-08/claims.md). Operator-facing text is English.