# RELEASE_CONTENTS.md – ITSWEBER CMS v3.1.3

## Zweck

Dokumentation des aktuellen Release-Stands v3.1.3 für Endnutzer und Betreiber des ITSWEBER CMS.

---

## Release-Dateien

| Artefakt | Datei | Pfad |
|---|---|---|
| **Voll-Release 3.1.3** | `ITSWEBER_CMS_v3.1.3.zip` | `artifacts/releases/` |

### Installationspfad

**Frische Neuinstallation:** `ITSWEBER_CMS_v3.1.3.zip` entpacken, Document Root auf `public/` setzen, `/installer` im Browser aufrufen. Der Installer führt durch 7 Schritte (Systemcheck, Datenbank, Tabellen, Admin-Benutzer, Site-Setup, Mail-Konfiguration, Abschluss). Nach der Installation: Themes und Plugins über den Admin-Bereich nachinstallieren.

---

## Enthaltene Hauptgruppen (Core-Release-Basis)

| Pfad | Beschreibung |
|---|---|
| `app/` | Core-Logik, Models, Services, HTTP-Layer, Config, Helpers |
| `admin/` | Admin-Backend (Controller, Views, Assets) |
| `installer/` | Web-Installer (Views, Assets) |
| `public/` | Document Root – einziger per Webserver erreichbarer Bereich |
| `themes/` | Core-Themes: default (1.0.2), business (1.0.2), creative (1.0.2) |
| `database/migrations/` | PHP-Migrationen (001–021) |
| `storage/` | Laufzeit-Verzeichnisstruktur (Cache, Logs, Sessions, Temp) |
| `database/seeds/` | Default-Daten und Starter-Content-Seeds |
| `README.md` | Installations- und Betriebsdokumentation |

---

## Bewusst ausgeschlossene Inhalte

| Ausgeschlossen | Grund |
|---|---|
| `themes/itsweber/` | Premium-Theme, separat bereitgestellt (in `projects/itsweber.de/artifacts/themes/`) |
| `themes/roterkaul/` | Premium-Theme, separat bereitgestellt (in `projects/roterkaul.de/artifacts/themes/`) |
| `themes/lackhexe/` | Premium-Theme, separat bereitgestellt (in `projects/lackhexe.com/artifacts/themes/`) |
| `public/themes/itsweber/` | Public-Asset-Spiegel des ITSWEBER-Themes – separat |
| `public/themes/roterkaul/` | Public-Asset-Spiegel des Roterkaul-Themes – separat |
| `public/themes/lackhexe/` | Public-Asset-Spiegel des Lackhexe-Themes – separat |
| `plugins/` | Plugins sind separate Artefakte, nicht vorinstalliert |
| `public/plugins/` | Plugin-Assets – separat ausgeliefert |
| `artifacts/` | Entwicklungs- und Release-Artefakte, kein Betriebsinhalt |
| `docs/` | Kompletter Ordner – interne Architektur-/Entwicklungsdoku |
| `_archive/` | Interne Entwicklungsarchive |
| `CLAUDE.md` | Interne Arbeitsanweisung |
| `tools/` | Entwicklerwerkzeuge – kein Betriebsinhalt |
| `sync-assets.sh` | Entwickler-Asset-Sync-Skript – kein Betriebsinhalt |
| `projects/` | Aktive Kundenprojekte – kein Betriebsinhalt |
| `.git/` | Versionskontrollverzeichnis |
| OS-Artefakte (`.DS_Store`, `Thumbs.db`) | Werden beim Packen übersprungen |
| Cache-, Session- und Log-Inhalte | Nur leere Verzeichnisstruktur wird ausgeliefert |

---

## Laufzeit- und Schreibverzeichnisse (vorbereitet, leer)

`storage/cache/`, `storage/logs/`, `storage/sessions/`, `storage/temp/`,
`public/uploads/`, `public/uploads/blog/`, `public/uploads/gallery/`,
`public/uploads/downloads/`, `public/uploads/brand/`, `public/uploads/brand/thumbs/`

