Skip to content
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 112 additions & 0 deletions docs/release_notes/ibexa_dxp_v4.6.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,118 @@

<div class="release-notes" markdown="1">

[[% set version = 'v4.6.24' %]]

[[= release_note_entry_begin("Collaboration ", '2025-09-09', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature']) =]]

#### Collaboration

The new [Collaborative editing](collaborative_editing_guide.md) LTS Update allows multiple users to preview, review, and edit the same content, improving teamwork and streamlining the review process.

Check warning on line 19 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L19

[Ibexa.OxfordComma] Use a comma before the last 'and' or 'or' in a list of four or more items.
Raw output
{"message": "[Ibexa.OxfordComma] Use a comma before the last 'and' or 'or' in a list of four or more items.", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 19, "column": 64}}}, "severity": "WARNING"}
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.

Additionally, shared drafts can be accessed and managed through new dashboard tabs: **My shared drafts** and **Drafts shared with me**, helping users stay organized.

Check warning on line 24 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L24

[Ibexa.EOLWhitespace] Remove whitespace characters from the end of the line.
Raw output
{"message": "[Ibexa.EOLWhitespace] Remove whitespace characters from the end of the line.", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 24, "column": 166}}}, "severity": "WARNING"}

[[= release_note_entry_end() =]]

[[= release_note_entry_begin("AI Actions " + version, '2025-09-09', ['LTS Update']) =]]

#### Chat GPT 5.0 support

With improved reasoning and greater accuracy in mind, the AI Connector package has been enhanced by adding ChatGPT 5.0 to its list of supported LLMs.

![ChatGPT 5.0 on a list of supported LLMs](502_ai_connector_gpt_50.png "ChatGPT 5.0 on a list of supported LLMs")

[[= release_note_entry_end() =]]

[[= release_note_entry_begin("Discounts " + version, '2025-09-09', ['LTS Update', 'Commerce']) =]]

#### Discount indexing

Discounts now allow scheduling a re-indexing of discounted product catalog prices at the most convenient time by using the Ibexa Messenger package.

Check failure on line 42 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L42

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 42, "column": 124}}}, "severity": "ERROR"}
Ibexa Messenger is a customization of the Symfony Messenger package, created to adjust it to [[= product_name =]]'s needs.

Check failure on line 43 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L43

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 43, "column": 1}}}, "severity": "ERROR"}

Once properly configured, it uses a background queue to trigger price re-indexing, ensuring efficient use of system resources without causing performance disruptions.

##### PHP API

The following additions were made to the Discounts PHP API:

??? note "Events"
- [`Ibexa\Contracts\AdminUi\Event\ResolveVersionPreviewUrlEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Event-ResolveVersionPreviewUrlEvent.html)

Check failure on line 52 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L52

[Ibexa.DomainTerms] Use 'back office' instead of 'AdminUi'
Raw output
{"message": "[Ibexa.DomainTerms] Use 'back office' instead of 'AdminUi'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 52, "column": 25}}}, "severity": "ERROR"}

Check failure on line 52 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L52

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 52, "column": 110}}}, "severity": "ERROR"}
- [`Ibexa\Contracts\Discounts\Event\EnableDiscountEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-EnableDiscountEvent.html)

