Files
felhom.eu/.claude/rules/website.md
T

58 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 switch is a globe** (operator ruling 2026-10-08, like the dashboard's): a `<details class="lang-globe">` in
the nav listing every language in its own name, the current one marked. **A new language = one entry in
`LANGS` in `scripts/site_gates.py` (and the globe's list) + its twin pages** — nothing else in the switch changes.
## 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.