---

## Separat verfügbare Artefakte

| Artefakt | Pfad |
|---|---|
| ITSWEBER Premium-Theme 3.0.8 | `projects/itsweber.de/artifacts/themes/itsweber-theme-3.0.8.zip` |
| Roterkaul Premium-Theme 1.3.6 | `projects/roterkaul.de/artifacts/themes/roterkaul-theme-1.3.6.zip` |
| Lackhexe Premium-Theme 1.0.6 | `projects/lackhexe.com/artifacts/themes/lackhexe-theme-1.0.6.zip` |
| ReifenService-Kuhn Premium-Theme 1.0.4 | `projects/reifenservice-kuhn.de/artifacts/themes/reifenservice-kuhn-premium-theme-1.0.4.zip` |
| Video-Section-Plugin 1.0.1 | `artifacts/plugins/video-section-plugin-1.0.1.zip` |
| HTML-Section-Plugin 1.0.1 | `artifacts/plugins/html-section-plugin-1.0.1.zip` |
| Team-Section-Plugin 1.0.1 | `artifacts/plugins/team-section-plugin-1.0.1.zip` |
| Site-Notice-Plugin 1.0.0 | `artifacts/plugins/site-notice-plugin-1.0.0.zip` |
| Feature-Showcase-Section-Plugin 1.0.0 | `artifacts/plugins/feature-showcase-section-plugin-1.0.0.zip` |
| Process-Steps-Section-Plugin 1.0.0 | `artifacts/plugins/process-steps-section-plugin-1.0.0.zip` |
| Rating-Highlight-Section-Plugin 1.0.0 | `artifacts/plugins/rating-highlight-section-plugin-1.0.0.zip` |
| Service-Cards-Section-Plugin 1.0.0 | `artifacts/plugins/service-cards-section-plugin-1.0.0.zip` |
| Trust-Showcase-Section-Plugin 1.0.0 | `artifacts/plugins/trust-showcase-section-plugin-1.0.0.zip` |
| Before/After-Comparison-Section-Plugin 1.0.3 | `artifacts/plugins/before-after-section-plugin-1.0.3.zip` |
| Social-Embed-Section-Plugin 1.0.1 | `artifacts/plugins/social-embed-section-plugin-1.0.1.zip` |

---

## Neu in Version 3.1.3 (gegenüber 3.1.2)

### Qualitaets- und Vollstaendigkeitsrelease (3.1.3)

**Admin JS Internationalisierung:**
- Neu: `window.iwT` Translations-System fuer admin.js
- 17 neue JS-Translation-Keys in DE/EN (`admin.js.*`)
- Alle 30 hardcodierten Strings in admin.js durch Translation-Lookups ersetzt
- Keine gemischten DE/EN Strings mehr in der Admin-Oberflaeche

**Installer CSRF-Schutz:**
- Fix: Alle 5 Installer-POST-Formulare (Step 1, 3, 4, 5, 6) haben jetzt CSRF-Token-Felder
- Fix: `processStep()` und `setLanguage()` validieren CSRF-Tokens

**Migrations-Tracking:**
- Neu: `iw_migrations` Tabelle wird automatisch erstellt
- Migrator ueberspringt bereits ausgefuehrte Migrationen (statt Idempotenz-Fallback)
- Rueckwaertskompatibel: Bestehende Installationen erhalten die Tracking-Tabelle beim naechsten Update

**Dashboard Performance:**
- Fix: 10 separate COUNT-Queries konsolidiert in 1 einzige SQL-Query (Subselects)
- Reduziert Dashboard-Ladezeit und DB-Last signifikant

**XML Sitemap:**
- Neu: `/sitemap.xml` Endpoint generiert automatisch eine XML-Sitemap
- Enthaelt: Homepage, Seiten, Blog-Posts, Gallery-Alben, Events, Downloads
- Korrekte `<lastmod>`, `<changefreq>`, `<priority>` Werte

