# CodePress CMS v2.6.1 — Release Notes **Release datum:** 2026-08-17 **Codename:** Lyra **Status:** stable --- ## Nieuwe features ### Welkomstpagina bij lege content-map (nieuwe installatie) - Wanneer de `content/` map leeg is (nieuwe installatie), toont de CMS nu een duidelijke welkomstpagina - De pagina bevat een introductietekst, een lijst met volgende stappen en knoppen naar de admin console en handleiding - Vertaald in NL, EN en DE (`welcome_*` keys in `language/*/site.php`) - `isContentDirEmpty()` filtert nu verborgen bestanden (zoals `.gitkeep`) zodat een map met alleen een `.gitkeep` als leeg wordt herkend ### 404-afhandeling binnen het actieve theme - Nieuwe statische 404 pagina in `admin/static/404.html` met een link naar de home pagina - De 404 inhoud wordt binnen het actieve theme gerenderd (met header, navigatie, footer en Bootstrap styling) - `getError404()` laadt de inhoud uit `admin/static/404.html` en geeft deze als page content terug (layout `full_content`) - `render()` zet de juiste `http_response_code(404)` status bij niet-gevonden pagina's ### HTTP 404 status bij onbekende pagina's en missende taalprefix - `getPage()` geeft een 404 als de URL geen geldige taalprefix bevat (bijv. `/random-page` in plaats van `/nl/random-page`) - Niet-bestaande pagina's binnen een taal (`/nl/nonexistent`) geven nu ook een 404 in plaats van HTTP 200 - Eerder werd bij een lege content-map altijd de welkomstpagina getoond, ook voor niet-bestaande pagina's — dit is nu beperkt tot de home URL --- ## Verbeteringen ### Test scripts - Test scripts (`pentest.sh`, `accessibility.sh`, `run-tests.sh`) gebruiken nu de Apache-URL (`http://development.codepress.noorlander.info`) in plaats van `localhost:8080` - Functionele tests opgeschoond: tests die naar niet-bestaande `demo/` content pagina's verwezen vervangen door werkende tests ### Documentatie - `README.md` en `README.en.md` bijgewerkt: versie naar 2.6.1, multi-language talen gecorrigeerd (NL/EN/DE), `admin/static/` map toegevoegd aan project structuur - Guide index bestanden (`guide/nl/index.md`, `guide/en/index.md`) bijgewerkt naar versie 2.6.1 - `guide/*/codepress-developer.md` versie referenties bijgewerkt naar 2.6.1 - `AGENTS.md` samengevoegd naar de root map (`./AGENTS.md`); `./development/AGENTS.md` is verwijderd - AGENTS.md verduidelijkt welke URL bij welke map hoort en dat tests via Apache draaien (niet via PHP dev server) --- ## Opschoning ### Verwijderde ongebruikte bestanden - `package.json` — was voor NPM build (`npm run build:css`), runtime gebruikt scssphp (PHP) voor SCSS compilatie - `src/scss/` map — was voor NPM sass build, overbodig na verwijderen van `package.json` - `.htaccess` (root) — Apache docroot is `public/`, deze root `.htaccess` werd niet geserveerd - `themes/demo/` — niet actief in `config.json` (gebruikt `default`), alleen genoemd als voorbeeld ### Opschoning referenties - `README.md` en `README.en.md` — demo theme referenties verwijderd uit project structuur - `guide/*/codepress-developer/architectuur.md` — demo verwijdering uit mappenstructuur boom - `themes/gen-preview.sh` — hardcoded `default demo test` loop vervangen door dynamische `*/` loop - `.gitignore` — `node_modules/`, `package-lock.json` en `.sass-cache/` regels verwijderd (NPM niet meer gebruikt) ### Verwijderde vendor packages - `mustache/mustache` — niet meer gebruikt (Twig is de template engine) - `php-mqtt/client` — niet meer gebruikt - Beide packages verwijderd uit `composer.lock`, `vendor/composer/installed.json`, `installed.php`, en de autoloader bestanden - `MQTTTracker` referentie verwijderd uit functionele test script ### Installatie documentatie - `README.md` en `README.en.md` bevatten nu een volledige installatie sectie met: - Vereisten (PHP ≥8.0, composer, extensies) - Apache 2.4+ vhost voorbeeld met `mod_rewrite`, `mod_headers`, `AllowOverride All` - Nginx server block voorbeeld met PHP-FPM, clean URLs, asset-serving en security headers - Mappen rechten en test instructies --- ## 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 (24 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) - Apache met `mod_rewrite` en `AllowOverride All` (voor clean URLs en asset-serving) --- ## 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. Test de website 5. Optioneel: initialiseer git in content/ via Admin → Backup & Restore → Git init --- ## Test resultaten samenvatting | Test | Resultaat | |------|----------| | Pentest | 30/30 geslaagd, 0 vulnerabilities | | WCAG 2.1 AA Accessibility | 25/25 geslaagd, 100% compliance |