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) <noreply@anthropic.com>
feat/v1-foundation v0.9.1
boban 2026-06-15 19:02:27 +02:00
parent fd3834731e
commit 02741539ca
2 changed files with 15 additions and 5 deletions

View File

@ -11,6 +11,10 @@ getaggte Releases (Kanal `stable`, optional `beta`) — niemals Entwicklungs-Bui
## [Unreleased] ## [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 ### Geändert
- **Passwort-vergessen ist jetzt SMTP-bewusst.** Mit konfiguriertem SMTP ist der Standard ein - **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 **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. interner 2-Spalten-Aufteilung (kein leerer Raum mehr); zwei Boxen weiterhin nebeneinander.
### Sicherheit ### Sicherheit
- **Backup-Codes nur einmal sichtbar.** Codes werden ausschließlich direkt nach der Erzeugung - **Backup-Codes nur einmal sichtbar — wasserdicht.** Codes werden ausschließlich direkt nach der
(erster Faktor oder „Neu erzeugen") angezeigt — „Backup-Codes verwalten" zeigt sie NICHT mehr an, Erzeugung (erster Faktor oder „Neu erzeugen") angezeigt; „Backup-Codes verwalten" zeigt sie NICHT
sondern bietet nur noch „Neu erzeugen". Serverseitig gated (`#[Locked]` + Einmal-Flags), und der mehr an, sondern bietet nur „Neu erzeugen". Der Reveal läuft über einen transienten Kanal (nicht über
Download-Endpunkt verlangt jetzt eine frische Berechtigung statt jederzeitigen Zugriffs. 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 ### Behoben
- **fail2ban „Gesperrte IPs"-Modal öffnet sofort** — Skeleton + Lazy-Load statt blockierendem - **fail2ban „Gesperrte IPs"-Modal öffnet sofort** — Skeleton + Lazy-Load statt blockierendem

View File

@ -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.9.0', 'version' => '0.9.1',
// 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',