github getkirby/kirby 6.0.0-beta.2

pre-release3 hours ago

Changes since beta.1

Beta 2 includes all patches from 5.6.2

✨ Enhancements

  • Show loading empty state instead of skeleton in list fields #8646
  • Allow plugins to extend lazy-loaded components. Since k-writer-input loads ProseMirror on demand (6.0.0-beta.1), it is registered as an async component. Plugins using extends: "k-writer-input" got the async wrapper instead of the actual component. Plugin components that extend a lazy-loaded component now become lazy themselves. They get resolved once the parent has loaded, so extends: "k-writer-input" works again without workarounds. panel.plugins.components still holds the plain options object, so kirbyup's HMR keeps working. #8657

🐛 Bug fixes

  • Using lowercase names for Panel chunks
  • FormDialog/FormDrawer sent an empty value as []. But PHP encodes an empty array as a JSON array. So the actual input in Vue ended up as a named property on an array, and JSON.stringify drops that. ::props() methods now cast value to an object, so props()['value'] is a stdClass on the PHP side. #8652
  • Dialog text now has a real gap to the fields below it. #8654
  • Open site preview from the preview page tree #8642
  • Fixed select and reset color options in the color field #8661
  • Link field no longer just shows an [x] for a page or file that no longer exists #8651
  • k-input and k-collapsible no longer call listeners like @keydown twice. #8671
  • Kirby\Cms\LazyCollection::data() loads all elements before returning them, e.g. $kirby->users()->data() no longer returns an empty array. #8635
  • Paginating or filtering a list of pages or files no longer creates fake unsaved changes #8688

New changes for the final release

🎉 Features

  • panel.request() has a new external option to send plain requests to third-party URLs. #8658

✨ Enhancements

  • k-tag supports color themes (positive, negative, notice, warning, info) as tinted tags #8662
  • Panel request routes accept GET and POST requests by default. #8659
  • Pages, files and users fields keep entries whose page, file or user doesn't exist (anymore). #8663
  • New Kirby\Panel\Ui\Item\MissingItem class #8663
  • New panel.act() method to act on the message, event, redirect and reload keys of a response. #8660
  • Dialog and drawer responses can skip the view reload with reload: false. #8660

🔒 Security hardening

  • The Panel checks the CSRF token for all its routes but views: dialogs, drawers, dropdowns, searches and request routes. #8659

🚨 Breaking changes

  • Plugins that call Panel dialogs, drawers, dropdowns, searches or request routes with their own fetch() have to send the CSRF token in the X-CSRF header (panel.system.csrf). panel.get(), panel.post() and panel.request() already send it. #8659
  • Removed code that has been deprecated since Kirby 5 and earlier
    • Removed deprecated Kirby\Toolkit\Iterator::key(), Kirby\Toolkit\Iterator::current(), Kirby\Toolkit\Iterator::prev(), Kirby\Toolkit\Iterator::next(), Kirby\Toolkit\Iterator::rewind() and Kirby\Toolkit\Iterator::valid(). Loop over collections with foreach or use Kirby\Toolkit\Collection::first(), Kirby\Toolkit\Collection::last() or Kirby\Toolkit\Collection::nth() instead. Remaining calls like $collection->current() don't throw an error: CMS collections (e.g. Kirby\Cms\Pages) return null, Kirby\Toolkit\Collection returns the element with the key current (or null).
    • Removed deprecated Kirby\Cms\LazyCollection::current(), Kirby\Cms\LazyCollection::next() and Kirby\Cms\LazyCollection::prev().
    • Kirby\Cms\LazyCollection (e.g. Kirby\Cms\Users) no longer loads all elements before calling a custom collection method. Inside custom methods, the $this->data property can be empty or contain null values. Use $this->data(), foreach or other collection methods, or call $this->hydrate() first.
    • Kirby\Filesystem\Dir::index() no longer accepts null for the $ignore argument. Pass an array of absolute paths, or false to disable the Kirby\Filesystem\Dir::$ignore list.
    • Kirby\Http\Router::find() no longer accepts null for the $ignore argument. Pass an empty array instead.
    • panel.dialog.successEvents(), panel.dialog.successNotification() and panel.dialog.successRedirect() have been removed, as have the same methods on panel.drawer. Use panel.act() instead. #8660

Don't miss a new kirby release

NewReleases is sending notifications on new releases.