Skip to content

Releases: getkirby/kirby

4.6.0

30 Jan 11:11
994556c
Compare
Choose a tag to compare

✨ Enhancements

  • PHP 8.4 support
  • New bluesky icon

🐛 Bug fixes

  • Fixed CSS rules messing up grid styling inside the gallery block drawer #6838
  • Fix alt attribute for FileVersion instances #6852
  • Using single quotes in sqlite table discovery query fixes #6769
  • Fix console error when no buttons available #6863
  • Structure field: fix label of remove dropdown item #6899
  • Block options: fix tabbing from sort handle #6893
  • Structure field: fix preview input when paginated #6894
  • Set require: true on image block location field #6905
  • Blueprint image option: fixed support for query string #6916
  • System view: fixed too long server software names #6917
  • Pages and files sections: fixed page option #6735
  • Role blueprints get properly extended #6918
  • Link field: fixed handling of invalid options #6919
  • Fixed js()/css() helpers parameters

🧹 Housekeeping

  • Update the list of export ignores to keep unneeded files out of the Kirby ZIP downloads #6931
  • Update JS dependencies #6933
  • Removed remaining meta account from the readme and added Bluesky instead.

5.0.0-beta.2

23 Jan 12:35
f2ee5cf
Compare
Choose a tag to compare
5.0.0-beta.2 Pre-release
Pre-release

Pre-release notes: https://getkirby.com/releases/5

Changelog since 5.0.0-beta.1

✨ Enhancements

  • Allow disable all page buttons via buttons: false
  • New way to set the default storage instance for all models #6867
    • New App::storage(ModelWithContent $model) method
    • New storage component, which can be overwritten in plugins or the app instance setup.
    • The storage component is now used in all Models to create the default storage instance
    // How to create a new default storage instance component: 
    use Kirby\Cms\App;
    use Kirby\Cms\ModelWithContent;
    use Kirby\Content\PlainTextStorage;
    
    class MyCustomStorageClass extends PlainTextStorage
    {
    
    }
    
    // on app initialisation
    $kirby = new App([
      'components' => [
        'storage' => function (App $kirby, ModelWithContent $model) {
            return MyCustomStorageClass($model);
        ]
      ]  
    ]);
    
    // in a plugin
    App::plugin('my/storage', [
      'components' => [
        'storage' => function (App $kirby, ModelWithContent $model) {
            return MyCustomStorageClass($model);
        ]
      ]  
    ]);
  • New $app->role() method that works like $app->user() to return a specific role or the role of the current user. #6874
  • View buttons: i18n + query support, component name from key
    • Panel\Ui\Button: i18n support for text and title props
    • Panel\Ui\Buttons\ViewButtons and Panel\Ui\Buttons\ViewButton have new optional $model property
    • Kirby query support in Panel\Ui\Buttons\ViewButton for link, dialog, drawer, icon, text, theme props
    • Deriving the Vue component name from key:
      buttons:
        - preview
        retour:
          text: Retour
      This first looks up k-retour-view-button and falls back to k-view-button.
  • Writer: nodes with inline: true in their button definition are displayed as inline buttons in toolbar (instead inside the dropdown) #6902
  • New this.$helper.object.filter(object, predicate). #6902
  • Page status button uses custom status labels for title #6911
  • Plugin update status: passive theme for unknown plugin versions #6920
  • System view: Plugin table features two distinct columns for the license type and status #6896
  • LicenseStatus supports link, dialog and drawer props #6896

🐛 Bug fixes

  • Fixed Str::ucfirst() behavior, now behaves like PHP default #6834
  • Writer field: inline toolbar is hidden when no nodes and marks are available #6804
  • Page dropdown: fix disabling preview item #6891
  • File preview: fix aspect ratio for medium viewports #6891
  • Page section w/ table layout: fix flag column #6866
  • Range/Number field: fix isEmpty() usage #6898
  • Custom writer nodes: fixed active state detection for nodes that include paragraph child nodes #6902
  • Permissions are now always correctly determined if the active user changes during the request #6880

🐛 Fixed regressions from Beta.1

  • Hide language selector for single language #6850
  • Duplicate action is forcing to copy files #6921
  • Link in info box is now visible again in dark mode #6906

🚨 Breaking changes

  • The Str::ucfirst() method no longer lowercases all but the first letter of the text, it only capitalizes the first letter. #6860
  • Classes extending ModelPermissions need to set their category with the const CATEGORY or static function category() instead of protected string $category and use the static user() method instead of $user and $permissions properties #6880
  • <k-item>: Removed data-only-option attributes
  • <k-dialog>: Removed data-has-footer attribute
  • <k-toggles-input>: Removed data-disabled attribute
  • <k-writer-input>: Removed data-toolbar-inline attribute
  • <k-bubble>: Removed data-has-text attribute
  • <k-header>: Removed data-has-buttons attribute
  • <k-tag>: Removed data-has-image and data-has-toggle attributes
  • <k-tree>: Removed data-has-subtree attribute
  • required: true on checkbox and toggle fields now enforces that these fields need to be checked/toggles (active state)

