From c696950f250fb342a1d8d24c4d41959fd2d40632 Mon Sep 17 00:00:00 2001 From: boban Date: Mon, 22 Jun 2026 23:56:09 +0200 Subject: [PATCH] feat(release): localized strings + audit labels for staging releases Co-Authored-By: Claude Opus 4.8 --- app/Models/AuditEvent.php | 2 +- lang/de/audit.php | 2 ++ lang/de/release.php | 21 +++++++++++++++++++++ lang/en/audit.php | 2 ++ lang/en/release.php | 21 +++++++++++++++++++++ 5 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 lang/de/release.php create mode 100644 lang/en/release.php diff --git a/app/Models/AuditEvent.php b/app/Models/AuditEvent.php index b501fe4..9e0d4d9 100644 --- a/app/Models/AuditEvent.php +++ b/app/Models/AuditEvent.php @@ -35,7 +35,7 @@ class AuditEvent extends Model /** Actions that record a failure or security event — surfaced with a warning style. */ private const ERROR_ACTIONS = [ 'auth.login_failed', 'auth.2fa_failed', 'auth.ip_banned', - 'fail2ban.ban', 'wg.action-failed', + 'fail2ban.ban', 'wg.action-failed', 'deploy.staging_release_failed', ]; /** diff --git a/lang/de/audit.php b/lang/de/audit.php index 6cd74ce..a7729fe 100644 --- a/lang/de/audit.php +++ b/lang/de/audit.php @@ -40,6 +40,8 @@ return [ 'auth.ip_unbanned' => 'IP-Sperre aufgehoben', 'auth.protection_updated' => 'Anmeldeschutz geändert', 'deploy.update_request' => 'Update angefordert', + 'deploy.staging_release' => 'Staging-Release angefordert', + 'deploy.staging_release_failed' => 'Staging-Release fehlgeschlagen', 'fail2ban.ban' => 'fail2ban: IP gesperrt', 'fail2ban.unban' => 'fail2ban: IP entsperrt', 'fail2ban.configure' => 'fail2ban konfiguriert', diff --git a/lang/de/release.php b/lang/de/release.php new file mode 100644 index 0000000..95c0767 --- /dev/null +++ b/lang/de/release.php @@ -0,0 +1,21 @@ + 'Release', + 'nav' => 'Release', + 'heading' => 'Release-Steuerung', + 'subtitle' => 'Beta auf Staging schneiden — nur auf der Dev-Instanz.', + 'current' => 'Aktuelle Version', + 'continue_beta' => 'Nächste Beta (:v)', + 'bump_patch' => 'Patch-Beta (:v)', + 'bump_minor' => 'Minor-Beta (:v)', + 'bump_major' => 'Major-Beta (:v)', + 'hint' => 'Schneidet einen Beta-Tag und pusht ihn nach Gitea → Mirror → CI → Staging.', + 'running' => 'Beta :target wird geschnitten und gepusht …', + 'staged' => 'Beta :tag gepusht → Mirror → CI → Staging.', + 'failed' => 'Release fehlgeschlagen: :reason', + 'invalid_target' => 'Ungültige Ziel-Version.', + 'throttled' => 'Zu viele Versuche — in :seconds s erneut.', + 'write_failed' => 'Anfrage konnte nicht geschrieben werden (Signal-Ordner nicht beschreibbar).', + 'no_host_response' => 'Keine Antwort vom Host. Läuft der Release-Watcher?', +]; diff --git a/lang/en/audit.php b/lang/en/audit.php index 7665da0..d95373d 100644 --- a/lang/en/audit.php +++ b/lang/en/audit.php @@ -40,6 +40,8 @@ return [ 'auth.ip_unbanned' => 'IP ban lifted', 'auth.protection_updated' => 'Login protection changed', 'deploy.update_request' => 'Update requested', + 'deploy.staging_release' => 'Staging release requested', + 'deploy.staging_release_failed' => 'Staging release failed', 'fail2ban.ban' => 'fail2ban: IP banned', 'fail2ban.unban' => 'fail2ban: IP unbanned', 'fail2ban.configure' => 'fail2ban configured', diff --git a/lang/en/release.php b/lang/en/release.php new file mode 100644 index 0000000..9a20d1c --- /dev/null +++ b/lang/en/release.php @@ -0,0 +1,21 @@ + 'Release', + 'nav' => 'Release', + 'heading' => 'Release control', + 'subtitle' => 'Cut a staging beta — dev instance only.', + 'current' => 'Current version', + 'continue_beta' => 'Next beta (:v)', + 'bump_patch' => 'Patch beta (:v)', + 'bump_minor' => 'Minor beta (:v)', + 'bump_major' => 'Major beta (:v)', + 'hint' => 'Cuts a beta tag and pushes it to Gitea → mirror → CI → staging.', + 'running' => 'Cutting and pushing beta :target …', + 'staged' => 'Beta :tag pushed → mirror → CI → staging.', + 'failed' => 'Release failed: :reason', + 'invalid_target' => 'Invalid target version.', + 'throttled' => 'Too many attempts — retry in :seconds s.', + 'write_failed' => 'Could not write the request (signal directory not writable).', + 'no_host_response' => 'No response from the host. Is the release watcher running?', +];