Kirby v3.5.0-rc.1 Release Notes

Release Date: 2020-11-24 // about 2 years ago
  • Disclaimer

    πŸš€ This is a pre-release and probably not fully stable yet. Don't use in production unless you don't mind potential hick-ups. We really appreciate your help while testing this release candidate!

    πŸ”‹ Features

    πŸ†• New Blocks Field

    πŸ— The Kirby Builder by Tim Γ–tting is one of the most popular plugins out there and together with Tim we decided to add it to the core πŸŽ‰

    πŸ”€ We've rewritten it from scratch and merged it with our popular Editor plugin. The new field is called Blocks and will eventually replace both plugins.

    πŸ“„ During the RC phase, you can find docs and report issues for the blocks field here:

    New Blocks field

    πŸ†• New Layouts field

    πŸ— Together with the new Blocks field we are also introducing a powerful new Layout field. Arrange blocks in multiple columns and build complex page layouts.

    Screenshot 2020-11-24 at 14 39 58

    πŸ“„ During the RC phase, you can find docs and report issues for the layout field here:

    πŸ†• New Date and Time fields

    We've never been really happy with our date field and many of you weren't either. The new date and time fields are a joy to work with and open completely new ways to enter dates.

    Date field

    πŸ“„ Docs: TBD

    πŸ†• New Writer field

    You don't need the full power of the Blocks? Maybe just some inline HTML? Then the new Writer field is here for you. Create single-line HTML with formats like bold, italic, underline or links

    Screenshot 2020-11-24 at 14 46 59


    fields: text: type: writer

    πŸ†• New List field

    As another spin-off of the Blocks field, we also added a new list field, which can be used if you need to create simple ordered or unordered lists in a more visual way than with Markdown.

    Screenshot 2020-11-24 at 14 51 29


    fields: list: type: list

    πŸ”Œ Password Reset, Password-less Login, 2FA and Auth Challenge Plugins

    With 3.5 we are introducing major enhancements for our login flow.

    Frame 1

    πŸ”’ You can now reset your password, login password-less via secure email verification code and even provide your own verification methods via auth challenge plugins. Combine this with the option to enable 2FA authentication to increase the security of your Panel.

    πŸ“„ Docs: TBD

    Redesigned Panel Search

    The Panel search has been redesigned and now shows nice previews for pages, files and users.

    Redesigned Search

    πŸ†• New unsaved changes badge in tabs

    Tabs now show unsaved changes with a new orange badge and the number of unsaved fields.

    Unsaved changes badge

    πŸ†• New unified title & slug dialog for pages

    ⚑️ Renaming a page title or changing the page URL is now done in the same dialog. With this simplified workflow you can instantly see when your Page title and slug no longer matches and need to be updated.

    Unified title and slug dialog

    πŸ†• New page status icons

    Our page status icons are now accessible with distinctive forms that no longer challenge people with color blindness.

    Screenshot 2020-11-24 at 14 25 56

    More new features

    • βž• Added I18n::formatNumber() function
    • It's now possible to pass nobody to $kirby->impersonate() to switch to a user without permissions.
    • πŸ†• New $user->nameOrEmail() method
    • Interval handling for the calendar component
    • πŸ†• New UI kit components
      • New dialogs to sort pages and files
      • New help option for headline and info fields
      • New k-tabs component
      • New k-overlay component
      • New k-drawer component
      • New k-form-drawer component
      • New k-loader component
      • New k-user-info component
      • New k-reset-password-view
      • New k-writer
      • New k-blocks
    • πŸ†• New icons
      • blank
      • cancel-small
      • circle-half
      • circle-nested
      • live
      • road-sign
    • πŸ†• New logs root ( #2875

    ✨ Enhancements

    • ⚑️ Updated translations
    • πŸ‘Œ Support for hashes in router links #2941
    • πŸ‘ Better structure field preview for date + time field
    • Accidental writes when sorting collections are now blocked #2475
    • ✨ Enhanced typography in the info text of files and pages sections
    • πŸ‘ Email: Support global debugging
    • The template in the page creation dialog is only shown if there's more than one option
    • The dropdown in the files field now opens automatically when you click on an empty files field
    • πŸ‘ Callback support for Collection::filterBy()
    • πŸ‘ $helper.string.template supports array length and is now case insensitive
    • Unified Collection methods (filter, sort, group)
    • Kirby\Cms\App: Option to create a local-only instance #2555
    • πŸ†• New Locale class for PHP locale handling and consistent locale formats in locale option #2893
    • πŸ‘ Better and
    • ⚑️ Updated JS dependencies
    • βž• additional Japanese slug rules
    • πŸ›  Core session keys are now prefixed with kirby.
    • πŸ‘ Better error messages in the login form when debug mode is enabled
    • The k-empty component is now automatically converted to a button if there's a click handler.
    • Concurrent sort API calls are now prevented #2863
    • βœ… Faster unit tests
    • βœ… We are now using Cypress for frontend tests

    πŸ’₯ Breaking changes

    🚚 The following methods have been marked as deprecated since Kirby 3.0.0 and are now removed:

    $file->meta() (use $file->content())

    $file->rename() (use $file->changeName())

    $page->hasInvisibleChildren() (use $page->hasUnlistedChildren())

    $page->hasNextVisible() (use $page->hasNextListed())

    $page->hasNextInvisible() (use $page->hasNextUnlisted())

    $page->hasPrevInvisible() (use $page->hasPrevUnlisted())

    $page->hasPrevVisible() (use $page->hasPrevListed())

    $page->hasVisibleChildren() (use $page->hasListedChildren())

    $page->nextVisible() (use $page->nextListed())

    $page->nextInvisible() (use $page->nextUnlisted())

    $page->prevVisible() (use $page->prevListed())

    $page->prevInvisible() (use $page->prevUnlisted())

    $page->isInvisible() (use $page->isUnlisted())

    $page->isVisible() (use $page->isListed())

    $pages->invisible() (use $pages->unlisted())

    $pages->visible() (use $page->listed())

    0️⃣ $languages->findDefault() (use $languages->default())

    πŸ—„ Deprecated methods

    ⚑️ Deprecated methods are only marked as deprecated for now and will be removed in a future version. Please update your code accordingly if you still use the deprecated methods.

    • $page->sort() (use $page->changeSort())

    πŸ› Bug fixes

    • πŸ›  Fixed translation / slug rule loading #2230
    • πŸ›  Fixed disappearing topbar on custom view routes #2932
    • πŸ›  Fixed broken error messages for required fields #2917
    • πŸ›  Fixed pagination error in Structure field when duplicating items
    • πŸ›  Fixed item index on delete for structure field #2887
    • πŸ›  Fixed sorting in the files section when the section is not sortable #2690
    • πŸ”Œ Panel views can be replaced in your plugins again #2506
    • πŸ”Œ You can extend nested Vue components in your plugins #1438