Breaking Changes
- Users, roles and statistics folders moved to sites/
Enhancements
- Add content history to panel
- Add live preview to panel
- Implement new Markdown editor
- Translate scheme and templates titles
- Allow theme switching based on
prefers-color-scheme
change - Implement file metadata
- Add page info cards by hovering on page icons
- Add descriptions to publish and visibility-related fields
- Send
FileResponse
splitted chunkwise and according to the Range request header to improve performance with large files - Allow
HEAD
requests - Add slug field type
- Add
Role
class - Move Info to Tools section
- Add
csrfToken
service alias - Allow and filter POST requests to site pages
- Avoid using special fields for page parent and template
- Improve file upload field
- Add
AbstractCollection::flatten()
,AbstractCollection::union()
,AbstractCollection::intersection()
,AbstractCollection::difference()
andAbstractCollection::find()
- Allow index-only call to
AbstractCollection::slice()
- Add utility methods to
PageCollection
- Add
site.path
to config - Fix
Debug::dump()
dumping before sendig headers - Check panel assets presence on boot
- Add the possibility to delete user image
- Use attribute
ReadonlyModelProperty
to control Model::set() write access - Add
Page::videos()
andPage::media()
- Allow defining icon in page schemes options
- Change default session durations to 2
- Load only video metadata in thumbnails
- Add preview size to dimensionless images
- Add
AbstractController::forward()
to forward requests to other controllers - Move authentication logic to
User
- Add
Page::save()
method - Add
Field::isReadonly()
- Add
InvalidValueException
to handle exceptions in model setters
Security
- Add
Sanitizer
class to sanitize Markdown and SVG output
As the upcoming version 2.0.0 is a major release and the code has been extensively rewritten (~ 900 commits), here are listed only the most notable changes (the list may not be exhaustive and could change):
Breaking Changes
- PHP version requirement raised to >= 8.2
- Application architecture rewritten for version 2.0,
Formwork
class has been replaced withApp
class, which is the app container - Config, content and templates folder moved to sites/
- admin folder, route and even
Admin/*
classes renamed to panel orPanel/*
- Classes from admin/ moved to formwork/src/Panel
- Rewritten logic between schemes, fields and pages
- Rewritten
Page
,Site
and related classes - camelCase is now enforced in all keys and PascalCase in class name now is consistent
- HTTP related classes moved to
Formwork\Http
namespace and now are services handled by the container - Rewritten
Router
class
Enhancements
- Improved Administration Panel with a better page editing experience
- Added file info views and thumbnails options to display files in the panel
- New Statistics and Backup views
- Improved Panel UI on mobile devices
- Added debug option to get stack traces during developement
- Added
serve
command to test Formwork even without a webserver - Added informative errors during bootstrap
- Fields now have their own methods defined in formwork/fields
- Fields now support dynamic variables by suffixing properties with
@
- Added
AbstractCollection
andCollection
classes to better handle data - Added
Constraint
class to check data - Added
Interpolator
class - Added improved image-related class in the namespace
Formwork\Image
with a better image transformation API and support for reading color profiles and EXIF metadata - Transformed images are now cached
- Added
Debug
andCodeDumper
classes
Security
- Added
content.safeMode
system option (enabled by default) to escape HTML in Markdown content - Fields in the Panel are now accurately escaped
- Escaped page titles and tags in default templates
➡️ Read previous CHANGELOG.md on the 1.x
branch.