Skip to content

Releases: getkirby/kirby

4.0.0-alpha.2

01 Jun 09:34
Compare
Choose a tag to compare
4.0.0-alpha.2 Pre-release
Pre-release

🚀 Kirby 4 roadmap

This is a pre-release for Kirby 4, which will be released later this year. Find out more about features and our roadmap on our Kirby 4 release page: https://getkirby.com/releases/4.0

✨ Enhancements

  • Added polyfill for :has() CSS selector #5203
  • Panel.js API improvements
    • New panel.error() method that handles logging error in debug mode and opening notification if needed #5213
    • Silent loading ****#5206
    • Renamed panel Module to State #5212
    • Renamed panel Island to Modal #5212

🐛 Bug fixes

  • Fix typo I18n::translate method name to fix the language view #5193
  • Fixed missing return type #5186
  • Fix extending Vue components #5183 #5182 #5201
  • API requests now send always the current language along
  • Content store gets reloaded on view change again
  • Fixed language and content (re-)loading #5200
  • Page move: consider section parent in rules #5221
  • Fix page move dialog + tree recursion #5211
  • Fix field API #5216

4.0.0-alpha.1

25 May 08:57
Compare
Choose a tag to compare
4.0.0-alpha.1 Pre-release
Pre-release

This is the first public alpha releae for Kirby 4 🌱

We've prepared a release page with information about the alpha, all new features and docs: https://getkirby.com/releases/4.0

3.9.4

21 Apr 09:24
282b1e2
Compare
Choose a tag to compare

✨ Enhancements

  • F::move() now detects if the source and target are on different filesystems; it then copies the file and deletes the source on success instead of atomically moving the file #5124
  • Removed noopener  where it's already implied by noreferrer #5138
  • Inherit when for field groups (thanks @youngcut) #5143
fields:
  showit:
    type: toggle
  myGroup:
    type: group
    when:
      showit: true
    fields:
      myField1:
        type: text
      myField2:
        type: text
  • Introduced new YAML handler that can be activated by setting the config option yaml.handler to 'symfony'. We plan to switch over to the Symfony handler in the next major releases. For now, 'spyc' remains the default.
<?php 

// File: /site/config/config.php
return [
  'yaml.handler' => 'symfony'
];

🐛 Bug fixes

  • Custom blocks and layouts methods no longer bleed into collection methods (thanks @lukaskleinschmidt) #5120
  • HTML gets now stripped from Block labels #5127
  • $file->update(['template' => null]) allows unsetting template again #5131
  • alt text from image source does not get adopted (thanks @holmey) #5132
  • Date field with display property changes value while editing #5118
  • Uploading files no longer fails with the error "Operation not permitted" when the temporary directory is on another filesystem #5024
  • Fix detecting language with locale #5135
  • Fix filling default values while creating new page on secondary language #5140

♻️ Refactored

  • Removed abandoned phpcpd tool from CI #5139
  • Upgrade to vite 4.3 #5154

3.9.3

30 Mar 13:14
ce4aaac
Compare
Choose a tag to compare

🎉 Features

  • New Str methods: ::match, ::matches and ::matchAll (thanks to @adamkiss) #5034
  • New A methods: ::count, ::has, ::reduce, ::slice and ::sum (thanks to @adamkiss) #5032

✨ Enhancements

  • Unicode characters and slashes are no longer escaped in blocks and layout fields, even if the pretty: true mode is not used https://kirby.nolt.io/518
  • Upgraded SimpleImage library which adds avif support and improved color extractor #5089

🐛 Bug fixes

  • Fix wrong sort number when using limit in files section #5105
  • Using zero number in params now returns the correct result #5113
  • Fixed issues with pasting blocks, e.g. in block selector dialog #5110
  • Fix blocks and layout field ids for default values #5111

📜 Updates to the Kirby license agreement (EULA)

On March 21, 2023, we made minor edits to our license agreement (EULA) based on community feedback we received in the last months.

You can find the full text of the new EULA on the Kirby website, together with a diff from the previous version and the following summary:

