Pre-release notes
https://getkirby.com/releases/5
Changelog since 5.0.0-beta.6
We are only listing the differences here from previous betas. For the full changelog for v5, please check out: https://getkirby.com/releases/5/changelog
🎉 Features since previous betas
- Language variables with multiple translation strings (for different counts) can now be edited in the Panel using the new entries field #7173

✨ Enhancements from previous betas
- New
Model::versions()
method, which returns an array with the two versionslatest
andchanges
. If there's no changes version, thelatest
will be used. #7153 - New
Version::sibling()
method to fetch a different version for the same model #7161 - The Fields class constructor now accepts a string value for the language parameter #7164
- The Fields class will fall back to the site if no model is given. #7164
Fields::passthrough()
will resolve closure values (just like fill and submit) #7164- Add missing since tags to Fields class methods. #7164
- Added missing since tags to Form class methods. #7165
- Support for named parameters in Form constructor. Passing the
$props
array is still supported but deprecated. #7166 - Support for named parameters in
Form::for()
. Passing the$props
array is still supported here as well, but also deprecated. #7166 panel.content.changes()
has been renamed topanel.content.diff()
- New
panel.content.hasDiff()
method. - New
panel.content.version(versionId)
method - New
panel.content.versions()
method - The
content
andoriginal
props have been removed from all model views. - A new
versions
prop has been added instead withlatest
andchanges
as child objects. - The
changes
property in the<k-model-tabs>
component has been renamed todiff
. - hasChanges has been renamed to hasDiff in all components.
- The PreviewView component and backend code has been radically simplified and its UX has been improved. You can now switch between versions and languages easily. #7220
changes.mp4
- The old open button is back in each model view and a new preview button has been added. #7220
🐛 Fixed regressions and issues from previous betas
- Support
false
to disable view buttons ****[#7139](#7139) - Fixed file template change [#7145](#7145)
- Fields with null values will be removed again when saving changes. This
will also fix the removal of the focus point for images. [#7022](#7022) - The content.js module no longer merges changes with the originals.
- The content.js module now also recognizes removed fields when finding changes to show the form controls.
- The
Fields::passthrough()
method no longer supports passing an empty array to reset all passthrough values. [#7164](#7164) - Tags field preview: is selectable again [#7176](#7176)
- Fix UUID access in after hook [#7180](#7180)
- Creating a file content translation no longer throws an exception [#7184](#7184)
- Latest content file for translations is no longer created too early [#7185](#7185)
- Custom slug in secondary language is no longer overwritten on publish [#7183](#7183)
- Deleting pages and files no longer results in a PHP warning when PHP is compiled with localized warning messages [#7209](#7209)
- Grouping collections by closure works again [#7215](#7215)
- Fix
LC_MESSAGES
constant check [#7224](#7224)
🚨 Breaking changes from/since previous betas
- Removed the new ExceptionField class again [#7167](#7167)
- The
content
prop has been removed from all model views. - Removed
Kirby\Content\Version::prepareForContent()
again [#7192](#7192) - The PreviewButton class now uses
preview
as icon andPreview
as text. [#7220](#7220) - All model views now use the new
OpenButton
instead of thePreviewButton
and the refactoredPreviewButton
in addition to that. [#7220](#7220) - The
PreviewDropdownButton
has been removed [#7220](#7220)
☠️ Deprecated since previous betas
Kirby\Panel\Model::content()
is deprecated. UseModel::versions()[’changes’]
instead. [#7153](#7153)Form::content()
is deprecated. UseForm::toStoredValues()
instead. [#7166](#7166)Form::data()
is deprecated. UseForm::toStoredValues()
instead. [#7166](#7166)Form::strings()
is deprecated. UseForm::toStoredValues()
instead. [#7166](#7166)Form::values()
is deprecated. UseForm::toFormValues()
instead. [#7166](#7166)
♻️ Refactored since previous betas
- Remove
$defaults
argument from form and field methods wherever possible, to clean up default value handling [#7134](#7134)- Removed from
Field::toFormValue
- Removed from
Field::toStoredValue
- Removed from
FieldClass::toFormValue
- Removed from
FieldClass::toStoredValue
- Removed from
Fields::toFormValues
- Removed from
Fields::toStoredValues
- Removed from
Form::toFormValues
- Removed from
Form::toStoredValues
- Removed from
- Use
Fields::for
method to simplify theModelWithContent::createDefaultContent
method and get rid of the Form class usage. [#7149](#7149) - Use the Fields class to improve Version comparison. This will especially help to improve the performance of comparing two versions, as the field instances can be reused. [#7150](#7150)
- New
Version::errors()
method [#7155](#7155) - New
Version::isValid()
method, which is now used inModelWithContent::isValid()
instead of the Form class. [#7155](#7155) - The Fields class is now used instead of Form in the Changes controller to save changes. [#7156](#7156)
- Refactor form and toStoredValue code in the EntriesField class [#7175](#7175)
- Consistent VersionId code style [#7181](#7181)
🧹 Housekeeping since previous betas
- Updated JS and PHP dependencies