diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d2d0d1..bac3851 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,22 @@ getaggte Releases (Kanal `stable`, optional `beta`) — niemals Entwicklungs-Bui _Keine offenen Änderungen — der nächste Stand wird hier gesammelt und als `vX.Y.Z` getaggt._ +## [0.9.26] - 2026-06-20 + +### Hinzugefügt +- **Eigene Backup-Code-Seite im Zwei-Faktor-Login** (`/two-factor-challenge/backup`). Über den Button + „Backup-Code verwenden" auf dem Bestätigungs-Screen erreichbar; trennt den seltenen + Wiederherstellungs-Fall sauber vom Alltags-Login. + +### Geändert +- **Der 2FA-Bestätigungs-Screen zeigt nur noch die primäre Methode** (Authenticator-Code *oder* + Security-Key) — der Backup-Code ist nicht mehr inline neben der Eingabe, sondern auf der eigenen Seite. +- **Security-Key-only ohne Secure-Context** (bare-IP/HTTP, wo WebAuthn nicht läuft): der Login leitet + direkt zur Backup-Code-Seite weiter, statt einen Screen ohne nutzbare Methode zu zeigen. +- Gemeinsame Challenge-Logik (Pending-User, Brute-Force-Zähler, Login-Abschluss) in einen Trait + ausgelagert; beide Ansichten teilen denselben Topf — das Backup-Code-Rate-Limit (5/60 s pro + Nutzer+IP, 20/900 s pro Nutzer) gilt unverändert auch auf der neuen Seite. + ## [0.9.25] - 2026-06-19 ### Hinzugefügt diff --git a/config/clusev.php b/config/clusev.php index 211e1b6..90053f6 100644 --- a/config/clusev.php +++ b/config/clusev.php @@ -2,7 +2,7 @@ return [ // First tagged release is v0.1.0 (semantic, not -dev). - 'version' => '0.9.25', + 'version' => '0.9.26', // Deployed commit + branch. install.sh bakes these into .env from the host's .git (the prod // image ships no .git); the Versions page prefers them and falls back to a live .git read in