Your rights

  • We have updated the section on license termination. You still have the right to terminate the license agreement at any time. However we restricted our own right of termination so that we can only do so on violation of or non-compliance with the license terms. We never intended to terminate licenses arbitrarily and now this is written in black and white to give you and your clients legal certainty.

Clarifications

  • We made explicit that a license transfer results in the transfer of all rights and obligations from the license agreement to the new licensee at the moment we confirm the transfer.
  • We have clarified that copies of and edits to our source code are also allowed for the purpose of code contributions back to our GitHub repository.
  • We declare that you are allowed indefinite use of all Kirby versions that are covered by the respective license.

🧹 Housekeeping

  • Updated composer dependencies
  • Reduced stale bot to only take care of issues/PR that need user input and aren’t actionable by the team

3.9.2

08 Mar 11:19
9ecd11c
Compare
Choose a tag to compare

🎉 Features

  • Custom asset methods #4989 (thanks to @tobimori)
  • Block and layout objects for the blocks and layout fields now allow access to the parent field object with $block->field(), $layout->field() and $layoutColumn->field(). #5053
  • New A::keyBy() method to add keys to an array (thanks to @adamkiss) #5040

✨ Enhancements

  • Pages and files sections: show most relevant search results with flip and sortBy #5035
  • Support shorts for the youtube embed JS helper #5059
  • Changing page template: additional check to ensure only valid templates can be used #5060
  • A::fill accepts a closure/callable (thanks to @adamkiss) #5036
  • Old editor and builder content gets automatically translated to blocks again #5051
  • Corrected the menu label from "Logout" (noun) to "Log out" (verb). (thanks to @purplespider) #5047
  • New $helper.field.form(fields) function to set up values for an empty form #5076

🐛 Fixes

  • Fix updating file template #5049
  • Page::create() doesn’t ignore isDraft prop any longer (thanks to @SeriousKen) #5042
  • Pages::factory() correctly considers isDraft/draft props as well as $draft parameter (thanks to @SeriousKen) #5043
  • Fix alt  attribute issue for asset()  helper #5066
  • Fixes ->inline()->nl2br() and ->toTimestamp() field methods when field is empty or not exists #5063
  • Fixes doNotTrack  argument in youtube embed JS helper #5059
  • Options from API: field methods can be applied to text/value #5068
  • Fix displaying conditional fields for empty when condition #4838
  • Fixed some console errors when Panel received Unauthenticated response #4967
  • Nested blocks can be copied/pasted #5074
  • Dir::index()$ignore parameter works now #5010

3.9.1

31 Jan 10:11
617a07a
Compare
Choose a tag to compare

✨ Enhancements

  • Deprecation warnings can now be disabled granularly by setting Helpers::$deprecations['<deprecation-key>'] = false in your site/config/config.php. You can find the possible deprecation keys in kirby/src/Cms/Helpers.php. #5014
  • The deprecation warning for passing an empty string as the value to Xml::attr() (introduced in 3.9.0) is no longer displayed by default because there are use cases where both the old and new behavior are fine. If you still want to check your code, you can enable the deprecation warning with Helpers::$deprecations['xml-attr-empty-string'] = true. #4934
  • Passing the snippet name argument as null is now handled gracefully #5004
  • Date field: fix tabbing behavior #5018 (Thank you to @mrflix 🙌)
  • Updated translations

🐛 Fixed

  • Emojis are now correctly treated again when using ParsedownExtra #5008
  • Fixed regression with avatar uploads #5022
  • Show correct error message on invalid cache type configuration #5012

♻️ Refactoring

  • Improvements for Http classes‘ code quality #4990
  • The CI workflow that runs on release now checks the code coverage again #5016

3.9.0 – Brookesia

17 Jan 13:52
066b050
Compare
Choose a tag to compare

We've prepared a special site for this release with all new features and changes: https://getkirby.com/releases/3.9

📈 Stats

  • 204 commits
  • 73 closed issues and PRs

3.8.4

10 Jan 08:56
d8a3654
Compare
Choose a tag to compare