**Consent-Banner Theme-Matching:**
- Fix: Lackhexe Premium-Theme hat jetzt eigene Consent-CSS-Variable-Overrides (Purple/Gold)
- ITSWEBER und Roterkaul hatten bereits Overrides (verifiziert)

**Premium-Theme Vollstaendigkeit:**
- Fix: Reifenservice-Kuhn Theme um 4 fehlende Templates erweitert (events.php, event-single.php, downloads.php, download-single.php)
- Alle Premium-Themes haben jetzt vollstaendige Template-Abdeckung

**Cleanup:**
- Roterkaul Upload-Pfad-Problem verifiziert (kein Code-Problem, nur Display-Labels "Galerie")
- Alle 11 Plugins verifiziert als eigenstaendig (keine externen Abhaengigkeiten)

---

## Neu in Version 3.1.2 (gegenüber 3.1.1)

### Security-Hardening (3.1.2)

**Login Rate-Limiting (Brute-Force-Schutz):**
- Neu: `RateLimiter.php` – Dateibasiertes Throttling (kein Redis/Memcached nötig)
- Login wird nach 5 Fehlversuchen für 15 Minuten gesperrt (pro IP + Username)
- Lockout-Meldung mit verbleibender Wartezeit
- Automatische Bereinigung abgelaufener Throttle-Dateien

**Security-Headers:**
- Neu: `X-Frame-Options: SAMEORIGIN` (Clickjacking-Schutz)
- Neu: `X-Content-Type-Options: nosniff` (MIME-Sniffing-Schutz)
- Neu: `Referrer-Policy: strict-origin-when-cross-origin`
- Neu: `Permissions-Policy: camera=(), microphone=(), geolocation=()`
- Neu: `Strict-Transport-Security` (HSTS, nur bei HTTPS-Verbindung)

**Installer-Schutz:**
- Fix: Installer kann nicht mehr durch Löschen von `storage/.installed` erneut gestartet werden
- Neue sekundäre Absicherung: DB-Check auf vorhandene User-Tabelle
- Flag-Datei wird automatisch wiederhergestellt wenn gelöscht aber DB intakt

**Performance:**
- Neu: Settings-Cache – `Setting::get()` lädt alle Settings einmal pro Request in den Speicher statt einzelner DB-Queries (eliminiert 10-20 Queries/Request)
- Cache wird automatisch invalidiert bei `Setting::set()`

**Sonstiges:**
- Fix: `app/Config/app.php` Version-Fallback von `1.0.0` auf `3.1.2` korrigiert
- Cleanup: Leere Ordner `app/Repositories/` und `app/Validation/` entfernt

---

## Neu in Version 3.1.1 (gegenüber 3.1.0)

### Bugfixes und Sicherheitsverbesserungen (3.1.1)

**Kritische Fixes:**
- Fix: `Auth.php` – `$this->db->execute()` durch `$this->db->query()` ersetzt (Remember-Me-Tokens funktionierten nicht, Fatal Error)
- Fix: `Model.php` – ORDER BY SQL-Injection-Schutz: Neue `sanitizeOrderBy()`-Methode validiert Spaltennamen (nur alphanumerisch + Underscore erlaubt)

**Slug-Kollision:**
- Fix: Slug-Deduplizierung in allen 5 Admin-Controllern (Blog, Gallery, Event, Download) und BlogTag-Model: `time()` durch `bin2hex(random_bytes(4))` ersetzt (kryptographisch sicher, nicht vorhersagbar)

**Internationalisierung (i18n):**
- Fix: MediaController – Hardcodierte deutsche Fehlermeldung (post_max_size) durch Translator-Key ersetzt
- Fix: BackupController – Alle 18+ hardcodierten deutschen Strings durch i18n-Keys ersetzt (Backup, Restore, Update, Upload-Fehler)
- Fix: PageController – Kontaktformular-Validierung (10 Strings) auf i18n-Keys migriert
- Neu: 40+ Translation-Keys in DE/EN hinzugefügt (messages.php)

