Files
felhom.eu/REPORT-redesign-2026-10-10.md
T
admin 0c86e698b0
gates / gates (push) Failing after 5m58s
docs: record the placement change and re-measure after it
Every document that described the biography as a home-page section would now be
wrong, so each is corrected rather than left:

  ki-all-mogotte.md  gains 'Where it ended up' with the operator's reasoning, the
                     rejected /rolam option, and why the home page keeps a trace
  AUDIT.md           lever 2 carries a dated revision note (the audit itself is a
                     record of what was found, so it is annotated, not rewritten)
  PREFLIGHT.md       re-measured on the deployed page after the move:
                       1440: 6 780 -> 6 385 px  (42% shorter than the old page)
                        390: 10 865 -> 10 145 px (49% shorter, 23.6 -> 12.0 screens)
                       sections 10 -> 9, layout families 10 -> 9, still no repeat
                       eyebrow allowance 4 -> 3, still 0 used
  website/CHANGELOG  the live change, with the layout bug that the deployed page
                     revealed and the markup did not
  REPORT + STATUS    what is live vs what is still waiting on the operator

The numbers moved because a whole section left the page; leaving the old ones in
place would have been a quiet overclaim in the other direction.
2026-10-11 09:29:47 +02:00

150 lines
9.7 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.
# REPORT — home-page redesign, staged not switched (2026-10-10 → 11)
> Written as `REPORT-<topic>.md`, not `REPORT.md`: the shared file belongs to the kernel-night
> session (`de4a8d20`) and is overwritten per session (`CLAUDE.md` §Workflow).
## In plain words
The website's home page looked like many AI-made sites, and the operator asked for that to be fixed.
It now has a redesigned version **on a hidden test address**, `https://felhom.eu/preview/`. The
operator looked at it and chose to **sit with it**, so **the live home page is unchanged**.
Two other things the operator approved at the same time **are live on every page now**: the dash in
the footer line is the correct Hungarian one, and the blue button is bigger and bolder so it meets
the contrast standard it has never met.
Nothing was published that the operator did not approve, and no claim on the new page is new.
## What was done
**Part 0 — the skill.** `design-taste-frontend` (taste-skill) is installed at
`~/.claude/skills/design-taste-frontend/` as a **verbatim copy** of
`github.com/Leonxlnx/taste-skill` @ `717446e07a78d4e6d7918b1fde1a263378eebac9` (2026-10-09, MIT).
The body was verified **byte-identical line by line**; the only addition is a provenance block, and
the frontmatter still opens on line 1 because a line above `---` would stop the skill loading at all.
The repo holds scripts (`skill.sh`, `scripts/*.mjs`) but **the skill folder holds only `SKILL.md`**,
so no script was copied and none was run; the installer's `npx` path was not used. `LICENSE` sits
beside it. `skills/felhom-web-design/SKILL.md` (137 lines, `check_skills.py` PASS) is the override
layer and names every conflict. `skills/SOURCES.md` records the provenance and the kept/overridden
table.
**Part A — the audit.** `documentation/audits/redesign-2026-10-10/AUDIT.md`, measured against the
**live** site: 12 patterns to retire, each naming the taste-skill rule it breaks, 7 to keep, dial
reading 3/2/4 → 6/3/4, and 8 levers. The operator approved all 8 at STOP 1, chose to leave the
indexed `<title>`/OG/Twitter strings alone, and chose the outdoor photograph.
**Part B — „Ki áll mögötte".** *(Placement revised 2026-10-11: the full block lives on
`/kapcsolat` + `/en/contact`, which are LIVE; the home page keeps a portrait, one line and a link in
its closing call to action. See the last section.)* Five sentences, first person, every claim traced in
`ki-all-mogotte.md` together with what was left out and why. The operator's CV was read for one fact
only; employers, address and phone are **not** on the page. Approved at STOP 2.
**Part C — the preview.** `website/preview/index.html`, `noindex` + `Disallow: /preview/`, not in the
sitemap, linked from nowhere.
**Part D — not done.** The operator chose „not yet" at STOP 3. The preview stays up; `NEXT.md` holds
the plan for the other pages.
## Measurements (browser, on the deployed pages)
| | Old home | New preview |
|---|---|---|
| Height, 1440 px | 10 922 px | **6 385 px** (−42%) |
| Height, 390 px | 19 913 px (23.6 screens) | **10 145 px** (12.0 screens, −49%) |
| Initial load, same conditions | 13 requests, 308 KB | **11 requests, 260 KB** |
| Fully loaded | 16 requests, ~540 KB | 15 requests, **~545 KB** |
| Third-party hosts | 0 | **0** |
| Em dashes in the page's own copy | 18 | **0** |
| Layout families | 8 for 11 sections (`why-grid` ×3, `apps-showcase` ×2) | **9 for 9, none repeated** |
| JetBrains Mono | fetched, 31 KB, for 13 characters | **not fetched** |
| Horizontal overflow at 390 px | none | none (`clientWidth == scrollWidth`) |
**The weight claim, stated honestly.** The *first screen* is 48 KB lighter. *Fully scrolled* the page
is about the same: the 93 KB portrait is paid for by dropping the 49 KB decorative `logo.png` and the
31 KB mono font. It is a first-impression win, not a bandwidth win.
## Shipped live (operator-approved at STOP 3)
- **The footer dash**, on all 21 page files. It could never have been a one-page edit: `site_gates.py`
gate 3 requires every page in a language set to carry an identical footer. Verified on all 18 live
URLs: `em=0 en=1` each.
- **R-930, the primary CTA.** `.cta-button` → 1.2rem/700, which is ≥18.66 px at ≥700 weight, so WCAG
counts it as large text and the floor drops to 3:1, which 4.01 clears **without touching `--blue`**
(shared with the hub and controller UIs). Padding trimmed 32→26 px to protect the one-line rule.
Verified in the browser on 11 pages at 390 px and 1440 px: every primary button **one line**, **no
page overflows**.
- `site.css?v=` → 12 on all 21 files. The pages sat at v=10 and the preview at v=11; leaving them
split would have served returning visitors the old stylesheet.
## Things found that were not the task, and what happened to them
- **R-930** (filed, then fixed on the operator's instruction): the primary CTA measured 4.01:1
against a 4.5:1 floor. **Measured identical on the live page**, so pre-existing and site-wide, not
a regression of this redesign.
- **R-931** (filed, not fixed): **felhom.eu serves no compression at all.** `curl` with
`Accept-Encoding: gzip, br` returns no `Content-Encoding` and the same `Content-Length` as a plain
request, for both the stylesheet (94 310 bytes) and the HTML. It is an nginx setting in
`manifests/webpage.yaml`, outside this task's scope. It is worth more than this entire redesign.
- **300 em dashes remain in the other 19 pages' bodies** (gyik 53, en/faq 53, adatkezeles 33, …).
Enumerated per page in `NEXT.md`.
- **A `.cta-button-secondary` wraps to 2 lines at 390 px** on the home page. That class was not
changed; pre-existing, mobile only, noted not filed (the size rule).
## Corrections made to this session's own work
1. **The audit claimed the numbered lists were the only users of JetBrains Mono.** They were ten of
thirteen; the `3`/`2`/`1` of the backup rule were the other three. Retiring the numbered lists
alone would **not** have dropped the font. Corrected in `AUDIT.md` as **R6b**, and the preview
moves the 3-2-1 figures to the UI font, which is what actually took the font off the page.
2. **Three new styles shipped below WCAG AA in the first pass** (3.88 / 3.14 / 3.57). Found by the
contrast check, fixed to `--text-2`, re-measured on the deployed file: **7.56 / 6.12 / 6.96**.
3. **The contrast script itself reported a false failure** of 1.17:1 on the limits callout, by
treating the translucent `--warn-dim` as opaque. Compositing the whole ancestor stack gives the
true **5.67:1**, a pass. The three real failures in the same run were real. Recorded in
`PREFLIGHT.md`: an instrument that can report a wrong number silently is not a measurement.
4. **The page builder first wrote LF** and turned the nav/footer gate red for the preview — exactly
the trap `website/CHANGELOG.md`'s own 2026-10-10 morning entry records. It now writes BOM + CRLF
and asserts both.
## Gates, register, evidence
- `scripts/repo_gates.py --fast` on DooPlex at `94ac6afb`: **all 19 gates OK**. The two failures seen
on the Windows workstation (`instructions`, `script-tests`) are environmental and pre-date this
work: `E:\git\CLAUDE.md` is the deliberate Windows adaptation the gate wants identical, `fcntl`
does not exist on Windows, `relpath` cannot cross `C:`→`E:`, and the cp1250 console kills a gate
mid-verdict (the documented trap, which bit twice in this session and was worked around by printing
escaped output).
- `site_gates.py` green after every website commit. `preview/index.html` registered in `NO_TWIN`,
with the reason in a comment: a preview URL **cannot** be a `TWINS` pair, because gate 3 wants its
nav identical to `index.html`'s (globe → `/` and `/en/`) while the twin check wants the globe
pointing at the pair's own URLs.
- **Register: 127 → 129. Opened 2 (R-930, R-931), closed 0.** `register_shape_gate.py` OK.
- Evidence in `documentation/audits/redesign-2026-10-10/`: `AUDIT.md`, `PREFLIGHT.md`,
`ki-all-mogotte.md`, `NEXT.md`, `body.html`, `before/` (3 shots), `after/` (4 shots), `photo/`.
## Waiting on the operator
1. **Go or no-go on the home page.** The preview is at `https://felhom.eu/preview/`.
2. **R-931**, the compression setting — one nginx block, helps every page.
3. **R-929** blocks the apps page: the prose says 58, the page renders 59 cards, the catalog holds 60.
## Added 2026-10-11 — the biography moved, and it is live
The operator looked at the preview and said the „Ki áll mögötte" section did not belong on the home
page. He was right, and the reason is precise: it sat between the dashboard gallery and
„Hogyan működik?", interrupting *what it does* → *how you get it*. Its closing sentence,
„Ha írsz, én válaszolok", is a contact-page sentence.
- **`/kapcsolat` and `/en/contact` now carry the full block.** These are live pages, so the photograph
and the five sentences are public from that commit. Both halves of the twin moved together.
- **The home page preview keeps a compact trace**: a 56×70 portrait, one line, a link. R-11 („nobody
is behind it”) was a *home-page* finding, so removing every human trace would have re-opened it.
- A dedicated `/rolam` page was rejected: five sentences cannot carry one, and filling it would have
meant inventing biography.
- `.who*` unscoped from `.page-index`, per `69035f4af5`'s lesson about shared patterns.
- One layout bug found and fixed by looking at the **deployed** page: `.who-mini` was `inline-flex`
inside a centred block and flowed beside the button instead of under it.
- Re-measured after the move: preview **6 385 px** at 1440 and **10 145 px** at 390, **9 sections, 9
layout families**. No horizontal overflow at 390 on `/preview/`, `/kapcsolat` or `/en/contact`;
every image loads; `site.css?v=` → 14.