Kirby 2.2.0

Update (17.11.2015)

Unfortunately we got reports for a few more bugs after the release. A new bugfix release is now ready to be downloaded or can be pulled from Github.

See changelog for 2.2.1

Release article

You can read more about this release in our blog.


Update instructions

Please follow the update instructions for your existing Kirby site.

General changes

  • Dropped support for PHP 5.3
  • New testkit and additional unit tests for higher build quality

Panel changes

  • Rewritten architecture. Instead of a js-based router/controller architecture, the panel now uses plain server-rendered views and speeds them up with Pjax for a more reliable solution in case of js issues.
  • New static sidebar for a better user experience while editing content
  • Context menus for files and pages for easier editing and administration in the sidebar
  • A beautiful new unified search for pages and users
  • Far better user experience for file uploads. Files can now be dragged directly into the browser in the file views and on in page forms.
  • Drag & Drop previews when images are being dragged from the sidebar into textareas
  • Custom user form fields with new user blueprints. You can now add a blueprint per role to site/blueprints/users (i.e. site/blueprints/users/admin.yml) and set additional custom fields there for each role. They will be added to the user forms in the panel.
  • New blueprint field snippets, which can be used in any blueprint — even user blueprints and structure fields to create forms more easily.
  • A new "style: table" option for structure fields, which will turn the display of entries into a nice table
  • A new "modalsize: small|medium|large" option for structure fields, which helps to control the width of structure modals
  • New datetime form field
  • New minimum and maximum indicators, when you pass min/max validation rules to text fields and textareas.
  • New page toggle modal, which makes it possible to sort a page directly from the sidebar or via context menu
  • Better pagination for pages and users with new select field for each page number
  • Better display of image previews in the file view
  • More secure session handling with new options to control session timeouts
  • Added counters for users, files and subpages
  • Brute-force protection for the login screen
  • New option for all custom form fields to create own routes and views. This is especially awesome if your form field needs modals or an API. Check out the structure field implementation for details.
  • Movable panel folder: you can now rename the panel folder and change your rewrite rules and the panel will keep working
  • Allowed localhost URLs for dynamic field options
  • Translated labels fall now back to the default panel language if a user chooses an interface language which has no translation.
  • Implemented "page: /" option for options queries. You can use this for example for select fields to fetch the main pages with an option query.
  • New design for the "changes" alert in page forms.
  • Better installation flow. All required folders are now created automatically if possible.
  • New Gulp based asset optimization workflow.
  • Better slug generation on the client side.
  • More translatable strings, especially for various error messages.
  • Updated font awesome and source sans pro with woff2 support for faster font downloads.
  • Required select fields no longer have an empty first option
  • Required checkboxes now work correctly if you check just one box.
  • Two new options ( and to hide the version and license infos
  • Installation now logs in the first user automatically.
  • Renaming files now respects the "sanitize: false" option in blueprints
  • More solid redirect architecture after form submission
  • More solid CSRF protection for all forms and editing requests.
  • Updated all translations via Transifex:
  • Fixed a set of display issues for RTL translations.
  • Fixed modal css for less blurry modals in Chrome and Safari
  • Fixed sorting bug when the date.handler option is set to strftime
  • Fixed display bug in Chrome for the user account in the dashboard
  • Fixed bug in autocomplete dropdowns, which prevented to add the correct tag on click

Core changes

  • New thumb api for images: $page->image()->resize($width, $height) and $page->image()->crop($width, $height)
  • New auto HTML tag generation for images: $page->image()->html()
  • Updated parsedown and parsedown extra versions with various fixes
  • Sessions only start on demand
  • the js() helper can now pass the async option also to an array of scripts.
  • You can now check for an existing field with $page->content()->has('somefield') and also directly on the field $page->somefield()->exists()
  • Preperation for user permissions for the next release.
  • Fixed pages::groupBy() method. This method will now deliver reliable results!
  • Pagination with invalid page numbers will now redirect to the error page
  • New method to more page collections

Toolkit changes

  • Proper URL decoding or params
  • Option to add multiple filters to a single route by using the pipe syntax
  • Sessions are started only on demand
  • Collection::filterBy method now supports objects as values and converts them to strings.
  • More consistent units for niceSize:
  • New s::pull method, which gets a value from the session and removes it directly afterwards
  • Used httpOnly as default for all cookies
  • Updated the yaml parser
  • Better groupBy method for the collection class
  • More secure session handling with session fixation protection, httpOnly cookies, session ID generation, session name option, visitor fingerprinting and variable session timeouts.
  • New redirect option for the pagination class
  • Fixed str::slug to finally use the separator parameter

Our partners

CDN by KeyCDN Search by Algolia