**Performance:**
- Fix: `picture_tag()` Helper setzt jetzt `loading="lazy"` als Default für native Browser-Lazy-Loading auf allen Content-Bildern (Blog, Gallery, Events, Downloads, Homepage-Previews)
- Hero-/Logo-Bilder im Above-the-Fold-Bereich sind nicht betroffen (verwenden raw `<img>`-Tags)

**Build-Tools (Windows-Kompatibilität):**
- Fix: Alle 5 Build-/Validierungs-Tools (`build-release.php`, `build-update.php`, `build-theme.php`, `build-plugin.php`, `check-asset-sync.php`) normalisieren jetzt Pfadtrenner auf Forward-Slash. Behebt: ZIPs mit Backslash-Pfaden auf Windows, die der Validator und CMS-Updater nicht korrekt erkannten.

---

## Neu in Version 3.1.0 (gegenüber 3.0.8.1)

### Core-Stabilisierung und Härtung (3.1.0)

Umfassender Konsolidierungsrelease. Fasst alle Verbesserungen seit 3.0.8.1 zusammen (3.0.9, 3.0.9.1, 3.0.9.2 waren interne QA-Zwischenstände):

**Migrationen und Datenbankschicht:**
- Fix: Migration 020 idempotent gemacht (Idempotency-Check per `information_schema`)
- Fix: Migration 012 – `addslashes()` durch Prepared Statements ersetzt
- Fix: Migration 018 – Hardcoded-SQL durch Prepared Statements ersetzt
- Fix: Migration 021 – `Database::exec()` durch `Database::query()` ersetzt (Fresh-Install-Crash)
- Alle 21 Migrationen vollständig idempotent und SQL-Injection-frei

**Seeds und Installationspfad:**
- Fix: `default_data.php` – `show_title`, `page_type`, SEO-Felder in allen Page-Inserts explizit
- Fix: `starter_content.php` – `show_title` und `page_type` in Privacy/Imprint-Inserts ergänzt
- Verwaiste `.sql`-Migrationsdateien entfernt (Migrator verarbeitet nur `.php`)

**Installer:**
- Fix: E-Mail-Validierung (FILTER_VALIDATE_EMAIL) in Steps 5 + 6
- Fix: `contact_email` und `mail_from_address` serverseitig validiert
- Fix: Theme-Existenz-Validierung mit Fallback auf `default`
- Fix: Requirement-Labels auf i18n-Keys umgestellt (9 neue Keys DE/EN)
- Fix: DB-Port-Feld `type="number"` mit min/max
- Fix: Hardcoded „Error:"-Prefix in Mail-Test durch i18n-Key ersetzt

**Admin und Übersetzungen:**
- Fix: Hardcoded „System pages cannot be deleted." in PageController durch i18n-Key ersetzt
- 22 neue Übersetzungskeys (Installer DE/EN + Messages DE/EN)
- Vollständige DE/EN-Schlüsselparität in allen Sprachdateien

**Build-/Packaging-Pipeline:**
- Fix: Premium-Theme „lackhexe" in alle Build-/Validierungs-Guardrails aufgenommen
- Fix: `validate-package.php` – `knownThemeSlugs` vollständig (Core + Premium)
- Alle 4 Build-Skripte mit konsistenten Premium-Slug-Listen

**Dokumentation und Guardrails:**
- 17 Lessons-Learned-Regeln verankert
- 2 QA-Härtungsläufe mit 18 behobenen Problemen (4 KRITISCH, 7 HOCH, 7 MITTEL)

---

## Neu in Version 3.0.9.1 (gegenüber 3.0.9)

