chore(release): v0.5.0

Account recovery: 2FA backup codes (show-once/download/regenerate, usable at the
login challenge), forgot-password via 2FA or backup code (email link gated on a
configured mailer), and a clusev:reset-admin CLI lockout fallback. Resets rotate
remember_token; codes consumed atomically. WebAuthn/YubiKey remains a Phase-2
spec. See CHANGELOG.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat/v1-foundation v0.5.0
boban 2026-06-14 17:14:47 +02:00
parent 197e6f7e49
commit 7faa5c7d00
3 changed files with 27 additions and 1 deletions

View File

@ -13,6 +13,26 @@ 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.5.0] - 2026-06-14
### Hinzugefügt
- **Kontowiederherstellung.**
- **2FA-Backup-Codes:** 8 Einmal-Codes werden bei der 2FA-Einrichtung erzeugt, einmalig
angezeigt und als `.txt` herunterladbar; in den Einstellungen (Sicherheit) neu erzeugbar.
Beim Login-2FA-Schritt als Alternative zum Authenticator-Code verwendbar.
- **„Passwort vergessen":** Reset über einen 2FA-Code oder Backup-Code (ohne E-Mail nötig).
Zusätzlich ein E-Mail-Reset-Link, sobald ein echter Mailer konfiguriert ist
(`mail.default` ≠ `log`/`array`).
- **CLI-Notfall:** `php artisan clusev:reset-admin` setzt das Admin-Passwort (und optional 2FA
+ Backup-Codes) per Server-Shell zurück — der Last-Resort bei kompletter Aussperrung.
### Sicherheit
- Passwort-Resets (Formular, E-Mail-Link, CLI) rotieren das `remember_token` — eine gestohlene
„Angemeldet bleiben"-Cookie überlebt einen Reset nicht.
- Backup-Codes werden atomar (Row-Lock) verbraucht (kein Replay).
- Der Notify-Toaster liegt jetzt auch auf den Auth-Seiten; alle Reset-/Backup-Aktionen werden im
Audit-Log erfasst.
## [0.4.6] - 2026-06-14
### Behoben

View File

@ -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.4.6',
'version' => '0.5.0',
// Default user channel. Only 'stable' and 'beta' are ever offered to users.
'channel' => 'stable',

View File

@ -25,6 +25,12 @@ original foundational decisions doc (do not overwrite it).
- `v0.4.4` — stop iOS zoom-on-focus: one unlayered `@media (pointer: coarse)` rule in `app.css`
forces 16px on `input`/`textarea`/`select` on touch devices (phone + tablet any size), desktop
sizing unchanged.
- `v0.5.0`**account recovery** (spec/plan in `docs/superpowers/`): 2FA backup codes
(encrypted, shown once + downloadable + regenerable, usable at the login challenge),
forgot-password via 2FA/backup code (email-link path gated on a configured mailer), and a
`clusev:reset-admin` CLI lockout fallback. Resets rotate `remember_token`; codes consumed
atomically. **Phase 2 still open: WebAuthn/YubiKey** as a login factor (needs `laragear/webauthn`,
JS ceremonies, HTTPS/domain) — own spec.
- `v0.4.6` — bilingual input validation: added `lang/{de,en}/validation.php` (full Laravel 13
key set + localized `attributes`); previously all field-validation errors were English-only.
- `v0.4.5` — branding: full favicon/PWA set (`public/favicon.*`, `icon-192/512`,