☠️ Deprecated

  • panel.favicon option throws deprecation warnings for url option (use href instead) and for rel key (use reloption instead)

♻️ Refactored

  • ModelPermissions now also supports Language objects as quasi models #6876
  • New LanguagePermissions class that inherits the existing logic from LanguageRules for consistency with other models #6876
  • Globally cache access and list permissions per permission category, model type and user role to reduce code duplication #6881

♻️ Refactored after Beta.1

  • Update preview token logic to reliably fix tokens for the homepage #6856

🧹 Housekeeping

  • Move $app->roles() method to the AppUsers trait to increase the overview
  • Clean up permission-related code for consistency #6879

4.6.0-rc.1

23 Jan 11:44
dc348e6
Compare
Choose a tag to compare
4.6.0-rc.1 Pre-release
Pre-release

🐛 Bug fixes

  • Fixed CSS rules messing up grid styling inside the gallery block drawer #6838
  • Fix alt attribute for FileVersion instances #6852
  • Using single quotes in sqlite table discovery query fixes #6769
  • Fix console error when no buttons available #6863
  • Structure field: fix label of remove dropdown item #6899
  • Block options: fix tabbing from sort handle #6893
  • Structure field: fix preview input when paginated #6894
  • Set require: true on image block location field #6905
  • Blueprint image option: fixed support for query string #6916
  • System view: fixed too long server software names #6917
  • Pages and files sections: fixed page option #6735
  • Role blueprints get properly extended #6918
  • Link field: fixed handling of invalid options #6919

🧹 Housekeeping

  • Update the list of export ignores to keep unneeded files out of the Kirby ZIP downloads #6931
  • Update JS dependencies #6933

5.0.0-beta.1

09 Dec 10:21
Compare
Choose a tag to compare
5.0.0-beta.1 Pre-release
Pre-release

4.5.0

28 Nov 10:21
94cc37e
Compare
Choose a tag to compare

✨ Enhancements

  • avif images are now considered resizable by default #6670
  • User view: show prev/next buttons also on account view #6610
  • Video block: better autoplay handling
  • panel.upload exposes upload dialog open event #6621
  • New Toolkit\Obj::toKeys() method #6651
  • Improved Roles filter methods #6655
  • New angle-dropdown button #6663
    angle-dropdown
  • Improved highlighting of current items in a dropdown #6672
    active-1
    active-2
  • Tags input: dropdown shows current selection via checkbox/radio button #6698
    dropdown-1
    dropdown-2
  • api.methodOverwrite config option to activate pure PATCH requests #6650
  • Moving pages: allow pages as parent that don’t restrict any templates in their blueprint, but feature at least one pages section listing the page’s children #6717
  • Role always shown when creating a new user, even if only one role available #6654
  • Support icon and info for query and api options #6780
  • Changed the status update host to getkirby.com #6787
  • Update composer dependencies

🐛 Bug fixes

  • Fixed $field->isEmpty() for some empty arrays #6637
  • slugs.maxlength option works now #6526
  • Fix updating new language variables for secondary languages #6622
  • Page create dialog: toggle field allowed #6669
  • User::roles() doesn't return only the current role for non-admin users but all available roles #6663
  • Fixed issue where the page create dialog would use an existing page new instead just creating a temporary object #6643
  • Radio input: fix default columns count #6699
  • Multilang: Writer field now inserts the correct permalink for the current content language #6668
  • Multilang: $page->permalink() returns a language-based permalink for the current content language #6668
  • Fixed uploading non-resizable files with template/blueprint that features create option #6718
  • Fixed some cached page and file properties #6720
  • The license key dialog now trims accidently copied spaces from the license key #6722
  • Panel UI fixed for create and changeRole permissions and user options #5147 #5146
  • Fix preview links for files when the parent page preview is disabled #6786

☠️ Deprecated

  • UserRules::validRole()

♻️ Refactored

  • Remove roles count check from UserPermissions #6658

5.0.0-alpha.4

20 Nov 16:10
6adc851
Compare
Choose a tag to compare
5.0.0-alpha.4 Pre-release
Pre-release

4.5.0-rc.1

12 Nov 15:15
8fc6f34
Compare
Choose a tag to compare
4.5.0-rc.1 Pre-release
Pre-release

✨ Enhancements

  • avif images are now considered resizable by default #6670
  • User view: show prev/next buttons also on account view #6610
  • Video block: better autoplay handling
  • panel.upload exposes upload dialog open event #6621
  • New Toolkit\Obj::toKeys() method #6651
  • Improved Roles filter methods #6655
  • New angle-dropdown button #6663
    angle-dropdown
  • Improved highlighting of current items in a dropdown #6672
    active-1
    active-2
  • Tags input: dropdown shows current selection via checkbox/radio button #6698
    dropdown-1
    dropdown-2
  • api.methodOverwrite config option to activate pure PATCH requests #6650
  • Moving pages: allow pages as parent that don’t restrict any templates in their blueprint, but feature at least one pages section listing the page’s children #6717
  • Role always shown when creating a new user, even if only one role available #6654
  • Support icon and info for query and api options #6780
  • Changed the status update host to getkirby.com #6787
  • Update composer dependencies

