Files
CodePress/docs/release-notes/v2.6.0.md
T
E.Noorlander 20adea7544 v2.6.0: Content backup/git versioning, plugin type system, docs update
New features:
- ContentBackup class with ZIP backup/restore and git versioning
- Admin backup & restore page (content-backup.twig) with git init/commit/log/restore
- Plugin type system: system (blue) vs content (green) with visual badges
- PluginAPIInterface + AdminPluginAPI for plugin architecture
- Essential plugin flag (cannot edit/deactivate/delete)

Improvements:
- Consolidated enabled_plugins config (removed plugins.enabled)
- Removed Analytics/Logging toggles from admin config page
- Fixed Dashboard plugin Twig comments rendered as text
- Updated 20 guide files (NL+EN): configuratie, plugins, plugin-development,
  core-classes, theme-json, layouts, scss-styling, admin-beheerder, nieuw-thema, architectuur
- Improved accessibility test script (grep -E, min/max checks)

Cleanup:
- Removed unused classes: ARIAComponents, AccessibilityManager, ContentSecurityPolicy, etc.
- Removed vendor packages: mustache/mustache, php-mqtt/client
- Removed old templates: logs.twig, statistics.twig (now plugins)
- Moved language files to language/ directory

Tests:
- Pentest: 30/30 passed, 0 vulnerabilities
- WCAG 2.1 AA: 25/25 passed, 100% compliance
2026-08-15 19:21:04 +02:00

116 lines
5.2 KiB
Markdown

# 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