# CodePress CMS v2.6.0 — Release Notes

**Release datum:** 2026-08-15  
**Codename:** Atlas  
**Status:** stable  

---

## Nieuwe features

### Content backup & restore met git versioning
- Nieuwe `ContentBackup` class (`cms/core/class/ContentBackup.php`) voor ZIP backup/restore en git-based versiebeheer van de content map
- Admin pagina **Backup & Restore** (`/admin/content-backup`) met:
  - ZIP download van de volledige content-map
  - Restore vanuit een geüploade ZIP (met automatische backup van huidige content)
  - Git init, commit, log en restore-to-commit functionaliteit
- Content git repository staat los van de CodePress hoofd-repo (content/ is in .gitignore)
- 5 nieuwe admin routes: `content-backup`, `content-restore`, `content-git-init`, `content-git-commit`, `content-git-restore`
- Backup-knop toegevoegd op de content beheer pagina

### Plugin type systeem
- Plugins worden nu onderscheiden als **system** (blauwe badge, `bi-gear-fill`) of **content** (groene badge, `bi-puzzle-fill`)
- `plugin.json` ondersteunt nu `type`, `essential` en `hasConfig` velden
- Essentiële plugins (zoals Navigation) kunnen niet worden bewerkt, gedeactiveerd of verwijderd
- Visueel onderscheid op de plugins-pagina met gekleurde card-borders en type-badges
- `handlePlugins()` in admin.php leest het `type` veld uit zowel `plugin.json` als de PHP class

### Plugin API architectuur
- Nieuwe `PluginAPIInterface` interface voor consistente plugin API toegang
- Nieuwe `AdminPluginAPI` class voor admin-context plugins (light-weight, alleen config toegang)
- `CMSAPI` en `AdminPluginAPI` implementeren beide `PluginAPIInterface`
- Admin sidebar toont alleen menu-items van actieve (enabled) plugins

---

## Verbeteringen

### Config
- Dubbele `enabled_plugins` config opgelost: `plugins.enabled` verwijderd, alleen `enabled_plugins` op top-level in config.json
- Analytics & Logging toggles verwijderd van de admin config pagina (instellingen blijven in config.json beschikbaar)
- Alle admin.php handlers gebruiken nu consistent `enabled_plugins` i.p.v. `plugins.enabled`

### Dashboard
- Twig-commentaren `{# ... #}` verwijderd uit Dashboard plugin PHP output — deze werden als platte tekst gerenderd

### Handleidingen (20 bestanden bijgewerkt, NL + EN)
- `configuratie.md` — Analytics/Logging verwijderd, Homepage + Admin taal toegevoegd
- `plugins.md` — Plugin types (system/content), essential flag, protected plugins gedocumenteerd
- `plugin-development.md` — Volledig herschreven met juiste plugin.json velden, class-structuur, API via setAPI(), hooks, admin integratie, CSS
- `core-classes.md` — Juiste paden, doAction/applyFilters i.p.v. executeHook, CMSAPI/AdminPluginAPI/AdminAuth/LogManager toegevoegd
- `theme-json.md` — Juiste structuur met `config.default_template` en `template`
- `layouts.md` — `layouts`→`template`, `default_layout`→`config.default_template`
- `scss-styling.md` — CSS output pad gecorrigeerd naar `assets/css_compiled/`
- `admin-beheerder.md` — Media en Update secties toegevoegd
- `nieuw-thema.md` — guide.twig toegevoegd
- `architectuur.md` — Mappenstructuur uitgebreid met alle key directories

### Tests
- Accessibility test-script verbeterd: `grep -E` i.p.v. basic regex, min/max checks i.p.v. exacte waarden, patroon `<nav[ >]` i.p.v. `<nav>` voor tags met attributes
- Pentest: 30/30 tests geslaagd, 0 vulnerabilities
- WCAG 2.1 AA: 25/25 tests geslaagd, 100% compliance

---

## Opschoning

### Verwijderde ongebruikte classes
- `ARIAComponents.php`, `AccessibilityManager.php`, `AccessibleTemplate.php`
- `AssetManager.php`, `ContentSecurityPolicy.php`, `EnhancedSecurity.php`
- `SearchEngine.php`, `SimpleTemplate.php`, `CodePressCMS.php.backup`

### Verwijderde vendor packages
- `mustache/mustache` — niet meer gebruikt (Twig is de template engine)
- `php-mqtt/client` — niet meer gebruikt

### Verwijderde templates
- `logs.twig` en `statistics.twig` — vervangen door Logs en Statistics plugins
- `test-guide.php` — verwijderd

### Verwijderde bestanden
- `cms/lang/en.php`, `cms/lang/nl.php` — verplaatst naar `language/` map

---

## Beveiliging
- Pentest suite: 30/30 tests geslaagd (XSS, path traversal, PHP injection, null byte, command injection, template injection, HTTP header injection, information disclosure, security headers, DoS)
- Security headers aanwezig: X-Frame-Options, Content-Security-Policy, X-Content-Type-Options
- Geen vulnerabilities gedetecteerd

---

## Accessibility
- WCAG 2.1 AA: 25/25 tests geslaagd (100%)
- ARIA landmarks aanwezig (25+ per pagina)
- Semantic HTML structuur (header, nav, main, footer)
- Skip-to-content links, focus indicators, screen reader support
- Mobile viewport en touch targets aanwezig

---

## Systeem vereisten
- PHP >= 8.0
- Extensies: json, mbstring
- Optioneel: opcache (aanbevolen voor performance)
- Git (optioneel, voor content versioning feature)
- ZipArchive (optioneel, voor ZIP backup/restore feature)

---

## Upgraden
1. Maak een backup van de huidige content map
2. Pull de nieuwe code
3. Run `composer install` om dependencies bij te werken
4. Controleer `config.json` — verwijder `plugins.enabled` als deze nog bestaat (gebruik `enabled_plugins` op top-level)
5. Test de website
6. Optioneel: initialiseer git in content/ via Admin → Backup & Restore → Git init