Check failure on line 53 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L53

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 53, "column": 102}}}, "severity": "ERROR"}
- [`Ibexa\Contracts\Discounts\Event\BeforeDisableDiscountEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-BeforeDisableDiscountEvent.html)

Check failure on line 54 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L54

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 54, "column": 109}}}, "severity": "ERROR"}
- [`Ibexa\Contracts\Discounts\Event\BeforeEnableDiscountEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-BeforeEnableDiscountEvent.html)
- [`Ibexa\Contracts\Discounts\Event\DisableDiscountEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-DisableDiscountEvent.html)

??? note "Search criteria"

Check failure on line 58 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L58

[Ibexa.DomainTermCapitalization] Use 'Search Criteria' instead of 'Search criteria'
Raw output
{"message": "[Ibexa.DomainTermCapitalization] Use 'Search Criteria' instead of 'Search criteria'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 58, "column": 11}}}, "severity": "ERROR"}
- [`Ibexa\Contracts\Discounts\Value\Query\Criterion\IndexedAtCriterion`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-IndexedAtCriterion.html)

Check failure on line 59 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L59

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 59, "column": 117}}}, "severity": "ERROR"}
- [`Ibexa\Contracts\Discounts\Value\Query\Criterion\UpdatedAtCriterion`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-UpdatedAtCriterion.html)

[[= release_note_entry_end() =]]

[[= release_note_entry_begin("Ibexa DXP " + version, '2025-09-09', ['Headless', 'Experience', 'Commerce', 'New feature']) =]]

#### Improvements to notifications

An improved notifications system is now more intuitive.
Developers can now create and configure their own notification types, while users can now browse through a list of notifications, where they can either act on them or dismiss them.

Check warning on line 69 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L69

[Ibexa.OxfordComma] Use a comma before the last 'and' or 'or' in a list of four or more items.
Raw output
{"message": "[Ibexa.OxfordComma] Use a comma before the last 'and' or 'or' in a list of four or more items.", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 69, "column": 1}}}, "severity": "WARNING"}

![A searchable notifications list](502_notifications_screen.png "A searchable notifications list")

#### Developer experience

##### New packages

The only package that has been introduced in [[= product_name =]] v4.6.24 is ibexa/messenger.

Check failure on line 77 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L77

[Ibexa.VariablesVersion] Use global variable '[[= latest_tag_4_6 =]]' instead of 'v4.6.24'
Raw output
{"message": "[Ibexa.VariablesVersion] Use global variable '[[= latest_tag_4_6 =]]' instead of 'v4.6.24'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 77, "column": 67}}}, "severity": "ERROR"}

##### New version of PHP Storm Plugin

To further improve your experience with Ibexa DXP, a 1.14.0 version of PHP Storm Plugin has been released, which brings the following changes:

Check failure on line 81 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L81

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 81, "column": 41}}}, "severity": "ERROR"}

- Added support for Ibexa DXP v5.0

Check failure on line 83 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L83

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 83, "column": 21}}}, "severity": "ERROR"}
- Added compatibility with PhpStorm 2024.3.6+
- Added file template for Twig Component class
- Added code completion for Twig Component Groups in YAML config files and AsTwigComponent attribute
- Added code completion for Twig Component Types in YAML config files

##### Infrastructure

- Redis 7.2+ are now [officially supported](https://doc.ibexa.co/en/4.6/getting_started/requirements/)


##### PHP API

The PHP API has been enhanced with the following:

??? note "PHP API classes and interfaces"
- [`Ibexa\Contracts\AdminUi\Exception`](/api/php_api/php_api_reference/namespaces/ibexa-contracts-adminui-exception.html)

Check failure on line 99 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L99

[Ibexa.DomainTerms] Use 'back office' instead of 'AdminUi'
Raw output
{"message": "[Ibexa.DomainTerms] Use 'back office' instead of 'AdminUi'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 99, "column": 25}}}, "severity": "ERROR"}

Check failure on line 99 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L99

[Ibexa.DomainTerms] Use 'back office' instead of 'adminui'
Raw output
{"message": "[Ibexa.DomainTerms] Use 'back office' instead of 'adminui'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 99, "column": 103}}}, "severity": "ERROR"}
- [`Ibexa\Contracts\AdminUi\Exception\UnresolvedPreviewUrlException`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Exception-UnresolvedPreviewUrlException.html)

Check failure on line 100 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L100

[Ibexa.DomainTerms] Use 'back office' instead of 'AdminUi'
Raw output
{"message": "[Ibexa.DomainTerms] Use 'back office' instead of 'AdminUi'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 100, "column": 25}}}, "severity": "ERROR"}

Check failure on line 100 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L100

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 100, "column": 114}}}, "severity": "ERROR"}
- [`Ibexa\Contracts\AdminUi\PreviewUrlResolver`](/api/php_api/php_api_reference/namespaces/ibexa-contracts-adminui-previewurlresolver.html)

Check failure on line 101 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L101

[Ibexa.DomainTerms] Use 'back office' instead of 'adminui'
Raw output
{"message": "[Ibexa.DomainTerms] Use 'back office' instead of 'adminui'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 101, "column": 112}}}, "severity": "ERROR"}
- [`Ibexa\Contracts\AdminUi\PreviewUrlResolver\VersionPreviewUrlResolverInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-PreviewUrlResolver-VersionPreviewUrlResolverInterface.html)

