From 96d3331ec50b5ffa99f360a7742a876e33a97d0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Wed, 4 Feb 2026 16:57:08 +0100 Subject: [PATCH 01/36] Added doc for additional parameter for ibexa_render --- docs/release_notes/ibexa_dxp_v4.6.md | 31 +++++++++++++++++++ docs/release_notes/ibexa_dxp_v5.0.md | 31 +++++++++++++++++++ .../content_twig_functions.md | 8 +++++ 3 files changed, 70 insertions(+) diff --git a/docs/release_notes/ibexa_dxp_v4.6.md b/docs/release_notes/ibexa_dxp_v4.6.md index 912e4d30ea..17d28578ce 100644 --- a/docs/release_notes/ibexa_dxp_v4.6.md +++ b/docs/release_notes/ibexa_dxp_v4.6.md @@ -10,6 +10,37 @@ month_change: false
+[[% set version = 'v4.6.28' %]] +[[= release_note_entry_begin("Ibexa DXP " + version, '2026-02-04', ['Headless', 'Experience', 'Commerce']) =]] + +### Developer experience + +#### Pass custom parameters to `ibexa_render()` Twig function + +You can now pass custom parameters to templates when using the `ibexa_render()` Twig function with the new `params` option, similar to how you can with `render(controller())`. + +This allows you to provide additional context or data to your view templates: + +``` html+twig +{{ ibexa_render(content, { + 'viewType': 'line', + 'method': 'inline', + 'params': { + 'custom_param': 'custom_value', + 'another_param': 'another_value' + } +}) }} +``` + +The parameters are available in your template as regular variables. + +For more information, see [`ibexa_render()` Twig function](content_twig_functions.md#ibexa_render). + +### Full changelog + +[[% include 'snippets/release_46.md' %]] +[[= release_note_entry_end() =]] + [[% set version = 'v4.6.27' %]] [[= release_note_entry_begin("Ibexa DXP " + version, '2026-02-03', ['Headless', 'Experience', 'Commerce']) =]] diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index 626e4bd349..5df8479a47 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -10,6 +10,37 @@ month_change: false
+[[% set version = 'v5.0.6' %]] +[[= release_note_entry_begin("Ibexa DXP " + version, '2026-02-04', ['Headless', 'Experience', 'Commerce']) =]] + +### Developer experience + +#### Pass custom parameters to `ibexa_render()` Twig function + +You can now pass custom parameters to templates when using the `ibexa_render()` Twig function with the new `params` option, similar to how you can with `render(controller())`. + +This allows you to provide additional context or data to your view templates: + +``` html+twig +{{ ibexa_render(content, { + 'viewType': 'line', + 'method': 'inline', + 'params': { + 'custom_param': 'custom_value', + 'another_param': 'another_value' + } +}) }} +``` + +The parameters are available in your template as regular variables. + +For more information, see [`ibexa_render()` Twig function](content_twig_functions.md#ibexa_render). + +### Full changelog + +[[% include 'snippets/release_50.md' %]] +[[= release_note_entry_end() =]] + [[% set version = 'v5.0.5' %]] [[= release_note_entry_begin("Ibexa DXP " + version, '2026-01-15', ['Headless', 'Experience', 'Commerce']) =]] diff --git a/docs/templating/twig_function_reference/content_twig_functions.md b/docs/templating/twig_function_reference/content_twig_functions.md index 21e8339156..c1e9b125be 100644 --- a/docs/templating/twig_function_reference/content_twig_functions.md +++ b/docs/templating/twig_function_reference/content_twig_functions.md @@ -32,6 +32,7 @@ You can provide `ibexa_render()` with either a content item or a Location object |`content` or `location`|[`Content`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Content.html), [`ContentAwareInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) or [`Location`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Location.html)|Content item or its location.| |`method`|`string`|(optional) [Rendering method](#rendering-methods). One of: `direct`, `inline`, `esi`, `ssi`. (Default method is `direct`)| |`viewType`|`string`|(optional) [View type](template_configuration.md#view-types). (Default view type is `embed`)| +|`params`|`array`|(optional) Hash of variables to pass to the template.| #### Rendering methods @@ -48,6 +49,13 @@ You can pass one of the following rendering methods to `ibexa_render()`: {{ ibexa_render(content, {'viewType': 'line'}) }} {{ ibexa_render(content, {'method': 'inline'}) }} + +{{ ibexa_render(content, { + 'viewType': 'line', + 'params': { + 'custom_param': 'custom_value' + } +}) }} ``` ## Content information From 8ceb8e41995a01da25132d80d36027f672067b8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Thu, 5 Feb 2026 09:06:11 +0100 Subject: [PATCH 02/36] Added update sections --- docs/update_and_migration/from_4.6/update_from_4.6.md | 4 ++++ docs/update_and_migration/from_5.0/update_from_5.0.md | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/docs/update_and_migration/from_4.6/update_from_4.6.md b/docs/update_and_migration/from_4.6/update_from_4.6.md index 26bd3560c4..406a4e9a2d 100644 --- a/docs/update_and_migration/from_4.6/update_from_4.6.md +++ b/docs/update_and_migration/from_4.6/update_from_4.6.md @@ -566,6 +566,10 @@ If you do, add the required dependencies to your project: composer require guzzlehttp/guzzle:^6.5 php-http/guzzle6-adapter:^2.0 ``` +## v4.6.28 + +No additional steps needed. + [[% include 'snippets/update/notify_support.md' %]] diff --git a/docs/update_and_migration/from_5.0/update_from_5.0.md b/docs/update_and_migration/from_5.0/update_from_5.0.md index 67e704e4fe..8b67722d93 100644 --- a/docs/update_and_migration/from_5.0/update_from_5.0.md +++ b/docs/update_and_migration/from_5.0/update_from_5.0.md @@ -281,6 +281,11 @@ Run the provided SQL upgrade script to ensure the Messenger tables for [backgrou psql < vendor/ibexa/installer/upgrade/db/postgresql/ibexa-5.0.4-to-5.0.5.sql ``` +## v5.0.6 + +No additional steps needed. + + ## LTS Updates and additional packages [LTS Updates](editions.md#lts-updates) are standalone packages with their own update procedures. From 7838c3f606abf90e9c0796bdaa14115d618e5e0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Thu, 5 Feb 2026 09:57:48 +0100 Subject: [PATCH 03/36] Update docs/update_and_migration/from_5.0/update_from_5.0.md Co-authored-by: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> --- docs/update_and_migration/from_5.0/update_from_5.0.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/update_and_migration/from_5.0/update_from_5.0.md b/docs/update_and_migration/from_5.0/update_from_5.0.md index 8b67722d93..984761295a 100644 --- a/docs/update_and_migration/from_5.0/update_from_5.0.md +++ b/docs/update_and_migration/from_5.0/update_from_5.0.md @@ -285,7 +285,6 @@ Run the provided SQL upgrade script to ensure the Messenger tables for [backgrou No additional steps needed. - ## LTS Updates and additional packages [LTS Updates](editions.md#lts-updates) are standalone packages with their own update procedures. From 9b01a2991d52c3a9b82b21dbe041c59e4846ba78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Fri, 6 Feb 2026 09:24:59 +0100 Subject: [PATCH 04/36] Added doc for image editor's gaussian blur --- .../image_editor/config/packages/image_editor.yaml | 1 + .../images/configure_image_editor.md | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/code_samples/back_office/image_editor/config/packages/image_editor.yaml b/code_samples/back_office/image_editor/config/packages/image_editor.yaml index 07b5dbc8d4..799d1db50d 100644 --- a/code_samples/back_office/image_editor/config/packages/image_editor.yaml +++ b/code_samples/back_office/image_editor/config/packages/image_editor.yaml @@ -38,3 +38,4 @@ ibexa: id: dot priority: 50 image_quality: 0.8 + gaussian_blur_strength: 0.05 diff --git a/docs/content_management/images/configure_image_editor.md b/docs/content_management/images/configure_image_editor.md index 10f362c1f3..06c678bd03 100644 --- a/docs/content_management/images/configure_image_editor.md +++ b/docs/content_management/images/configure_image_editor.md @@ -44,6 +44,17 @@ The default quality is 0.92: [[= include_file('code_samples/back_office/image_editor/config/packages/image_editor.yaml', 0, 4) =]] [[= include_file('code_samples/back_office/image_editor/config/packages/image_editor.yaml', 39, 40) =]] ``` +### Gaussian blur strength + +You can configure the gaussian blur strength applied during image optimization with the following configuration. + +The setting accepts values between 0 and 1, where higher values increase blur and reduce file size, while lower values maintain sharpness. +The default value is 0.05: + +``` yaml +[[= include_file('code_samples/back_office/image_editor/config/packages/image_editor.yaml', 0, 4) =]] [[= include_file('code_samples/back_office/image_editor/config/packages/image_editor.yaml', 40, 41) =]] +``` + ### Additional information Each image can be accompanied by additional information that isn't visible to the user. From 52dcff4eef674b38d3429e5aac8b371da438b0c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Fri, 6 Feb 2026 09:36:11 +0100 Subject: [PATCH 05/36] Added release notes draft --- docs/release_notes/ibexa_dxp_v4.6.md | 8 ++++++++ docs/release_notes/ibexa_dxp_v5.0.md | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/docs/release_notes/ibexa_dxp_v4.6.md b/docs/release_notes/ibexa_dxp_v4.6.md index 912e4d30ea..d7737de11f 100644 --- a/docs/release_notes/ibexa_dxp_v4.6.md +++ b/docs/release_notes/ibexa_dxp_v4.6.md @@ -10,6 +10,14 @@ month_change: false
+ +### Gaussian Blur Configuration in Image Editor + +The [Image Editor]([[= user_doc =]]/image_management/edit_images/) now supports configurable gaussian blur strength for image optimization. +You can adjust the blur level to balance between file size reduction and image sharpness. +For more information, see [Configure image editor](configure_image_editor.md#gaussian-blur-strength). + + [[% set version = 'v4.6.27' %]] [[= release_note_entry_begin("Ibexa DXP " + version, '2026-02-03', ['Headless', 'Experience', 'Commerce']) =]] diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index 626e4bd349..b7892256c7 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -10,6 +10,13 @@ month_change: false
+ +### Gaussian Blur Configuration in Image Editor + +The [Image Editor]([[= user_doc =]]/image_management/edit_images/) now supports configurable gaussian blur strength for image optimization. +You can adjust the blur level to balance between file size reduction and image sharpness. +For more information, see [Configure image editor](configure_image_editor.md#gaussian-blur-strength). + [[% set version = 'v5.0.5' %]] [[= release_note_entry_begin("Ibexa DXP " + version, '2026-01-15', ['Headless', 'Experience', 'Commerce']) =]] From e792889a257001473674d72dfe3a779a475ed8ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Wed, 11 Feb 2026 15:01:58 +0100 Subject: [PATCH 06/36] Reworked RN drafts --- docs/release_notes/ibexa_dxp_v4.6.md | 8 +------- docs/release_notes/ibexa_dxp_v5.0.md | 9 +-------- docs/update_and_migration/from_4.6/update_from_4.6.md | 2 -- docs/update_and_migration/from_5.0/update_from_5.0.md | 4 ---- 4 files changed, 2 insertions(+), 21 deletions(-) diff --git a/docs/release_notes/ibexa_dxp_v4.6.md b/docs/release_notes/ibexa_dxp_v4.6.md index 17d28578ce..a95a49dfb6 100644 --- a/docs/release_notes/ibexa_dxp_v4.6.md +++ b/docs/release_notes/ibexa_dxp_v4.6.md @@ -10,9 +10,7 @@ month_change: false
-[[% set version = 'v4.6.28' %]] -[[= release_note_entry_begin("Ibexa DXP " + version, '2026-02-04', ['Headless', 'Experience', 'Commerce']) =]] - + ### Developer experience #### Pass custom parameters to `ibexa_render()` Twig function @@ -36,10 +34,6 @@ The parameters are available in your template as regular variables. For more information, see [`ibexa_render()` Twig function](content_twig_functions.md#ibexa_render). -### Full changelog - -[[% include 'snippets/release_46.md' %]] -[[= release_note_entry_end() =]] [[% set version = 'v4.6.27' %]] [[= release_note_entry_begin("Ibexa DXP " + version, '2026-02-03', ['Headless', 'Experience', 'Commerce']) =]] diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index 5df8479a47..709fc8d608 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -10,9 +10,7 @@ month_change: false
-[[% set version = 'v5.0.6' %]] -[[= release_note_entry_begin("Ibexa DXP " + version, '2026-02-04', ['Headless', 'Experience', 'Commerce']) =]] - + ### Developer experience #### Pass custom parameters to `ibexa_render()` Twig function @@ -36,11 +34,6 @@ The parameters are available in your template as regular variables. For more information, see [`ibexa_render()` Twig function](content_twig_functions.md#ibexa_render). -### Full changelog - -[[% include 'snippets/release_50.md' %]] -[[= release_note_entry_end() =]] - [[% set version = 'v5.0.5' %]] [[= release_note_entry_begin("Ibexa DXP " + version, '2026-01-15', ['Headless', 'Experience', 'Commerce']) =]] diff --git a/docs/update_and_migration/from_4.6/update_from_4.6.md b/docs/update_and_migration/from_4.6/update_from_4.6.md index 01386b8a4a..8e445ee58c 100644 --- a/docs/update_and_migration/from_4.6/update_from_4.6.md +++ b/docs/update_and_migration/from_4.6/update_from_4.6.md @@ -566,8 +566,6 @@ If you do, add the required dependencies to your project: composer require guzzlehttp/guzzle:^6.5 php-http/guzzle6-adapter:^2.0 ``` -## v4.6.28 - ### Messenger support in CDP If you're using [CDP](cdp.md) and haven't configured Ibexa Messenger yet, do so now. diff --git a/docs/update_and_migration/from_5.0/update_from_5.0.md b/docs/update_and_migration/from_5.0/update_from_5.0.md index 984761295a..67e704e4fe 100644 --- a/docs/update_and_migration/from_5.0/update_from_5.0.md +++ b/docs/update_and_migration/from_5.0/update_from_5.0.md @@ -281,10 +281,6 @@ Run the provided SQL upgrade script to ensure the Messenger tables for [backgrou psql < vendor/ibexa/installer/upgrade/db/postgresql/ibexa-5.0.4-to-5.0.5.sql ``` -## v5.0.6 - -No additional steps needed. - ## LTS Updates and additional packages [LTS Updates](editions.md#lts-updates) are standalone packages with their own update procedures. From 5617cfa715f428e33625864ad5d7c924b58b752e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Tue, 17 Feb 2026 09:22:35 +0100 Subject: [PATCH 07/36] Update docs/release_notes/ibexa_dxp_v4.6.md Co-authored-by: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> --- docs/release_notes/ibexa_dxp_v4.6.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/release_notes/ibexa_dxp_v4.6.md b/docs/release_notes/ibexa_dxp_v4.6.md index a95a49dfb6..b880a650f4 100644 --- a/docs/release_notes/ibexa_dxp_v4.6.md +++ b/docs/release_notes/ibexa_dxp_v4.6.md @@ -34,7 +34,6 @@ The parameters are available in your template as regular variables. For more information, see [`ibexa_render()` Twig function](content_twig_functions.md#ibexa_render). - [[% set version = 'v4.6.27' %]] [[= release_note_entry_begin("Ibexa DXP " + version, '2026-02-03', ['Headless', 'Experience', 'Commerce']) =]] From 042149c2267cc2a66530e0ea8a7e870f5c8cdd6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Tue, 24 Feb 2026 11:56:07 +0100 Subject: [PATCH 08/36] Update config value range --- .../images/configure_image_editor.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/content_management/images/configure_image_editor.md b/docs/content_management/images/configure_image_editor.md index 06c678bd03..05cb43445e 100644 --- a/docs/content_management/images/configure_image_editor.md +++ b/docs/content_management/images/configure_image_editor.md @@ -33,7 +33,9 @@ The following example sets the aspect ratio values and label names for buttons u [[= include_file('code_samples/back_office/image_editor/config/packages/image_editor.yaml', 0, 36) =]] ``` -### Image quality +### Image file size optimization + +#### Image quality You can configure the quality of the images modified in the Image Editor with the following configuration. @@ -44,17 +46,17 @@ The default quality is 0.92: [[= include_file('code_samples/back_office/image_editor/config/packages/image_editor.yaml', 0, 4) =]] [[= include_file('code_samples/back_office/image_editor/config/packages/image_editor.yaml', 39, 40) =]] ``` -### Gaussian blur strength +#### Gaussian blur strength You can configure the gaussian blur strength applied during image optimization with the following configuration. -The setting accepts values between 0 and 1, where higher values increase blur and reduce file size, while lower values maintain sharpness. -The default value is 0.05: - ``` yaml [[= include_file('code_samples/back_office/image_editor/config/packages/image_editor.yaml', 0, 4) =]] [[= include_file('code_samples/back_office/image_editor/config/packages/image_editor.yaml', 40, 41) =]] ``` +The setting accepts float values between 0 and 10.0, where higher values increase blur and reduce file size, while lower values maintain sharpness. +The default value is 0.05. + ### Additional information Each image can be accompanied by additional information that isn't visible to the user. From 071f80f9591202ab2d3b108c017bfd0fccac9240 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Mon, 2 Mar 2026 12:29:42 +0100 Subject: [PATCH 09/36] Added support for PHP 8.4 --- docs/getting_started/install_ibexa_dxp.md | 6 +++--- docs/getting_started/install_with_ddev.md | 4 ++-- docs/getting_started/requirements.md | 2 ++ docs/infrastructure_and_maintenance/performance.md | 2 +- docs/update_and_migration/from_4.6/update_from_4.6.md | 2 +- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/getting_started/install_ibexa_dxp.md b/docs/getting_started/install_ibexa_dxp.md index 8c265d0dc9..0960276a03 100644 --- a/docs/getting_started/install_ibexa_dxp.md +++ b/docs/getting_started/install_ibexa_dxp.md @@ -114,7 +114,7 @@ This operation is performed only once, when you install [[= product_name =]] for To use Composer to instantly create a project in the current folder with all the dependencies, run the following command: -!!! note "Using PHP 8.3 (recommended)" +!!! note "Using PHP 8.3" === "[[= product_name_headless =]]" @@ -134,9 +134,9 @@ To use Composer to instantly create a project in the current folder with all the composer create-project ibexa/commerce-skeleton . ``` -??? note "Using PHP 8.2 or older" +??? note "Using PHP 8.4, 8.2 or older" - If you're using PHP 8.2 or any older version, use a different set of commands: + If you're using PHP 8.4, 8.2 or any older version, use a different set of commands: === "[[= product_name_headless =]]" diff --git a/docs/getting_started/install_with_ddev.md b/docs/getting_started/install_with_ddev.md index d762e5c999..8de5d31ba9 100644 --- a/docs/getting_started/install_with_ddev.md +++ b/docs/getting_started/install_with_ddev.md @@ -31,10 +31,10 @@ mkdir my-ddev-project && cd my-ddev-project Next, configure your DDEV environment with the following command: ```bash -ddev config --project-type=php --php-version 8.3 --nodejs-version 20 --docroot=public +ddev config --project-type=php --php-version 8.4 --nodejs-version 20 --docroot=public ``` -This command sets the project type to PHP, the PHP version to 8.3, the document root to `public` directory, and creates the document root if it doesn't exist. +This command sets the project type to PHP, the PHP version to 8.4, the document root to `public` directory, and creates the document root if it doesn't exist. #### Use another database type (optional) diff --git a/docs/getting_started/requirements.md b/docs/getting_started/requirements.md index cd40022c58..681b9b2050 100644 --- a/docs/getting_started/requirements.md +++ b/docs/getting_started/requirements.md @@ -127,10 +127,12 @@ For production setups it's recommended that you use Varnish/Fastly, Redis/Valkey === "[[= product_name =]] v5.0" + - 8.4 - 8.3 === "[[= product_name =]] v4.6" + - 8.4 - 8.3 - 8.2 - 8.1 diff --git a/docs/infrastructure_and_maintenance/performance.md b/docs/infrastructure_and_maintenance/performance.md index ce29c0d1de..4699bb4e7e 100644 --- a/docs/infrastructure_and_maintenance/performance.md +++ b/docs/infrastructure_and_maintenance/performance.md @@ -54,7 +54,7 @@ In production setups: !!! caution - To avoid deprecations when using PHP 8.2 or 8.3, [[= product_name =]] v4.6 needs an additional error handler. + To avoid deprecations when using PHP 8.2, 8.3, or 8.4, [[= product_name =]] v4.6 needs an additional error handler. The error handler is present by default for projects that started with 4.6.8 or later. For projects that started with earlier versions, you need to add the error handler manually by running the following commands: diff --git a/docs/update_and_migration/from_4.6/update_from_4.6.md b/docs/update_and_migration/from_4.6/update_from_4.6.md index 9af2c4bbeb..468c3b7e2d 100644 --- a/docs/update_and_migration/from_4.6/update_from_4.6.md +++ b/docs/update_and_migration/from_4.6/update_from_4.6.md @@ -34,7 +34,7 @@ Then execute the instructions below starting from the version you're upgrading f !!! caution - To avoid deprecations when using PHP 8.2 or 8.3, run the following commands: + To avoid deprecations when using PHP 8.2, 8.3, or 8.4, run the following commands: ``` bash composer config extra.runtime.error_handler "\\Ibexa\\Contracts\\Core\\MVC\\Symfony\\ErrorHandler\\Php82HideDeprecationsErrorHandler" From 78fc06934718389865236dbfa50fc6d99e89c5ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Mon, 2 Mar 2026 12:41:12 +0100 Subject: [PATCH 10/36] Update docs/release_notes/ibexa_dxp_v4.6.md Co-authored-by: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> --- docs/release_notes/ibexa_dxp_v4.6.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release_notes/ibexa_dxp_v4.6.md b/docs/release_notes/ibexa_dxp_v4.6.md index d7737de11f..f954a6aaa9 100644 --- a/docs/release_notes/ibexa_dxp_v4.6.md +++ b/docs/release_notes/ibexa_dxp_v4.6.md @@ -13,7 +13,7 @@ month_change: false ### Gaussian Blur Configuration in Image Editor -The [Image Editor]([[= user_doc =]]/image_management/edit_images/) now supports configurable gaussian blur strength for image optimization. +The [Image Editor]([[= user_doc =]]/image_management/edit_images/) now supports configurable gaussian blur strength for image optimization. You can adjust the blur level to balance between file size reduction and image sharpness. For more information, see [Configure image editor](configure_image_editor.md#gaussian-blur-strength). From 9081f986ad83b235b19b7ec0a7341c1034b99269 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Mon, 2 Mar 2026 13:12:08 +0100 Subject: [PATCH 11/36] Apply suggestion from @mnocon --- docs/getting_started/install_ibexa_dxp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting_started/install_ibexa_dxp.md b/docs/getting_started/install_ibexa_dxp.md index 0960276a03..24aea5766a 100644 --- a/docs/getting_started/install_ibexa_dxp.md +++ b/docs/getting_started/install_ibexa_dxp.md @@ -136,7 +136,7 @@ To use Composer to instantly create a project in the current folder with all the ??? note "Using PHP 8.4, 8.2 or older" - If you're using PHP 8.4, 8.2 or any older version, use a different set of commands: + If you aren't using PHP 8.3 but are using PHP 8.4, PHP 8.2, or any older version, use a different set of commands: === "[[= product_name_headless =]]" From b81405050c9a4f80d0d40ec5ccb6e4902cbbe857 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Mon, 2 Mar 2026 14:52:06 +0100 Subject: [PATCH 12/36] Apply suggestion from @adriendupuis --- docs/release_notes/ibexa_dxp_v5.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index b7892256c7..17eda2fb1e 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -13,7 +13,7 @@ month_change: false ### Gaussian Blur Configuration in Image Editor -The [Image Editor]([[= user_doc =]]/image_management/edit_images/) now supports configurable gaussian blur strength for image optimization. +The [Image Editor]([[= user_doc =]]/image_management/edit_images/) now supports configurable gaussian blur strength for image optimization. You can adjust the blur level to balance between file size reduction and image sharpness. For more information, see [Configure image editor](configure_image_editor.md#gaussian-blur-strength). From 67f1e9e0b4312854e5c69b993fbf37a17376d1e4 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Mon, 2 Mar 2026 16:02:56 +0100 Subject: [PATCH 13/36] Apply suggestion from @mnocon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Marek Nocoń --- docs/getting_started/install_ibexa_dxp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting_started/install_ibexa_dxp.md b/docs/getting_started/install_ibexa_dxp.md index 24aea5766a..4049b64358 100644 --- a/docs/getting_started/install_ibexa_dxp.md +++ b/docs/getting_started/install_ibexa_dxp.md @@ -134,7 +134,7 @@ To use Composer to instantly create a project in the current folder with all the composer create-project ibexa/commerce-skeleton . ``` -??? note "Using PHP 8.4, 8.2 or older" +??? note "Using PHP versions other than 8.3" If you aren't using PHP 8.3 but are using PHP 8.4, PHP 8.2, or any older version, use a different set of commands: From fe4fdb0e2d80fc15f82f6f7648d0d289b231b61b Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Mon, 2 Mar 2026 15:27:27 +0100 Subject: [PATCH 14/36] Merge branch 'enh-release-notes' into v5.0.6 Conflicts: docs/release_notes/ibexa_dxp_v4.6.md --- docs/css/pills.css | 10 ++++++++-- docs/js/release-notes.js | 6 +++++- docs/release_notes/ibexa_dxp_v5.0.md | 18 ++++++++++-------- main.py | 2 +- scss/_variables.scss | 9 +++++++++ scss/pills.scss | 14 +++++++------- 6 files changed, 40 insertions(+), 19 deletions(-) diff --git a/docs/css/pills.css b/docs/css/pills.css index 67b2c18e30..e8286967ee 100644 --- a/docs/css/pills.css +++ b/docs/css/pills.css @@ -42,14 +42,20 @@ .pill--new-feature::after { content: "New feature"; } +.pill--first-release { + color: #2C9445; + border-color: #2C9445; +} +.pill--first-release::after { + content: "First release"; +} .pill--inline:first-of-type { margin-left: 8px; } .pill--new { margin-right: 15px; align-self: center; - color: #d9e8ff; - color: #3562a0; + color: #3562A0; text-transform: lowercase; } diff --git a/docs/js/release-notes.js b/docs/js/release-notes.js index 75a39870dd..61409b7ac1 100644 --- a/docs/js/release-notes.js +++ b/docs/js/release-notes.js @@ -16,10 +16,13 @@ const releaseNotesItems = [...releaseNotesNodes].map((releaseNotesNode) => { const tagsNodes = releaseNotesNode.querySelectorAll('.release-note__tags .pill'); const tagsItems = [...tagsNodes].map((tagNode) => `filter-${tagNode.dataset.filter}`); + const id = releaseNotesNode.getElementsByTagName('h2')[0].getAttribute('id'); + const tocEntry = doc.querySelector(`.md-sidebar--secondary a[href="#${id}"]`).parentNode; return { node: releaseNotesNode, tags: tagsItems, + toc: tocEntry, }; }); const handleClickOutside = ({ target }) => { @@ -46,10 +49,11 @@ filterItem.addEventListener('change', () => { const checkedItems = [...filterItems].filter(({ checked }) => checked).map(({ id }) => id); - releaseNotesItems.forEach(({ node, tags }) => { + releaseNotesItems.forEach(({ node, tags, toc }) => { const isVisible = checkedItems.length === 0 || tags.some((tag) => checkedItems.includes(tag)); node.classList.toggle('release-note--hidden', !isVisible); + toc.classList.toggle('release-note--hidden', !isVisible); }); visibleItems.forEach((visibleItem) => { const isVisible = checkedItems.includes(visibleItem.dataset.filter); diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index 709fc8d608..84ee8e9087 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -6,7 +6,7 @@ month_change: false -[[= release_notes_filters('Ibexa DXP v5.0 LTS', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature']) =]] +[[= release_notes_filters('Ibexa DXP v5.0 LTS', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release']) =]]
@@ -91,7 +91,7 @@ The [Collaborative editing](https://doc.ibexa.co/en/5.0/content_management/colla [[% set version = 'v5.0.4' %]] -[[= release_note_entry_begin("Integrated help " + version, '2025-12-10', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature']) =]] +[[= release_note_entry_begin("Integrated help " + version, '2025-12-10', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release']) =]] Integrated help brings contextual documentation, guidance, and partner-specific resources right into the user interface of [[= product_name =]]. It helps editors, store managers, and developers to quickly access relevant content, training and resources without leaving the UI, narrowing the gap between product and documentation. @@ -104,7 +104,7 @@ For more information, see [Integrated help](integrated_help.md). [[= release_note_entry_end() =]] -[[= release_note_entry_begin("Anthropic connector " + version, '2025-12-10', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature']) =]] +[[= release_note_entry_begin("Anthropic connector " + version, '2025-12-10', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release']) =]] This release introduces a new AI connector that allows you to integrate [AI Actions](ai_actions.md) with [Anthropic Claude](https://claude.com/product/overview). @@ -169,7 +169,6 @@ The following additions were made to the PHP API: - [`Ibexa\Contracts\FieldTypeRichTextRTE\ToS\ToSServiceInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-FieldTypeRichTextRTE-ToS-ToSServiceInterface.html) - [`Ibexa\Contracts\Share\Mapper\Action\ShareActionItemsMapperInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Share-Mapper-Action-ShareActionItemsMapperInterface.html) - ##### AI Taxonomy suggestions: - [`Ibexa\Contracts\ConnectorAi\Action\DataType\Taxonomy`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Action-DataType-Taxonomy.html) @@ -200,22 +199,24 @@ The following additions were made to the PHP API: - [`Ibexa\Contracts\Taxonomy\Embedding\TaxonomyEmbeddingFieldProviderInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Taxonomy-Embedding-TaxonomyEmbeddingFieldProviderInterface.html) - [`Ibexa\Contracts\Taxonomy\Search\Query\Value\TaxonomyEmbedding`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Taxonomy-Search-Query-Value-TaxonomyEmbedding.html) -##### Search: +##### Search - [`Ibexa\Contracts\AdminUi\ContentType\ContentTypeFieldsByExpressionServiceInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-ContentType-ContentTypeFieldsByExpressionServiceInterface.html) - [`Ibexa\Contracts\CoreSearch\Values\Query\PaginationAwareInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-PaginationAwareInterface.html) - [`Ibexa\Contracts\SiteFactory\Values\Query\Criterion\MatchTreeRootLocationIds`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-SiteFactory-Values-Query-Criterion-MatchTreeRootLocationIds.html) -##### Other: +##### Other - [`Ibexa\Contracts\ProductCatalog\CapabilitiesEnum`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-CapabilitiesEnum.html) - [`Ibexa\Contracts\ProductCatalog\CapabilitiesServiceInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-CapabilitiesServiceInterface.html) - [`Ibexa\Contracts\User\PasswordReset\NotifierInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-User-PasswordReset-NotifierInterface.html) [[% include 'snippets/release_50.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v5.0.3' %]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2024-10-17', ['Headless', 'Experience', 'Commerce']) =]] ### Security @@ -258,9 +259,9 @@ The PHP API has been expanded with the following: - [`Ibexa\Contracts\Core\Repository\Values\ContentType\Query\SortClause\Id`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-ContentType-Query-SortClause-Id.html) - [`Ibexa\Contracts\Core\Repository\Values\ContentType\Query\SortClause\Identifier`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-ContentType-Query-SortClause-Identifier.html) - [`Ibexa\Contracts\Core\Repository\Values\ContentType\Query\SortClause\Name`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-ContentType-Query-SortClause-Name.html) - [[% include 'snippets/release_50.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v5.0.2' %]] @@ -448,7 +449,8 @@ This release brings additional minor improvements to the developer's experience [[= release_note_entry_end() =]] [[% set version = 'v5.0.0' %]] -[[= release_note_entry_begin("Ibexa DXP " + version, '2025-07-22', ['Headless', 'Experience', 'Commerce', 'New feature']) =]] + +[[= release_note_entry_begin("Ibexa DXP " + version, '2025-07-22', ['Headless', 'Experience', 'Commerce', 'New feature', 'First release']) =]] ### Notable changes diff --git a/main.py b/main.py index 0fac335a7f..1655eeca61 100644 --- a/main.py +++ b/main.py @@ -208,7 +208,7 @@ def slugify(text: str) -> str: return text.lower().replace(' ', '-') def validate_categories(categories: List[str]) -> None: - available_categories = ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature'] + available_categories = ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release'] for category in categories: if category not in available_categories: diff --git a/scss/_variables.scss b/scss/_variables.scss index b10c339621..d13111283b 100644 --- a/scss/_variables.scss +++ b/scss/_variables.scss @@ -21,3 +21,12 @@ $color-light-400: #ECECF1; $color-dark: #131C26; $color-dark-400: #71767C; + +$color-headless: #C4234A; +$color-experience: #D3822B; +$color-commerce: #A32768; +$color-lts-update: #5DA7C0; +$color-new-feature: #2C9445; +$color-first-release: #2C9445; + +$color-new-doc: #3562A0; diff --git a/scss/pills.scss b/scss/pills.scss index 90b9a2b0ed..e94a4c0a1a 100644 --- a/scss/pills.scss +++ b/scss/pills.scss @@ -11,11 +11,12 @@ color: variables.$color-primary-main; $types: ( - "headless": (variables.$color-error-main, "Headless"), - "experience": (variables.$color-warning-dark-01, "Experience"), - "commerce": (variables.$color-primary-main, "Commerce"), - "lts-update": (variables.$color-info-main, "LTS Update"), - "new-feature": (variables.$color-success-main, "New feature") + "headless": (variables.$color-headless, "Headless"), + "experience": (variables.$color-experience, "Experience"), + "commerce": (variables.$color-commerce, "Commerce"), + "lts-update": (variables.$color-lts-update, "LTS Update"), + "new-feature": (variables.$color-new-feature, "New feature"), + "first-release": (variables.$color-first-release, "First release") ); @each $name, $values in $types { @@ -41,8 +42,7 @@ &--new { margin-right: 15px; align-self: center; - color: #d9e8ff; - color: #3562a0; + color: variables.$color-new-doc; text-transform: lowercase; } } From c2e379b59700673083169fc6b0eab7d914909ac4 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Mon, 2 Mar 2026 16:48:29 +0100 Subject: [PATCH 15/36] Format release notes Conflicts: docs/release_notes/ibexa_dxp_v5.0.md --- docs/release_notes/ibexa_dxp_v4.6.md | 29 ++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/docs/release_notes/ibexa_dxp_v4.6.md b/docs/release_notes/ibexa_dxp_v4.6.md index fa8030a694..65f54db02d 100644 --- a/docs/release_notes/ibexa_dxp_v4.6.md +++ b/docs/release_notes/ibexa_dxp_v4.6.md @@ -10,20 +10,31 @@ month_change: false
- -### Gaussian Blur Configuration in Image Editor +[[% set version = 'v4.6.28' %]] + +[[= release_note_entry_begin( + "Ibexa DXP " + version, + 'YYYY-MM-DD', + ['Headless', 'Experience', 'Commerce'] +) =]] + +### Infrastructure + +#### PHP 8.4 support + +PHP 8.4 is now [officially supported](requirements.md#php). + +### Gaussian blur optimization in Image Editor The [Image Editor]([[= user_doc =]]/image_management/edit_images/) now supports configurable gaussian blur strength for image optimization. You can adjust the blur level to balance between file size reduction and image sharpness. For more information, see [Configure image editor](configure_image_editor.md#gaussian-blur-strength). - - ### Developer experience -#### Pass custom parameters to `ibexa_render()` Twig function +#### Custom parameters in `ibexa_render()` -You can now pass custom parameters to templates when using the `ibexa_render()` Twig function with the new `params` option, similar to how you can with `render(controller())`. +You can now pass custom parameters to templates when using the `ibexa_render()` Twig function with the new `params` option, similar to how you can with `render(controller())`.Collapse annotationCheck notice on line R18[vale] docs/release_notes/ibexa_dxp_v4.6.md#L18Check notice: [vale] docs/release_notes/ibexa_dxp_v4.6.md#L18[Ibexa.ByUsing] Prefer 'by using' or 'with' to plain 'using'.Build & test documentation / valeView details This allows you to provide additional context or data to your view templates: @@ -42,6 +53,12 @@ The parameters are available in your template as regular variables. For more information, see [`ibexa_render()` Twig function](content_twig_functions.md#ibexa_render). +### Full changelog + +[[% include 'snippets/release_46.md' %]] + +[[= release_note_entry_end() =]] + [[% set version = 'v4.6.27' %]] [[= release_note_entry_begin("Ibexa DXP " + version, '2026-02-03', ['Headless', 'Experience', 'Commerce']) =]] From 7f9c4b4795e607cc3cd18745fccb6903f21883ca Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Mon, 2 Mar 2026 17:05:12 +0100 Subject: [PATCH 16/36] Format release notes --- docs/release_notes/ibexa_dxp_v4.6.md | 402 ++++++++++++++++----------- 1 file changed, 232 insertions(+), 170 deletions(-) diff --git a/docs/release_notes/ibexa_dxp_v4.6.md b/docs/release_notes/ibexa_dxp_v4.6.md index 65f54db02d..9daf7c4297 100644 --- a/docs/release_notes/ibexa_dxp_v4.6.md +++ b/docs/release_notes/ibexa_dxp_v4.6.md @@ -1,21 +1,21 @@ --- description: Ibexa DXP v4.6 brings improvements to Commerce, PIM and Personalization offerings, and a number of changes in CDP and Ibexa Connect. title: Ibexa DXP v4.6 LTS -month_change: false +month_change: true --- -[[= release_notes_filters('Ibexa DXP v4.6 LTS', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature']) =]] +[[= release_notes_filters('Ibexa DXP v4.6 LTS', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release']) =]]
[[% set version = 'v4.6.28' %]] [[= release_note_entry_begin( - "Ibexa DXP " + version, - 'YYYY-MM-DD', - ['Headless', 'Experience', 'Commerce'] +"Ibexa DXP " + version, +'YYYY-MM-DD', +['Headless', 'Experience', 'Commerce'] ) =]] ### Infrastructure @@ -60,6 +60,7 @@ For more information, see [`ibexa_render()` Twig function](content_twig_function [[= release_note_entry_end() =]] [[% set version = 'v4.6.27' %]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2026-02-03', ['Headless', 'Experience', 'Commerce']) =]] ### Added support for Elasticsearch 8 @@ -136,7 +137,7 @@ when@prod: Use the new [`ProductTypeCreateStruct::setNames()`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Local-Values-ProductType-ProductTypeCreateStruct.html#method_setNames) method to set names, in multiple languages, of a product type during its creation. -See [creating product types](product_api.md#creating-product-types) for an example. +See [creating product types](https://doc.ibexa.co/en/4.6/pim/product_api/#creating-product-types) for an example. #### PHP API @@ -145,15 +146,15 @@ The PHP API has been enhanced with the following classes and interfaces: - [`Ibexa\Contracts\Core\Search\Embedding\EmbeddingProviderExceptionInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Search-Embedding-EmbeddingProviderExceptionInterface.html) - [`Ibexa\Contracts\Taxonomy\Embedding\Exception\TaxonomyEmbeddingConfigurationException`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Taxonomy-Embedding-Exception-TaxonomyEmbeddingConfigurationException.html) - ### Full changelog [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.26' %]] -[[= release_note_entry_begin("Integrated help " + version, '2025-12-10', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature']) =]] +[[= release_note_entry_begin("Integrated help " + version, '2025-12-10', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release']) =]] Integrated help, a new [LTS Update](editions.md#lts-updates), brings contextual documentation, guidance, and partner-specific resources right into the user interface of [[= product_name =]]. It helps editors, store managers, and developers to quickly access relevant content, training and resources without leaving the UI, narrowing the gap between product and documentation. @@ -166,7 +167,7 @@ For more information, see [Integrated help](integrated_help.md). [[= release_note_entry_end() =]] -[[= release_note_entry_begin("Collaboration " + version, '2025-12-10', ['LTS Update', 'New feature']) =]] +[[= release_note_entry_begin("Collaboration " + version, '2025-12-10', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature']) =]] #### Real-time collaborative editing @@ -200,7 +201,7 @@ The PHP API has been enhanced with the following classes and interfaces: [[= release_note_entry_end() =]] -[[= release_note_entry_begin("AI Actions " + version, '2025-12-10', ['LTS Update', 'New feature']) =]] +[[= release_note_entry_begin("AI Actions " + version, '2025-12-10', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature']) =]] #### Taxonomy suggestions for faster content classification @@ -229,8 +230,8 @@ The PHP API has been enhanced with the following classes: - [`Ibexa\Contracts\ConnectorAi\Action\TextToTaxonomy\ActionResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Action-TextToTaxonomy-ActionResponse.html) - [`Ibexa\Contracts\ConnectorAi\Action\TextToTaxonomy\ActionType`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Action-TextToTaxonomy-ActionType.html) - [[= release_note_entry_end() =]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2025-12-10', ['Headless', 'Experience', 'Commerce', 'New feature']) =]] #### Security @@ -269,7 +270,9 @@ The PHP API has been enhanced with the following classes and interfaces: - [`Ibexa\Contracts\User\PasswordReset\NotifierInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-User-PasswordReset-NotifierInterface.html) [[= release_note_entry_end() =]] + [[% set version = 'v4.6.25' %]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2024-10-17', ['Headless', 'Experience', 'Commerce']) =]] #### Security @@ -278,11 +281,12 @@ This release includes security fixes. To learn more, see the [corresponding security advisory](https://developers.ibexa.co/security-advisories/ibexa-sa-2025-004-xss-and-enumeration-vulnerabilities-in-back-office). [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.24' %]] -[[= release_note_entry_begin("Collaboration ", '2025-09-09', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature']) =]] +[[= release_note_entry_begin("Collaboration " + version, '2025-09-09', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release']) =]] #### Collaboration @@ -291,11 +295,11 @@ Internal and external users can be invited to a collaboration session, through d With Real-time editing, more advanced part of the feature, users can see each other’s changes in the real time, or work on the content asynchronously. -Additionally, shared drafts can be accessed and managed through new dashboard tabs: **My shared drafts** and **Drafts shared with me**, helping users stay organized. +Additionally, shared drafts can be accessed and managed through new dashboard tabs: **My shared drafts** and **Drafts shared with me**, helping users stay organized. [[= release_note_entry_end() =]] -[[= release_note_entry_begin("AI Actions " + version, '2025-09-09', ['LTS Update']) =]] +[[= release_note_entry_begin("AI Actions " + version, '2025-09-09', ['Headless', 'Experience', 'Commerce', 'LTS Update']) =]] #### Chat GPT 5.0 support @@ -305,7 +309,7 @@ With improved reasoning and greater accuracy in mind, the AI Connector package h [[= release_note_entry_end() =]] -[[= release_note_entry_begin("Discounts " + version, '2025-09-09', ['LTS Update', 'Commerce']) =]] +[[= release_note_entry_begin("Discounts " + version, '2025-09-09', ['Commerce', 'LTS Update']) =]] #### Discount indexing @@ -359,7 +363,6 @@ To further improve your experience with Ibexa DXP, a 1.14.0 version of [PHP Stor - Redis 7.2+ is now [officially supported](https://doc.ibexa.co/en/4.6/getting_started/requirements/) - ##### PHP API The PHP API has been enhanced with the following: @@ -403,12 +406,14 @@ The PHP API has been enhanced with the following: The Product Picker tool that, for example, lets you [select products eligible for discounts]([[= user_doc =]]/commerce/discounts/work_with_discounts/#create-new-discount), now displays a **Base price** column for products and product variants. #### Full changelog + [[% include 'snippets/release_46.md' %]] [[= release_note_entry_end() =]] [[% set version = 'v4.6.22' %]] -[[= release_note_entry_begin("Symbol attribute", '2025-08-05', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature']) =]] + +[[= release_note_entry_begin("Symbol attribute " + version, '2025-08-05', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release']) =]] The Symbol attribute allows you to store standardized identifiers of your products in the [Product Information Management](pim_guide.md) system. @@ -423,7 +428,7 @@ The PHP API has been enhanced with the following new classes: [[= release_note_entry_end() =]] -[[= release_note_entry_begin("Discounts " + version, '2025-08-05', ['LTS Update', 'Commerce']) =]] +[[= release_note_entry_begin("Discounts " + version, '2025-08-05', ['Commerce', 'LTS Update']) =]] #### Global discount codes limits @@ -445,6 +450,7 @@ The PHP API has been enhanced with the following new classes: - [`Ibexa\Contracts\Discounts\Value\Query\SortClause\OverridePrioritization`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-OverridePrioritization.html) [[= release_note_entry_end() =]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2025-08-05', ['Headless', 'Experience', 'Commerce', 'New feature']) =]] #### Special characters in online editor @@ -486,7 +492,7 @@ In addition, you can now use the [Taxonomy limitation](limitation_reference.md#t #### Pagination for ezobjectrelationlist in GraphQL -To improve performance and gain greater control over the returned responses from the [GraphQL API](graphql.md), you can now [enable pagination](relationlistfield.md#enable-pagination-in-graphql) of relations specified using the RelationList field type. +To improve performance and gain greater control over the returned responses from the [GraphQL API](graphql.md), you can now [enable pagination]((https://doc.ibexa.co/en/4.6/content_management/field_types/field_type_reference/relationlistfield#enable-pagination-in-graphql) of relations specified using the RelationList field type. #### Breaking changes @@ -509,15 +515,16 @@ The PHP API has been enhanced with the following new classes: #### Full changelog [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.21' %]] -[[= release_note_entry_begin("Discounts " + version, '2025-06-11', ['LTS Update', 'Commerce']) =]] +[[= release_note_entry_begin("Discounts " + version, '2025-06-11', ['Commerce', 'LTS Update']) =]] #### REST API -- Discounts can now be [managed through the REST API](/api/rest_api/rest_api_reference/rest_api_reference.html#discounts) +- Discounts can now be [managed through the REST API](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#discounts) #### PHP API @@ -526,6 +533,7 @@ The PHP API has been enhanced with the following new classes: - [`Ibexa\Contracts\Discounts\Exception\DiscountValueResolutionException`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Exception-DiscountValueResolutionException.html) [[= release_note_entry_end() =]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2025-06-11', ['Headless', 'Experience', 'Commerce']) =]] #### Security @@ -541,11 +549,13 @@ The PHP API has been enhanced with the following new classes: - [`Ibexa\Contracts\Checkout\Discounts\DiscountsValidationFailedException`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Checkout-Discounts-DiscountsValidationFailedException.html) #### Full changelog + [[% include 'snippets/release_46.md' %]] [[= release_note_entry_end() =]] [[% set version = 'v4.6.20' %]] + [[= release_note_entry_begin("Discounts " + version, '2025-05-28', ['Commerce', 'LTS Update']) =]] #### Features @@ -595,15 +605,15 @@ The PHP API has been enhanced with the following new classes: - [`Ibexa\Contracts\TwigComponents\Exception\InvalidArgumentException`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-TwigComponents-Exception-InvalidArgumentException.html) - [`Ibexa\Contracts\TwigComponents\Renderer\RendererInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-TwigComponents-Renderer-RendererInterface.html) - #### Full changelog + [[% include 'snippets/release_46.md' %]] [[= release_note_entry_end() =]] [[% set version = 'v4.6.19' %]] -[[= release_note_entry_begin("Discounts", '2025-04-09', ['Commerce', 'LTS Update', 'New feature']) =]] +[[= release_note_entry_begin("Discounts " + version, '2025-04-09', ['Commerce', 'LTS Update', 'New feature', 'First release']) =]] With the Discounts LTS Update, you can temporarily or permanently reduce prices on specific products or categories, making deals more attractive to potential buyers. @@ -617,16 +627,17 @@ For more information, see [Discounts product guide](discounts_guide.md). [[= release_note_entry_end() =]] -[[= release_note_entry_begin("AI Actions " + version, '2025-04-09', ['LTS Update', 'New feature']) =]] +[[= release_note_entry_begin("AI Actions " + version, '2025-04-09', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature']) =]] #### Features AI Actions can now integrate with [Ibexa Connect]([[= connect_doc =]]), giving you an opportunity to build complex data transformation workflows without having to rely on custom code. -To learn more, see the [setup instructions for this integration](install_ai_actions.md#configure-access-to-ibexa-connect). +To learn more, see the [setup instructions for this integration](configure_ai_actions.md#configure-access-to-ibexa-connect). [[= release_note_entry_end() =]] [[% set version = 'v4.6.19' %]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2025-04-09', ['Headless', 'Experience', 'Commerce']) =]] #### Security @@ -636,7 +647,7 @@ To learn more, see the [published security advisory IBEXA-SA-2025-002](https://d #### Features -- The [CartSummary endpoint](https://doc.ibexa.co/en/latest/api/rest_api/rest_api_reference/rest_api_reference.html#managing-commerce-carts-cart-summary) now supports a new `Accept` header: `application/vnd.ibexa.api.ShortCartSummary`, returning only the essential data about products in the cart +- The [CartSummary endpoint](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#managing-commerce-carts-cart-summary) now supports a new `Accept` header: `application/vnd.ibexa.api.ShortCartSummary`, returning only the essential data about products in the cart - Added a new repository setting: [grace period for archived versions](https://doc.ibexa.co/en/latest/administration/configuration/repository_configuration/#grace-period-for-archived-versions) - Added a new `group_remote_id` setting for [controlling the user group in which registering users are created](https://doc.ibexa.co/en/latest/users/user_registration/#user-groups) @@ -672,26 +683,30 @@ The PHP API has been enhanced with the following new classes: - [`Ibexa\Contracts\ProductCatalog\Values\CustomerGroup\AssignedItemInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-CustomerGroup-AssignedItemInterface.html) #### Full changelog + [[% include 'snippets/release_46.md' %]] [[= release_note_entry_end() =]] [[% set version = 'v4.6.18' %]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2025-03-06', ['Headless', 'Experience', 'Commerce']) =]] #### PHP API + The PHP API has been enhanced with the following new classes: -- [`Ibexa\Contracts\ProductCatalog\Form\Data\ProductSelectorData`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Form-Data-ProductSelectorData.html) -- [`Ibexa\Contracts\ProductCatalog\Form\Data\ProductsSelectorData`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Form-Data-ProductsSelectorData.html) -- [`Ibexa\Contracts\ProductCatalog\Form\Type\ProductSelectorType`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Form-Type-ProductSelectorType.html) +- [`Ibexa\Contracts\ProductCatalog\Form\Data\ProductSelectorData`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Form-Data-ProductSelectorData.html) +- [`Ibexa\Contracts\ProductCatalog\Form\Data\ProductsSelectorData`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Form-Data-ProductsSelectorData.html) +- [`Ibexa\Contracts\ProductCatalog\Form\Type\ProductSelectorType`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Form-Type-ProductSelectorType.html) #### Full changelog + [[% include 'snippets/release_46.md' %]] [[= release_note_entry_end() =]] -[[= release_note_entry_begin("Date and time attribute", '2025-03-04', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature']) =]] +[[= release_note_entry_begin("Date and time attribute " + version, '2025-03-04', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release']) =]] The Date and time attributes allow you to represent date and time values as part of the product specification in the [Product Information Management](pim_guide.md) system. @@ -700,7 +715,8 @@ For more information, see [Date and time attributes](date_and_time.md). [[= release_note_entry_end() =]] [[% set version = 'v4.6.17' %]] -[[= release_note_entry_begin("AI Actions " + version, '2025-03-04', ['LTS Update', 'New feature']) =]] + +[[= release_note_entry_begin("AI Actions " + version, '2025-03-04', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature']) =]] #### Features You can now [duplicate AI actions]([[= user_doc =]]/ai_actions/work_with_ai_actions/#duplicate-ai-actions) in the AI actions list. @@ -709,14 +725,16 @@ You can now [duplicate AI actions]([[= user_doc =]]/ai_actions/work_with_ai_acti The PHP API has been expanded with the following classes and interfaces: -- [`Ibexa\Contracts\ConnectorAi\ActionConfiguration\ActionConfigurationCopyStruct`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-ActionConfiguration-ActionConfigurationCopyStruct.html) -- [`Ibexa\Contracts\ConnectorAi\ActionHandlerRegistryInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-ActionHandlerRegistryInterface.html) -- [`Ibexa\Contracts\ConnectorAi\Prompt\PromptFactory`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Prompt-PromptFactory.html) -- [`Ibexa\Contracts\ConnectorAi\Prompt\PromptInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Prompt-PromptInterface.html) -- [`Ibexa\Contracts\ConnectorAi\PromptResolverInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-PromptResolverInterface.html) +- [`Ibexa\Contracts\ConnectorAi\ActionConfiguration\ActionConfigurationCopyStruct`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-ActionConfiguration-ActionConfigurationCopyStruct.html) +- [`Ibexa\Contracts\ConnectorAi\ActionHandlerRegistryInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-ActionHandlerRegistryInterface.html) +- [`Ibexa\Contracts\ConnectorAi\Prompt\PromptFactory`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Prompt-PromptFactory.html) +- [`Ibexa\Contracts\ConnectorAi\Prompt\PromptInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Prompt-PromptInterface.html) +- [`Ibexa\Contracts\ConnectorAi\PromptResolverInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-PromptResolverInterface.html) [[= release_note_entry_end() =]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2025-03-04', ['Headless', 'Experience', 'Commerce', 'New feature']) =]] + #### Security This release includes security fixes. @@ -724,9 +742,9 @@ To learn more, see the [corresponding security advisory](https://developers.ibex #### Features -- New REST API endpoints for [Segments](../api/rest_api/rest_api_reference/rest_api_reference.html#segments) and [Segment Groups](../api/rest_api/rest_api_reference/rest_api_reference.html#segment-groups) -- PHP API Client ([`Ibexa\Contracts\Connect\ConnectClientInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-ConnectClientInterface.html)) for [Ibexa Connect]([[= connect_doc =]]) -- The following Twig functions now additionally support objects implementing the [`ContentAwareInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) as arguments: +- New REST API endpoints for [Segments](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#segments) and [Segment Groups](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#segment-groups) +- PHP API Client ([`Ibexa\Contracts\Connect\ConnectClientInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-ConnectClientInterface.html)) for [Ibexa Connect]([[= connect_doc =]]) +- The following Twig functions now additionally support objects implementing the [`ContentAwareInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) as arguments: - [`ibexa_content_field_identifier_first_filled_image`](image_twig_functions.md#ibexa_content_field_identifier_first_filled_image) - [`ibexa_content_name`](content_twig_functions.md#ibexa_content_name) - [`ibexa_field_is_empty`](field_twig_functions.md#ibexa_field_is_empty) @@ -746,76 +764,79 @@ To learn more, see the [corresponding security advisory](https://developers.ibex The PHP API has been enhanced with the following new classes and interfaces: - `Ibexa\Contracts\Cart`: - - [`Value\Query\Criterion\LogicalAnd`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Cart-Value-Query-Criterion-LogicalAnd.html) - - [`Value\Query\Criterion\OwnerCriterion`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Cart-Value-Query-Criterion-OwnerCriterion.html) - - [`Value\Query\CriterionInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Cart-Value-Query-CriterionInterface.html) + - [`Value\Query\Criterion\LogicalAnd`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Cart-Value-Query-Criterion-LogicalAnd.html) + - [`Value\Query\Criterion\OwnerCriterion`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Cart-Value-Query-Criterion-OwnerCriterion.html) + - [`Value\Query\CriterionInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Cart-Value-Query-CriterionInterface.html) - `Ibexa\Contracts\Segmentation`: - - [`Exception\ValidationFailedExceptionInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Segmentation-Exception-ValidationFailedExceptionInterface.html) + - [`Exception\ValidationFailedExceptionInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Segmentation-Exception-ValidationFailedExceptionInterface.html) - `Ibexa\Contracts\ProductCatalog`: - - [`Iterator\BatchIteratorAdapter\RegionFetchAdapter`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Iterator-BatchIteratorAdapter-RegionFetchAdapter.html) + - [`Iterator\BatchIteratorAdapter\RegionFetchAdapter`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Iterator-BatchIteratorAdapter-RegionFetchAdapter.html) - `Ibexa\Contracts\Connect`: - - [`ConnectClientInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-ConnectClientInterface.html) - - [`Exception\BadResponseException`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Exception-BadResponseException.html) - - [`Exception\UnserializablePayload`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Exception-UnserializablePayload.html) - - [`Exception\UnserializableResponse`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Exception-UnserializableResponse.html) - - [`PaginationInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-PaginationInterface.html) - - [`Resource\DataStructure\DataStructureBuilder`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-DataStructure-DataStructureBuilder.html) - - [`Resource\DataStructure\DataStructureCreateStruct`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-DataStructure-DataStructureCreateStruct.html) - - [`Resource\DataStructure\DataStructureFilter`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-DataStructure-DataStructureFilter.html) - - [`Resource\DataStructure\DataStructureProperty`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-DataStructure-DataStructureProperty.html) - - [`Resource\DataStructure\DataStructurePropertyType`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-DataStructure-DataStructurePropertyType.html) - - [`Resource\DataStructureInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-DataStructureInterface.html) - - [`Resource\Hook\HookCreateStruct`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Hook-HookCreateStruct.html) - - [`Resource\Hook\HookFilter`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Hook-HookFilter.html) - - [`Resource\Hook\HookSetDetailsStruct`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Hook-HookSetDetailsStruct.html) - - [`Resource\HookInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-HookInterface.html) - - [`Resource\Scenario\ScenarioCreateStruct`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Scenario-ScenarioCreateStruct.html) - - [`Resource\Scenario\ScenarioFilter`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Scenario-ScenarioFilter.html) - - [`Resource\ScenarioInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-ScenarioInterface.html) - - [`Resource\Team\TeamVariableCreateStruct`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Team-TeamVariableCreateStruct.html) - - [`Resource\Team\TeamVariableFilter`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Team-TeamVariableFilter.html) - - [`Resource\Team\TeamVariableUpdateStruct`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Team-TeamVariableUpdateStruct.html) - - [`Resource\TeamInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-TeamInterface.html) - - [`Resource\Template\TemplateCreateStruct`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Template-TemplateCreateStruct.html) - - [`Resource\Template\TemplateFilter`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Template-TemplateFilter.html) - - [`Resource\TemplateInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-TemplateInterface.html) - - [`Response\DataStructure\CreateResponse`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-DataStructure-CreateResponse.html) - - [`Response\DataStructure\ListResponse`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-DataStructure-ListResponse.html) - - [`Response\DataStructure\RetrieveResponse`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-DataStructure-RetrieveResponse.html) - - [`Response\Hook\CreateResponse`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Hook-CreateResponse.html) - - [`Response\Hook\ListResponse`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Hook-ListResponse.html) - - [`Response\Hook\RetrieveResponse`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Hook-RetrieveResponse.html) - - [`Response\Hook\SetDetailsResponse`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Hook-SetDetailsResponse.html) - - [`Response\Scenario\CreateResponse`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Scenario-CreateResponse.html) - - [`Response\Scenario\ListResponse`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Scenario-ListResponse.html) - - [`Response\Scenario\RetrieveResponse`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Scenario-RetrieveResponse.html) - - [`Response\Team\TeamVariableCreateResponse`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Team-TeamVariableCreateResponse.html) - - [`Response\Team\TeamVariableListResponse`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Team-TeamVariableListResponse.html) - - [`Response\Team\TeamVariableRetrieveResponse`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Team-TeamVariableRetrieveResponse.html) - - [`Response\Team\TeamVariableUpdateResponse`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Team-TeamVariableUpdateResponse.html) - - [`Response\Template\BlueprintResponse`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Template-BlueprintResponse.html) - - [`Response\Template\CreateResponse`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Template-CreateResponse.html) - - [`Response\Template\ListResponse`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Template-ListResponse.html) - - [`Response\Template\RetrieveResponse`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Template-RetrieveResponse.html) - - [`ResponseInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-ResponseInterface.html) - - [`TransportInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-TransportInterface.html) - - [`Value\Blueprint\Flow`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Flow.html) - - [`Value\Blueprint\Metadata\Scenario`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Metadata-Scenario.html) - - [`Value\Blueprint\Metadata`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Metadata.html) - - [`Value\Blueprint\Module\CustomWebhook`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Module-CustomWebhook.html) - - [`Value\Blueprint\Module\JsonCreate`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Module-JsonCreate.html) - - [`Value\Blueprint\Module\ModuleDesigner`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Module-ModuleDesigner.html) - - [`Value\Blueprint\Module\WebhookRespond`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Module-WebhookRespond.html) - - [`Value\Blueprint`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint.html) - - [`Value\Controller`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Controller.html) - - [`Value\Scheduling`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Scheduling.html) + - [`ConnectClientInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-ConnectClientInterface.html) + - [`Exception\BadResponseException`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Exception-BadResponseException.html) + - [`Exception\UnserializablePayload`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Exception-UnserializablePayload.html) + - [`Exception\UnserializableResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Exception-UnserializableResponse.html) + - [`PaginationInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-PaginationInterface.html) + - [`Resource\DataStructure\DataStructureBuilder`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-DataStructure-DataStructureBuilder.html) + - [`Resource\DataStructure\DataStructureCreateStruct`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-DataStructure-DataStructureCreateStruct.html) + - [`Resource\DataStructure\DataStructureFilter`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-DataStructure-DataStructureFilter.html) + - [`Resource\DataStructure\DataStructureProperty`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-DataStructure-DataStructureProperty.html) + - [`Resource\DataStructure\DataStructurePropertyType`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-DataStructure-DataStructurePropertyType.html) + - [`Resource\DataStructureInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-DataStructureInterface.html) + - [`Resource\Hook\HookCreateStruct`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Hook-HookCreateStruct.html) + - [`Resource\Hook\HookFilter`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Hook-HookFilter.html) + - [`Resource\Hook\HookSetDetailsStruct`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Hook-HookSetDetailsStruct.html) + - [`Resource\HookInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-HookInterface.html) + - [`Resource\Scenario\ScenarioCreateStruct`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Scenario-ScenarioCreateStruct.html) + - [`Resource\Scenario\ScenarioFilter`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Scenario-ScenarioFilter.html) + - [`Resource\ScenarioInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-ScenarioInterface.html) + - [`Resource\Team\TeamVariableCreateStruct`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Team-TeamVariableCreateStruct.html) + - [`Resource\Team\TeamVariableFilter`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Team-TeamVariableFilter.html) + - [`Resource\Team\TeamVariableUpdateStruct`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Team-TeamVariableUpdateStruct.html) + - [`Resource\TeamInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-TeamInterface.html) + - [`Resource\Template\TemplateCreateStruct`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Template-TemplateCreateStruct.html) + - [`Resource\Template\TemplateFilter`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Template-TemplateFilter.html) + - [`Resource\TemplateInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-TemplateInterface.html) + - [`Response\DataStructure\CreateResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-DataStructure-CreateResponse.html) + - [`Response\DataStructure\ListResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-DataStructure-ListResponse.html) + - [`Response\DataStructure\RetrieveResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-DataStructure-RetrieveResponse.html) + - [`Response\Hook\CreateResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Hook-CreateResponse.html) + - [`Response\Hook\ListResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Hook-ListResponse.html) + - [`Response\Hook\RetrieveResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Hook-RetrieveResponse.html) + - [`Response\Hook\SetDetailsResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Hook-SetDetailsResponse.html) + - [`Response\Scenario\CreateResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Scenario-CreateResponse.html) + - [`Response\Scenario\ListResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Scenario-ListResponse.html) + - [`Response\Scenario\RetrieveResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Scenario-RetrieveResponse.html) + - [`Response\Team\TeamVariableCreateResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Team-TeamVariableCreateResponse.html) + - [`Response\Team\TeamVariableListResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Team-TeamVariableListResponse.html) + - [`Response\Team\TeamVariableRetrieveResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Team-TeamVariableRetrieveResponse.html) + - [`Response\Team\TeamVariableUpdateResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Team-TeamVariableUpdateResponse.html) + - [`Response\Template\BlueprintResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Template-BlueprintResponse.html) + - [`Response\Template\CreateResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Template-CreateResponse.html) + - [`Response\Template\ListResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Template-ListResponse.html) + - [`Response\Template\RetrieveResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Template-RetrieveResponse.html) + - [`ResponseInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-ResponseInterface.html) + - [`TransportInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-TransportInterface.html) + - [`Value\Blueprint\Flow`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Flow.html) + - [`Value\Blueprint\Metadata\Scenario`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Metadata-Scenario.html) + - [`Value\Blueprint\Metadata`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Metadata.html) + - [`Value\Blueprint\Module\CustomWebhook`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Module-CustomWebhook.html) + - [`Value\Blueprint\Module\JsonCreate`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Module-JsonCreate.html) + - [`Value\Blueprint\Module\ModuleDesigner`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Module-ModuleDesigner.html) + - [`Value\Blueprint\Module\WebhookRespond`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Module-WebhookRespond.html) + - [`Value\Blueprint`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint.html) + - [`Value\Controller`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Controller.html) + - [`Value\Scheduling`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Scheduling.html) #### Full changelog + [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.16' %]] -[[= release_note_entry_begin("AI Actions " + version, '2025-01-16', ['LTS Update', 'New feature']) =]] + +[[= release_note_entry_begin("AI Actions " + version, '2025-01-16', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature']) =]] #### Features @@ -829,26 +850,29 @@ The new AI Assistant allows you to use the AI capabilities in additional places, The PHP API has been enhanced with the following new classes: -- `Ibexa\Contracts\AdminUi\Permission\PermissionCheckContextProviderInterface` -- `Ibexa\Contracts\AdminUi\Values\PermissionCheckContext` -- [`Ibexa\Contracts\Checkout\Discounts\DataMapper\DiscountsDataMapperInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Checkout-Discounts-DataMapper-DiscountsDataMapperInterface.html) -- [`Ibexa\Contracts\Seo\Resolver\FieldValueResolverInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Seo-Resolver-FieldValueResolverInterface.html) +- [`Ibexa\Contracts\AdminUi\Permission\PermissionCheckContextProviderInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Permission-PermissionCheckContextProviderInterface.html) +- [`Ibexa\Contracts\AdminUi\Values\PermissionCheckContext`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Values-PermissionCheckContext.html) +- [`Ibexa\Contracts\Checkout\Discounts\DataMapper\DiscountsDataMapperInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Checkout-Discounts-DataMapper-DiscountsDataMapperInterface.html) +- [`Ibexa\Contracts\Seo\Resolver\FieldValueResolverInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Seo-Resolver-FieldValueResolverInterface.html) #### Full changelog + [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.15' %]] -[[= release_note_entry_begin("AI Actions " + version, '2024-12-13', ['LTS Update', 'New feature']) =]] + +[[= release_note_entry_begin("AI Actions " + version, '2024-12-13', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature']) =]] #### REST API The REST API has been extended to include endpoints for: -- [Action Configurations](../api/rest_api/rest_api_reference/rest_api_reference.html#ai-actions-list-action-configurations) -- [Action Types](../api/rest_api/rest_api_reference/rest_api_reference.html#ai-actions-list-action-types) -[[= release_note_entry_end() =]] +- [Action Configurations](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#ai-actions-list-action-configurations) +- [Action Types](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#ai-actions-list-action-types) +[[= release_note_entry_end() =]] [[= release_note_entry_begin("Ibexa DXP " + version, '2024-12-13', ['Headless', 'Experience', 'Commerce', 'New feature']) =]] @@ -857,20 +881,25 @@ The REST API has been extended to include endpoints for: You can now reuse Page Builder blocks between landing pages using the ["Copy block" action]([[= user_doc =]]/content_management/create_edit_pages/#copy-blocks). #### PHP API + The PHP API has been enhanced with the following new classes and interfaces: -- [`Ibexa\Contracts\ProductCatalog\Values\Price\PriceEnvelopeInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Price-PriceEnvelopeInterface.html) -- [`Ibexa\Contracts\ProductCatalog\Values\Price\PriceStampInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Price-PriceStampInterface.html) -- [`Ibexa\Contracts\ProductCatalog\Values\StampInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-StampInterface.html) +- [`Ibexa\Contracts\ProductCatalog\Values\Price\PriceEnvelopeInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Price-PriceEnvelopeInterface.html) +- [`Ibexa\Contracts\ProductCatalog\Values\Price\PriceStampInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Price-PriceStampInterface.html) +- [`Ibexa\Contracts\ProductCatalog\Values\StampInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-StampInterface.html) #### Full changelog + [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.14' %]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2024-11-28', ['Headless', 'Experience', 'Commerce']) =]] #### Security + This release includes security fixes. To learn more, see the [corresponding security advisory](https://developers.ibexa.co/security-advisories/ibexa-sa-2024-006-vulnerabilities-in-content-name-pattern-commerce-shop-and-varnish-vhost-templates). @@ -887,43 +916,47 @@ To learn more, see the [corresponding security advisory](https://developers.ibex The PHP API has been enhanced with the following new classes and interfaces: -- [`Ibexa\Contracts\Core\Validation\AbstractValidationStructWrapper`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Validation-AbstractValidationStructWrapper.html) -- [`Ibexa\Contracts\Core\Validation\StructValidator`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Validation-StructValidator.html) -- [`Ibexa\Contracts\Core\Validation\StructWrapperValidator`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Validation-StructWrapperValidator.html) -- [`Ibexa\Contracts\Core\Validation\ValidationFailedException`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Validation-ValidationFailedException.html) -- [`Ibexa\Contracts\Core\Validation\ValidationStructWrapperInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Validation-ValidationStructWrapperInterface.html) -- [`Ibexa\Contracts\Notifications\SystemNotification\SystemMessage`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-SystemNotification-SystemMessage.html) -- [`Ibexa\Contracts\Notifications\SystemNotification\SystemNotification`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-SystemNotification-SystemNotification.html) -- [`Ibexa\Contracts\Notifications\SystemNotification\SystemNotificationInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-SystemNotification-SystemNotificationInterface.html) -- [`Ibexa\Contracts\Notifications\Value\Recipent\UserRecipientInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-Value-Recipent-UserRecipientInterface.html) -- [`Ibexa\Contracts\ProductCatalog\ProductReferencesResolverStrategy`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-ProductReferencesResolverStrategy.html) -- [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\Criterion\UpdatedAt`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-Criterion-UpdatedAt.html) -- [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\Criterion\UpdatedAtRange`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-Criterion-UpdatedAtRange.html) +- [`Ibexa\Contracts\Core\Validation\AbstractValidationStructWrapper`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Validation-AbstractValidationStructWrapper.html) +- [`Ibexa\Contracts\Core\Validation\StructValidator`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Validation-StructValidator.html) +- [`Ibexa\Contracts\Core\Validation\StructWrapperValidator`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Validation-StructWrapperValidator.html) +- [`Ibexa\Contracts\Core\Validation\ValidationFailedException`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Validation-ValidationFailedException.html) +- [`Ibexa\Contracts\Core\Validation\ValidationStructWrapperInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Validation-ValidationStructWrapperInterface.html) +- [`Ibexa\Contracts\Notifications\SystemNotification\SystemMessage`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-SystemNotification-SystemMessage.html) +- [`Ibexa\Contracts\Notifications\SystemNotification\SystemNotification`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-SystemNotification-SystemNotification.html) +- [`Ibexa\Contracts\Notifications\SystemNotification\SystemNotificationInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-SystemNotification-SystemNotificationInterface.html) +- [`Ibexa\Contracts\Notifications\Value\Recipent\UserRecipientInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-Value-Recipent-UserRecipientInterface.html) +- [`Ibexa\Contracts\ProductCatalog\ProductReferencesResolverStrategy`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-ProductReferencesResolverStrategy.html) +- [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\Criterion\UpdatedAt`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-Criterion-UpdatedAt.html) +- [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\Criterion\UpdatedAtRange`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-Criterion-UpdatedAtRange.html) #### Full changelog + [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.13' %]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2024-10-22', ['Headless', 'Experience', 'Commerce']) =]] #### PHP API The PHP API has been enhanced with the following new classes and interfaces: -- [Ibexa\Contracts\CoreSearch\Persistence\CriterionMapper\AbstractCompositeCriterionMapper](../api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Persistence-CriterionMapper-AbstractCompositeCriterionMapper.html) -- [Ibexa\Contracts\CoreSearch\Persistence\CriterionMapper\AbstractFieldCriterionMapper](../api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Persistence-CriterionMapper-AbstractFieldCriterionMapper.html) -- [Ibexa\Contracts\Rest\Output\Exceptions\AbstractExceptionVisitor](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Rest-Output-Exceptions-AbstractExceptionVisitor.html) -- [Ibexa\Contracts\CoreSearch\Values\Query\CriterionMapper](../api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-CriterionMapper.html) +- [Ibexa\Contracts\CoreSearch\Persistence\CriterionMapper\AbstractCompositeCriterionMapper](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Persistence-CriterionMapper-AbstractCompositeCriterionMapper.html) +- [Ibexa\Contracts\CoreSearch\Persistence\CriterionMapper\AbstractFieldCriterionMapper](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Persistence-CriterionMapper-AbstractFieldCriterionMapper.html) +- [Ibexa\Contracts\Rest\Output\Exceptions\AbstractExceptionVisitor](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Rest-Output-Exceptions-AbstractExceptionVisitor.html) +- [Ibexa\Contracts\CoreSearch\Values\Query\CriterionMapper](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-CriterionMapper.html) #### Full changelog [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.12' %]] -[[= release_note_entry_begin("AI Actions", '2024-10-04', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature']) =]] +[[= release_note_entry_begin("AI Actions " + version, '2024-10-04', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release']) =]] The AI Actions LTS update enhances the usability and flexibility of [[=product_name=]] v4.6 LTS by harnessing the potential of artificial intelligence to automate time-consuming editorial tasks. By default, the AI Actions feature can help users with their work in following scenarios: @@ -937,72 +970,81 @@ For more information, see [AI Actions product guide](ai_actions_guide.md). [[= release_note_entry_end() =]] - [[= release_note_entry_begin("Ibexa DXP " + version, '2024-10-04', ['Headless', 'Experience', 'Commerce']) =]] #### PHP API The PHP API has been enhanced with the following new classes and interfaces: -- [Ibexa\Contracts\AdminUi\Menu\AbstractFormContextMenuBuilder](../api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Menu-AbstractFormContextMenuBuilder.html) -- [Ibexa\Contracts\AdminUi\Menu\CopyFormContextMenuBuilder](../api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Menu-CopyFormContextMenuBuilder.html) -- [Ibexa\Contracts\AdminUi\Menu\CreateFormContextMenuBuilder](../api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Menu-CreateFormContextMenuBuilder.html) -- [Ibexa\Contracts\AdminUi\Menu\MenuItemFactoryInterface](../api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Menu-MenuItemFactoryInterface.html) -- [Ibexa\Contracts\AdminUi\Menu\UpdateFormContextMenuBuilder](../api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Menu-UpdateFormContextMenuBuilder.html) -- [Ibexa\Contracts\Core\Pool\Pool](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Pool-Pool.html) -- [Ibexa\Contracts\Core\Pool\PoolInterface](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Pool-PoolInterface.html) -- [Ibexa\Contracts\CoreSearch\Values\Query\AbstractCriterionQuery](../api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-AbstractCriterionQuery.html) -- [Ibexa\Contracts\CoreSearch\Values\Query\AbstractSortClause](../api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-AbstractSortClause.html) -- [Ibexa\Contracts\CoreSearch\Values\Query\Criterion\AbstractCompositeCriterion](../api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-Criterion-AbstractCompositeCriterion.html) -- [Ibexa\Contracts\CoreSearch\Values\Query\Criterion\CriterionInterface](../api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-Criterion-CriterionInterface.html) -- [Ibexa\Contracts\CoreSearch\Values\Query\Criterion\FieldValueCriterion](../api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-Criterion-FieldValueCriterion.html) -- [Ibexa\Contracts\CoreSearch\Values\Query\Criterion\LogicalAnd](../api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-Criterion-LogicalAnd.html) -- [Ibexa\Contracts\CoreSearch\Values\Query\Criterion\LogicalOr](../api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-Criterion-LogicalOr.html) -- [Ibexa\Contracts\CoreSearch\Values\Query\CriterionMapper](../api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-CriterionMapper.html) -- [Ibexa\Contracts\CoreSearch\Values\Query\CriterionMapperInterface](../api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-CriterionMapperInterface.html) -- [Ibexa\Contracts\CoreSearch\Values\Query\SortClause\FieldValueSortClause](../api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-SortClause-FieldValueSortClause.html) -- [Ibexa\Contracts\CoreSearch\Values\Query\SortDirection](../api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-SortDirection.html) -- [Ibexa\Contracts\ProductCatalog\Local\Attribute\ContextAwareValueValidatorInterface](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Local-Attribute-ContextAwareValueValidatorInterface.html) +- [Ibexa\Contracts\AdminUi\Menu\AbstractFormContextMenuBuilder](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Menu-AbstractFormContextMenuBuilder.html) +- [Ibexa\Contracts\AdminUi\Menu\CopyFormContextMenuBuilder](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Menu-CopyFormContextMenuBuilder.html) +- [Ibexa\Contracts\AdminUi\Menu\CreateFormContextMenuBuilder](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Menu-CreateFormContextMenuBuilder.html) +- [Ibexa\Contracts\AdminUi\Menu\MenuItemFactoryInterface](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Menu-MenuItemFactoryInterface.html) +- [Ibexa\Contracts\AdminUi\Menu\UpdateFormContextMenuBuilder](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Menu-UpdateFormContextMenuBuilder.html) +- [Ibexa\Contracts\Core\Pool\Pool](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Pool-Pool.html) +- [Ibexa\Contracts\Core\Pool\PoolInterface](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Pool-PoolInterface.html) +- [Ibexa\Contracts\CoreSearch\Values\Query\AbstractCriterionQuery](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-AbstractCriterionQuery.html) +- [Ibexa\Contracts\CoreSearch\Values\Query\AbstractSortClause](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-AbstractSortClause.html) +- [Ibexa\Contracts\CoreSearch\Values\Query\Criterion\AbstractCompositeCriterion](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-Criterion-AbstractCompositeCriterion.html) +- [Ibexa\Contracts\CoreSearch\Values\Query\Criterion\CriterionInterface](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-Criterion-CriterionInterface.html) +- [Ibexa\Contracts\CoreSearch\Values\Query\Criterion\FieldValueCriterion](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-Criterion-FieldValueCriterion.html) +- [Ibexa\Contracts\CoreSearch\Values\Query\Criterion\LogicalAnd](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-Criterion-LogicalAnd.html) +- [Ibexa\Contracts\CoreSearch\Values\Query\Criterion\LogicalOr](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-Criterion-LogicalOr.html) +- [Ibexa\Contracts\CoreSearch\Values\Query\CriterionMapper](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-CriterionMapper.html) +- [Ibexa\Contracts\CoreSearch\Values\Query\CriterionMapperInterface](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-CriterionMapperInterface.html) +- [Ibexa\Contracts\CoreSearch\Values\Query\SortClause\FieldValueSortClause](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-SortClause-FieldValueSortClause.html) +- [Ibexa\Contracts\CoreSearch\Values\Query\SortDirection](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-SortDirection.html) +- [Ibexa\Contracts\ProductCatalog\Local\Attribute\ContextAwareValueValidatorInterface](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Local-Attribute-ContextAwareValueValidatorInterface.html) #### Full changelog [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.11' %]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2024-09-16', ['Headless', 'Experience', 'Commerce']) =]] #### Search -- New search criterion: [IsBookmarked](isbookmarked_criterion.md) + +- New search criterion: [`IsBookmarked`](isbookmarked_criterion.md) #### PHP API + The PHP API has been enhanced with the following new classes and interfaces: -- [`Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\Location\IsBookmarked`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Query-Criterion-Location-IsBookmarked.html) +- [`Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\Location\IsBookmarked`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Query-Criterion-Location-IsBookmarked.html) And the new methods are: -- [`Ibexa\Contracts\Core\Persistence\Bookmark\Handler::loadUserIdsByLocation()`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Persistence-Bookmark-Handler.html#method_loadUserIdsByLocation) -- [`Ibexa\Contracts\ProductCatalog\Local\LocalProductTypeServiceDecorator::addContentTypeFieldDefinition()`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Local-LocalProductTypeServiceDecorator.html#method_addContentTypeFieldDefinition) -- [`Ibexa\Contracts\ProductCatalog\Local\LocalProductTypeServiceDecorator::removeContentTypeFieldDefinition()`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Local-LocalProductTypeServiceDecorator.html#method_removeContentTypeFieldDefinition) -- [`Ibexa\Contracts\ProductCatalog\Local\LocalProductTypeServiceInterface::addContentTypeFieldDefinition()`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Local-LocalProductTypeServiceInterface.html#methods) -- [`Ibexa\Contracts\ProductCatalog\Local\LocalProductTypeServiceInterface::removeContentTypeFieldDefinition()`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Local-LocalProductTypeServiceInterface.html#method_removeContentTypeFieldDefinition) +- [`Ibexa\Contracts\Core\Persistence\Bookmark\Handler::loadUserIdsByLocation()`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Persistence-Bookmark-Handler.html#method_loadUserIdsByLocation) +- [`Ibexa\Contracts\ProductCatalog\Local\LocalProductTypeServiceDecorator::addContentTypeFieldDefinition()`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Local-LocalProductTypeServiceDecorator.html#method_addContentTypeFieldDefinition) +- [`Ibexa\Contracts\ProductCatalog\Local\LocalProductTypeServiceDecorator::removeContentTypeFieldDefinition()`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Local-LocalProductTypeServiceDecorator.html#method_removeContentTypeFieldDefinition) +- [`Ibexa\Contracts\ProductCatalog\Local\LocalProductTypeServiceInterface::addContentTypeFieldDefinition()`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Local-LocalProductTypeServiceInterface.html#methods) +- [`Ibexa\Contracts\ProductCatalog\Local\LocalProductTypeServiceInterface::removeContentTypeFieldDefinition()`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Local-LocalProductTypeServiceInterface.html#method_removeContentTypeFieldDefinition) [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.10' %]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2024-08-14', ['Headless', 'Experience', 'Commerce']) =]] + #### Security This release includes security fixes. To learn more, see the [corresponding security advisory](https://developers.ibexa.co/security-advisories/ibexa-sa-2024-005-persistent-xss-in-richtext). [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.9' %]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2024-07-31', ['Headless', 'Experience', 'Commerce']) =]] + #### Security This release includes security fixes. @@ -1012,57 +1054,70 @@ To learn more, see the [corresponding security advisory](https://developers.ibex The PHP API has been enhanced with the following new classes and interfaces: -- [`Ibexa\Contracts\ConnectorQualifio\Exception\QualifioException`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorQualifio-Exception-QualifioException.html) -- [`Ibexa\Contracts\ConnectorQualifio\Exception\CampaignFeedNotFoundException`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorQualifio-Exception-CampaignFeedNotFoundException.html) -- [`Ibexa\Contracts\ConnectorQualifio\Exception\CommunicationException`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorQualifio-Exception-CommunicationException.html) -- [`Ibexa\Contracts\ConnectorQualifio\Exception\NotConfiguredException`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorQualifio-Exception-NotConfiguredException.html) +- [`Ibexa\Contracts\ConnectorQualifio\Exception\QualifioException`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorQualifio-Exception-QualifioException.html) +- [`Ibexa\Contracts\ConnectorQualifio\Exception\CampaignFeedNotFoundException`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorQualifio-Exception-CampaignFeedNotFoundException.html) +- [`Ibexa\Contracts\ConnectorQualifio\Exception\CommunicationException`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorQualifio-Exception-CommunicationException.html) +- [`Ibexa\Contracts\ConnectorQualifio\Exception\NotConfiguredException`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorQualifio-Exception-NotConfiguredException.html) [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.8' %]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2024-07-11', ['Headless', 'Experience', 'Commerce']) =]] #### PHP API The PHP API has been enhanced with the following new class: -- [`Ibexa\Contracts\FieldTypeRichText\Configuration\ProviderConfiguratorInterface`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-FieldTypeRichText-Configuration-ProviderConfiguratorInterface.html) +- [`Ibexa\Contracts\FieldTypeRichText\Configuration\ProviderConfiguratorInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-FieldTypeRichText-Configuration-ProviderConfiguratorInterface.html) #### Full changelog [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.7' %]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2024-06-10', ['Headless', 'Experience', 'Commerce']) =]] #### PHP API The PHP API has been enhanced with the following new classes: -- [`Ibexa\Contracts\Calendar\EventAction\EventActionCollection`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Calendar-EventAction-EventActionCollection.html) -- [`Ibexa\Contracts\Calendar\EventSource\InMemoryEventSource`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Calendar-EventSource-InMemoryEventSource.html) -- [`Ibexa\Contracts\Core\Event\Mapper\ResolveMissingFieldEvent`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Event-Mapper-ResolveMissingFieldEvent.html) -- [`Ibexa\Contracts\Core\FieldType\DefaultDataFieldStorage`](../api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-FieldType-DefaultDataFieldStorage.html) +- [`Ibexa\Contracts\Calendar\EventAction\EventActionCollection`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Calendar-EventAction-EventActionCollection.html) +- [`Ibexa\Contracts\Calendar\EventSource\InMemoryEventSource`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Calendar-EventSource-InMemoryEventSource.html) +- [`Ibexa\Contracts\Core\Event\Mapper\ResolveMissingFieldEvent`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Event-Mapper-ResolveMissingFieldEvent.html) +- [`Ibexa\Contracts\Core\FieldType\DefaultDataFieldStorage`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-FieldType-DefaultDataFieldStorage.html) #### Full changelog [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.6' %]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2024-05-17', ['Headless', 'Experience', 'Commerce']) =]] + [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.5' %]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2024-05-14', ['Headless', 'Experience', 'Commerce']) =]] + [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.4' %]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2024-05-13', ['Headless', 'Experience', 'Commerce', 'New feature']) =]] + #### Security This release includes security fixes. @@ -1075,14 +1130,19 @@ To learn more, see the [corresponding security advisory](https://developers.ibex #### Full changelog [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.3' %]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2024-04-11', ['Headless', 'Experience', 'Commerce']) =]] + [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.2' %]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2024-03-20', ['Headless', 'Experience', 'Commerce']) =]] #### Security @@ -1093,15 +1153,20 @@ To learn more, see the [corresponding security advisory](https://developers.ibex #### Full changelog [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.1' %]] + [[= release_note_entry_begin("Ibexa DXP " + version, '2024-02-28', ['Headless', 'Experience', 'Commerce']) =]] + [[% include 'snippets/release_46.md' %]] + [[= release_note_entry_end() =]] [[% set version = 'v4.6.0' %]] -[[= release_note_entry_begin("Ibexa DXP " + version, '2024-02-13', ['Headless', 'Experience', 'Commerce', 'New feature']) =]] + +[[= release_note_entry_begin("Ibexa DXP " + version, '2024-02-13', ['Headless', 'Experience', 'Commerce', 'New feature', 'First release']) =]] ### Notable changes @@ -1437,11 +1502,8 @@ While they experience improved fulfillment of their needs, more engaged customer The feature requires that your organization exposes an endpoint that passes data to an internal message delivery system and supports the following use cases: - Inducing a purchase by pushing a message with cart contents or equivalents, when the customer's cart status remains unchanged for a set time. - - Inviting a customer to come back to the site by pushing a message with recommendations, when they haven't returned to the site for a set time. - - Reviving the customer's interest by pushing a message with products that are similar to the ones the customer has already seen. - - Inducing a purchase by pushing a message when a price of the product from the customer's wishlist decreases. For more information, see [Email triggers](https://doc.ibexa.co/projects/userguide/en/master/personalization/triggers/). @@ -1568,7 +1630,7 @@ For more information, see [CDP Activation](https://doc.ibexa.co/en/master/cdp/cd ### Developer experience -#### New packages +#### New packages The following packages have been introduced in [[= product_name =]] v4.6.0: @@ -1691,7 +1753,7 @@ The following events have been added in the v4.6.0 release (39 events in total): - ibexa/cart - `\Ibexa\Contracts\AdminUi\Event\FocusModeChangedEvent` - `\Ibexa\Contracts\Cart\Event\BeforeMergeCartsEvent` -- ibexa/core +- ibexa/core - URL and name schema resolving events: - `\Ibexa\Contracts\Core\Event\NameSchema\ResolveUrlAliasSchemaEvent` - `\Ibexa\Contracts\Core\Event\NameSchema\ResolveNameSchemaEvent` From c0df67433b1b239bbe7abda6f33cb072239b2eef Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Tue, 3 Mar 2026 09:34:47 +0100 Subject: [PATCH 17/36] Format release notes --- docs/release_notes/ibexa_dxp_v4.6.md | 6 +- docs/release_notes/ibexa_dxp_v5.0.md | 143 +++++++++++++++++++++++++-- 2 files changed, 138 insertions(+), 11 deletions(-) diff --git a/docs/release_notes/ibexa_dxp_v4.6.md b/docs/release_notes/ibexa_dxp_v4.6.md index 9daf7c4297..76bf4c0352 100644 --- a/docs/release_notes/ibexa_dxp_v4.6.md +++ b/docs/release_notes/ibexa_dxp_v4.6.md @@ -13,9 +13,9 @@ month_change: true [[% set version = 'v4.6.28' %]] [[= release_note_entry_begin( -"Ibexa DXP " + version, -'YYYY-MM-DD', -['Headless', 'Experience', 'Commerce'] + "Ibexa DXP " + version, + 'YYYY-MM-DD', + ['Headless', 'Experience', 'Commerce'] ) =]] ### Infrastructure diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index 84ee8e9087..b5db3aac7b 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -1,7 +1,7 @@ --- description: Ibexa DXP v5.0 incorporates features brought by LTS Updates from previous versions, brings upgrades to the tech stack and improvements to developer experience. title: Ibexa DXP v5.0 LTS -month_change: false +month_change: true --- @@ -10,12 +10,68 @@ month_change: false
- +[[% set version = 'v5.0.6' %]] + +https://github.com/ibexa/documentation-developer/pull/2969 +[[= release_note_entry_begin( + 'Shopping Lists ' + version, + 'YYYY-MM-DD', + ['Commerce', 'LTS Update', 'New feature'] +) =]] + +Shopping list is a new feature that allows users to save products into wishlists. +A authenticated customer has a default "My wishlist" created on first use, and can create custom shopping lists to organize their potential or recurrent purchases. +Products can be moved from cart to shopping list, from a shopping list to another shopping list, and copied from a shopping list to the cart. + +For more information, see [Shopping list feature guide](shopping_list_guide.md). + +[[= release_note_entry_end() =]] + +[[= release_note_entry_begin( + "Ibexa DXP " + version, + 'YYYY-MM-DD', + ['Headless', 'Experience', 'Commerce', 'New feature'] +) =]] + +### Infrastructure + +https://github.com/ibexa/documentation-developer/pull/2985 +#### Ibexa Cloud package + +A new `ibexa/cloud` package is now available for [[= product_name_cloud =]] deployments. +This package replaces the previous `composer ibexa:setup --platformsh` command with a dedicated console command. + +The package automatically generates environment variables based on the configuration of relationships and routes in [[= product_name_cloud =]], +making it easier to configure services like databases, cache, search engines, and session storage. + +For more information, see [Install on Ibexa Cloud](install_on_ibexa_cloud.md) and [Environment variables on Ibexa Cloud](environment_variables.md). + +https://github.com/ibexa/documentation-developer/pull/3067 +#### PHP 8.4 support + +PHP 8.4 is now [officially supported](requirements.md#php). + +https://github.com/ibexa/documentation-developer/pull/3046 +### Gaussian blur optimization in Image Editor + +The [Image Editor]([[= user_doc =]]/image_management/edit_images/) now supports configurable gaussian blur strength for image optimization. +You can adjust the blur level to balance between file size reduction and image sharpness. +For more information, see [Configure image editor](configure_image_editor.md#gaussian-blur-strength). + +https://github.com/ibexa/documentation-developer/pull/3044 +### Query subtree limit configuration + +A new `query_subtree.limit` configuration option improves performance when working with large content trees by limiting count operations. +This prevents performance degradation from database queries when determining if locations have children or calculating subtree sizes. + +For more information, see [Subtree operations configuration](back_office_configuration.md#subtree-operations). + ### Developer experience -#### Pass custom parameters to `ibexa_render()` Twig function +https://github.com/ibexa/documentation-developer/pull/3043 +#### Custom parameters in `ibexa_render()` -You can now pass custom parameters to templates when using the `ibexa_render()` Twig function with the new `params` option, similar to how you can with `render(controller())`. +You can now pass custom parameters to templates when using the `ibexa_render()` Twig function with the new `params` option, similar to how you can with `render(controller())`.Collapse annotationCheck notice on line R18[vale] docs/release_notes/ibexa_dxp_v4.6.md#L18Check notice: [vale] docs/release_notes/ibexa_dxp_v4.6.md#L18[Ibexa.ByUsing] Prefer 'by using' or 'with' to plain 'using'.Build & test documentation / valeView details This allows you to provide additional context or data to your view templates: @@ -34,6 +90,77 @@ The parameters are available in your template as regular variables. For more information, see [`ibexa_render()` Twig function](content_twig_functions.md#ibexa_render). +https://github.com/ibexa/documentation-developer/pull/3060 +#### Try-catch support in data migrations + +Data migrations now support try-catch error handling, allowing you to wrap migration steps with exception handling logic. +You can use it for migrations that might fail under certain conditions but should not break the entire migration process. + +For example, you can create languages without checking if they already exist: + +``` yaml +[[= include_file('code_samples/data_migration/examples/try_catch_step.yaml') =]] +``` + +The `try_catch` step allows you to specify which exceptions to catch and whether to continue executing remaining steps after an exception occurs. + +For more information, see [Error handling with try-catch](importing_data.md#error-handling-with-try-catch). + +[[= release_note_entry_end() =]] + +https://github.com/ibexa/documentation-developer/pull/3033 +[[= release_note_entry_begin( + "Ibexa DXP " + version, + 'YYYY-MM-DD', + ['Experience', 'Commerce'] +) =]] + +### Improved HTTP caching for Page Builder and dashboard blocks + +You can now indicate which [query parameters](https://en.wikipedia.org/wiki/Query_string) must be used as keys when generating [HTTP cache](http_cache.md) for block requests. + +This allows you to improve performance for blocks by utilizing HTTP cache more effectively, for example, for paginated blocks in the [dashboard](customize_dashboard.md). + +To set it up, use the new `cacheable_query_params` [block setting](page_blocks.md#block-configuration). + +Then, adjust your [layouts](render_page.md#configure-layout) and pass the parameters to [Symfony's `controller function`]([[= symfony_doc =]]/reference/twig_reference.html#controller) by using the new `ibexa_append_cacheable_query_params` Twig function, as in the example below: + +``` html+twig +{{ render_esi(controller('Ibexa\\Bundle\\FieldTypePage\\Controller\\BlockController::renderAction', + { + 'locationId': locationId, + 'contentId': contentInfo.id, + 'blockId': block.id, + 'versionNo': versionInfo.versionNo, + 'languageCode': field.languageCode + }, + ibexa_append_cacheable_query_params(block) +)) }} +``` + +[[= release_note_entry_end() =]] + +[[= release_note_entry_begin( + "Ibexa DXP " + version, + 'YYYY-MM-DD', + ['Commerce'] +) =]] + +https://github.com/ibexa/documentation-developer/pull/3045 +### Improved product variant querying + +Product variant querying now supports filtering by variant codes and product attribute criteria. + +You can now use the [`ProductServiceInterface::findVariants()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-ProductServiceInterface.html#method_findVariants) method to search for variants across all products, regardless of their base product. + +For more information, see [Product API - Searching variants](product_api.md#searching-for-variants-across-all-products). + +### Full changelog + +[[% include 'snippets/release_50.md' %]] + +[[= release_note_entry_end() =]] + [[% set version = 'v5.0.5' %]] [[= release_note_entry_begin("Ibexa DXP " + version, '2026-01-15', ['Headless', 'Experience', 'Commerce']) =]] @@ -454,7 +581,7 @@ This release brings additional minor improvements to the developer's experience ### Notable changes -This version incorporates into the product numerous features brought by [LTS Updates] from previous versions, brings upgrades to the tech stack and improvements to developer experience. +This version incorporates into the product numerous features brought by LTS Updates from previous versions, brings upgrades to the tech stack and improvements to developer experience. #### AI Actions @@ -515,9 +642,9 @@ With this release, [[= product_name =]] moves to Symfony 7.3 from the previously For details, see [Symfony 7.3](https://symfony.com/blog/symfony-7-3-curated-new-features). -#### Doctrine 3.9 +#### Doctrine DBAL 3.9 -By moving to Doctrine 3.9, [[= product_name =]] brings developers better performance, cleaner code, and stronger foundation for a more modern and maintainable application. +By moving to Doctrine DBAL 3.9, [[= product_name =]] brings developers better performance, cleaner code, and stronger foundation for a more modern and maintainable application. #### PHP 8.3 @@ -527,7 +654,7 @@ With performance, coding safety and security in mind, with this version, [[= pro Adding support for generating the [OpenAPI](https://www.openapis.org/) specification for our REST API makes future changes more manageable, and helps our partners automatically generate REST API clients. -For more information, see [REST API usage](https://doc.ibexa.co/en/latehttps://doc.ibexa.co/en/5.0/api/rest_api/rest_api_usage/rest_api_usage/#openapi-support). +For more information, see [REST API usage](https://doc.ibexa.co/en/5.0/api/rest_api/rest_api_usage/rest_api_usage/#openapi-support). Support for serialization and deserialization of REST payloads with the [Symfony Serializer](https://symfony.com/doc/current/serializer.html) component improves data reliability and simplifies debugging. From 63443967ed49409a61b165ef0969a8b5f88c6746 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Mon, 2 Mar 2026 16:31:07 +0100 Subject: [PATCH 18/36] Merge remote-tracking branch 'origin/migrations-try-catch' into v4.6.28 Conflicts: docs/release_notes/ibexa_dxp_v5.0.md --- .../data_migration/examples/sql_execute.yaml | 13 ++++ .../examples/try_catch_step.yaml | 14 +++++ .../data_migration/importing_data.md | 60 +++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 code_samples/data_migration/examples/sql_execute.yaml create mode 100644 code_samples/data_migration/examples/try_catch_step.yaml diff --git a/code_samples/data_migration/examples/sql_execute.yaml b/code_samples/data_migration/examples/sql_execute.yaml new file mode 100644 index 0000000000..c11ca0bb4a --- /dev/null +++ b/code_samples/data_migration/examples/sql_execute.yaml @@ -0,0 +1,13 @@ +- + type: sql + mode: execute + query: + - + driver: mysql + sql: 'INSERT INTO test_table (test_value) VALUES ("foo");' + - + driver: sqlite + sql: 'INSERT INTO test_table (test_value) VALUES ("foo");' + - + driver: postgresql + sql: "INSERT INTO test_table (test_value) VALUES ('foo');" diff --git a/code_samples/data_migration/examples/try_catch_step.yaml b/code_samples/data_migration/examples/try_catch_step.yaml new file mode 100644 index 0000000000..0cb8206beb --- /dev/null +++ b/code_samples/data_migration/examples/try_catch_step.yaml @@ -0,0 +1,14 @@ +- + type: try_catch + mode: execute + allowed_exceptions: + - Ibexa\Contracts\Core\Repository\Exceptions\InvalidArgumentException + stop_after_first_exception: true + steps: + - + type: language + mode: create + metadata: + languageCode: ger-DE + name: German + enabled: true diff --git a/docs/content_management/data_migration/importing_data.md b/docs/content_management/data_migration/importing_data.md index a246a5380e..643448b932 100644 --- a/docs/content_management/data_migration/importing_data.md +++ b/docs/content_management/data_migration/importing_data.md @@ -74,6 +74,14 @@ The following data migration step modes are available: | `user` | ✔ | ✔ | | | | | `user_group` | ✔ | ✔ | ✔ | | | +Additionally, the following special migration types are available: + +| `type` | `execute` | +|------------------------|:---------:| +| `repeatable` | ✔ | +| `sql` | ✔ | +| `try_catch` | ✔ | + ### Repeatable steps You can run a set of one or more similar migration steps multiple times by using the special `repeatable` migration type. @@ -122,6 +130,58 @@ Then, you can use `faker()` in expressions, for example: This step generates field values with fake personal names. +### SQL migrations + +You can execute raw SQL queries directly in migrations by using the `sql` migration type. +Use it for custom database operations that don't fit into standard entity migrations, such as creating custom tables or performing bulk updates. + +Each query requires a `driver` property that specifies which database system the query is for. +The migration system automatically filters queries and executes only those matching your current database driver. + +```yaml +[[= include_file('code_samples/data_migration/examples/sql_execute.yaml') =]] +``` + +The supported database drivers are: + +- `mysql` - MySQL/MariaDB +- `postgresql` - PostgreSQL +- `sqlite` - SQLite + +You can define queries for multiple database drivers in a single migration step. +The system executes only the queries that match your configured database platform. +If no matching queries are found, the migration throws an error. + +!!! caution + + SQL migrations bypass the content model abstraction layer and directly modify the database. + Use them with caution and ensure your queries are compatible with your target database system. + +### Error handling with try-catch + +You can wrap one or more migration steps with a `try_catch` step to handle exceptions gracefully. + +Use it for migration steps that may fail under specific conditions but should not halt the entire migration process. + +For example, you can ensure a language creation migration step succeeds even if the language already exists. +If the migration step fails for this reason, the exception is suppressed, allowing the remaining migrations to proceed without interruption. + +A `try_catch` migration requires the `steps` property and accepts optional `allowed_exceptions` and `stop_after_first_exception` settings. + +Default values are: + +- `allowed_exceptions`: empty list +- `stop_after_first_exception`: `true` + +```yaml +[[= include_file('code_samples/data_migration/examples/try_catch_step.yaml') =]] +``` + +When an exception is thrown within a `try_catch` step, it's compared against the list of `allowed_exceptions`. +If the exception matches, it's caught and the migration step continues or stops depending on the `stop_after_first_exception` configuration setting. +The migration step is marked as successful and the migration process continues. +Non-matching exceptions throw immediately, halting the migration process and returning an error. + ### Expression syntax You can use [Symfony expression syntax]([[= symfony_doc =]]/reference/formats/expression_language.html) in data migrations, like in [repeatable steps](#repeatable-steps), where you can use it to generate varied content in migration steps. From 096351cd8afd9689a8c9b6c960cb89eba388b045 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Tue, 3 Mar 2026 09:40:38 +0100 Subject: [PATCH 19/36] Revert "Merge remote-tracking branch 'origin/migrations-try-catch' into v4.6.28" This reverts commit 63443967ed49409a61b165ef0969a8b5f88c6746. --- .../data_migration/examples/sql_execute.yaml | 13 ---- .../examples/try_catch_step.yaml | 14 ----- .../data_migration/importing_data.md | 60 ------------------- docs/release_notes/ibexa_dxp_v5.0.md | 16 ----- 4 files changed, 103 deletions(-) delete mode 100644 code_samples/data_migration/examples/sql_execute.yaml delete mode 100644 code_samples/data_migration/examples/try_catch_step.yaml diff --git a/code_samples/data_migration/examples/sql_execute.yaml b/code_samples/data_migration/examples/sql_execute.yaml deleted file mode 100644 index c11ca0bb4a..0000000000 --- a/code_samples/data_migration/examples/sql_execute.yaml +++ /dev/null @@ -1,13 +0,0 @@ -- - type: sql - mode: execute - query: - - - driver: mysql - sql: 'INSERT INTO test_table (test_value) VALUES ("foo");' - - - driver: sqlite - sql: 'INSERT INTO test_table (test_value) VALUES ("foo");' - - - driver: postgresql - sql: "INSERT INTO test_table (test_value) VALUES ('foo');" diff --git a/code_samples/data_migration/examples/try_catch_step.yaml b/code_samples/data_migration/examples/try_catch_step.yaml deleted file mode 100644 index 0cb8206beb..0000000000 --- a/code_samples/data_migration/examples/try_catch_step.yaml +++ /dev/null @@ -1,14 +0,0 @@ -- - type: try_catch - mode: execute - allowed_exceptions: - - Ibexa\Contracts\Core\Repository\Exceptions\InvalidArgumentException - stop_after_first_exception: true - steps: - - - type: language - mode: create - metadata: - languageCode: ger-DE - name: German - enabled: true diff --git a/docs/content_management/data_migration/importing_data.md b/docs/content_management/data_migration/importing_data.md index 643448b932..a246a5380e 100644 --- a/docs/content_management/data_migration/importing_data.md +++ b/docs/content_management/data_migration/importing_data.md @@ -74,14 +74,6 @@ The following data migration step modes are available: | `user` | ✔ | ✔ | | | | | `user_group` | ✔ | ✔ | ✔ | | | -Additionally, the following special migration types are available: - -| `type` | `execute` | -|------------------------|:---------:| -| `repeatable` | ✔ | -| `sql` | ✔ | -| `try_catch` | ✔ | - ### Repeatable steps You can run a set of one or more similar migration steps multiple times by using the special `repeatable` migration type. @@ -130,58 +122,6 @@ Then, you can use `faker()` in expressions, for example: This step generates field values with fake personal names. -### SQL migrations - -You can execute raw SQL queries directly in migrations by using the `sql` migration type. -Use it for custom database operations that don't fit into standard entity migrations, such as creating custom tables or performing bulk updates. - -Each query requires a `driver` property that specifies which database system the query is for. -The migration system automatically filters queries and executes only those matching your current database driver. - -```yaml -[[= include_file('code_samples/data_migration/examples/sql_execute.yaml') =]] -``` - -The supported database drivers are: - -- `mysql` - MySQL/MariaDB -- `postgresql` - PostgreSQL -- `sqlite` - SQLite - -You can define queries for multiple database drivers in a single migration step. -The system executes only the queries that match your configured database platform. -If no matching queries are found, the migration throws an error. - -!!! caution - - SQL migrations bypass the content model abstraction layer and directly modify the database. - Use them with caution and ensure your queries are compatible with your target database system. - -### Error handling with try-catch - -You can wrap one or more migration steps with a `try_catch` step to handle exceptions gracefully. - -Use it for migration steps that may fail under specific conditions but should not halt the entire migration process. - -For example, you can ensure a language creation migration step succeeds even if the language already exists. -If the migration step fails for this reason, the exception is suppressed, allowing the remaining migrations to proceed without interruption. - -A `try_catch` migration requires the `steps` property and accepts optional `allowed_exceptions` and `stop_after_first_exception` settings. - -Default values are: - -- `allowed_exceptions`: empty list -- `stop_after_first_exception`: `true` - -```yaml -[[= include_file('code_samples/data_migration/examples/try_catch_step.yaml') =]] -``` - -When an exception is thrown within a `try_catch` step, it's compared against the list of `allowed_exceptions`. -If the exception matches, it's caught and the migration step continues or stops depending on the `stop_after_first_exception` configuration setting. -The migration step is marked as successful and the migration process continues. -Non-matching exceptions throw immediately, halting the migration process and returning an error. - ### Expression syntax You can use [Symfony expression syntax]([[= symfony_doc =]]/reference/formats/expression_language.html) in data migrations, like in [repeatable steps](#repeatable-steps), where you can use it to generate varied content in migration steps. diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index b5db3aac7b..5567b8d865 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -90,22 +90,6 @@ The parameters are available in your template as regular variables. For more information, see [`ibexa_render()` Twig function](content_twig_functions.md#ibexa_render). -https://github.com/ibexa/documentation-developer/pull/3060 -#### Try-catch support in data migrations - -Data migrations now support try-catch error handling, allowing you to wrap migration steps with exception handling logic. -You can use it for migrations that might fail under certain conditions but should not break the entire migration process. - -For example, you can create languages without checking if they already exist: - -``` yaml -[[= include_file('code_samples/data_migration/examples/try_catch_step.yaml') =]] -``` - -The `try_catch` step allows you to specify which exceptions to catch and whether to continue executing remaining steps after an exception occurs. - -For more information, see [Error handling with try-catch](importing_data.md#error-handling-with-try-catch). - [[= release_note_entry_end() =]] https://github.com/ibexa/documentation-developer/pull/3033 From 7a03c565f41098310ecc411f8d8cb8dbb6c0b0d7 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Tue, 3 Mar 2026 11:20:04 +0100 Subject: [PATCH 20/36] Format release notes --- docs/release_notes/ibexa_dxp_v5.0.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index 5567b8d865..ce2d43f6fe 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -12,7 +12,6 @@ month_change: true [[% set version = 'v5.0.6' %]] -https://github.com/ibexa/documentation-developer/pull/2969 [[= release_note_entry_begin( 'Shopping Lists ' + version, 'YYYY-MM-DD', @@ -35,7 +34,6 @@ For more information, see [Shopping list feature guide](shopping_list_guide.md). ### Infrastructure -https://github.com/ibexa/documentation-developer/pull/2985 #### Ibexa Cloud package A new `ibexa/cloud` package is now available for [[= product_name_cloud =]] deployments. @@ -46,19 +44,16 @@ making it easier to configure services like databases, cache, search engines, an For more information, see [Install on Ibexa Cloud](install_on_ibexa_cloud.md) and [Environment variables on Ibexa Cloud](environment_variables.md). -https://github.com/ibexa/documentation-developer/pull/3067 #### PHP 8.4 support PHP 8.4 is now [officially supported](requirements.md#php). -https://github.com/ibexa/documentation-developer/pull/3046 ### Gaussian blur optimization in Image Editor The [Image Editor]([[= user_doc =]]/image_management/edit_images/) now supports configurable gaussian blur strength for image optimization. You can adjust the blur level to balance between file size reduction and image sharpness. For more information, see [Configure image editor](configure_image_editor.md#gaussian-blur-strength). -https://github.com/ibexa/documentation-developer/pull/3044 ### Query subtree limit configuration A new `query_subtree.limit` configuration option improves performance when working with large content trees by limiting count operations. @@ -68,7 +63,6 @@ For more information, see [Subtree operations configuration](back_office_configu ### Developer experience -https://github.com/ibexa/documentation-developer/pull/3043 #### Custom parameters in `ibexa_render()` You can now pass custom parameters to templates when using the `ibexa_render()` Twig function with the new `params` option, similar to how you can with `render(controller())`.Collapse annotationCheck notice on line R18[vale] docs/release_notes/ibexa_dxp_v4.6.md#L18Check notice: [vale] docs/release_notes/ibexa_dxp_v4.6.md#L18[Ibexa.ByUsing] Prefer 'by using' or 'with' to plain 'using'.Build & test documentation / valeView details @@ -92,7 +86,6 @@ For more information, see [`ibexa_render()` Twig function](content_twig_function [[= release_note_entry_end() =]] -https://github.com/ibexa/documentation-developer/pull/3033 [[= release_note_entry_begin( "Ibexa DXP " + version, 'YYYY-MM-DD', From e99dbb6296945eb11b7f1f337c774164092fc526 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Tue, 3 Mar 2026 16:58:22 +0100 Subject: [PATCH 21/36] Format update_from_*.md --- .../from_4.6/update_from_4.6.md | 7 ++- .../from_4.6/update_to_5.0.md | 8 ++++ .../from_5.0/update_from_5.0.md | 43 +++++++++++++++++-- 3 files changed, 53 insertions(+), 5 deletions(-) diff --git a/docs/update_and_migration/from_4.6/update_from_4.6.md b/docs/update_and_migration/from_4.6/update_from_4.6.md index 468c3b7e2d..df4afad4f4 100644 --- a/docs/update_and_migration/from_4.6/update_from_4.6.md +++ b/docs/update_and_migration/from_4.6/update_from_4.6.md @@ -1,6 +1,6 @@ --- description: Update your installation to the latest v4.6 version from an earlier v4.6 version. -month_change: false +month_change: true --- # Update from v4.6.x to v4.6.latest @@ -577,6 +577,10 @@ Follow the [Messenger setup instructions](https://doc.ibexa.co/en/4.6/infrastruc With the product updated to the latest version, you can now finish the update process or proceed to updating the LTS Updates packages. +## v4.6.28 + +No additional steps needed. + ## LTS Updates [LTS Updates](https://doc.ibexa.co/en/4.6/ibexa_products/editions/#lts-updates) are standalone packages with their own update procedures. @@ -842,4 +846,3 @@ To use the [latest features](ibexa_dxp_v4.6.md) added to them, update them separ ```bash composer require ibexa/fieldtype-richtext-rte:[[= latest_tag_4_6 =]] ibexa/ckeditor-premium:[[= latest_tag_4_6 =]] ``` - diff --git a/docs/update_and_migration/from_4.6/update_to_5.0.md b/docs/update_and_migration/from_4.6/update_to_5.0.md index 1aeffc11d1..5bbd8562d0 100644 --- a/docs/update_and_migration/from_4.6/update_to_5.0.md +++ b/docs/update_and_migration/from_4.6/update_to_5.0.md @@ -1057,6 +1057,14 @@ If you are using GraphQL in your project, you can generate its schema by running php bin/console ibexa:graphql:generate-schema ``` +### Upgrade GraphQL usage + +- In 4.6, pagination for [RelationList field type](https://doc.ibexa.co/en/5.0/content_management/field_types/field_type_reference/relationlistfield/) is disabled by default, and can be enabled using the `ibexa.graphql.schema.ibexa_object_relation_list.enable_pagination` parameter +- In 5.0, pagination for RelationList field type is always activated and can't be disabled. The previous parameter doesn't exist anymore and is ignored if set + +If you have code based on `relations` request returning the entire list, you have to update it. +For more information, see [Pagination in GraphQL](https://doc.ibexa.co/en/5.0/api/graphql/graphql_queries/#pagination). + ### Update search indexes Ensure your search index is up to date with the following command: diff --git a/docs/update_and_migration/from_5.0/update_from_5.0.md b/docs/update_and_migration/from_5.0/update_from_5.0.md index 67e704e4fe..7c6da4ef11 100644 --- a/docs/update_and_migration/from_5.0/update_from_5.0.md +++ b/docs/update_and_migration/from_5.0/update_from_5.0.md @@ -194,9 +194,9 @@ If you choose to upgrade to Elasticsearch 8, follow these steps: #### Update Elasticsearch server Upgrade your Elasticsearch server to version 8.19 or higher. -Follow the [Elasticsearch upgrade guide](https://www.elastic.co/guide/en/elastic-stack/8.19/upgrading-elastic-stack.html#prepare-to-upgrade) for detailed instructions. +For detailed instructions, follow the [Elasticsearch upgrade guide](https://www.elastic.co/guide/en/elastic-stack/8.19/upgrading-elastic-stack.html#prepare-to-upgrade). -When using [[= product_name_cloud =]], see [Elasticsearch service](https://docs.upsun.com/add-services/elasticsearch.html) for a list of supported versions. +When you use [[= product_name_cloud =]], see [Elasticsearch service](https://docs.upsun.com/add-services/elasticsearch.html) for a list of supported versions. #### Update configuration @@ -281,6 +281,37 @@ Run the provided SQL upgrade script to ensure the Messenger tables for [backgrou psql < vendor/ibexa/installer/upgrade/db/postgresql/ibexa-5.0.4-to-5.0.5.sql ``` +## v5.0.5 + +No additional steps needed. + +## v5.0.6 + +### [[= product_name_cloud =]] configuration update + +If you're using [[= product_name_cloud =]], you must install a new package and update your cloud configuration. + +First, install the `ibexa/cloud` package: + +```bash +composer require ibexa/cloud +``` + +Then, update your cloud configuration. +Instead of the old `composer ibexa:setup --platformsh` command, use: + +``` bash +php bin/console ibexa:cloud:setup --upsun +``` + +This command generates or updates the cloud configuration files. + +Additionally, you must remove the following line from your `.platform.app.yaml` file if it exists: + +```yaml +curl -fs https://get.symfony.com/cloud/configurator | bash +``` + ## LTS Updates and additional packages [LTS Updates](editions.md#lts-updates) are standalone packages with their own update procedures. @@ -302,7 +333,7 @@ To use the [latest features](ibexa_dxp_v5.0.md) added to them, update them separ ### Anthropic connector [[% include 'snippets/lts-update_badge.md' %]] - See [how to configure Anthropic connector](https://doc.ibexa.co/en/5.0/ai_actions/configure_ai_actions#install-anthropic-connector) for more information. + See [how to configure Anthropic connector](https://doc.ibexa.co/en/5.0/ai_actions/configure_ai_actions/#install-anthropic-connector) for more information. If you're already using it, run the following command to get the latest version of this feature: @@ -321,3 +352,9 @@ To use the [latest features](ibexa_dxp_v5.0.md) added to them, update them separ ```bash composer require ibexa/fieldtype-richtext-rte:[[= latest_tag_5_0 =]] ibexa/ckeditor-premium:[[= latest_tag_5_0 =]] ``` + +=== "Shopping list" + + ### Shopping list [[% include 'snippets/lts-update_badge.md' %]] [[% include 'snippets/commerce_badge.md' %]] + + To learn more about the [Shopping list](https://doc.ibexa.co/en/5.0/commerce/shopping_list/shopping_list_guide/), see the [installation and configuration instructions](https://doc.ibexa.co/en/5.0/commerce/shopping_list/install_shopping_list/). From 72d5f493aa569fee861473b78aa20d7657db19be Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Tue, 3 Mar 2026 19:06:11 +0100 Subject: [PATCH 22/36] Fix links in release notes --- docs/release_notes/ibexa_dxp_v4.6.md | 110 +++++++++++++-------------- docs/release_notes/ibexa_dxp_v5.0.md | 64 ++++++++-------- 2 files changed, 87 insertions(+), 87 deletions(-) diff --git a/docs/release_notes/ibexa_dxp_v4.6.md b/docs/release_notes/ibexa_dxp_v4.6.md index 76bf4c0352..b6b3607881 100644 --- a/docs/release_notes/ibexa_dxp_v4.6.md +++ b/docs/release_notes/ibexa_dxp_v4.6.md @@ -22,13 +22,13 @@ month_change: true #### PHP 8.4 support -PHP 8.4 is now [officially supported](requirements.md#php). +PHP 8.4 is now [officially supported](https://doc.ibexa.co/en/4.6/getting_started/requirements/#php). ### Gaussian blur optimization in Image Editor The [Image Editor]([[= user_doc =]]/image_management/edit_images/) now supports configurable gaussian blur strength for image optimization. You can adjust the blur level to balance between file size reduction and image sharpness. -For more information, see [Configure image editor](configure_image_editor.md#gaussian-blur-strength). +For more information, see [Configure image editor](https://doc.ibexa.co/en/4.6/content_management/images/configure_image_editor/#gaussian-blur-strength). ### Developer experience @@ -51,7 +51,7 @@ This allows you to provide additional context or data to your view templates: The parameters are available in your template as regular variables. -For more information, see [`ibexa_render()` Twig function](content_twig_functions.md#ibexa_render). +For more information, see [`ibexa_render()` Twig function](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/content_twig_functions/#ibexa_render). ### Full changelog @@ -67,14 +67,14 @@ For more information, see [`ibexa_render()` Twig function](content_twig_function Elasticsearch 8 is now officially supported. If you're currently using Elasticsearch 7, which is [no longer maintained](https://www.elastic.co/support/eol), it's recommended to upgrade. -See the [update instructions](update_from_4.6.md#elasticsearch-8-support) for more information. +See the [update instructions](https://doc.ibexa.co/en/4.6/update_and_migration/from_4.6/update_from_4.6/#elasticsearch-8-support) for more information. ### Added asynchronous processing of data in Ibexa DXP -You can now process requests from [[[= product_name_cdp =]]](/cdp/cdp.md) asynchronously, in the background. +You can now process requests from [[[= product_name_cdp =]]](https://doc.ibexa.co/en/4.6/cdp/cdp/) asynchronously, in the background. Use it to improve performance and prevent data loss. -To enable this behavior, install and configure the [Ibexa Messenger package](background_tasks.md). +To enable this behavior, install and configure the [Ibexa Messenger package](https://doc.ibexa.co/en/4.6/infrastructure_and_maintenance/background_tasks/). Then, set the batch size that triggers asynchronous processing: ``` yaml @@ -87,13 +87,13 @@ Otherwise, they are processed synchronously. ### Improved HTTP caching for Page Builder and dashboard blocks -You can now indicate which [query parameters](https://en.wikipedia.org/wiki/Query_string) must be used as keys when generating [HTTP cache](http_cache.md) for block requests. +You can now indicate which [query parameters](https://en.wikipedia.org/wiki/Query_string) must be used as keys when generating [HTTP cache](https://doc.ibexa.co/en/4.6/infrastructure_and_maintenance/cache/http_cache/http_cache/) for block requests. -This allows you to improve performance for blocks by utilizing HTTP cache more effectively, for example, for paginated blocks in the [dashboard](customize_dashboard.md). +This allows you to improve performance for blocks by utilizing HTTP cache more effectively, for example, for paginated blocks in the [dashboard](https://doc.ibexa.co/en/4.6/administration/dashboard/customize_dashboard/). -To set it up, use the new `cacheable_query_params` [block setting](page_blocks.md#block-configuration). +To set it up, use the new `cacheable_query_params` [block setting](https://doc.ibexa.co/en/4.6/content_management/pages/page_blocks/#block-configuration). -Then, adjust your [layouts](render_page.md#configure-layout) and pass the parameters to [Symfony's `controller function`]([[= symfony_doc =]]/reference/twig_reference.html#controller) by using the new `ibexa_append_cacheable_query_params` Twig function, as in the example below: +Then, adjust your [layouts](https://doc.ibexa.co/en/4.6/templating/render_content/render_page/#configure-layout) and pass the parameters to [Symfony's `controller function`]([[= symfony_doc =]]/reference/twig_reference.html#controller) by using the new `ibexa_append_cacheable_query_params` Twig function, as in the example below: ``` html+twig {{ render_esi(controller('Ibexa\\Bundle\\FieldTypePage\\Controller\\BlockController::renderAction', @@ -156,14 +156,14 @@ The PHP API has been enhanced with the following classes and interfaces: [[= release_note_entry_begin("Integrated help " + version, '2025-12-10', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release']) =]] -Integrated help, a new [LTS Update](editions.md#lts-updates), brings contextual documentation, guidance, and partner-specific resources right into the user interface of [[= product_name =]]. +Integrated help, a new [LTS Update](https://doc.ibexa.co/en/4.6/ibexa_products/editions/#lts-updates), brings contextual documentation, guidance, and partner-specific resources right into the user interface of [[= product_name =]]. It helps editors, store managers, and developers to quickly access relevant content, training and resources without leaving the UI, narrowing the gap between product and documentation. The default help menu can be modified to include links to internal editorial guidelines, custom tutorials, or support pages. ![Integrated help menu](../administration/back_office/img/5_0_integrated_help_menu.png) -For more information, see [Integrated help](integrated_help.md). +For more information, see [Integrated help](https://doc.ibexa.co/en/4.6/administration/back_office/integrated_help/). [[= release_note_entry_end() =]] @@ -171,7 +171,7 @@ For more information, see [Integrated help](integrated_help.md). #### Real-time collaborative editing -Real-time editing is now part of the [Collaborative editing](collaborative_editing.md) feature. +Real-time editing is now part of the [Collaborative editing](https://doc.ibexa.co/en/4.6/content_management/collaborative_editing/collaborative_editing/) feature. By using it, users can edit and review content in real time, making teamwork faster, more efficient, and streamlining the content review process. The system automatically tracks changes, allowing seamless collaboration within a single content item. @@ -213,7 +213,7 @@ This approach reduces manual effort, minimizes errors, and significantly improve ![Taxonomy entries suggested by the AI Assistant](img/taxonomy_suggestions_content.png "Taxonomy entries suggested by the AI Assistant") -For more information, see [Taxonomy suggestions](taxonomy.md#taxonomy-suggestions). +For more information, see [Taxonomy suggestions](https://doc.ibexa.co/en/4.6/content_management/taxonomy/taxonomy/#taxonomy-suggestions). #### PHP API @@ -241,7 +241,7 @@ To learn more, see the [corresponding security advisory](https://developers.ibex #### Infrastructure -- MariaDB 11.4 is now [officially supported](requirements.md#dbms) +- MariaDB 11.4 is now [officially supported](https://doc.ibexa.co/en/4.6/getting_started/requirements/#dbms) #### Developer experience @@ -351,7 +351,7 @@ The only package that has been introduced in [[= product_name =]] v4.6.24 is ibe ##### New version of PHP Storm Plugin -To further improve your experience with Ibexa DXP, a 1.14.0 version of [PHP Storm Plugin](phpstorm_plugin.md) has been released, which brings the following changes: +To further improve your experience with Ibexa DXP, a 1.14.0 version of [PHP Storm Plugin](https://doc.ibexa.co/en/4.6/resources/phpstorm_plugin/) has been released, which brings the following changes: - Added support for Ibexa DXP v5.0 - Added compatibility with PhpStorm 2024.3.6+ @@ -415,9 +415,9 @@ The Product Picker tool that, for example, lets you [select products eligible fo [[= release_note_entry_begin("Symbol attribute " + version, '2025-08-05', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release']) =]] -The Symbol attribute allows you to store standardized identifiers of your products in the [Product Information Management](pim_guide.md) system. +The Symbol attribute allows you to store standardized identifiers of your products in the [Product Information Management](https://doc.ibexa.co/en/4.6/pim/pim_guide/) system. -For more information, see [Symbol attribute type](symbol_attribute_type.md). +For more information, see [Symbol attribute type](https://doc.ibexa.co/en/4.6/pim/attributes/symbol_attribute_type/). #### PHP API @@ -432,7 +432,7 @@ The PHP API has been enhanced with the following new classes: #### Global discount codes limits -- You can now [limit the number of times](discounts_guide.md#discount-codes) a discount code can be used before it expires. The discounts created before this release are set to unlimited global usage +- You can now [limit the number of times](https://doc.ibexa.co/en/4.6/discounts/discounts_guide/#discount-codes) a discount code can be used before it expires. The discounts created before this release are set to unlimited global usage #### Discount codes prioritization @@ -440,7 +440,7 @@ The PHP API has been enhanced with the following new classes: #### Discount codes migrations -- You can now create discount codes using [data migrations](importing_data.md#discount-codes) +- You can now create discount codes using [data migrations](https://doc.ibexa.co/en/4.6/content_management/data_migration/importing_data/#discount-codes) #### PHP API @@ -455,16 +455,16 @@ The PHP API has been enhanced with the following new classes: #### Special characters in online editor -The [online editor](online_editor_guide.md) now allows to easily enter special characters like currency symbols. +The [online editor](https://doc.ibexa.co/en/4.6/content_management/rich_text/online_editor_guide/) now allows to easily enter special characters like currency symbols. It uses the [special characters plugin](https://ckeditor.com/docs/ckeditor5/latest/features/special-characters.html). ![Special characters in online editor](4.6_special_characters.png "Special characters in online editor") #### Support for Solr 9 -With this release, [[= product_name =]] starts supporting [Solr 9](requirements.md#search). +With this release, [[= product_name =]] starts supporting [Solr 9](https://doc.ibexa.co/en/4.6/getting_started/requirements/#search). -Solr 9 comes with support for [Dense Vector Search](https://solr.apache.org/guide/solr/latest/query-guide/dense-vector-search.html), paving the way for incoming improvements to the [AI Actions](ai_actions.md) feature. +Solr 9 comes with support for [Dense Vector Search](https://solr.apache.org/guide/solr/latest/query-guide/dense-vector-search.html), paving the way for incoming improvements to the [AI Actions](https://doc.ibexa.co/en/4.6/ai_actions/ai_actions/) feature. #### Improved content creation interface @@ -474,29 +474,29 @@ The editing interface of the back office has been improved to better highlight t #### Twig Components -With the latest changes to [Twig Components](components.md), you can: +With the latest changes to [Twig Components](https://doc.ibexa.co/en/4.6/templating/components/), you can: - set component priority when using YAML configuration - render a menu with help of the new Menu component The list of built-in Twig Component groups has been expanded and includes: -- one new group for the [back office](custom_components.md) (`admin-ui-versions-table-before`) -- eight new groups for [storefront](customize_storefront_layout.md#customize-with-twig-components) +- one new group for the [back office](https://doc.ibexa.co/en/4.6/administration/back_office/back_office_elements/custom_components/) (`admin-ui-versions-table-before`) +- eight new groups for [storefront](https://doc.ibexa.co/en/4.6/templating/layout/customize_storefront_layout/#customize-with-twig-components) #### Taxonomy Subtree limitation -You can now manage access to [taxonomy items](taxonomy.md) more effectively by using the new [Taxonomy Subtree limitation](limitation_reference.md#taxonomy-subtree-limitation). +You can now manage access to [taxonomy items](https://doc.ibexa.co/en/4.6/content_management/taxonomy/taxonomy/) more effectively by using the new [Taxonomy Subtree limitation](https://doc.ibexa.co/en/4.6/permissions/limitation_reference/#taxonomy-subtree-limitation). -In addition, you can now use the [Taxonomy limitation](limitation_reference.md#taxonomy-limitation) together with the `taxonomy/assign` policy. +In addition, you can now use the [Taxonomy limitation](https://doc.ibexa.co/en/4.6/permissions/limitation_reference/#taxonomy-limitation) together with the `taxonomy/assign` policy. #### Pagination for ezobjectrelationlist in GraphQL -To improve performance and gain greater control over the returned responses from the [GraphQL API](graphql.md), you can now [enable pagination]((https://doc.ibexa.co/en/4.6/content_management/field_types/field_type_reference/relationlistfield#enable-pagination-in-graphql) of relations specified using the RelationList field type. +To improve performance and gain greater control over the returned responses from the [GraphQL API](https://doc.ibexa.co/en/4.6/api/graphql/graphql/), you can now [enable pagination]((https://doc.ibexa.co/en/4.6/content_management/field_types/field_type_reference/relationlistfield#enable-pagination-in-graphql) of relations specified using the RelationList field type. #### Breaking changes -- The `Ibexa\FieldTypeRichText\RichText\Validator\CustomTagsValidator` class has been renamed to `Ibexa\FieldTypeRichText\RichText\Validator\CustomTemplateValidator`, expanding its responsibility to validate both [custom tags](extend_online_editor.md#configure-custom-tags) and [custom styles](extend_online_editor.md#configure-custom-styles) +- The `Ibexa\FieldTypeRichText\RichText\Validator\CustomTagsValidator` class has been renamed to `Ibexa\FieldTypeRichText\RichText\Validator\CustomTemplateValidator`, expanding its responsibility to validate both [custom tags](https://doc.ibexa.co/en/4.6/content_management/rich_text/extend_online_editor/#configure-custom-tags) and [custom styles](https://doc.ibexa.co/en/4.6/content_management/rich_text/extend_online_editor/#configure-custom-styles) - The `Ibexa\Contracts\AdminUi\Permission\PermissionCheckContextProviderInterface` interface has been removed - The `Ibexa\Contracts\AdminUi\Values\PermissionCheckContext` class has been removed @@ -561,7 +561,7 @@ The PHP API has been enhanced with the following new classes: #### Features - With the introduction of discount code usage limits, you can now limit the number of times a customer can use a discount code before it becomes invalid -- You can now provide your own form themes for the discounts form by using the extension point in [`ibexa_discounts_form_themes` Twig function](discounts_twig_functions.md#ibexa_discounts_form_themes) +- You can now provide your own form themes for the discounts form by using the extension point in [`ibexa_discounts_form_themes` Twig function](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/discounts_twig_functions/#ibexa_discounts_form_themes) #### PHP API @@ -575,7 +575,7 @@ The PHP API has been enhanced with the following new classes: - [`Ibexa\Contracts\DiscountsCodes\Value\DiscountCodeUser`](https://doc.ibexa.co/en/latest/api/php_api/php_api_reference/classes/Ibexa-Contracts-DiscountsCodes-Value-DiscountCodeUser.html) - [`Ibexa\Contracts\DiscountsCodes\Value\Query\DiscountCodeUsageQuery`](https://doc.ibexa.co/en/latest/api/php_api/php_api_reference/classes/Ibexa-Contracts-DiscountsCodes-Value-Query-DiscountCodeUsageQuery.html ) -To update to the latest version, see the [update instructions](update_from_4.6.md#lts-updates). +To update to the latest version, see the [update instructions](https://doc.ibexa.co/en/4.6/update_and_migration/from_4.6/update_from_4.6/#lts-updates). [[= release_note_entry_end() =]] @@ -623,7 +623,7 @@ By displaying discounted prices clearly in the catalog or cart, businesses can c ![Discounts for products in the cart](4.6_discounts.png) -For more information, see [Discounts product guide](discounts_guide.md). +For more information, see [Discounts product guide](https://doc.ibexa.co/en/4.6/discounts/discounts_guide/). [[= release_note_entry_end() =]] @@ -632,7 +632,7 @@ For more information, see [Discounts product guide](discounts_guide.md). #### Features AI Actions can now integrate with [Ibexa Connect]([[= connect_doc =]]), giving you an opportunity to build complex data transformation workflows without having to rely on custom code. -To learn more, see the [setup instructions for this integration](configure_ai_actions.md#configure-access-to-ibexa-connect). +To learn more, see the [setup instructions for this integration](https://doc.ibexa.co/en/4.6/ai_actions/install_ai_actions/#configure-access-to-ibexa-connect). [[= release_note_entry_end() =]] @@ -708,9 +708,9 @@ The PHP API has been enhanced with the following new classes: [[= release_note_entry_begin("Date and time attribute " + version, '2025-03-04', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release']) =]] -The Date and time attributes allow you to represent date and time values as part of the product specification in the [Product Information Management](pim_guide.md) system. +The Date and time attributes allow you to represent date and time values as part of the product specification in the [Product Information Management](https://doc.ibexa.co/en/4.6/pim/pim_guide/) system. -For more information, see [Date and time attributes](date_and_time.md). +For more information, see [Date and time attributes](https://doc.ibexa.co/en/4.6/pim/attributes/date_and_time/). [[= release_note_entry_end() =]] @@ -745,19 +745,19 @@ To learn more, see the [corresponding security advisory](https://developers.ibex - New REST API endpoints for [Segments](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#segments) and [Segment Groups](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#segment-groups) - PHP API Client ([`Ibexa\Contracts\Connect\ConnectClientInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-ConnectClientInterface.html)) for [Ibexa Connect]([[= connect_doc =]]) - The following Twig functions now additionally support objects implementing the [`ContentAwareInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) as arguments: - - [`ibexa_content_field_identifier_first_filled_image`](image_twig_functions.md#ibexa_content_field_identifier_first_filled_image) - - [`ibexa_content_name`](content_twig_functions.md#ibexa_content_name) - - [`ibexa_field_is_empty`](field_twig_functions.md#ibexa_field_is_empty) - - [`ibexa_field_description`](field_twig_functions.md#ibexa_field_description) - - [`ibexa_field_name`](field_twig_functions.md#ibexa_field_name) - - [`ibexa_field_value`](field_twig_functions.md#ibexa_field_value) - - [`ibexa_field`](field_twig_functions.md#ibexa_field) - - [`ibexa_has_field`](field_twig_functions.md#ibexa_has_field) - - [`ibexa_render_field`](field_twig_functions.md#ibexa_render_field) - - [`ibexa_seo_is_empty`](content_twig_functions.md#ibexa_seo_is_empty) - - [`ibexa_seo`](content_twig_functions.md#ibexa_seo) - - [`ibexa_taxonomy_entries_for_content`](content_twig_functions.md#ibexa_taxonomy_entries_for_content-filter) -- Added new Twig filter for product attributes grouping: [`ibexa_product_catalog_group_attributes`](product_twig_functions.md#ibexa_product_catalog_group_attributes) + - [`ibexa_content_field_identifier_first_filled_image`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/image_twig_functions/#ibexa_content_field_identifier_first_filled_image) + - [`ibexa_content_name`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/content_twig_functions/#ibexa_content_name) + - [`ibexa_field_is_empty`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/field_twig_functions/#ibexa_field_is_empty) + - [`ibexa_field_description`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/field_twig_functions/#ibexa_field_description) + - [`ibexa_field_name`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/field_twig_functions/#ibexa_field_name) + - [`ibexa_field_value`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/field_twig_functions/#ibexa_field_value) + - [`ibexa_field`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/field_twig_functions/#ibexa_field) + - [`ibexa_has_field`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/field_twig_functions/#ibexa_has_field) + - [`ibexa_render_field`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/field_twig_functions/#ibexa_render_field) + - [`ibexa_seo_is_empty`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/content_twig_functions/#ibexa_seo_is_empty) + - [`ibexa_seo`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/content_twig_functions/#ibexa_seo) + - [`ibexa_taxonomy_entries_for_content`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/content_twig_functions/#ibexa_taxonomy_entries_for_content-filter) +- Added new Twig filter for product attributes grouping: [`ibexa_product_catalog_group_attributes`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/product_twig_functions/#ibexa_product_catalog_group_attributes) #### PHP API @@ -910,7 +910,7 @@ To learn more, see the [corresponding security advisory](https://developers.ibex #### Search -- New search criterion: [IsUserEnabled](isuserenabled_criterion.md) +- New search criterion: [IsUserEnabled](https://doc.ibexa.co/en/4.6/search/criteria_reference/isuserenabled_criterion/) #### PHP API @@ -966,7 +966,7 @@ By default, the AI Actions feature can help users with their work in following s ![AI Assistant](ai_assistant.png) -For more information, see [AI Actions product guide](ai_actions_guide.md). +For more information, see [AI Actions product guide](https://doc.ibexa.co/en/4.6/ai_actions/ai_actions_guide/). [[= release_note_entry_end() =]] @@ -1008,7 +1008,7 @@ The PHP API has been enhanced with the following new classes and interfaces: #### Search -- New search criterion: [`IsBookmarked`](isbookmarked_criterion.md) +- New search criterion: [`IsBookmarked`](https://doc.ibexa.co/en/4.6/search/criteria_reference/isbookmarked_criterion/) #### PHP API @@ -1125,7 +1125,7 @@ To learn more, see the [corresponding security advisory](https://developers.ibex ### Ibexa Engage -[Ibexa Engage](ibexa_engage.md) is a data collection tool you can use to engage your audiences. +[Ibexa Engage](https://doc.ibexa.co/en/4.6/ibexa_engage/ibexa_engage/) is a data collection tool you can use to engage your audiences. #### Full changelog @@ -1634,7 +1634,7 @@ For more information, see [CDP Activation](https://doc.ibexa.co/en/master/cdp/cd The following packages have been introduced in [[= product_name =]] v4.6.0: -- [ibexa/oauth2-server](oauth_server.md) (optional) +- [ibexa/oauth2-server](https://doc.ibexa.co/en/4.6/users/oauth_server/) (optional) - ibexa/site-context - ibexa/activity-log - ibexa/notifications @@ -1830,7 +1830,7 @@ The following view matchers have been introduced in [[= product_name =]] v4.6.0: [[% include 'snippets/release_46.md' %]] -To update your application, see the [update instructions](update_from_4.6.md). +To update your application, see the [update instructions](https://doc.ibexa.co/en/4.6/update_and_migration/from_4.6/update_from_4.6/). [[= release_note_entry_end() =]] diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index ce2d43f6fe..c6a978237f 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -22,7 +22,7 @@ Shopping list is a new feature that allows users to save products into wishlists A authenticated customer has a default "My wishlist" created on first use, and can create custom shopping lists to organize their potential or recurrent purchases. Products can be moved from cart to shopping list, from a shopping list to another shopping list, and copied from a shopping list to the cart. -For more information, see [Shopping list feature guide](shopping_list_guide.md). +For more information, see [Shopping list feature guide](https://doc.ibexa.co/en/5.0/commerce/shopping_list/shopping_list_guide/). [[= release_note_entry_end() =]] @@ -42,24 +42,24 @@ This package replaces the previous `composer ibexa:setup --platformsh` command w The package automatically generates environment variables based on the configuration of relationships and routes in [[= product_name_cloud =]], making it easier to configure services like databases, cache, search engines, and session storage. -For more information, see [Install on Ibexa Cloud](install_on_ibexa_cloud.md) and [Environment variables on Ibexa Cloud](environment_variables.md). +For more information, see [Install on Ibexa Cloud](https://doc.ibexa.co/en/5.0/ibexa_cloud/install_on_ibexa_cloud/) and [Environment variables on Ibexa Cloud](https://doc.ibexa.co/en/5.0/ibexa_cloud/environment_variables/). #### PHP 8.4 support -PHP 8.4 is now [officially supported](requirements.md#php). +PHP 8.4 is now [officially supported](https://doc.ibexa.co/en/5.0/getting_started/requirements/#php). ### Gaussian blur optimization in Image Editor The [Image Editor]([[= user_doc =]]/image_management/edit_images/) now supports configurable gaussian blur strength for image optimization. You can adjust the blur level to balance between file size reduction and image sharpness. -For more information, see [Configure image editor](configure_image_editor.md#gaussian-blur-strength). +For more information, see [Configure image editor](https://doc.ibexa.co/en/5.0/content_management/images/configure_image_editor/#gaussian-blur-strength). ### Query subtree limit configuration A new `query_subtree.limit` configuration option improves performance when working with large content trees by limiting count operations. This prevents performance degradation from database queries when determining if locations have children or calculating subtree sizes. -For more information, see [Subtree operations configuration](back_office_configuration.md#subtree-operations). +For more information, see [Subtree operations configuration](https://doc.ibexa.co/en/5.0/administration/back_office/back_office_configuration/#subtree-operations). ### Developer experience @@ -82,7 +82,7 @@ This allows you to provide additional context or data to your view templates: The parameters are available in your template as regular variables. -For more information, see [`ibexa_render()` Twig function](content_twig_functions.md#ibexa_render). +For more information, see [`ibexa_render()` Twig function](https://doc.ibexa.co/en/5.0/templating/twig_function_reference/content_twig_functions/#ibexa_render). [[= release_note_entry_end() =]] @@ -94,13 +94,13 @@ For more information, see [`ibexa_render()` Twig function](content_twig_function ### Improved HTTP caching for Page Builder and dashboard blocks -You can now indicate which [query parameters](https://en.wikipedia.org/wiki/Query_string) must be used as keys when generating [HTTP cache](http_cache.md) for block requests. +You can now indicate which [query parameters](https://en.wikipedia.org/wiki/Query_string) must be used as keys when generating [HTTP cache](https://doc.ibexa.co/en/5.0/infrastructure_and_maintenance/cache/http_cache/http_cache/) for block requests. -This allows you to improve performance for blocks by utilizing HTTP cache more effectively, for example, for paginated blocks in the [dashboard](customize_dashboard.md). +This allows you to improve performance for blocks by utilizing HTTP cache more effectively, for example, for paginated blocks in the [dashboard](https://doc.ibexa.co/en/5.0/administration/dashboard/customize_dashboard/). -To set it up, use the new `cacheable_query_params` [block setting](page_blocks.md#block-configuration). +To set it up, use the new `cacheable_query_params` [block setting](https://doc.ibexa.co/en/5.0/content_management/pages/page_blocks/#block-configuration). -Then, adjust your [layouts](render_page.md#configure-layout) and pass the parameters to [Symfony's `controller function`]([[= symfony_doc =]]/reference/twig_reference.html#controller) by using the new `ibexa_append_cacheable_query_params` Twig function, as in the example below: +Then, adjust your [layouts](https://doc.ibexa.co/en/5.0/templating/render_content/render_page/#configure-layout) and pass the parameters to [Symfony's `controller function`]([[= symfony_doc =]]/reference/twig_reference.html#controller) by using the new `ibexa_append_cacheable_query_params` Twig function, as in the example below: ``` html+twig {{ render_esi(controller('Ibexa\\Bundle\\FieldTypePage\\Controller\\BlockController::renderAction', @@ -130,7 +130,7 @@ Product variant querying now supports filtering by variant codes and product att You can now use the [`ProductServiceInterface::findVariants()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-ProductServiceInterface.html#method_findVariants) method to search for variants across all products, regardless of their base product. -For more information, see [Product API - Searching variants](product_api.md#searching-for-variants-across-all-products). +For more information, see [Product API - Searching variants](https://doc.ibexa.co/en/5.0/pim/product_api/#searching-for-variants-across-all-products). ### Full changelog @@ -204,13 +204,13 @@ The default help menu can be modified to include links to internal editorial gui ![Integrated help menu](../administration/back_office/img/5_0_integrated_help_menu.png) -For more information, see [Integrated help](integrated_help.md). +For more information, see [Integrated help](https://doc.ibexa.co/en/5.0/administration/back_office/integrated_help/). [[= release_note_entry_end() =]] [[= release_note_entry_begin("Anthropic connector " + version, '2025-12-10', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release']) =]] -This release introduces a new AI connector that allows you to integrate [AI Actions](ai_actions.md) with [Anthropic Claude](https://claude.com/product/overview). +This release introduces a new AI connector that allows you to integrate [AI Actions](https://doc.ibexa.co/en/5.0/ai_actions/ai_actions/) with [Anthropic Claude](https://claude.com/product/overview). For more information, see how to [install Anthropic connector](https://doc.ibexa.co/en/5.0/ai_actions/configure_ai_actions#install-anthropic-connector). @@ -225,7 +225,7 @@ To learn more, see the [corresponding security advisory](https://developers.ibex ### Real-time collaborative editing -Real-time editing is now part of the [Collaborative editing](collaborative_editing.md) feature. +Real-time editing is now part of the [Collaborative editing](https://doc.ibexa.co/en/5.0/content_management/collaborative_editing/collaborative_editing/) feature. By using it, users can edit and review content in real time, making teamwork faster, more efficient, and streamlining the content review process. The system automatically tracks changes, allowing seamless collaboration within a single content item. @@ -246,11 +246,11 @@ This approach reduces manual effort, minimizes errors, and significantly improve ![Taxonomy entries suggested by the AI Assistant](img/taxonomy_suggestions_content.png "Taxonomy entries suggested by the AI Assistant") -For more information, see [Taxonomy suggestions](taxonomy.md#taxonomy-suggestions). +For more information, see [Taxonomy suggestions](https://doc.ibexa.co/en/5.0/content_management/taxonomy/taxonomy/#taxonomy-suggestions). ### Infrastructure -- MariaDB 11.4 is now [officially supported](requirements.md#dbms) +- MariaDB 11.4 is now [officially supported](https://doc.ibexa.co/en/5.0/getting_started/requirements/#dbms) ### Developer experience @@ -374,7 +374,7 @@ The PHP API has been expanded with the following: ### Collaboration -The new [Collaborative editing feature](collaborative_editing_guide.md) allows multiple users to preview, review, and edit the same content, improving teamwork and streamlining the review process. +The new [Collaborative editing feature](https://doc.ibexa.co/en/5.0/content_management/collaborative_editing/collaborative_editing_guide/) allows multiple users to preview, review, and edit the same content, improving teamwork and streamlining the review process. Internal and external users can be invited to a collaboration session, through different sharing options. With Real-time editing, more advanced part of the feature, users can see each other’s changes in the real time, or work on the content asynchronously. @@ -412,7 +412,7 @@ The following packages have been introduced in Ibexa DXP v5.0.2: #### New version of PHP Storm Plugin -To further improve your experience with Ibexa DXP, a 1.14.0 version of [PHP Storm Plugin](phpstorm_plugin.md) has been released, which brings the following changes: +To further improve your experience with Ibexa DXP, a 1.14.0 version of [PHP Storm Plugin](https://doc.ibexa.co/en/5.0/resources/phpstorm_plugin/) has been released, which brings the following changes: - Added support for Ibexa DXP v5.0 - Added compatibility with PhpStorm 2024.3.6+ @@ -509,16 +509,16 @@ The PHP API has been expanded with the following: ### Special characters in online editor -The [online editor](online_editor_guide.md) now allows to easily enter special characters like currency symbols. +The [online editor](https://doc.ibexa.co/en/5.0/content_management/rich_text/online_editor_guide/) now allows to easily enter special characters like currency symbols. It uses the [special characters plugin](https://ckeditor.com/docs/ckeditor5/latest/features/special-characters.html). ![Special characters in online editor](4.6_special_characters.png "Special characters in online editor") ### Support for Solr 9 -With this release, [[= product_name =]] starts supporting [Solr 9](requirements.md#search). +With this release, [[= product_name =]] starts supporting [Solr 9](https://doc.ibexa.co/en/5.0/getting_started/requirements/#search). -Solr 9 comes with support for [Dense Vector Search](https://solr.apache.org/guide/solr/latest/query-guide/dense-vector-search.html), paving the way for incoming improvements to the [AI Actions](ai_actions.md) feature. +Solr 9 comes with support for [Dense Vector Search](https://solr.apache.org/guide/solr/latest/query-guide/dense-vector-search.html), paving the way for incoming improvements to the [AI Actions](https://doc.ibexa.co/en/5.0/ai_actions/ai_actions/) feature. ### Improved content creation interface @@ -528,9 +528,9 @@ The editing interface of the back office is now improved to better highlight the ### Taxonomy Subtree limitation -You can now manage access to [taxonomy items](taxonomy.md) more effectively by using the new [Taxonomy Subtree limitation](limitation_reference.md#taxonomy-subtree-limitation). +You can now manage access to [taxonomy items](https://doc.ibexa.co/en/5.0/content_management/taxonomy/taxonomy/) more effectively by using the new [Taxonomy Subtree limitation](https://doc.ibexa.co/en/5.0/permissions/limitation_reference/#taxonomy-subtree-limitation). -In addition, you can now use the [Taxonomy limitation](limitation_reference.md#taxonomy-limitation) together with the `taxonomy/assign` policy. +In addition, you can now use the [Taxonomy limitation](https://doc.ibexa.co/en/5.0/permissions/limitation_reference/#taxonomy-limitation) together with the `taxonomy/assign` policy. ### Base price column added to a Product Picker view @@ -572,7 +572,7 @@ By default, the AI Actions feature can help users with their work in following s AI Actions integrate with [Ibexa Connect]([[= connect_doc =]]), giving you an opportunity to build complex data transformation workflows without having to rely on custom code. -For more information, see [AI Actions product guide](ai_actions_guide.md). +For more information, see [AI Actions product guide](https://doc.ibexa.co/en/5.0/ai_actions/ai_actions_guide/). #### Discounts [[% include 'snippets/commerce_badge.md' %]] @@ -584,17 +584,17 @@ By displaying discounted prices clearly in the catalog or cart, businesses can c ![Discounts for products in the cart](4.6_discounts.png) -For more information, see [Discounts product guide](discounts_guide.md). +For more information, see [Discounts product guide](https://doc.ibexa.co/en/5.0/discounts/discounts_guide/). #### Date and time attribute -The Date and time attributes allow you to represent date and time values as part of the product specification in the [Product Information Management](pim_guide.md) system. +The Date and time attributes allow you to represent date and time values as part of the product specification in the [Product Information Management](https://doc.ibexa.co/en/5.0/pim/pim_guide/) system. -For more information, see [Date and time attributes](date_and_time.md). +For more information, see [Date and time attributes](https://doc.ibexa.co/en/5.0/pim/attributes/date_and_time/). #### Symbol attribute -The Symbol attributes allow you to efficiently represent the string-based data as part of the product specification in the [Product Information Management](pim_guide.md) system. +The Symbol attributes allow you to efficiently represent the string-based data as part of the product specification in the [Product Information Management](https://doc.ibexa.co/en/5.0/pim/pim_guide/) system. For more information, see [Symbol attributes](https://doc.ibexa.co/en/5.0/pim/attributes/symbol_attribute_type/). @@ -611,7 +611,7 @@ For more information, see [Collaboration PHP API](https://doc.ibexa.co/en/5.0/ap With improved compatibility, performance and increased security, as well as better developer experience in mind, [[= product_name_base =]] decided to introduce several significant tech stack upgrades. -For a full list of updated system requirements, see [Requirements](../getting_started/requirements.md). +For a full list of updated system requirements, see [Requirements](https://doc.ibexa.co/en/5.0/getting_started/requirements/). #### Symfony 7.3 @@ -884,20 +884,20 @@ This release brings other minor upgrades intended to improve the developer's exp - To improve code clarity, reliability, and error detection, type hint declarations that specify the expected data type have been added in multiple places throughout the product - In anticipation of [changes coming with PHP 8.4](https://php.watch/versions/8.4/implicitly-marking-parameter-type-nullable-deprecated), implicit nullable type declarations have been replaced with nullable type declarations throughout the product code. It is recommended that you update your custom code in the same way -- Developer experience has improved with capabilities offered by PHP in version 8.3. For example, the `AsTwigComponent` attribute [facilitates autoconfiguration](components.md#php-code) of Twig components +- Developer experience has improved with capabilities offered by PHP in version 8.3. For example, the `AsTwigComponent` attribute [facilitates autoconfiguration](https://doc.ibexa.co/en/5.0/templating/components/#php-code) of Twig components - With protection against breaking changes and easier refactoring in mind, [TypeScript](https://www.typescriptlang.org/) can now be used to extend the Back Office - [[[= product_name_base =]] Rector package](https://github.com/ibexa/rector) has been introduced that is based on [Rector](https://github.com/rectorphp) and comes with additional rules for working with Ibexa code. You can use it to get rid of PHP code deprecations - [New icons](https://doc.ibexa.co/en/5.0/templating/twig_function_reference/icon_twig_functions#icons-reference) replace the ones found in previous versions and serve as a highlight of a future system design ### Deprecations -Refer to [Ibexa DXP v5.0 renames, deprecations and removals](ibexa_dxp_v5.0_deprecations.md) for a full list of changes and how they influence your project. +Refer to [Ibexa DXP v5.0 renames, deprecations and removals](https://doc.ibexa.co/en/5.0/release_notes/ibexa_dxp_v5.0_deprecations/) for a full list of changes and how they influence your project. ### Full changelog [[% include 'snippets/release_50.md' %]] -To update your application, see the [update instructions](../update_and_migration/from_4.6/update_to_5.0.md). +To update your application, see the [update instructions](https://doc.ibexa.co/en/5.0/update_and_migration/from_4.6/update_to_5.0/). [[= release_note_entry_end() =]] From d8d8474cbdbd0a6618d3dfeaad814c37a41c771b Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Tue, 3 Mar 2026 23:32:14 +0100 Subject: [PATCH 23/36] mkdocs.yml: Inc. latest_tag_* --- mkdocs.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 5acb5e5573..b34d2cb2df 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -990,8 +990,8 @@ extra: latest_tag_4_3: '4.3.5' latest_tag_4_4: '4.4.4' latest_tag_4_5: '4.5.7' - latest_tag_4_6: '4.6.27' - latest_tag_5_0: '5.0.5' + latest_tag_4_6: '4.6.28' + latest_tag_5_0: '5.0.6' symfony_doc: 'https://symfony.com/doc/5.x' user_doc: 'https://doc.ibexa.co/projects/userguide/en/4.6' From be394841af96de9fe3f80a0798ed74b93ad0b126 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 5 Mar 2026 09:24:17 +0100 Subject: [PATCH 24/36] update_from_*.*.md: update db schema --- .../from_4.6/update_from_4.6.md | 19 ++++++++++++++++++- .../from_5.0/update_from_5.0.md | 19 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/docs/update_and_migration/from_4.6/update_from_4.6.md b/docs/update_and_migration/from_4.6/update_from_4.6.md index df4afad4f4..3cd81e250d 100644 --- a/docs/update_and_migration/from_4.6/update_from_4.6.md +++ b/docs/update_and_migration/from_4.6/update_from_4.6.md @@ -579,7 +579,24 @@ With the product updated to the latest version, you can now finish the update pr ## v4.6.28 -No additional steps needed. +### Database update [[% include 'snippets/experience_badge.md' %]] [[% include 'snippets/commerce_badge.md' %]] + +Run the provided SQL upgrade script to adapt your database to latest change in [form builder](form_builder_guide.md)'s `max_length` validator behavior: + +=== "MySQL" + + ``` sql + mysql -u -p < vendor/ibexa/installer/upgrade/db/mysql/ibexa-4.6.27-to-4.6.28.sql + ``` + +=== "PostgreSQL" + + ``` sql + psql < vendor/ibexa/installer/upgrade/db/postgresql/ibexa-4.6.27-to-4.6.28.sql + ``` + +Prior, `0` was interpreted as "no length limit". +Now, `0` is interpreted as "length limited to zero characters" and `NULL` as "no length limit". ## LTS Updates diff --git a/docs/update_and_migration/from_5.0/update_from_5.0.md b/docs/update_and_migration/from_5.0/update_from_5.0.md index 7c6da4ef11..9eb703a30b 100644 --- a/docs/update_and_migration/from_5.0/update_from_5.0.md +++ b/docs/update_and_migration/from_5.0/update_from_5.0.md @@ -287,6 +287,25 @@ No additional steps needed. ## v5.0.6 +### Database update [[% include 'snippets/experience_badge.md' %]] [[% include 'snippets/commerce_badge.md' %]] + +Run the provided SQL upgrade script to adapt your database to latest change in [form builder](form_builder_guide.md)'s `max_length` validator behavior: + +=== "MySQL" + + ``` sql + mysql -u -p < vendor/ibexa/installer/upgrade/db/mysql/ibexa-5.0.5-to-5.0.6.sql + ``` + +=== "PostgreSQL" + + ``` sql + psql < vendor/ibexa/installer/upgrade/db/postgresql/ibexa-5.0.5-to-5.0.6.sql + ``` + +Prior, `0` was interpreted as "no length limit". +Now, `0` is interpreted as "length limited to zero characters" and `NULL` as "no length limit". + ### [[= product_name_cloud =]] configuration update If you're using [[= product_name_cloud =]], you must install a new package and update your cloud configuration. From 60ab5c0e8d09e51b420188448d583d1577de2778 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 5 Mar 2026 11:08:13 +0100 Subject: [PATCH 25/36] new_in_doc.md: 4.6.27 released on 3 Feb --- docs/resources/new_in_doc.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/resources/new_in_doc.md b/docs/resources/new_in_doc.md index 8dc7cf5e2e..40bfeffaea 100644 --- a/docs/resources/new_in_doc.md +++ b/docs/resources/new_in_doc.md @@ -12,6 +12,7 @@ This page contains recent highlights and notable changes in [[= product_name =]] ### Releases - [v5.0.5 release notes](https://doc.ibexa.co/en/5.0/release_notes/ibexa_dxp_v5.0/#ibexa-dxp-v505) +- [v4.6.27 release notes](https://doc.ibexa.co/en/4.6/release_notes/ibexa_dxp_v4.6/#ibexa-dxp-v4627) ### Getting started From bdc0964a7263e4d4ec83e079278081d2df88a248 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 5 Mar 2026 11:15:30 +0100 Subject: [PATCH 26/36] Revert "Merge remote-tracking branch 'origin/image-editor-blur' into v4.6.28" This reverts commit 22eb0f85e69985b4951325e5286ff617a834fa16, reversing changes made to 50d0c5fbbba7e02338eee7db8db704fb53e95179. Conflicts: docs/release_notes/ibexa_dxp_v4.6.md docs/release_notes/ibexa_dxp_v5.0.md --- .../config/packages/image_editor.yaml | 1 - .../images/configure_image_editor.md | 15 +-------------- docs/release_notes/ibexa_dxp_v4.6.md | 6 ------ docs/release_notes/ibexa_dxp_v5.0.md | 6 ------ 4 files changed, 1 insertion(+), 27 deletions(-) diff --git a/code_samples/back_office/image_editor/config/packages/image_editor.yaml b/code_samples/back_office/image_editor/config/packages/image_editor.yaml index 799d1db50d..07b5dbc8d4 100644 --- a/code_samples/back_office/image_editor/config/packages/image_editor.yaml +++ b/code_samples/back_office/image_editor/config/packages/image_editor.yaml @@ -38,4 +38,3 @@ ibexa: id: dot priority: 50 image_quality: 0.8 - gaussian_blur_strength: 0.05 diff --git a/docs/content_management/images/configure_image_editor.md b/docs/content_management/images/configure_image_editor.md index 05cb43445e..10f362c1f3 100644 --- a/docs/content_management/images/configure_image_editor.md +++ b/docs/content_management/images/configure_image_editor.md @@ -33,9 +33,7 @@ The following example sets the aspect ratio values and label names for buttons u [[= include_file('code_samples/back_office/image_editor/config/packages/image_editor.yaml', 0, 36) =]] ``` -### Image file size optimization - -#### Image quality +### Image quality You can configure the quality of the images modified in the Image Editor with the following configuration. @@ -46,17 +44,6 @@ The default quality is 0.92: [[= include_file('code_samples/back_office/image_editor/config/packages/image_editor.yaml', 0, 4) =]] [[= include_file('code_samples/back_office/image_editor/config/packages/image_editor.yaml', 39, 40) =]] ``` -#### Gaussian blur strength - -You can configure the gaussian blur strength applied during image optimization with the following configuration. - -``` yaml -[[= include_file('code_samples/back_office/image_editor/config/packages/image_editor.yaml', 0, 4) =]] [[= include_file('code_samples/back_office/image_editor/config/packages/image_editor.yaml', 40, 41) =]] -``` - -The setting accepts float values between 0 and 10.0, where higher values increase blur and reduce file size, while lower values maintain sharpness. -The default value is 0.05. - ### Additional information Each image can be accompanied by additional information that isn't visible to the user. diff --git a/docs/release_notes/ibexa_dxp_v4.6.md b/docs/release_notes/ibexa_dxp_v4.6.md index b6b3607881..7f51417d47 100644 --- a/docs/release_notes/ibexa_dxp_v4.6.md +++ b/docs/release_notes/ibexa_dxp_v4.6.md @@ -24,12 +24,6 @@ month_change: true PHP 8.4 is now [officially supported](https://doc.ibexa.co/en/4.6/getting_started/requirements/#php). -### Gaussian blur optimization in Image Editor - -The [Image Editor]([[= user_doc =]]/image_management/edit_images/) now supports configurable gaussian blur strength for image optimization. -You can adjust the blur level to balance between file size reduction and image sharpness. -For more information, see [Configure image editor](https://doc.ibexa.co/en/4.6/content_management/images/configure_image_editor/#gaussian-blur-strength). - ### Developer experience #### Custom parameters in `ibexa_render()` diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index c6a978237f..f4a8f73120 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -48,12 +48,6 @@ For more information, see [Install on Ibexa Cloud](https://doc.ibexa.co/en/5.0/i PHP 8.4 is now [officially supported](https://doc.ibexa.co/en/5.0/getting_started/requirements/#php). -### Gaussian blur optimization in Image Editor - -The [Image Editor]([[= user_doc =]]/image_management/edit_images/) now supports configurable gaussian blur strength for image optimization. -You can adjust the blur level to balance between file size reduction and image sharpness. -For more information, see [Configure image editor](https://doc.ibexa.co/en/5.0/content_management/images/configure_image_editor/#gaussian-blur-strength). - ### Query subtree limit configuration A new `query_subtree.limit` configuration option improves performance when working with large content trees by limiting count operations. From 5e16a4af7d07e4c72db607143644561ab07dc880 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 5 Mar 2026 11:47:23 +0100 Subject: [PATCH 27/36] ibexa_dxp_v5.0.md: Apply 0c47ea7f330988651e87266ab12957fca84f066d --- docs/release_notes/ibexa_dxp_v5.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index f4a8f73120..72c58cd549 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -19,7 +19,7 @@ month_change: true ) =]] Shopping list is a new feature that allows users to save products into wishlists. -A authenticated customer has a default "My wishlist" created on first use, and can create custom shopping lists to organize their potential or recurrent purchases. +An authenticated customer has a default "My wishlist", and can create custom shopping lists to organize their potential or recurrent purchases. Products can be moved from cart to shopping list, from a shopping list to another shopping list, and copied from a shopping list to the cart. For more information, see [Shopping list feature guide](https://doc.ibexa.co/en/5.0/commerce/shopping_list/shopping_list_guide/). From 9d9f9d3cd357794dc0b752eb43b24d8a29dcb32d Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 5 Mar 2026 11:58:04 +0100 Subject: [PATCH 28/36] new_in_doc.md: Feb 2026 --- docs/resources/new_in_doc.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/resources/new_in_doc.md b/docs/resources/new_in_doc.md index 40bfeffaea..a0a0a721d3 100644 --- a/docs/resources/new_in_doc.md +++ b/docs/resources/new_in_doc.md @@ -7,6 +7,31 @@ month_change: true This page contains recent highlights and notable changes in [[= product_name =]] documentation. +## February 2026 + +### Releases + +- [v5.0.6 release notes](https://doc.ibexa.co/en/5.0/release_notes/ibexa_dxp_v5.0/#ibexa-dxp-v506) +- [v4.6.28 release notes](https://doc.ibexa.co/en/4.6/release_notes/ibexa_dxp_v4.6/#ibexa-dxp-v4628) + +### CDP + +- Illustrated how to [export additional user data](cdp_data_customization.md#export-additional-user-data) +- Detailed [Ibexa Messenger support for large batches of data](cdp_data_export.md#ibexa-messenger-support-for-large-batches-of-data) +- Introduced the [CDP Monolog channel](cdp_data_export.md#cdp-monolog-channel) +- Added [`Ibexa\Contracts\Cdp` PHP API reference](/api/php_api/php_api_reference/namespaces/ibexa-contracts-cdp.html) + +### Infrastructure + +#### [[= product_name_cloud =]] + +- Added documentation describing [how to use the new `ibexa/cloud` package](install_on_ibexa_cloud.md) and the [environment variables it provides](environment_variables.md) + +#### DFS configuration + +- Updated [DFS](clustering.md#configuring-the-dfs-io-handler) and [Solr](install_solr.md#configure-the-bundle) configuration examples to use environment variables directly with [Environment Variable Processors]([[= symfony_doc =]]/configuration/env_var_processors.html) syntax instead of intermediate parameters. +This promotes skipping the rebuild of the Symfony container when environment variable values change. + ## January 2026 ### Releases From b5dd5ab64a5aa1fc0b86d561ea71020c778fb3df Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 5 Mar 2026 12:00:40 +0100 Subject: [PATCH 29/36] Revert "Merge remote-tracking branch 'origin/ibexa_render_parameters' into v4.6.28" This reverts commit 3fa46ad2b3a3452bf3e19832c3a3835eb6b8fc5d, reversing changes made to ff8318dc85169ff3c08a7dd11067c050c0134011. Conflicts: docs/release_notes/ibexa_dxp_v4.6.md docs/release_notes/ibexa_dxp_v5.0.md --- docs/release_notes/ibexa_dxp_v4.6.md | 23 -------------- docs/release_notes/ibexa_dxp_v5.0.md | 31 ------------------- .../content_twig_functions.md | 8 ----- 3 files changed, 62 deletions(-) diff --git a/docs/release_notes/ibexa_dxp_v4.6.md b/docs/release_notes/ibexa_dxp_v4.6.md index 7f51417d47..3ab677b5bf 100644 --- a/docs/release_notes/ibexa_dxp_v4.6.md +++ b/docs/release_notes/ibexa_dxp_v4.6.md @@ -24,29 +24,6 @@ month_change: true PHP 8.4 is now [officially supported](https://doc.ibexa.co/en/4.6/getting_started/requirements/#php). -### Developer experience - -#### Custom parameters in `ibexa_render()` - -You can now pass custom parameters to templates when using the `ibexa_render()` Twig function with the new `params` option, similar to how you can with `render(controller())`.Collapse annotationCheck notice on line R18[vale] docs/release_notes/ibexa_dxp_v4.6.md#L18Check notice: [vale] docs/release_notes/ibexa_dxp_v4.6.md#L18[Ibexa.ByUsing] Prefer 'by using' or 'with' to plain 'using'.Build & test documentation / valeView details - -This allows you to provide additional context or data to your view templates: - -``` html+twig -{{ ibexa_render(content, { - 'viewType': 'line', - 'method': 'inline', - 'params': { - 'custom_param': 'custom_value', - 'another_param': 'another_value' - } -}) }} -``` - -The parameters are available in your template as regular variables. - -For more information, see [`ibexa_render()` Twig function](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/content_twig_functions/#ibexa_render). - ### Full changelog [[% include 'snippets/release_46.md' %]] diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index 72c58cd549..d5b978d24e 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -55,37 +55,6 @@ This prevents performance degradation from database queries when determining if For more information, see [Subtree operations configuration](https://doc.ibexa.co/en/5.0/administration/back_office/back_office_configuration/#subtree-operations). -### Developer experience - -#### Custom parameters in `ibexa_render()` - -You can now pass custom parameters to templates when using the `ibexa_render()` Twig function with the new `params` option, similar to how you can with `render(controller())`.Collapse annotationCheck notice on line R18[vale] docs/release_notes/ibexa_dxp_v4.6.md#L18Check notice: [vale] docs/release_notes/ibexa_dxp_v4.6.md#L18[Ibexa.ByUsing] Prefer 'by using' or 'with' to plain 'using'.Build & test documentation / valeView details - -This allows you to provide additional context or data to your view templates: - -``` html+twig -{{ ibexa_render(content, { - 'viewType': 'line', - 'method': 'inline', - 'params': { - 'custom_param': 'custom_value', - 'another_param': 'another_value' - } -}) }} -``` - -The parameters are available in your template as regular variables. - -For more information, see [`ibexa_render()` Twig function](https://doc.ibexa.co/en/5.0/templating/twig_function_reference/content_twig_functions/#ibexa_render). - -[[= release_note_entry_end() =]] - -[[= release_note_entry_begin( - "Ibexa DXP " + version, - 'YYYY-MM-DD', - ['Experience', 'Commerce'] -) =]] - ### Improved HTTP caching for Page Builder and dashboard blocks You can now indicate which [query parameters](https://en.wikipedia.org/wiki/Query_string) must be used as keys when generating [HTTP cache](https://doc.ibexa.co/en/5.0/infrastructure_and_maintenance/cache/http_cache/http_cache/) for block requests. diff --git a/docs/templating/twig_function_reference/content_twig_functions.md b/docs/templating/twig_function_reference/content_twig_functions.md index c1e9b125be..21e8339156 100644 --- a/docs/templating/twig_function_reference/content_twig_functions.md +++ b/docs/templating/twig_function_reference/content_twig_functions.md @@ -32,7 +32,6 @@ You can provide `ibexa_render()` with either a content item or a Location object |`content` or `location`|[`Content`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Content.html), [`ContentAwareInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) or [`Location`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Location.html)|Content item or its location.| |`method`|`string`|(optional) [Rendering method](#rendering-methods). One of: `direct`, `inline`, `esi`, `ssi`. (Default method is `direct`)| |`viewType`|`string`|(optional) [View type](template_configuration.md#view-types). (Default view type is `embed`)| -|`params`|`array`|(optional) Hash of variables to pass to the template.| #### Rendering methods @@ -49,13 +48,6 @@ You can pass one of the following rendering methods to `ibexa_render()`: {{ ibexa_render(content, {'viewType': 'line'}) }} {{ ibexa_render(content, {'method': 'inline'}) }} - -{{ ibexa_render(content, { - 'viewType': 'line', - 'params': { - 'custom_param': 'custom_value' - } -}) }} ``` ## Content information From 84398ed9aa9319c0fbc3cde2721c51561fa11f9a Mon Sep 17 00:00:00 2001 From: "ibexa-workflow-automation-1[bot]" Date: Thu, 5 Mar 2026 12:50:51 +0000 Subject: [PATCH 30/36] PHP API Ref HTML --- .../classes/Ibexa-Contracts-Core-Ibexa.html | 2 +- ...ng-EmbeddingProviderResolverInterface.html | 83 ++ ...r-Event-ConfigureImageOptimizersEvent.html | 722 ++++++++++++++++++ ...og-Values-Product-ProductVariantQuery.html | 8 +- docs/api/php_api/php_api_reference/index.html | 39 +- .../php_api_reference/js/searchIndex.js | 46 +- .../ibexa-contracts-imageeditor-event.html | 278 +++++++ .../ibexa-contracts-imageeditor.html | 8 + .../php_api_reference/reports/deprecated.html | 39 +- .../php_api_reference/reports/errors.html | 39 +- .../php_api_reference/reports/markers.html | 39 +- 11 files changed, 1287 insertions(+), 16 deletions(-) create mode 100644 docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ImageEditor-Event-ConfigureImageOptimizersEvent.html create mode 100644 docs/api/php_api/php_api_reference/namespaces/ibexa-contracts-imageeditor-event.html diff --git a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Ibexa.html b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Ibexa.html index 2121c177ff..f999842537 100644 --- a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Ibexa.html +++ b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Ibexa.html @@ -280,7 +280,7 @@

-
public mixed VERSION = '4.6.27'
+
public mixed VERSION = '4.6.28'
diff --git a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Search-Embedding-EmbeddingProviderResolverInterface.html b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Search-Embedding-EmbeddingProviderResolverInterface.html index 2c64469089..864288f369 100644 --- a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Search-Embedding-EmbeddingProviderResolverInterface.html +++ b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Search-Embedding-EmbeddingProviderResolverInterface.html @@ -304,6 +304,84 @@

Tags +
+
+
+ Throws +
+
+ EmbeddingResolverNotFoundException + +
+
+ +
+

+ publicresolveByModelIdentifier() + +

+
+ EmbeddingProviderResolverInterface.php + : + 21 + +
+
+ +
+ + + + + + + +
+
+
+
+
+
+
public resolveByModelIdentifier(string $modelIdentifier) : EmbeddingProviderInterface
+
+
+
+
+
+

Parameters

+ + + + + + + + + + + + + + + + + +
NameTypeDefault valueDescription
+ $modelIdentifier + + string + + - + + - +
+

Return values

+

EmbeddingProviderInterface

+ +
+ Tags + +
@@ -339,6 +417,11 @@
resolve() + +
  • + + resolveByModelIdentifier() +
  • diff --git a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ImageEditor-Event-ConfigureImageOptimizersEvent.html b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ImageEditor-Event-ConfigureImageOptimizersEvent.html new file mode 100644 index 0000000000..1a0d0a33ed --- /dev/null +++ b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ImageEditor-Event-ConfigureImageOptimizersEvent.html @@ -0,0 +1,722 @@ + + + + + ConfigureImageOptimizersEvent | PHP API Reference (Ibexa Documentation) + + + + + + + + + + + + + + + + +
    Copied!
    + + + +
    + +
    + +
    +
    +
    + + + + + + + + +
    +
    +
    + + + +
    +
    + + +
    +

    + ConfigureImageOptimizersEvent

    + +
    + ConfigureImageOptimizersEvent.php + : + 14 + +
    +
    Final
    + +
    + Extends Event +
    + + +
    +

    Event is the base class for classes containing event data.

    + + +
    +

    This class contains no event data. It is used by events that do not pass +state information to an event handler when an event is raised.

    +

    You can call the method stopPropagation() to abort the execution of +further listeners in your event listener.

    + +
    + + + + + + + + + + + + + + +

    + Methods +

    + +
    +

    + public__construct() + +

    +
    + ConfigureImageOptimizersEvent.php + : + 22 + +
    +
    + +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    public __construct(array<string|int, Optimizer$optimizers)
    +
    +
    +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + +
    NameTypeDefault valueDescription
    + $optimizers + + array<string|int, Optimizer> + + - + + - +
    + + +
    +

    + publicaddOptimizer() + +

    +
    + ConfigureImageOptimizersEvent.php + : + 43 + +
    +
    + +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    public addOptimizer(Optimizer $optimizer) : void
    +
    +
    +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + +
    NameTypeDefault valueDescription
    + $optimizer + + Optimizer + + - + + - +
    + + +
    +

    + publicgetOptimizers() + +

    +
    + ConfigureImageOptimizersEvent.php + : + 30 + +
    +
    + +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    public getOptimizers() : array<string|int, Optimizer>
    +
    +
    +
    +
    +
    +

    Return values

    +

    array<string|int, Optimizer>

    + + +
    +

    + publicisPropagationStopped() + +

    +
    + Event.php + : + 38 + +
    +
    + +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    public isPropagationStopped() : bool
    +
    +
    +
    +
    +
    +

    Return values

    +

    bool

    + + +
    +

    + publicremoveOptimizer() + +

    +
    + ConfigureImageOptimizersEvent.php + : + 51 + +
    +
    + +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    public removeOptimizer(Optimizer> $optimizerClass) : void
    +
    +
    +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + +
    NameTypeDefault valueDescription
    + $optimizerClass + + Optimizer> + + - + + - +
    + + +
    +

    + publicsetOptimizers() + +

    +
    + ConfigureImageOptimizersEvent.php + : + 38 + +
    +
    + +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    public setOptimizers(array<string|int, Optimizer$optimizers) : void
    +
    +
    +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + +
    NameTypeDefault valueDescription
    + $optimizers + + array<string|int, Optimizer> + + - + + - +
    + + +
    +

    + publicstopPropagation() + +

    +
    + Event.php + : + 50 + +
    +
    +

    Stops the propagation of the event to further event listeners.

    + +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    public stopPropagation() : void
    +
    +
    +
    +
    +
    +
    +

    If multiple event listeners are connected to the same event, no +further event listener will be triggered once any trigger calls +stopPropagation().

    + +
    + + +
    +
    +
    + + +
    +
    +
    + + + + + + + + + + + diff --git a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-ProductVariantQuery.html b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-ProductVariantQuery.html index 8f3196a2a6..fca3209a69 100644 --- a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-ProductVariantQuery.html +++ b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-ProductVariantQuery.html @@ -402,7 +402,7 @@

    -
    public getAttributesCriterion() : ProductCriterionAdapter<string|int, CriterionInterface>|null
    +
    public getAttributesCriterion() : ProductCriterionAdapter|null
    @@ -412,7 +412,7 @@

    Return values

    -

    ProductCriterionAdapter<string|int, CriterionInterface>|null

    +

    ProductCriterionAdapter|null

    @@ -550,7 +550,7 @@

    -
    public setAttributesCriterion(ProductCriterionAdapter<string|int, CriterionInterface>|null $criterion) : void
    +
    public setAttributesCriterion(ProductCriterionAdapter|null $criterion) : void
    @@ -575,7 +575,7 @@

    Parameters

    $criterion - ProductCriterionAdapter<string|int, CriterionInterface>|null + ProductCriterionAdapter|null - diff --git a/docs/api/php_api/php_api_reference/index.html b/docs/api/php_api/php_api_reference/index.html index 4587823f13..d3106f33b3 100644 --- a/docs/api/php_api/php_api_reference/index.html +++ b/docs/api/php_api/php_api_reference/index.html @@ -29030,6 +29030,41 @@
  • + +
  • + + +
  • + +