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
parent
fd3834731e
commit
02741539ca
18
CHANGELOG.md
18
CHANGELOG.md
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue