v2.5.1: Admin theme refactor, Navigation plugin, user roles, guide restructure
- Reorganize admin into admin/theme/default/ (views + assets) - Rename GuideNav to Navigation plugin (essential, protected) - Plugin assets support (SCSS/CSS) loaded after theme CSS - User roles: Admin, Content Manager, BI Manager, Site Admin - Role-based access control (RBAC) for admin routes and sidebar - Guide restructure: sub-topics in separate folders with sidebar nav - Dynamic breadcrumb for homepage and subdirectories - Fix theme path traversal (../../ -> ../) in admin.php - Fix CodeMirror mode load order (xml -> css -> js -> htmlmixed -> php) - Fix editor-toolbar.js null checks for plugin edit pages - Layout select from theme.json with live frontmatter update - Footer sticky at bottom of viewport (min-height: 100vh) - Breadcrumb color fix (var(--nav-font) -> var(--header-bg)) - Remove language switcher from guide pages - Update README.md and README.en.md - Bump version to 2.5.1
This commit is contained in:
+3
-154
@@ -1,165 +1,14 @@
|
||||
<?php
|
||||
/**
|
||||
* CodePress CMS Version Information
|
||||
*
|
||||
* This file contains version information and changelog for CodePress CMS.
|
||||
*/
|
||||
|
||||
return [
|
||||
'version' => '2.0.0',
|
||||
'release_date' => '2026-08-08',
|
||||
'version' => '2.5.1',
|
||||
'release_date' => '2026-08-10',
|
||||
'codename' => 'Atlas',
|
||||
'status' => 'stable',
|
||||
|
||||
'changelog' => [
|
||||
'2.0.0' => [
|
||||
'date' => '2026-08-08',
|
||||
'changes' => [
|
||||
'New ThemeManager with Twig templating and SCSS compilation',
|
||||
'Dynamic themes system (themes/default, themes/demo)',
|
||||
'LogManager with SQLite storage and syslog forwarding support',
|
||||
'RequestLogger with static helper methods for IP detection and anonymization',
|
||||
'Admin UI overhaul with Bootstrap 5 and dark mode support',
|
||||
'Admin config page with logging and theme settings',
|
||||
'Admin logs page with filters (event, level, search) and search',
|
||||
'Security fixes: XSS prevention via page parameter sanitization',
|
||||
'Security fixes: CRLF injection prevention in cookie values',
|
||||
'Removed legacy Mustache templates',
|
||||
'Composer dependencies: Twig, scssphp, CommonMark, MaxMind GeoIP',
|
||||
]
|
||||
],
|
||||
'1.9.2' => [
|
||||
'date' => '2026-07-29',
|
||||
'changes' => [
|
||||
'Admin sidebar restructured into logical groups: Algemeen, Content, Instellingen, Gegevens, Systeem, Help, Links',
|
||||
'IP-uitsluitingen toegevoegd aan configuratie: IPs niet meetellen in statistieken en overslaan bij beveiligingscontroles',
|
||||
'Guide (NL/EN) volledig herschreven metzelfde logische indeling als sidebar',
|
||||
]
|
||||
],
|
||||
'1.9.1' => [
|
||||
'date' => '2026-07-29',
|
||||
'changes' => [
|
||||
'Fix world map: zero-padded ISO numeric ids left 31 countries unrendered (Brazil, Australia, Belgium, Austria, Algeria and more)',
|
||||
'Fix world map: Russia and Fiji smeared across the full map width at the antimeridian; rings are now unwrapped and drawn at both edges',
|
||||
'World map cropped to 84N-60S with evenodd fill rule, 174 countries',
|
||||
'Logger::tail() reads the log backwards in chunks instead of loading the whole file',
|
||||
'External links get rel="noopener noreferrer" in the footer and in Markdown content',
|
||||
'formatDisplayName() cleaned up and guarded against empty input',
|
||||
'Export statistics as CSV (Excel-compatible BOM) or JSON',
|
||||
'GeoIP database auto-updates when older than 35 days',
|
||||
'Editor shortcuts: Ctrl/Cmd+S to save, Ctrl/Cmd+N for a new page',
|
||||
'Live search filter in the admin content browser',
|
||||
'Content versioning: timestamped .bak copies in content/-backups/, 5 versions per file',
|
||||
]
|
||||
],
|
||||
'1.9.0' => [
|
||||
'date' => '2026-07-29',
|
||||
'changes' => [
|
||||
'Visitor statistics dashboard (/admin/statistics) with SVG world map choropleth',
|
||||
'GeoIP country resolution with provider chain: local DB-IP Lite, MaxMind .mmdb, or external API',
|
||||
'Built-in pure-PHP MaxMind DB reader (no Composer dependency required)',
|
||||
'cli/geoip-update.php downloads DB-IP Lite and builds a compact binary index',
|
||||
'cli/generate-world-map.php generates the world map SVG from Natural Earth TopoJSON',
|
||||
'Aggregated statistics in admin/storage/stats.json (survives log clearing)',
|
||||
'Unique visitors, human vs bot split, top pages, referrers and daily chart',
|
||||
'Period filter (7 / 30 / 90 days / all time)',
|
||||
'Optional IP anonymization and configurable retention period',
|
||||
'Country column with flags in the request log and KPI cards on the dashboard',
|
||||
]
|
||||
],
|
||||
'1.8.0' => [
|
||||
'date' => '2026-07-29',
|
||||
'changes' => [
|
||||
'BotGuard security engine for configurable Bot, AI, and Scraper protection',
|
||||
'Admin Security page (/admin/security) with toggles, rate limiting, and block/allowlists',
|
||||
'Per-IP rate limiting (configurable max requests & window)',
|
||||
'Dynamic robots.txt generation (/robots.txt) and noai/noimageai meta tags',
|
||||
'Real IP detection with HAProxy/PFSense and multi-proxy header support',
|
||||
'Status column and filtering in admin request logs',
|
||||
'One-click System Update via admin console (/admin/update)',
|
||||
'Git-safe local configuration (config.json & admin.json auto-generated and ignored)',
|
||||
]
|
||||
],
|
||||
'1.7.1' => [
|
||||
'date' => '2026-07-28',
|
||||
'changes' => [
|
||||
'Auto-detect first available content page when default_page is set to "auto"',
|
||||
'default_page now defaults to "auto" in config.json for fresh installs',
|
||||
'Admin config form preserves "auto" as a selectable option',
|
||||
'No more empty "-- Selecteer --" option that silently saved "index"',
|
||||
]
|
||||
],
|
||||
'1.7.0' => [
|
||||
'date' => '2026-07-28',
|
||||
'changes' => [
|
||||
'Content API for PHP content files (getAllPages, getPage, getMenu, getConfig, etc.)',
|
||||
'Admin guide page with rendered markdown (CommonMark with TOC, tables, code blocks)',
|
||||
'HeadingPermalinkExtension for anchor links in guide TOC',
|
||||
'Deep links fixed: heading IDs moved from hidden permalink anchors to heading elements',
|
||||
'Code block styling (light theme) in admin guide and frontend',
|
||||
'Config form with separate fields (site_title, default_page, language, SEO, author, features)',
|
||||
]
|
||||
],
|
||||
'1.6.0' => [
|
||||
'date' => '2026-07-14',
|
||||
'changes' => [
|
||||
'Clean URLs: /nl/page/path instead of ?page=...&lang=nl',
|
||||
'Clean admin URLs: /admin/route instead of admin.php?route=...',
|
||||
'Apache .htaccess rewrite rules for clean URLs',
|
||||
'PHP dev server router (cms/router.php) for local clean URLs',
|
||||
'CSRF token on admin login form',
|
||||
'Directory listing blocked (Options -Indexes)',
|
||||
'Secure cookies (HttpOnly, Secure, SameSite)',
|
||||
'Backup/sourcemap files blocked in .htaccess',
|
||||
'Version disclosure disabled (meta generator removed)',
|
||||
'Media browser modal with upload and recursive content tree scan',
|
||||
'CodeMirror editor with formatting toolbar (bold, italic, heading, link, image, list)',
|
||||
'Media button in editor toolbar with image size prompt (Markdown vs HTML mode)',
|
||||
'Inline file rename in content-edit page (no separate rename page)',
|
||||
'Content move and directory management in admin',
|
||||
'Theme management subdirectory structure (themes/naam/theme.json)',
|
||||
'Theme CRUD in admin (create, activate, edit, delete)',
|
||||
'Unsaved changes detection: Back button turns into red Cancel',
|
||||
'Disabled state on upload and create buttons until input is valid',
|
||||
'Editor mode switching for new pages (Markdown/PHP/HTML)',
|
||||
'/-media/ URL prefix for media files from any content subdirectory',
|
||||
'Backward-compatible /-assets/ media serving',
|
||||
'Improved breadcrumb handling (no more stray dots)',
|
||||
'Numerous security and code quality improvements',
|
||||
]
|
||||
],
|
||||
'1.5.0' => [
|
||||
'date' => '2025-11-26',
|
||||
'changes' => [
|
||||
'Complete guide documentation rewrite with comprehensive examples',
|
||||
'Implement plugin system with HTMLBlock and MQTTTracker plugins',
|
||||
'Enhanced bilingual support (NL/EN) throughout the system',
|
||||
'Improved template system with better layout options',
|
||||
'Enhanced security headers and code quality improvements',
|
||||
'Updated documentation and configuration examples',
|
||||
'Plugin architecture for extensibility',
|
||||
'Real-time analytics and tracking capabilities',
|
||||
]
|
||||
],
|
||||
'1.0.0' => [
|
||||
'date' => '2025-11-24',
|
||||
'changes' => [
|
||||
'Initial stable release',
|
||||
'Complete security hardening (100/100 pentest score)',
|
||||
'Multi-language support (NL/EN)',
|
||||
'Responsive design with Bootstrap 5',
|
||||
'Automatic navigation and breadcrumbs',
|
||||
'Search functionality',
|
||||
'Markdown, HTML, and PHP content support',
|
||||
'Mustache templating system',
|
||||
'Comprehensive security headers',
|
||||
'XSS and path traversal protection',
|
||||
'Automated penetration test suite',
|
||||
'Functional test coverage',
|
||||
]
|
||||
]
|
||||
],
|
||||
|
||||
'system_requirements' => [
|
||||
'php' => '>=8.0',
|
||||
'extensions' => ['json', 'mbstring'],
|
||||
@@ -173,4 +22,4 @@ return [
|
||||
'repository' => 'https://git.noorlander.info/E.Noorlander/CodePress.git',
|
||||
'contact' => 'commercial@noorlander.info'
|
||||
]
|
||||
];
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user