β οΈ Security fix β update recommended
The protective .htaccess files for /backups/, /users/, /cache/ and /system/logs/ never made it into the 1.0.0 distribution β .gitignore excluded the contents of those folders wholesale. Combined with a predictable backup name (backup-YYYY-MM-DD-HHMMSS.zip), anyone could download a full site archive containing config.php and the users/ files with bcrypt password hashes.
Fixed: backup names now carry a random suffix, the .htaccess files ship with the distribution, and the installer recreates them if missing.
If you run 1.0.0: open https://yoursite/backups/<name>.zip β if it downloads instead of returning 403, move existing archives out of the web root and change your admin password. On nginx use nginx.conf.example; .htaccess is ignored there, and on hosts where nginx serves static files directly it doesn't apply to .zip even on Apache.
Added
- Plugins v2 β plugins declare settings in
plugin.jsonand deeno renders the form behind a gear button on the Plugins page; values live insystem/plugin-data.php, outside the plugin folder, so updates never wipe them. Plugins can serve their own URLs (PluginManager::route()), hook listeners take a priority, and two new filters βadmin.headandeditor.toolbarβ extend the admin panel. - Two new blog themes β
deeno-mag(editorial magazine: featured lead story from sticky posts, per-category sections, reading time) anddeeno-author(personal blog: author hero, timeline grouped by year, tag cloud, drop-cap reading column). - Demo mode for public sandboxes (
"demo_mode": true) β destructive actions are blocked server-side and anything a visitor writes is forced todraft.
Changed
-
RSS and social links are plugins now. Both ship enabled on a fresh install, so nothing changes out of the box. Themes need no changes β
$site->rssand$site->socialare filled through filters and are simply empty when the plugins are off.Upgrading from 1.0: enable RSS feed and Social links on the Plugins page; your existing feed setting and social URLs are picked up automatically.
Full changelog: UserDoc/CHANGELOG.md