---
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 added to that gate's `PAGES` list** or it is unchecked.

`site_gates.py` asserts: BOM, emoji, nav/footer consistency, analytics, CDN, design tokens, and
cache-busting.

## 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**, and its tone and terminology rules live in the
**`felhom-ui-design`** skill — use it rather than inventing phrasing. Operator-facing text is
English.