🐛 Bug fixes

  • Fixed $field->isEmpty() for some empty arrays #6637
  • slugs.maxlength option works now #6526
  • Fix updating new language variables for secondary languages #6622
  • Page create dialog: toggle field allowed #6669
  • User::roles() doesn't return only the current role for non-admin users but all available roles #6663
  • Fixed issue where the page create dialog would use an existing page new instead just creating a temporary object #6643
  • Radio input: fix default columns count #6699
  • Multilang: Writer field now inserts the correct permalink for the current content language #6668
  • Multilang: $page->permalink() returns a language-based permalink for the current content language #6668
  • Fixed uploading non-resizable files with template/blueprint that features create option #6718
  • Fixed some cached page and file properties #6720
  • The license key dialog now trims accidently copied spaces from the license key #6722
  • Panel UI fixed for create and changeRole permissions and user options #5147 #5146

☠️ Deprecated

  • UserRules::validRole()

♻️ Refactored

  • Remove roles count check from UserPermissions #6658

5.0.0-alpha.3

23 Sep 09:53
b1b3f44
Compare
Choose a tag to compare
5.0.0-alpha.3 Pre-release
Pre-release

4.4.1

23 Sep 09:43
eb47158
Compare
Choose a tag to compare

🐛 Bug fixes

  • Fixed file caching regression #6685
  • Fixed 500 error in move page dialog #6684
  • Fixed file browser in link field when UUID disabled #6683
  • Only showing offline message in Panel when system is not a local environment #6679
  • Fixed a regression for some custom routes #6676

4.4.0

12 Sep 12:29
d14bc47
Compare
Choose a tag to compare

Tip

Pages section: if you are experiencing performance issues with a pages section and the table layout, you can try to use rawvalues: true to improve performance. This will use the unprocessed values from the content file, which is a lot more performant, but can result in some broken column previews (which would require processed values).

✨ Enhancements

  • Link field: when selecting files, the current page is preselected #6458
  • New auto option for (image: ) KirbyTag
    (image: cat.jpg width: auto height: auto)
    
    // config.php
    'kirbytext' => [
        'image' => [
            'width' => 'auto',
            'height' => 'auto',
        ]
    ];
  • Image/Gallery blocks: added selector to change background #6430
  • Pages, files and users dialogs use proper radio buttons/checkboxes to display selection #6044 #5930
  • Site area: using icon defined in site blueprint #5936
  • Added support for language-specific UUID urls #6312
    /en/@/page/1234
    /en/@/file/1234
    
  • New google icon
  • Allow access to the Kirby\Cms\License::HISTORY const #6503
  • k-button: use title or text of a button to set aria-label #5899
  • $permissions->for(), $modelpermissions->can() and $modelpermissions->cannot() accept a new $default parameter #6548
  • Pages, files and users field: default empty string is now correct when only allowed to select one page/file/user #6565
  • All fields have a .k-field-type-TYPE CSS class added #5009
  • File uploads: preview uses image options from field/section #6611
  • Change URL dialog: in multilang, show the language segment as part of the path preview #6607
  • content.uuid.index option to prevent index lookup. Will throw an exception if a UUID model cannot be looked up from the cache alone. This requires you to keep a full UUID cache at all times but can be helpful for very large sites where any index lookup would run into memory limits. #6564
    • Use content.uuid.format to specify uuid-v4 as format.
  • system.exception hook: return false to prevent error to be logged #5028
  • Filename sanitization considers user language for better results #4972
  • (image: ) KirbyTag: for local files, add width: auto and/or height: auto to include the actual image dimensions as attributes #5064

🐛 Bug fixes

  • Using Cmd + S/Ctrl + S in nested structures/objects with date fields does not corrupt data anymore #6390
  • Kirby\Exception\NotFoundException thrown during page rendering now redirects request to the error page (with 404); as Kirby\Exception\ErrorPageException already does #6553
  • Link field preview: fixed overflow instead of wrapping for long links #6510
  • Tags input: dropdown won't open anymore when max has been reached #6468
  • Text block: fixed padding when replacing writer input with texture input #6484
  • Panel topbar: fix overflow when breadcrumb gets very long #6348
  • A::random() throws exception instead of error when $count is higher than array length #6555
  • Fix focus helper for non-native inputs #6347
  • Writer field: content with non-breaking changes doesn't anymore show up as changed always #6285
  • Fixed new Http\Uri() for relative URLs with a colon inside #6331
  • pattern attribute for Panel fields: fixed inconsistencies between frontend and backend validation #6585
  • preview blueprint option now supports setting role-based permissions #6572
  • $file->previewUrl() returns null if parent page preview is deactivated/not allowed for the user #6572
  • Fixed parallel Panel search requests #6409
  • Files field: store only filenames when UUIDs disabled and file belongs to the same page #5084
  • Sections with table layout: fixed some issues with sorting rows that should be unsortable #6609
  • Redirect language URLs with non-translated slugs #3550
  • Fix docblocks for $panel.dialog/$panel.drawer #6648