diff --git a/REPORT.md b/REPORT.md index 4f3b363..7cdb268 100644 --- a/REPORT.md +++ b/REPORT.md @@ -1,109 +1,110 @@ -# REPORT — controller v0.247.0: the i18n spike — English on three pages, Hungarian byte-identical +# REPORT — localisation slice 1 (R-556): the whole dashboard in English, Hungarian byte-identical -**Date:** 2026-09-17 · **Task:** localisation starter (spike + design), Phase 1 · **Baseline:** `main` -`89dd3e94b1de` (v0.246.0, MinAgent 0.131.0) · **Released:** `612c417` → image -`gitea.dooplex.hu/admin/felhom-controller:0.247.0` · **MinAgent:** 0.131.0 (unchanged). -**Architecture read before any claim:** `felhom.eu/documentation/architecture/02-controller-module-map.md` -(templates, setup wizard obsolete) and `05-hub-architecture.md` (report ingestion, config push). -**Design written after the spike ran:** `felhom.eu/documentation/architecture/10-localisation.md`. -**Inventory:** `felhom.eu/documentation/audits/I18N-INVENTORY-2026-09-17.md`. +**Date:** 2026-09-17 · **Releases:** v0.248.0 (`ff68b0b`, apps and settings), v0.249.0 (`11b790e`, backups), +**v0.250.0** (`ac149c2` + `be2efe5`, storage, sharing, sign-in, guest, catch-all, debug, the switch for +everyone) · **MinAgent:** 0.131.0 (unchanged) · **Baseline of the slice:** v0.247.0. +**Architecture read before any claim:** `felhom.eu/documentation/architecture/10-localisation.md` +(updated: §2.2, §2.3, §3 decision 6 SUPERSEDED, §5, §10, §11), `02-controller-module-map.md`. +**Evidence:** `felhom.eu/documentation/audits/i18n-slice1-2026-09-17/{A,B,C}/`. -## Claims in the brief that turned out wrong — named first +## Claims in the prompt that turned out wrong — named first -The brief named four already. Further ones (details and methods in the inventory §0): +1. **Per-page Hungarian line counts** did not reproduce (debug 92 accented lines, not 103; monitoring 48, + not 72; others differ the same way). +2. **Marker counts of the v0.247.0 pages** — measured layout 105, backups 59, app_info 58, launcher 28; + the prompt said 95 / 52 / 48 / 25. +3. **"Templates decide nothing by Hungarian wording"** is false: `backups_remote.html` runs + `indexOf('Fut')` on its own status text. The prompt's sweep checked only `==`, `===` and `case`. + The word stays Hungarian (R-563). +4. **The list of unconverted copy omitted `backups_shared` `restore_banner_js`** — it was still + Hungarian after v0.247.0; converted in B. +5. **"Six direct-render pages"** — confirmed, not wrong: login, claim, recovery, launcher_shared, + launcher_share_password, catchall. No seventh `s.tmpl` render exists now. -1. **„`fmtTime`, `fmtBytes`, `timeAgo` do not exist; `fmtMB` is the one size helper"** — all three - exist (`internal/web/funcmap.go` L265/L318/L403), plus nine more copy- or locale-producing helpers - and four size helpers. `timeAgo` builds „%d perce" — the plural problem lives there. -2. **„`fmtMB` used 10× in templates"** — 8×. -3. **„~13 `.Format(` layout calls in `internal/web`"** — 10 at the baseline (plus 8 `time.RFC3339`). -4. **Template lines 1 613 / 1 838** — 1 553, by two methods; neither figure reproduced by four variants. -5. **Go literals 1 234 in 99 files** — 1 141 in 84 (a lexer, comments skipped); comments explain most of - the difference. -6. **Banner 33 lines** — 34 once ASCII-only Hungarian words count (method difference). +## Per-page table — all 31 templates -## What shipped +Markers = `{{T}}` occurrences today. States = parity fixture cases rendering the page (captured from the +unconverted template first). -- **Mechanism (b), expanded at template LOAD:** `internal/i18n` (`Bundle`, `Expand`, `Msg`, `Plural`, - embedded `locales/hu.json` + `en.json`). `loadTemplates` parses one template set per language via - `parseTemplateSet` (= `ParseFS` + `Expand`); `s.tmpl` stays Hungarian. Why not a runtime `T` func: the - escaper changes `+ ' "` bytes and 618 of 1 867 template strings are inside `