website refresh: report, live check (all 14 pages 200, 404 page, hreflang/canonical read back, 376 px no sideways scroll), measured claim counts
gates / gates (push) Successful in 3m41s
gates / gates (push) Successful in 3m41s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012qRErfCoiTkvDK9N5XHbzb
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
# REPORT — the website catches up with the product (2026-10-08)
|
||||
|
||||
> Written as `REPORT-website-refresh.md`, not `REPORT.md`: another session is working in this repo today, and the
|
||||
> repo's own rule (`CLAUDE.md`, „two sessions clobber each other") puts the second session's report beside it.
|
||||
|
||||
| Part | What | State |
|
||||
|---|---|---|
|
||||
| A | Every Hungarian claim checked; wrong ones fixed | **Done, live.** 78 claim rows: 25 keep, 42 fix, 7 cut, 3 add (`documentation/audits/website-refresh-2026-10-08/claims.md`) |
|
||||
| B | The ten missing apps | **Done, live.** 10 cards added, 2 cut (plant-it, wger: not offered); every card has logo + 3 screenshots |
|
||||
| C | English twin of every public page | **Done, live** — choice B, public at once |
|
||||
| D | Gates | **Done.** `site_gates.py` gates 3, 13–18; 11 decoys, each seen failing with its own line |
|
||||
| E | Docs and register | **Done.** CHANGELOGs, rules, skill, `10` §10.7 + §11, register, STATUS |
|
||||
|
||||
**Register:** rows before **127**, after **128**, opened **1** (R-902), closed **0** (counted in `OPEN-ITEMS.md` at
|
||||
HEAD de4a8d20 and at 67b3fd23). Another session has R-900 and R-901 uncommitted in the same file; they are not mine
|
||||
and not counted here.
|
||||
|
||||
**Operator choice: B** (your note: "The english pages can go live immediately"). Recorded as ruling 10 in
|
||||
`10-localisation.md` §11. So there is no turn-on commit; the English pages are indexed, in `sitemap.xml`, and the
|
||||
switch is in every nav.
|
||||
|
||||
## What changed on the site
|
||||
|
||||
- **One app count, measured: 56** (58 catalog templates minus plant-it `abandoned` and wger `hidden`, which the
|
||||
controller does not offer). Was 53, 49 and „több mint 45" on different pages.
|
||||
- **„100% nyílt forráskódú" was false.** From the 2026-10-02 licence read: Plex, Emby closed; n8n, Outline, Tandoor,
|
||||
SparkyFitness restricted; Recipe Importer is ours. Now „szinte mind" (49 of 56), with a badge on each exception.
|
||||
- **Cut, because no capability row backs them:** firewall / Fail2ban / geo-blocking / VPN for households, RAID,
|
||||
„snapshot before every change", „restore onto a new machine", the „self-managed model", „any open-source app can be
|
||||
installed", „you never lose anything" (×4), the off-site „a few hundred forints a month".
|
||||
- **Added, each on a PROVEN-LIVE row:** three backup levels; careful app updates (tested versions, backup first, the box
|
||||
undoes a failed update); the dashboard in Hungarian or English; OS security updates (the kernel lane is not claimed).
|
||||
- **404 page** — nginx pointed at a file that did not exist.
|
||||
- **A visible junk line** („Summary: 13 files included, 218 skipped") sat under the technology page. Removed.
|
||||
- **English twins:** `/en/`, `/en/apps`, `/en/technology`, `/en/backups`, `/en/faq`, `/en/contact`, `/en/download`.
|
||||
English og image (`og-image-en.png`) because the old card has Hungarian text on it.
|
||||
|
||||
## Apps added (Part B)
|
||||
|
||||
Dawarich, Grimmory, Karakeep, MeTube, Radicale (assets already existed) and Docmost, Homebox, Mealie, Recipe Importer,
|
||||
SparkyFitness (made today on scratch guest 9202, headless Chrome, each app installed, shot and removed through the
|
||||
product; details per app in `documentation/audits/website-refresh-2026-10-08/shots/README.md`). Notes:
|
||||
- Mealie's logo is its own `safari-pinned-tab.svg`, recoloured to its own orange (it is black in the image).
|
||||
- **Recipe Importer's logo is the Felhom cloud mark** — that is what its own image ships.
|
||||
- SparkyFitness's logo was 129 KB; shrunk to 192×256 (38 KB).
|
||||
- Recipe Importer has no phone screenshot (its phone layout overflows sideways — the app's CSS).
|
||||
|
||||
## The contact mailer (C5)
|
||||
|
||||
Its source is in **no repository** (searched: `git log --all`, every repo, `find` on the workspace and home). Read from
|
||||
the running binary: one mail per form, to info@felhom.eu, Reply-To the visitor; **nothing is sent to the visitor**;
|
||||
the operator's mail is Hungarian. The English form needs no mailer change; its subject labels end in „(EN)". Filed as
|
||||
**R-902**. `documentation/audits/website-refresh-2026-10-08/mailer.md`.
|
||||
|
||||
## Gate decoys (each: mutation → the failure line the gate printed)
|
||||
|
||||
From `documentation/audits/website-refresh-2026-10-08/decoys.txt`:
|
||||
|
||||
| Decoy | Mutation | Failure line |
|
||||
|---|---|---|
|
||||
| en-nav-drift | en/technology nav „Apps" → „Applications" | `en/technology.html: <nav> differs from en/index.html` |
|
||||
| hreflang-wrong | en/faq `hreflang="en"` → /en/apps | `en/faq.html: hreflang alternates {…'en': '…/en/apps'…} — the pair gyik.html <-> en/faq.html needs exactly …` |
|
||||
| switch-wrong-twin | en/apps switch → `/` | `en/apps.html: the language switch points at '/' (lang=hu) — its twin is '/alkalmazasok'` |
|
||||
| lang-attr | en/backups `lang="hu"` | `en/backups.html: <html lang='hu'> — the English set needs lang='en'` |
|
||||
| app-missing-one-side | Radicale logo removed from en/apps | `the apps pages show DIFFERENT apps: only hu ['radicale-logo.svg']` |
|
||||
| ascii-hungarian-text | „Contact form" → „Kapcsolatfelveteli urlap" | `en/index.html: Hungarian on an English page (the Hungarian stem 'kapcsolat')` |
|
||||
| hungarian-in-script | a script status message → „Kerlek, toltsd ki…" | `en/contact.html: Hungarian on an English page (the Hungarian stem 'kerlek')` |
|
||||
| please | „Choose a topic." → „Please choose a topic." | `en/contact.html: the site does not beg` |
|
||||
| retrieval-promise | + „Every file can still be restored…" | `en/technology.html: 2 English retrieval promise(s) … against 1 in technologiak.html` |
|
||||
| faq-ld-drift | visible answer e-mail changed | `en/faq.html: the FAQPage JSON-LD (41 items) differs from the visible questions/answers` |
|
||||
| text-after-html | junk after `</html>` | `en/apps.html: text after </html>` |
|
||||
|
||||
The no-Hungarian matcher prints its controls each run: „Jelentkezz be" and „Kapcsolat" convict; „Angola… server…
|
||||
Amazon" does not.
|
||||
|
||||
## Live check (after the push, `live-check.txt`, `phone/`)
|
||||
|
||||
All 14 page URLs, `sitemap.xml` and the new assets answer 200. A wrong URL answers **404 with the new page**. `canonical`
|
||||
and `hreflang` read back correctly on `/`, `/en/`, `/alkalmazasok`, `/en/apps`. The apps page shows 57 cards (56 + the
|
||||
built-in FileBrowser) and the stat „56". At 376 px: `/`, `/en/`, `/en/apps` have scrollWidth = innerWidth = 376 (no
|
||||
sideways scroll). Method: curl for HTTP; headless Chrome on scratch guest 9202 for the phone width (no browser on DooPlex).
|
||||
|
||||
## Files, at their pushed commit
|
||||
|
||||
Commit **67b3fd23** (main): `website/{index,alkalmazasok,technologiak,biztonsagimentes,gyik,kapcsolat,letoltes,
|
||||
szolgaltatasok-nonpublic,404}.html`, `website/en/{index,apps,technology,backups,faq,contact,download}.html`,
|
||||
`website/sitemap.xml`, `website/CHANGELOG.md`, `website/assets/og-image-en.png`, 20 app assets
|
||||
(`{docmost,homebox,mealie,recipe-importer,sparkyfitness}-{logo,screenshot-1..3}`), `scripts/site_gates.py`,
|
||||
`scripts/test_gate_decoys.py`, `scripts/CHANGELOG.md`, `.claude/rules/website.md`, `skills/felhom-ui-design/SKILL.md`,
|
||||
`documentation/architecture/10-localisation.md`, `documentation/runbooks/VOLUNTEER-first-hour.md`,
|
||||
`documentation/backlog/{OPEN,CLOSED}-ITEMS.md`, `STATUS.md`, `documentation/audits/website-refresh-2026-10-08/`.
|
||||
This report, the live check and the phone screenshots: the next commit (named in the chat).
|
||||
|
||||
## Instruction-file edits (rule §5)
|
||||
|
||||
- `.claude/rules/website.md` „Gates": „added to that gate's `PAGES` list" → „registered in `TWINS` with its twin, or
|
||||
`NO_TWIN`" — the gate's structure changed. Added „The two languages" section (a proven fact + the ruling). „Copy":
|
||||
„Customer-facing copy is Hungarian" → „Hungarian first, with an English twin" — operator ruling 9.
|
||||
- `skills/felhom-ui-design/SKILL.md` line 40 „Hungarian for everything customer-facing" → „Hungarian first … with
|
||||
English beside it where the surface has a second language"; line 61 „add new pages to its PAGES list" → „TWINS /
|
||||
NO_TWIN". Both were stale.
|
||||
- No safety rule, fence or review step was loosened.
|
||||
|
||||
## Fenced work, stated
|
||||
|
||||
- 9202: five throwaway apps installed and removed by the helper (verified gone; paperless-ngx and privatebin left as
|
||||
they were); a headless-Chrome run for the phone check, its folder removed. demo-hp host: only `pct exec 9202`.
|
||||
demo-felhom, Testers, ep0: no contact. Hub: nothing. Controller, agent, catalog: read only.
|
||||
- Teardown: machine (9202 back to its baseline), host (nothing), hub (nothing).
|
||||
- Recommendation not followed: `REPORT.md` was not overwritten — another session is active in this repo (see the top).
|
||||
- R-900 (filed today by the other session) says the FAQ's GDPR answer and the „önálló modell" are the operator's to
|
||||
reword. This session cut the „önálló modell" (Part A: no row backs it) and **left the GDPR answer** as it was.
|
||||
|
||||
## Decisions for you
|
||||
|
||||
1. **SparkyFitness on the public page.** Its licence forbids commercial use without the author's permission (R-784,
|
||||
open). The box already offers it; the site now lists it with a „restricted licence" badge.
|
||||
- Keep the card until R-784 is decided. Cost: the paid service advertises it meanwhile.
|
||||
- Take the card off now. Cost: one small commit; the box still offers it.
|
||||
**Pick: take it off** — advertising is a stronger act than offering. **If you do nothing:** it stays listed.
|
||||
2. **The contact mailer's lost source (R-902).** Do you know where the February source is?
|
||||
- Yes: tell me, and I commit it to a repo.
|
||||
- No: I write a small, reviewed replacement in a later task.
|
||||
**Pick: look first** (it may be on your workstation). **If you do nothing:** the mailer works, but a node rebuild
|
||||
loses it and nobody can change it.
|
||||
@@ -120,9 +120,14 @@ Verdicts: **keep** · **fix** (wrong, corrected) · **cut** (no backing row; rem
|
||||
|
||||
## Counts
|
||||
|
||||
| Verdict | Count |
|
||||
Counted by script over the rows above (first word of the verdict cell), 78 rows:
|
||||
|
||||
| Verdict | Rows |
|
||||
|---|---|
|
||||
| keep | 37 |
|
||||
| keep | 25 (+1 "nothing to fix", P1) |
|
||||
| fix | 42 |
|
||||
| cut | 8 |
|
||||
| add | 4 (three-level backups wording counted under fix; added: careful updates, language, OS security updates, ten app cards) |
|
||||
| cut | 7 |
|
||||
| add | 3 |
|
||||
|
||||
A row can carry more than one sentence; the rows with "fix" include the added sentences listed in them
|
||||
(three backup levels, OS security updates).
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
Thu Oct 8 06:30:53 UTC 2026
|
||||
/ 200
|
||||
/alkalmazasok 200
|
||||
/technologiak 200
|
||||
/biztonsagimentes 200
|
||||
/gyik 200
|
||||
/kapcsolat 200
|
||||
/letoltes 200
|
||||
/en/ 200
|
||||
/en/apps 200
|
||||
/en/technology 200
|
||||
/en/backups 200
|
||||
/en/faq 200
|
||||
/en/contact 200
|
||||
/en/download 200
|
||||
/sitemap.xml 200
|
||||
/assets/og-image-en.png 200
|
||||
/assets/sparkyfitness-logo.png 200
|
||||
--- wrong URL
|
||||
<title>Az oldal nem található | Felhom.eu</title>
|
||||
HTTP 404
|
||||
--- hreflang/canonical
|
||||
/alkalmazasok
|
||||
<link rel="canonical" href="https://felhom.eu/alkalmazasok">
|
||||
<link rel="alternate" hreflang="hu" href="https://felhom.eu/alkalmazasok">
|
||||
<link rel="alternate" hreflang="en" href="https://felhom.eu/en/apps">
|
||||
<link rel="alternate" hreflang="x-default" href="https://felhom.eu/alkalmazasok">
|
||||
<li><a href="/en/apps" lang="en" hreflang="en" class="lang-switch">English</a></li>
|
||||
/en/apps
|
||||
<link rel="canonical" href="https://felhom.eu/en/apps">
|
||||
<link rel="alternate" hreflang="hu" href="https://felhom.eu/alkalmazasok">
|
||||
<link rel="alternate" hreflang="en" href="https://felhom.eu/en/apps">
|
||||
<link rel="alternate" hreflang="x-default" href="https://felhom.eu/alkalmazasok">
|
||||
<li><a href="/alkalmazasok" lang="hu" hreflang="hu" class="lang-switch">Magyar</a></li>
|
||||
/
|
||||
<link rel="canonical" href="https://felhom.eu/">
|
||||
<link rel="alternate" hreflang="hu" href="https://felhom.eu/">
|
||||
<link rel="alternate" hreflang="en" href="https://felhom.eu/en/">
|
||||
<link rel="alternate" hreflang="x-default" href="https://felhom.eu/">
|
||||
<li><a href="/en/" lang="en" hreflang="en" class="lang-switch">English</a></li>
|
||||
/en/
|
||||
<link rel="canonical" href="https://felhom.eu/en/">
|
||||
<link rel="alternate" hreflang="hu" href="https://felhom.eu/">
|
||||
<link rel="alternate" hreflang="en" href="https://felhom.eu/en/">
|
||||
<link rel="alternate" hreflang="x-default" href="https://felhom.eu/">
|
||||
<li><a href="/" lang="hu" hreflang="hu" class="lang-switch">Magyar</a></li>
|
||||
--- app count
|
||||
57
|
||||
<h3>56</h3>
|
||||
<h3>5</h3>
|
||||
57
|
||||
@@ -0,0 +1,4 @@
|
||||
376 px viewport, headless Chrome on 9202, live site:
|
||||
https://felhom.eu/ inner 376 scroll 376 lang hu
|
||||
https://felhom.eu/en/ inner 376 scroll 376 lang en
|
||||
https://felhom.eu/en/apps inner 376 scroll 376 lang en
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 64 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 59 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 58 KiB |
Reference in New Issue
Block a user