🐛 Bug fixes

  • The multiselect field search works again #4951
  • Date field: Maximum call stack size exceeded error fixed #4969
  • Tags input: spaces aren't removed anymore #4977
  • Fixed issues with k-form and k-fieldset not updating values #4982
  • Tags and multiselect fields arrow actions are working properly again #4994

3.8.3

06 Dec 14:38
41719bd
Compare
Choose a tag to compare

🎉 Features

  • Kirby query language gains new functionalities: #4854 (thanks to @adamkiss for his help with regex on this)
    • Optional chaining: page('note').cover.toFile?.url does not crash anymore when no cover file is present, but returns null
    • Simple comparisons: support for a ? b : ca ?: c and a ?? b
  • New hook: page.render:before|afterhttps://kirby.nolt.io/419
  • New language hooks: https://kirby.nolt.io/419
    • language.create:before|after: It is triggered when a new language is created.
    • language.update:before|after: It is triggered when the language is updated.
    • language.delete:before|after: It is triggered when the language is deleted.
  • Added a new option 'content.uuid' => 'uuid-v4' to switch the built-in UUID generator to UUID v4 mode #4868
  • New Mastodon icon.

✨ Enhancements

  • Adds a plus button to the blocks field. When there are no blocks, or when the maximum amount of blocks is reached, the button is not visible. (by @wiegertschouten) #4858

blocks

  • Documents that the function Uri::domain() might contain the auth and port parts, by explicitly mentioning them in the docblock. #4846
  • Stats section info prop can be translated #4840

🐛 Bug Fixes

  • Fixed right and left join in Query class #4812
  • Fixes multiselect field when no options for a value #4848
  • Fixes duplicating UUIDs for children and its files #4864

☠️ Deprecated

  • Vue: Usage of v-model on all Kirby components (and in general) has been soft-deprecated (no consequences yet, but strongly recommend to avoid it/move away from it). Use :value="" @input="" instead, e.g.
// before
v-model="myValue"

// now
:value="myValue"
@input="myValue = $event"

♻️ Refactoring

  • Replaced many classname strings with ::class notation fro better IDE support #4826
  • Get rid of more unnecessary else statements #4811
  • PHP 8: clean up Database package #4812
  • Vue: use imported set()del() #4817
  • Vue: Get rid of $children usage #4818
  • Vue: Remove importing Vue globally as much as possible #4820
  • Vue: register e.g. component instead via Vue plugin that receives app instance in Vue 3 (in Vue 2.7 still global Vue) #4820
  • Order-sensitive v-bind usage #4819
  • Replaced all v-model occurrences with :value="value" @input="value = $event", due to https://v3-migration.vuejs.org/breaking-changes/v-model.html #4822
  • PHP 8.2 prep: fix partial callables #4889

3.8.2

15 Nov 12:23
f16b0b4
Compare
Choose a tag to compare

✨ Enhancements

  • Kirby query improvements #4626
    • New default entries/functions for queries: kirbycollection("your-collection")page("blog")file("blog/test.pdf")siteuser("homer")t("your.i18n.key")
    • Support for closures as query arguments: site.myLazyFunction(() => site.children) - no support for parameters or others, only as lazy-calling measure
  • Support for YouTube Shorts video URLs #4791
  • UUIDs are now supported as API fields for pages, files and users #4810

🐛 Bug Fixes

  • User fields work correctly when user(s) not found #4797
  • Fixed duplicated UUIDs for pages and files when copying/duplicating pages #4831

☠️ Deprecated

  • New Kirby\Query namespace with new Kirby\Query\Query class (to be used going forward for queries). Old Kirby\Toolkit\Query class has been deprecated and will be removed in Kirby 3.10.0. Use Kirby\Query\Query instead, e.g.Query::factory($query)->resolve($data). #4626
    • new Query($query, $data): Passing $data to constructor will be deprecated. Use (new Query($query))->resolve($data) instead.
    • Query::result() will be deprecated. Use $query->resolve($data) instead.

♻️ Refactoring

  • Upgrade npm dependencies #4813
  • Import h() from Vue #4816
  • Improve App::language() syntax #4808
  • Improve ContentTranslation::content() syntax #4806
  • Use coalesce equal in more places #4809
  • PHP 8: clean up Email package #4525