Check failure on line 102 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L102

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 102, "column": 128}}}, "severity": "ERROR"}
- [`Ibexa\Contracts\Core\Validation\Constraint`](/api/php_api/php_api_reference/namespaces/ibexa-contracts-core-validation-constraint.html)
- [`Ibexa\Contracts\Core\Validation\Constraint\UniqueIdentifier`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Validation-Constraint-UniqueIdentifier.html)

Check failure on line 104 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L104

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 104, "column": 110}}}, "severity": "ERROR"}
- [`Ibexa\Contracts\Core\Validation\Constraint\UniqueIdentifierValidator`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Validation-Constraint-UniqueIdentifierValidator.html)

Check failure on line 105 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L105

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 105, "column": 119}}}, "severity": "ERROR"}
- [`Ibexa\Contracts\Messenger`](/api/php_api/php_api_reference/namespaces/ibexa-contracts-messenger.html)
- [`Ibexa\Contracts\Messenger\Transport`](/api/php_api/php_api_reference/namespaces/ibexa-contracts-messenger-transport.html)
- [`Ibexa\Contracts\Messenger\Transport\MessageProviderInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Messenger-Transport-MessageProviderInterface.html)

Check failure on line 108 in docs/release_notes/ibexa_dxp_v4.6.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/release_notes/ibexa_dxp_v4.6.md#L108

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "docs/release_notes/ibexa_dxp_v4.6.md", "range": {"start": {"line": 108, "column": 111}}}, "severity": "ERROR"}
- [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\AttributeCriterionBuilder`](/api/php_api/php_api_reference/namespaces/ibexa-contracts-productcatalog-values-product-query-attributecriterionbuilder.html)
- [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\AttributeCriterionBuilderRegistry`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-AttributeCriterionBuilderRegistry.html)
- [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\AttributeCriterionBuilderRegistryInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-AttributeCriterionBuilderRegistryInterface.html)
- [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\AttributeCriterionBuilder\AttributeCriterionBuilderInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-AttributeCriterionBuilder-AttributeCriterionBuilderInterface.html)
- [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\AttributeCriterionBuilder\CheckboxBuilder`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-AttributeCriterionBuilder-CheckboxBuilder.html)
- [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\AttributeCriterionBuilder\ColorBuilder`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-AttributeCriterionBuilder-ColorBuilder.html)
- [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\AttributeCriterionBuilder\FloatBuilder`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-AttributeCriterionBuilder-FloatBuilder.html)
- [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\AttributeCriterionBuilder\IntegerBuilder`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-AttributeCriterionBuilder-IntegerBuilder.html)
- [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\AttributeCriterionBuilder\SelectionBuilder`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-AttributeCriterionBuilder-SelectionBuilder.html)

#### Full changelog

[[% include 'snippets/release_46.md' %]]

[[= release_note_entry_end() =]]

[[% set version = 'v4.6.23' %]]

[[= release_note_entry_begin("Ibexa DXP " + version, '2025-08-19', ['Headless', 'Experience', 'Commerce', 'New feature']) =]]
Expand Down
Loading
Loading