aa843a2fa0
gates / gates (push) Successful in 3m55s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012qRErfCoiTkvDK9N5XHbzb
71 lines
4.7 KiB
Markdown
71 lines
4.7 KiB
Markdown
# REPORT — the website's language switch becomes a globe (2026-10-08)
|
|
|
|
> `REPORT-website-globe.md`, not `REPORT.md`: another session worked in this repo today (commit c7aade40).
|
|
|
|
| Part | What | State |
|
|
|---|---|---|
|
|
| A | The globe on every page, CSS, no JavaScript | **Done, live** (803af479) |
|
|
| B | Gates 3 and 13 read the globe from one `LANGS` list; leftover text switch fails; 5 decoys | **Done** |
|
|
| C | CHANGELOGs, `.claude/rules/website.md`, `10-localisation.md` ruling 11 + §10.7, STATUS | **Done** |
|
|
|
|
Register: before **130**, after **131**, opened **1** (R-903), closed **0**.
|
|
|
|
## What was built
|
|
|
|
- Every page's nav: `<details class="lang-globe">` with the sprite's `i-globe` (`aria-hidden`), `aria-label`/`title`
|
|
„Nyelv" / „Language", a list Magyar, English (same order everywhere). The page's own language points at the page
|
|
itself, is bold with a blue rule and carries `aria-current="true"`; the other item points at the twin.
|
|
- `site.css`: globe rules for desktop (list below the icon, right-aligned) and for the ≤900 px menu (last item, list
|
|
opens in place). Tokens only. `?v=2` → `?v=3` on all 16 pages. **There was no `.lang-switch` rule to retire** — the
|
|
text switch had no CSS.
|
|
- **No script added.** The controller's globe has no close-on-outside-click or Escape script either (searched
|
|
`lang-globe` in its templates and CSS: markup + CSS only).
|
|
- The current item is marked by weight and a rule, not by the controller's „✓" (`content: "\2713"`): U+2713 is in
|
|
the site's emoji gate range.
|
|
- `404.html` and the hidden prices page carry the globe too (their English item points at `/en/`): gate 3 requires one
|
|
nav across the Hungarian set, and gate 13 checks their globe's structure (not targets — they have no twin).
|
|
|
|
## Decoys (mutation on `website/en/apps.html` → failure line; `documentation/audits/website-globe-2026-10-08/decoys.txt`)
|
|
|
|
| Decoy | Failure line |
|
|
|---|---|
|
|
| Magyar item → `/` | `en/apps.html: the globe's hu item points at '/' — its twin is '/alkalmazasok'` |
|
|
| Magyar item also `current` + `aria-current` | `en/apps.html: the globe marks 'hu' as current (class current=True, aria-current=True) — only the page's own language 'en' is` |
|
|
| Magyar item removed | `en/apps.html: the globe lists [('en', 'English')] — every page lists exactly [('hu', 'Magyar'), ('en', 'English')], in that order` |
|
|
| items swapped | `en/apps.html: the globe lists [('en', 'English'), ('hu', 'Magyar')] — every page lists exactly …` |
|
|
| a text switch added back | `en/apps.html: a leftover text language switch (class="lang-switch") — the globe replaced it` (also gate 3: `<nav> differs from en/index.html`) |
|
|
|
|
The decoy suite (`scripts/test_gate_decoys.py`) runs all five with `must=` on these lines: all rejected. The old
|
|
`site/switch-wrong-twin` decoy was retired with the switch.
|
|
|
|
## Live check (headless Chrome on scratch guest 9202, after git-sync; `check.txt` + six screenshots)
|
|
|
|
- `/` and `/en/`, 1280 px, JavaScript on and off: the globe is closed at load, opens on a click; Magyar → `/`
|
|
(lang hu), English → `/en/` (lang en); the current one has `aria-current="true"`; no sideways scroll.
|
|
- 376 px, JavaScript on, inside the opened three-line menu: the list opens in place, both items visible, both go to the
|
|
right page, no sideways scroll.
|
|
- **376 px, JavaScript off: not possible** — the three-line menu itself is scripted, so it does not open. This is
|
|
older than the globe. Filed as **R-903** (P4).
|
|
|
|
## Files and pushes
|
|
|
|
- **803af479**: `website/*.html` (9), `website/en/*.html` (7), `website/assets/site.css`, `website/CHANGELOG.md`,
|
|
`scripts/site_gates.py`, `scripts/test_gate_decoys.py`, `scripts/CHANGELOG.md`, `.claude/rules/website.md`,
|
|
`documentation/architecture/10-localisation.md`, `STATUS.md`, `documentation/audits/website-globe-2026-10-08/`
|
|
(decoys.txt, globe.py). **CI: job 1538, success.**
|
|
- This report, the live evidence and R-903: the next commit (named in the chat).
|
|
- Earlier, `67b3fd23` (website refresh): CI job 1535 failed with no log and every step failing in the same second
|
|
(R-887's shape); `663421dd` on top passed (job 1536).
|
|
|
|
## Fixed without a row
|
|
|
|
The decoy suite's fake register ids were R-903…R-907 — the real register reached R-903 today, so the
|
|
`closed-register/body-word` decoy saw R-903 in BOTH registers and the pre-push hook refused 42a4a463. The fakes are now
|
|
R-99903…R-99907 (`scripts/test_gate_decoys.py`, 12 lines); suite 73/73 behaved, all gates OK. (My command chain ran
|
|
the commit after the red gate; the hook held the push. Each later step ran gates first, read rc, then committed.)
|
|
|
|
## Instruction-file edits
|
|
|
|
`.claude/rules/website.md`: one bullet added — the switch is a globe; a new language = one `LANGS` entry + its twins.
|
|
No rule was loosened.
|