160 lines
8.5 KiB
PHP
160 lines
8.5 KiB
PHP
<?php
|
|
/**
|
|
* CodePress CMS Version Information
|
|
*
|
|
* This file contains version information and changelog for CodePress CMS.
|
|
*/
|
|
|
|
return [
|
|
'version' => '1.9.2',
|
|
'release_date' => '2026-07-29',
|
|
'codename' => 'Atlas',
|
|
'status' => 'stable',
|
|
|
|
'changelog' => [
|
|
'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'],
|
|
'optional' => ['opcache' => 'Recommended for performance']
|
|
],
|
|
|
|
'credits' => [
|
|
'author' => 'E.Noorlander / CodePress Development Team',
|
|
'license' => 'AGPL v3 / Commercial',
|
|
'license_info' => 'Dual-licensed: AGPL v3 for open-source, Commercial license for proprietary use',
|
|
'repository' => 'https://git.noorlander.info/E.Noorlander/CodePress.git',
|
|
'contact' => 'commercial@noorlander.info'
|
|
]
|
|
]; |