From 56c357c0747278836781a7cc9e1cb4b5db4dcf54 Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Sun, 11 Oct 2026 00:31:14 +0200 Subject: [PATCH] report + plan: the redesign session's record, and the order for the other pages REPORT-redesign-2026-10-10.md (not REPORT.md: that file belongs to the kernel night session de4a8d20 and is overwritten per session). NEXT.md - the other pages in order with what each needs, and the traps: teszteles/en/testing first (the destination of every CTA, newest page) gyik/en/faq second, with the warning that gate 17 requires the FAQPage JSON-LD to EQUAL the visible answers, so every copy edit there is a two-place edit technologiak third ("Ipari szintu megoldasok" is the exact language the home page just removed) alkalmazasok is BLOCKED on R-929 - prose 58, page 59 cards, catalog 60 adatkezeles/feltetelek are reviewed legal texts; a dash sweep there needs the operator's word separately and is not ours to take It also records the per-page em-dash count: 300 across 19 pages, the preview being the only page at zero. STATUS.md - the operator's one screen, in plain language: the preview is waiting on him, the two fixes that DID go live, and the two new decisions (R-931 the missing compression, R-929 the app count). website/CHANGELOG.md - the footer sweep and R-930, both with their measurements and with the scope stated rather than implied. Register 127 -> 129 (R-930, R-931 opened; none closed). --- REPORT-redesign-2026-10-10.md | 127 ++++++++++++++++++ STATUS.md | 32 ++++- .../audits/redesign-2026-10-10/NEXT.md | 117 ++++++++++++++++ website/CHANGELOG.md | 28 ++++ 4 files changed, 301 insertions(+), 3 deletions(-) create mode 100644 REPORT-redesign-2026-10-10.md create mode 100644 documentation/audits/redesign-2026-10-10/NEXT.md diff --git a/REPORT-redesign-2026-10-10.md b/REPORT-redesign-2026-10-10.md new file mode 100644 index 00000000..30746715 --- /dev/null +++ b/REPORT-redesign-2026-10-10.md @@ -0,0 +1,127 @@ +# REPORT — home-page redesign, staged not switched (2026-10-10 → 11) + +> Written as `REPORT-.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 ``/OG/Twitter strings alone, and chose the outdoor photograph. + +**Part B — „Ki áll mögötte".** 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 780 px** (−38%) | +| Height, 390 px | 19 913 px (23.6 screens) | **10 865 px** (12.9 screens, −45%) | +| 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) | **10 for 10, 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. diff --git a/STATUS.md b/STATUS.md index 1da4dbda..107e6882 100644 --- a/STATUS.md +++ b/STATUS.md @@ -1,9 +1,35 @@ -# STATUS — what works, what's broken, what's next +# STATUS — what works, what's broken, what's next **Ready for the first real tester (Tester-2): yes. Tester 2 (a laptop) is off; nothing was sent to it.** -**Updated 2026-10-10 (evening): hub 0.146.0; demo-hp, demo-felhom and Tester 1 run agent 0.154.0 and controller -0.307.0. The open-items list is at 127 (was 126). Reports: `REPORT-testers-2026-10-10.md`, `REPORT-register-shrink-2026-10-10.md`, `REPORT-new-apps-2026-10-10.md`, `REPORT-release-2026-10-10.md`, `REPORT-break-the-circle-2026-10-09.md`, `REPORT-dooplex-survival-2026-10-09.md`, `REPORT-day4-2026-10-09.md`.** +**Updated 2026-10-11: hub 0.146.0; demo-hp, demo-felhom and Tester 1 run agent 0.154.0 and controller +0.307.0. The open-items list is at 129 (was 127). Reports: `REPORT-redesign-2026-10-10.md`, `REPORT-testers-2026-10-10.md`, `REPORT-register-shrink-2026-10-10.md`, `REPORT-new-apps-2026-10-10.md`, `REPORT-release-2026-10-10.md`, `REPORT-break-the-circle-2026-10-09.md`, `REPORT-dooplex-survival-2026-10-09.md`, `REPORT-day4-2026-10-09.md`.** + +## Sunday 2026-10-11: a redesigned home page is waiting for you, and two site-wide fixes went live + +- **The new home page is at <https://felhom.eu/preview/>.** Open it on your computer and your phone + and compare it with <https://felhom.eu/>. **The live home page is unchanged** — you said you wanted + to sit with it, so nothing was switched. **This is waiting on you.** + It is a third shorter on a computer and **half as long on a phone** (23.6 screens of scrolling down + to 12.9). The hero shows the real dashboard instead of the logo, there is a new **„Ki áll mögötte"** + section with your photo and five sentences in your own words, and the first sentence a visitor + reads is now four facts instead of „Professzionális otthoni szerver telepítés és üzemeltetés". +- **Two things you approved DID go live, on every page:** the footer line now uses the correct + Hungarian dash, and **the blue button is bigger and bolder** so it finally meets the contrast + standard. That button has never met it — it measured the same on the old page — so this was a + real defect on 16 pages, not something the redesign introduced. +- **Your photo:** the original stays outside the repository. Everything identifying was stripped and + then checked by reading the file back: no location, no phone model, no timestamp. (For the record, + that photo never carried a location tag in the first place.) +- **Two new things to decide, both found while checking:** + - **The website compresses nothing.** The stylesheet travels as 94 KB of raw text where it could be + about a fifth of that. One setting, helps every page, worth more than the whole redesign (R-931). + - **The apps page still cannot be touched** until the app count disagreement is settled: the words + say 58, the page shows 59 cards, the catalog holds 60 (R-929). +- **The rest of the site still has 300 of the wrong dash** in its text, mostly in the FAQ (53 in each + language). That is page-by-page work, planned in + `documentation/audits/redesign-2026-10-10/NEXT.md`, and it should wait until you decide on the home + page. ## Saturday 2026-10-10 (evening): the website now asks for testers properly, and five posts are queued diff --git a/documentation/audits/redesign-2026-10-10/NEXT.md b/documentation/audits/redesign-2026-10-10/NEXT.md new file mode 100644 index 00000000..1ca8946e --- /dev/null +++ b/documentation/audits/redesign-2026-10-10/NEXT.md @@ -0,0 +1,117 @@ +# The other pages, in order, with what each needs + +Written 2026-10-11 at the end of the home-page redesign session. The home page's new design is +**staged at `/preview/` and not live** — the operator chose to sit with it. Nothing below should start +before that decision, because every page inherits whatever the home page settles. + +## What already reached every page in this session + +Two things were approved at STOP 3 and are **live on all 18 public pages now**: + +- The shared footer's em dash became the correct spaced en dash. +- `.cta-button` is 1.2rem/700, which puts it in WCAG's large-text band and clears the 3:1 floor + (R-930). Verified one line and no overflow on every page at 390 px and at 1440 px. + +Neither is page-specific work, and neither needs repeating below. + +## The measured backlog this session uncovered + +**300 em dashes remain in the bodies of the other 19 pages.** The preview is the only page at zero. +Per page, counted 2026-10-11: + +| Page | `—` in body | Twin | `—` in twin | +|---|---|---|---| +| `gyik.html` | **53** | `en/faq.html` | **53** | +| `adatkezeles.html` | **33** | none (Hungarian only, R-813) | — | +| `szolgaltatasok-nonpublic.html` | 27 | none (hidden) | — | +| `teszteles.html` | 23 | `en/testing.html` | 24 | +| `index.html` | 17 | `en/index.html` | 19 | +| `technologiak.html` | 8 | `en/technology.html` | 8 | +| `feltetelek.html` | 7 | none (Hungarian only) | — | +| `biztonsagimentes.html` | 5 | `en/backups.html` | 5 | +| `kapcsolat.html` | 5 | `en/contact.html` | 6 | +| `alkalmazasok.html` | 3 | `en/apps.html` | 1 | +| `letoltes.html` | 1 | `en/download.html` | 2 | + +A dash sweep is **not** a mechanical find-and-replace. In Hungarian the gondolatjel is a spaced en +dash, but most of these want a colon, a comma or a full stop instead, and `felhom-web-design` §4 +rations the en dash to one per paragraph. Each one is a sentence-level decision. + +--- + +## The order, and why + +### 1. `/teszteles` + `/en/testing` — do these first +The destination of every call to action on the site, and the newest page, so the least likely to +need structural change. +- **Needs:** the dash sweep (23 + 24). A read against the home page's new voice once that is settled. +- **Watch:** it was styled in `69035f4af5` by joining the `.page-technologiak` scope, and it carries + justified body copy that no other page uses. Do not "tidy" that into the shared rules without + checking both pages. + +### 2. `/gyik` + `/en/faq` — the biggest content win and the biggest trap +106 dashes between them, 41 questions each. +- **Needs:** the dash sweep, and the long-list treatment the home page just got. 41 questions in one + flat list is the same defect as the home page's ten equal cards. +- **The trap, stated plainly:** `site_gates.py` gate 17 requires the `FAQPage` JSON-LD to equal the + **visible** questions and answers exactly. Every copy edit is therefore a **two-place edit**, and + the gate will catch a half-done one. Budget for that. + +### 3. `/technologiak` + `/en/technology` — the worst remaining marketing language +- **Needs:** „Ipari szintű megoldások, otthoni környezetben" and „Professzionális Technológiák" are + the exact phrasing the home page just removed. Replace with what the box actually runs. +- **Note:** the home page's new band already links here and names Docker, Proxmox, the three backup + tiers and the tunnel. Keep the two consistent. + +### 4. `/alkalmazasok` + `/en/apps` — blocked on a number +- **Needs:** only 4 dashes, so the copy work is small. +- **Blocked on R-929:** the prose says **58**, the page renders **59** cards, the catalog holds **60** + templates. The home page's new band says 58, matching every other prose claim on the site. **Do not + touch any app count until R-929 is settled**, or the site will disagree with itself in a new place. + +### 5. `/biztonsagimentes` + `/en/backups` +- **Needs:** 10 dashes. The 3-2-1 figure on the home page moved off the mono font (R-6b); check + whether this page uses the same pattern and should follow. + +### 6. `/kapcsolat` + `/en/contact` +- **Needs:** 11 dashes. **Do not touch the form's field names, order or endpoint** — the analytics and + the `?tema=` preselect depend on them, and taste-skill §11.F puts form fields behind an explicit + approval anyway. + +### 7. `/letoltes` + `/en/download` — smallest, 3 dashes +- **Watch:** `site_gates.py` checks the two download pages agree on the ISO file name and its sha. + A copy edit must not disturb those strings. + +### 8. `/adatkezeles` and `/feltetelek` — legal, text frozen +33 and 7 dashes, and **the task that created this plan explicitly excluded their text**. These are +reviewed legal documents with dated records in `documentation/legal/`. A dash sweep here is a change +to a legal text and needs the operator's word, separately. Layout and typography may be improved +without touching a word. + +### 9. `/404.html` and `/szolgaltatasok-nonpublic` — last +Neither is in the conversion path. `404.html` has no twin by design; the prices page is hidden and +stays Hungarian. + +--- + +## Two things that will pay more than any page + +1. **R-931 — nothing on felhom.eu is compressed.** `site.css` ships as 94 310 raw bytes with no + `Content-Encoding`, even when gzip is offered. Roughly a fifth of that with gzip, on **every** + page. It is an nginx setting in `manifests/webpage.yaml`. This is worth more than the whole + redesign and it is one config block. +2. **The shared stylesheet is now 94 KB and only ever grows.** This session added ~7 KB and every + page pays it uncompressed. Before the next page lands, it is worth asking whether the retired + home-page classes (`.why-grid`, `.problem-grid`, `.service-list`, `.apps-showcase`, + `.process-steps`, `.step-number`, the `float` keyframe) can be deleted — but **only after the + switch**, because until then `index.html` still uses every one of them. + +## The method that worked, so nobody re-derives it + +`resize_window` does not move `window.innerWidth` on this workstation and DevTools device mode +cannot be driven from the extension. Render the page in a **same-origin iframe** at the width you +want and screenshot that rectangle: the media queries fire on the iframe's width. Two positive +observables prove it is the real mobile layout rather than a squeezed desktop one — the hamburger +computes to `display: block`, and `clientWidth == scrollWidth`. In a **background** tab the lazy-load +observer never fires, so set `loading = 'eager'` and re-assign `src` before measuring or capturing, +or you will photograph a page of empty image boxes. Recorded in `felhom-web-design` §10. diff --git a/website/CHANGELOG.md b/website/CHANGELOG.md index 11d7b80f..bba002eb 100644 --- a/website/CHANGELOG.md +++ b/website/CHANGELOG.md @@ -1,3 +1,31 @@ +## 2026-10-11 — the footer dash site-wide, and the primary button meets WCAG AA + +Two operator decisions taken at the redesign review. **The home page itself was NOT switched** — the +operator chose to sit with the preview, so `/` still serves the old design. Only these two things +changed on it, and on every other page. + +- **The footer's em dash became the correct spaced en dash, on all 21 page files** (12 Hungarian, + 8 English, plus the preview). 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 after deploy: `em=0 en=1` on each. + **Scope, stated:** this clears the footer only. **300 em dashes remain in the bodies of the other + 19 pages** (`gyik` 53, `en/faq` 53, `adatkezeles` 33, `szolgaltatasok-nonpublic` 27, `teszteles` 23, + `en/testing` 24, `index` 17, `en/index` 19, …). Enumerated per page in + `documentation/audits/redesign-2026-10-10/NEXT.md`. The preview is the only page at zero. +- **R-930 — `.cta-button` is now 1.2rem/700** (was 1rem/600). White on `--blue` measures **4.01:1**, + under WCAG AA's 4.5:1 floor for body text; at ≥ 18.66 px and ≥ 700 weight WCAG counts the label as + **large text**, where the floor is 3:1 and 4.01 clears it. Chosen by the operator over darkening + `--blue`, which is shared with the hub and controller UIs. Horizontal padding trimmed 32→26 px to + protect the one-line rule for the longest label. + **Measured, not assumed:** every primary button renders on **one line** and **no page overflows**, + checked in the browser on 11 pages at both 390 px and 1440 px. The defect was pre-existing and + site-wide — it measured the same 4.01:1 on the live page before any of this work — so the fix + reaches the primary button on 16 pages, which is the point. `.cta-button-secondary` is untouched at + 7.17:1. +- **`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 a returning visitor the old stylesheet and the change would have + looked like it did not deploy. + ## 2026-10-10 (este) — a redesigned home page, staged at /preview/ - **Why:** the home page read as AI-made — eleven sections but only eight layout families, every