diff --git a/controller/internal/i18n/locales/en.json b/controller/internal/i18n/locales/en.json index fc4ec40..ee14e93 100644 --- a/controller/internal/i18n/locales/en.json +++ b/controller/internal/i18n/locales/en.json @@ -194,7 +194,7 @@ "backups.a_kijeloles_nem_sikerult": "The drive could not be assigned:", "backups.a_meghajto_kijelolve": "The drive is assigned.", "backups.a_meghajto_kijelolve_a_beallitas": "The drive is assigned. The setting takes effect after the host agent next restarts.", - "backups.a_mentes_alatt_az_alkalmazasok": "Every app stops for as long as the full system backup takes. That means minutes, not seconds: about 6 minutes on a box with 9 apps, about 8 minutes on a box with 12 — longer with more data, and longer when the off-site copy is made in the same run.", + "backups.a_mentes_alatt_az_alkalmazasok": "Every app stops briefly for the backup: about 1–1.5 minutes, longer with more apps. Then the apps run again while the copy finishes. This button makes the local copy; the off-site copy follows with the next nightly backup.", "backups.a_mentes_sikertelen": "The backup failed.", "backups.a_mentesek_egymas_utan_futnak": "The backups run one after the other: database backup, local copy, remote backup, then the full system backup.", "backups.a_rendszermentes_elkeszult": "The system backup is done.", @@ -208,7 +208,7 @@ "backups.beagyazott_db_k_a_kotetmentesben": "embedded databases, inside the volume backup", "backups.biztonsagi_mentes": "Backup", "backups.db_mentesek": "Database backups", - "backups.elinditod_a_teljes_rendszermentest_most": "Start the full system backup now? Every app stops for as long as the full system backup takes. That means minutes, not seconds: about 6 minutes on a box with 9 apps, about 8 minutes on a box with 12 — longer with more data, and longer when the off-site copy is made in the same run.", + "backups.elinditod_a_teljes_rendszermentest_most": "Start the full system backup now? Every app stops briefly for the backup: about 1–1.5 minutes, longer with more apps. Then the apps run again while the copy finishes. This button makes the local copy; the off-site copy follows with the next nightly backup.", "backups.esedekes": "Due", "backups.fajl": "{{$n := len .Backup.DumpFiles}}{{$n}} {{if eq $n 1}}file{{else}}files{{end}}", "backups.helyi_masolat": "Local copy: {{.BackupLegTier2}}", diff --git a/controller/internal/i18n/locales/hu.json b/controller/internal/i18n/locales/hu.json index b7109cb..600bc22 100644 --- a/controller/internal/i18n/locales/hu.json +++ b/controller/internal/i18n/locales/hu.json @@ -190,7 +190,7 @@ "backups.a_kijeloles_nem_sikerult": "A kijelölés nem sikerült:", "backups.a_meghajto_kijelolve": "A meghajtó kijelölve.", "backups.a_meghajto_kijelolve_a_beallitas": "A meghajtó kijelölve. A beállítás a host-ügynök következő újraindulása után lép életbe.", - "backups.a_mentes_alatt_az_alkalmazasok": "A mentés alatt minden alkalmazás leáll, amíg a teljes rendszer mentése tart. Ez perceket jelent, nem másodperceket: egy 9 alkalmazásos gépen kb. 6 perc, egy 12 alkalmazásos gépen kb. 8 perc volt — több adatnál, és ha a távoli másolat is ugyanekkor készül, tovább.", + "backups.a_mentes_alatt_az_alkalmazasok": "Mentés közben minden alkalmazás rövid időre leáll: kb. 1–1,5 percre, több alkalmazásnál tovább. Utána újra futnak, amíg a másolás befejeződik. A gomb a helyi másolatot készíti el; a távoli másolat a következő éjszakai mentéssel készül.", "backups.a_mentes_sikertelen": "A mentés sikertelen.", "backups.a_mentesek_egymas_utan_futnak": "A mentések egymás után futnak: adatbázis-mentés, helyi másolat, távoli mentés, majd a teljes rendszermentés.", "backups.a_rendszermentes_elkeszult": "A rendszermentés elkészült.", @@ -204,7 +204,7 @@ "backups.beagyazott_db_k_a_kotetmentesben": "beágyazott DB-k a kötetmentésben", "backups.biztonsagi_mentes": "Biztonsági mentés", "backups.db_mentesek": "DB mentések", - "backups.elinditod_a_teljes_rendszermentest_most": "Elindítod a teljes rendszermentést most? A mentés alatt minden alkalmazás leáll, amíg a teljes rendszer mentése tart. Ez perceket jelent, nem másodperceket: egy 9 alkalmazásos gépen kb. 6 perc, egy 12 alkalmazásos gépen kb. 8 perc volt — több adatnál, és ha a távoli másolat is ugyanekkor készül, tovább.", + "backups.elinditod_a_teljes_rendszermentest_most": "Elindítod a teljes rendszermentést most? Mentés közben minden alkalmazás rövid időre leáll: kb. 1–1,5 percre, több alkalmazásnál tovább. Utána újra futnak, amíg a másolás befejeződik. A gomb a helyi másolatot készíti el; a távoli másolat a következő éjszakai mentéssel készül.", "backups.esedekes": "Esedékes", "backups.fajl": "{{len .Backup.DumpFiles}} fájl", "backups.helyi_masolat": "Helyi másolat: {{.BackupLegTier2}}", diff --git a/controller/internal/web/r518_backup_downtime_copy_test.go b/controller/internal/web/r518_backup_downtime_copy_test.go index f8bc6b2..03dd517 100644 --- a/controller/internal/web/r518_backup_downtime_copy_test.go +++ b/controller/internal/web/r518_backup_downtime_copy_test.go @@ -5,10 +5,18 @@ import ( "testing" ) -// R-518 — the whole-system backup button promised a short stop; measured 2026-09-14 on a 12-app box, -// every app was down for about 7 m 45 s. The copy now states that measurement, in both languages, on -// the page and in the confirm dialog. ASCII fragments only (ui-hungarian rule), each with a control. -func TestR518_BackupButtonStatesTheMeasuredDowntime(t *testing.T) { +// R-518 — the whole-system backup button's copy, in both languages, on the page AND in the confirm. +// +// History: the button first promised a short stop; measured 2026-09-14 (12 apps) every app was down for +// about 7 m 45 s, and v0.296.0 stated the measurements (≈6 min / 9 apps, ≈8 min / 12 apps). Since +// `09` §3 decision 156 (R-518 option A) the press backs up the LOCAL copy only and resumes the apps at +// its snapshot, so the stop is short again (≈80 s inferred on demo-hp: stop 21 s + snapshot ≤12 s + +// restart 46 s) and the off-site copy follows at the next night run. The copy says exactly that, and +// the old minutes — now untrue for a press — must be gone. +// +// ASCII fragments only (ui-hungarian rule). The positive fragments double as the control for the +// negative ones: they prove the body searched actually carries the button's copy. +func TestR518_BackupButtonStatesTheShortLocalOnlyStop(t *testing.T) { s := i18nTestServer(t) var c i18nCase for _, x := range i18nCases() { @@ -21,23 +29,21 @@ func TestR518_BackupButtonStatesTheMeasuredDowntime(t *testing.T) { } for _, lang := range []string{"hu", "en"} { body := renderI18nCase(t, s, lang, c) - // v0.296.0: BOTH measurements — 2026-09-14 (12 apps, ≈8 min) and 2026-10-05 on demo-hp (9 apps, 5 min 47 s, - // audits/hub-safety-2026-10-05/partE/r518-measure.txt) — and that it is minutes, not seconds. - measured := []string{"kb. 6 perc", "kb. 8 perc", "nem másodperceket"} - vague := "" + want := []string{"1,5 perc", "A gomb a helyi m", "jszakai ment"} + gone := []string{"6 perc", "8 perc", "ugyanekkor k"} if lang == "en" { - measured, vague = []string{"about 6 minutes", "about 8 minutes", "not seconds"}, "usually for a few minutes" + want = []string{"1.5 minutes", "This button makes the local copy", "next nightly backup"} + gone = []string{"6 minutes", "8 minutes", "in the same run"} } - for _, m := range measured { + for _, m := range want { if n := strings.Count(body, m); n < 2 { t.Errorf("%s: %q appears %d times, want it on the page AND in the confirm", lang, m, n) } } - if lang == "en" && strings.Contains(body, vague) { - t.Errorf("en: the old vague promise %q is still on the page", vague) - } - if lang == "hu" && strings.Contains(body, "ltalában néhány perc, nagyobb") { - t.Errorf("hu: the old vague promise is still on the page") + for _, m := range gone { + if strings.Contains(body, m) { + t.Errorf("%s: the old copy %q is still on the page — a press no longer stops the apps for minutes or makes the off-site copy", lang, m) + } } } } diff --git a/controller/internal/web/testdata/i18n_parity/backups_degraded.html b/controller/internal/web/testdata/i18n_parity/backups_degraded.html index beee4a3..41d1177 100644 --- a/controller/internal/web/testdata/i18n_parity/backups_degraded.html +++ b/controller/internal/web/testdata/i18n_parity/backups_degraded.html @@ -268,7 +268,7 @@ function triggerGuestBackup() { var btn = document.getElementById('wg-backup-btn'); - felhomConfirm(btn, 'Elindítod a teljes rendszermentést most? A mentés alatt minden alkalmazás leáll, amíg a teljes rendszer mentése tart. Ez perceket jelent, nem másodperceket: egy 9 alkalmazásos gépen kb. 6 perc, egy 12 alkalmazásos gépen kb. 8 perc volt — több adatnál, és ha a távoli másolat is ugyanekkor készül, tovább.', function () { + felhomConfirm(btn, 'Elindítod a teljes rendszermentést most? Mentés közben minden alkalmazás rövid időre leáll: kb. 1–1,5 percre, több alkalmazásnál tovább. Utána újra futnak, amíg a másolás befejeződik. A gomb a helyi másolatot készíti el; a távoli másolat a következő éjszakai mentéssel készül.', function () { var out = document.getElementById('wg-backup-result'); btn.disabled = true; out.innerHTML = 'Mentés indítása…'; diff --git a/controller/internal/web/testdata/i18n_parity/backups_empty.html b/controller/internal/web/testdata/i18n_parity/backups_empty.html index 298b906..a67fa42 100644 --- a/controller/internal/web/testdata/i18n_parity/backups_empty.html +++ b/controller/internal/web/testdata/i18n_parity/backups_empty.html @@ -197,7 +197,7 @@ function triggerGuestBackup() { var btn = document.getElementById('wg-backup-btn'); - felhomConfirm(btn, 'Elindítod a teljes rendszermentést most? A mentés alatt minden alkalmazás leáll, amíg a teljes rendszer mentése tart. Ez perceket jelent, nem másodperceket: egy 9 alkalmazásos gépen kb. 6 perc, egy 12 alkalmazásos gépen kb. 8 perc volt — több adatnál, és ha a távoli másolat is ugyanekkor készül, tovább.', function () { + felhomConfirm(btn, 'Elindítod a teljes rendszermentést most? Mentés közben minden alkalmazás rövid időre leáll: kb. 1–1,5 percre, több alkalmazásnál tovább. Utána újra futnak, amíg a másolás befejeződik. A gomb a helyi másolatot készíti el; a távoli másolat a következő éjszakai mentéssel készül.', function () { var out = document.getElementById('wg-backup-result'); btn.disabled = true; out.innerHTML = 'Mentés indítása…'; diff --git a/controller/internal/web/testdata/i18n_parity/backups_full.html b/controller/internal/web/testdata/i18n_parity/backups_full.html index 70d2d69..23c227a 100644 --- a/controller/internal/web/testdata/i18n_parity/backups_full.html +++ b/controller/internal/web/testdata/i18n_parity/backups_full.html @@ -341,7 +341,7 @@