From 02741539ca020fa5c7c8def06434ae584f93458f Mon Sep 17 00:00:00 2001 From: boban Date: Mon, 15 Jun 2026 19:02:27 +0200 Subject: [PATCH] chore(release): v0.9.1 UI: system-page redesign, full-width lone firewall/fail2ban panel, mobile-scrollable settings tabs, instant lazy fail2ban-bans modal, file-manager image preview. Auth: SMTP-aware forgot-password (15-min link + 2FA fallback), Security-Keys copy fix, backup codes show-once. Security hardening: signed single-use confirm-action tokens; airtight backup-code reveal (transient, snapshot-replay-proof, grant-gated download). Co-Authored-By: Claude Opus 4.8 (1M context) --- CHANGELOG.md | 18 ++++++++++++++---- config/clusev.php | 2 +- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 99e13f6..38ec12c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ getaggte Releases (Kanal `stable`, optional `beta`) — niemals Entwicklungs-Bui ## [Unreleased] +_Keine offenen Änderungen — der nächste Stand wird hier gesammelt und als `vX.Y.Z` getaggt._ + +## [0.9.1] - 2026-06-15 + ### Geändert - **Passwort-vergessen ist jetzt SMTP-bewusst.** Mit konfiguriertem SMTP ist der Standard ein **E-Mail-Reset-Link (15 Minuten gültig)**; ein Zweit-Schalter „Kein E-Mail-Zugang? Mit 2FA-Code @@ -24,10 +28,16 @@ getaggte Releases (Kanal `stable`, optional `beta`) — niemals Entwicklungs-Bui interner 2-Spalten-Aufteilung (kein leerer Raum mehr); zwei Boxen weiterhin nebeneinander. ### Sicherheit -- **Backup-Codes nur einmal sichtbar.** Codes werden ausschließlich direkt nach der Erzeugung - (erster Faktor oder „Neu erzeugen") angezeigt — „Backup-Codes verwalten" zeigt sie NICHT mehr an, - sondern bietet nur noch „Neu erzeugen". Serverseitig gated (`#[Locked]` + Einmal-Flags), und der - Download-Endpunkt verlangt jetzt eine frische Berechtigung statt jederzeitigen Zugriffs. +- **Backup-Codes nur einmal sichtbar — wasserdicht.** Codes werden ausschließlich direkt nach der + Erzeugung (erster Faktor oder „Neu erzeugen") angezeigt; „Backup-Codes verwalten" zeigt sie NICHT + mehr an, sondern bietet nur „Neu erzeugen". Der Reveal läuft über einen transienten Kanal (nicht über + eine persistierte Livewire-Property), sodass ein abgefangener/replayter Snapshot sie nicht erneut + rendert; das Reveal-Flag hat eine 10-Minuten-TTL, und der Download-Endpunkt verlangt eine frische, + einmalige Berechtigung. +- **Bestätigungs-Dialoge signiert & einmalig.** Destruktive Aktionen (Konto/Session/2FA/Hardening/…) + laufen über server-ausgestellte, einmal gültige, signierte Tokens statt client-manipulierbarer + Event-/Audit-Felder — Bestätigungs-Bypass und Audit-Fälschung sind ausgeschlossen; per-Aktion + server-seitig auf das Ziel beschränkt. ### Behoben - **fail2ban „Gesperrte IPs"-Modal öffnet sofort** — Skeleton + Lazy-Load statt blockierendem diff --git a/config/clusev.php b/config/clusev.php index 836143c..7982c6e 100644 --- a/config/clusev.php +++ b/config/clusev.php @@ -3,7 +3,7 @@ return [ // First tagged release is v0.1.0 (semantic, not -dev). The live build hash // is resolved from .git at runtime (see App\Livewire\Versions\Index). - 'version' => '0.9.0', + 'version' => '0.9.1', // Default user channel. Only 'stable' and 'beta' are ever offered to users. 'channel' => 'stable',