### Hotfix (3.0.9.1)
- Fix: Migration 021 verwendete `Database::exec()`, die in `App\Core\Database` nicht existiert – ersetzt durch `Database::query()`
- Fresh-Install bricht nicht mehr in Schritt 3 mit „Call to undefined method App\Core\Database::exec()" ab

## Neu in Version 3.0.9 (gegenüber 3.0.8)

### Stabilisierungsrelease (3.0.9)
- Konsolidierung des 3.0.8/3.0.8.1 Hotfix-Stands als sauberes Full-Release für Neuinstallation
- Alle Korrekturen aus 3.0.8.1 (fehlende Migration-020-SQL, Versions-Suffix-Bug) sind im Installationspfad integriert
- `show_title`- und `page_type`-Spalten vollständig im frischen Installationspfad abgesichert (Migrationen 020/021 + Seeds)
- Lessons-Learned-Guardrails aus dem 3.0.8-Hotfix-Zyklus in Build-Skripte und Dokumentation übernommen

---

## Neu in Version 3.0.8 (gegenüber 3.0.7)

### System-Pages als Native Pages (3.0.8)
- Neue `page_type`-Spalte in `iw_pages` (Migration 021)
- System-/Modul-Seiten (Gallery, Blog, Events, Downloads, Contact) als vollwertige Pages im Admin editierbar
- Seitentitel (show_title), SEO-Felder und Content-Editor für alle Modul-Seiten
- Slug- und Template-Schutz für System-Pages (nicht löschbar, nicht duplizierbar)
- `module-intro`-CSS-Klasse in allen 3 Core-Themes für optionalen Einleitungstext

### Admin-Fixes (3.0.8)
- `admin.common.note`-Übersetzungsfix mit Fallback-Logik
- Admin-CSS Drift-Auflösung (Source ↔ Mirror synchronisiert)

### Core-Theme-Templates (3.0.8)
- 15 Templates in default/business/creative für `$system_page`-Unterstützung aktualisiert
- gallery.php, blog-list.php, events.php, downloads.php, contact.php je Theme

### Seeds (3.0.8)
- `default_data.php`: Alle Page-Inserts enthalten jetzt `page_type`
- 4 neue System-Page-Einträge (Gallery, Blog, Events, Downloads) in Seeds

---

## Neu in Version 3.0.7 (gegenüber 3.0.0)

### Lackhexe-Projekt (3.0.7)
- Neues Lackhexe Premium-Theme (v1.0.0) für lackhexe.com
- Migrationen 019–020 (Remember-Tokens, Show-Title für Seiten)

### Core-Theme-Kompatibilität (3.0.1–3.0.7)
- Scroll-to-Top-Button CSS in allen Core-Themes ergänzt
- Lightbox-Theming für Galerie in allen Core-Themes nachgezogen
- Core-Theme-Versionen auf 1.0.2 aktualisiert

### Build-/Packaging-Härtung (3.0.1–3.0.7)
- Premium-Theme-Leak im Update-Builder erkannt und behoben
- Premium-Theme-Guardrail in Build-Skripten

---

## Basis aus 3.0.0 (gegenüber 2.4.9)

### 5 offizielle Plugins (seit 3.0.0)
- Feature Showcase Section – Vertikale Feature-Karten mit SVG-Icons
- Process Steps Section – Nummerierte Prozess-/Workflow-Schritte
- Rating Highlight Section – Bewertungs-/Rating-Highlight mit Score
- Service Cards Section – Horizontale Service-/Produktkarten mit Preislabels
- Trust Showcase Section – Vertrauens-/USP-Karten mit SVG-Icons

### Basis aus 2.4.9 (Golden State)
- Plugin-Section-System mit Hook-basierter Architektur
- Branding-aware Admin-Sidebar
- Reproduzierbarer Build-/Packaging-Weg
- Gehärtete Backup/Restore/Update-Kette

---

## Release-Erstellung

Erstellt: 2026-03-26
Version: 3.1.3

© Benjamin Weber / ITSWEBER – www.itsweber.de – info@itsweber.de
