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
parent
197e6f7e49
commit
7faa5c7d00
20
CHANGELOG.md
20
CHANGELOG.md
|
|
@ -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._
|
_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
|
## [0.4.6] - 2026-06-14
|
||||||
|
|
||||||
### Behoben
|
### Behoben
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
return [
|
return [
|
||||||
// First tagged release is v0.1.0 (semantic, not -dev). The live build hash
|
// 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).
|
// 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.
|
// Default user channel. Only 'stable' and 'beta' are ever offered to users.
|
||||||
'channel' => 'stable',
|
'channel' => 'stable',
|
||||||
|
|
|
||||||
|
|
@ -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`
|
- `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
|
forces 16px on `input`/`textarea`/`select` on touch devices (phone + tablet any size), desktop
|
||||||
sizing unchanged.
|
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
|
- `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.
|
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`,
|
- `v0.4.5` — branding: full favicon/PWA set (`public/favicon.*`, `icon-192/512`,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue