Files
CodePress/version.php
T
E.Noorlander 5357bc8915 CodePress CMS v1.9.0: visitor statistics with SVG world map and GeoIP
- Add GeoIP class with provider chain: local DB-IP Lite, MaxMind .mmdb, external API
- Add built-in pure-PHP MMDBReader so .mmdb works without Composer
- Add cli/geoip-update.php to download DB-IP Lite and build a compact binary index
- Add cli/generate-world-map.php to generate the world map SVG from Natural Earth TopoJSON
- Add Analytics class aggregating stats in admin/storage/stats.json with LOCK_EX
- Add admin statistics page with choropleth world map, country list, top pages,
  daily chart, referrers and a period filter
- Add GeoIP and privacy settings with database update and stats reset buttons
- Add optional IP anonymization and configurable retention period
- Add country field to requests.log (parser accepts 7, 8 or 9 fields)
- Add country column to request log and KPI cards to the dashboard
- Ignore GeoIP binaries and stats.json in Git
- Update TODO.md, guides and version to 1.9.0
2026-07-29 15:40:02 +02:00

136 lines
6.9 KiB
PHP

<?php
/**
* CodePress CMS Version Information
*
* This file contains version information and changelog for CodePress CMS.
*/
return [
'version' => '1.9.0',
'release_date' => '2026-07-29',
'codename' => 'Atlas',
'status' => 'stable',
'changelog' => [
'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'
]
];