Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V6.6.10.0 #59

Open
wants to merge 8 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all 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
180 changes: 180 additions & 0 deletions src/6.6/6.6.10.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
---
nav:
title: v6.6.10.0
meta:
date: 2025-02-10
---

# Release notes Shopware 6.6.10.0

## Abstract

This minor release contains improvements like MySQL invalidator storage, external media URLs via API, even more A11y improvents and more. Additionally, 10+ bugs had been fixed.

## System requirements

* tested on PHP 8.2 and 8.3
* tested on MySQL 8 and MariaDB 10.11

## Improvements

### Upgrade to Symfony 7.2

* Changed `symfony/*` dependencies to `^7.2`

### Addition of MySQLInvalidatorStorage

* Introduced `/Shopware/Core/Framework/Adapter/Cache/InvalidatorStorage/MySQLInvalidatorStorage` to collect and handle cache invalidations in MySQL as an atomic operation.
* This new storage option allows delayed cache invalidation without requiring Redis (although Redis remains the recommended solution).
* To switch to MySQL for delayed cache invalidation, update your configuration as follows:
```yaml
shopware:
cache:
invalidation:
delay: 1
delay_options:
storage: mysql
```

### [A11y-HTML] Offer HTML alternative to our pdf standard documents

* Besides the existing PDF document which is based on DOMPDF, we added our standard document as HTML documents for fulfilling the A11y criteria.

### Introduce global template data for language and navigation

Some of the data for the Twig template in the storefront, like the current currency or navigation ID, should not depend on the current page object; instead, the should be available globally and independently. The following changes facilitate the introduction of those global template data:

* Added new Twig function `sw_breadcrumb_full_by_id` to get the full breadcrumb for a category ID.
* Added /Shopware/Storefront/Framework/Twig/NavigationInfo to the global shopware Twig variable, to provide the ID of the main navigation and the current navigation path as ID list.
* Added `minSearchLength` to the global Shopware Twig variable, which defines the minimum search term length.
* Added `showStagingBanner` to the global shopware Twig variable, which defines if the staging banner should be shown.
* Deprecated the global `showStagingBanner` Twig variable. Use `shopware.showStagingBanner` instead.
* Deprecated the usage of the header and footer properties of page Twig objects outside the dedicated header and footer templates. Use the following alternatives instead:
* `context.currency` instead of `page.header.activeCurrency`
* `shopware.navigation.id` instead of `page.header.navigation.active.id`
* `shopware.navigation.pathIdList` instead of `page.header.navigation.active.path`
* `context.saleschannel.languages.first` instead of `page.header.activeLanguage`
* Added new optional parameter `serviceMenu` of type /Shopware/Core/Content/Category/CategoryCollection to /Shopware/Storefront/Pagelet/Footer/FooterPagelet. It will be required in the next major version.

### Introduce Edge Side Includes (ESI) for header and

With the next major version, the header and footer will be loaded via ESI. Due to this change, many things were deprecated and will be removed with the next major version, as they are not needed anymore (Please refer to the [changelog](https://github.com/shopware/shopware/blob/v6.6.10.0/CHANGELOG.md) for a detailed list of associated deprecations).

* This changes are currently behind the `cache_rework` flag.
* The header and footer are now loaded via ESI. This allows to cache the header and footer separately from the rest of the page.
* Two new routes `/header` and `/footer` were added to receive the rendered header and footer.
* The rendered header and footer are included into the page with the Twig function `render_esi`, which calls the previously mentioned routes.
* Two new templates `src/Storefront/Resources/views/storefront/layout/header.html.twig` and `src/Storefront/Resources/views/storefront/layout/footer.html.twig` were introduced as new entry points for the header and footer.
* Make sure to adjust your template extensions to be compatible with the new structure. The block names are still the same, so it just should be necessary to extend from the new templates.

### Removal of the asterisk next to every price

* When activating the `ACCESSIBILITY_TWEAKS` feature flag the price asterisk * are no longer displayed next to every price. A text link for tax and shipping information is displayed instead.

### Bulk entity extension

* Deprecated EntityExtension::getDefinitionClass. It will be replaced by `EntityExtension::getEntityName`, which needs to return the entity name.

Before:

```php
<?php

namespace Examples\Extension;

use Shopware\Core\Content\Product\ProductDefinition;
use Shopware\Core\Framework\DataAbstractionLayer\EntityExtension;

class MyEntityExtension extends EntityExtension
{
public function getDefinitionClass(): string
{
return ProductDefinition::class;
}
}
```

After:

```php
<?php

namespace Examples\Extension;

use Shopware\Core\Content\Product\ProductDefinition;
use Shopware\Core\Framework\DataAbstractionLayer\EntityExtension;

class MyEntityExtension extends EntityExtension
{
public function getEntityName() : string
{
return ProductDefinition::ENTITY_NAME;
}
}
```

### Using external URL for media's path without storing physical files

* You can now store media paths as external URLs using the admin API. This allows more flexible media management without the need to store physical files on the server.

**Example Request:**

```http
POST http://sw.test/api/media
Content-Type: application/json

{
"id": "01934e0015bd7174b35838bbb30dc927",
"mediaFolderId": "01934ebfc0da735d841f38e8e54fda09",
"path": "https://test.com/photo/2024/11/30/sunflowers.jpg",
"fileName": "sunflower",
"mimeType": "image/jpeg"
}
```

### Add aggregate admin api

* Added generic `/api/aggregate/{entityName}` API. It is similar to already existing `/api/search/${entityName}`, but without loading entities

## Fixed bugs

* [NEXT-40385](https://github.com/shopware/shopware/issues/6359) - No optional config fields in Shopware 6.6.9.0 in theme.json
* [NEXT-40210](https://github.com/shopware/shopware/issues/6055) - admin watcher ignores HOST & PORT env
* [NEXT-40100](https://github.com/shopware/shopware/issues/5904) - Struct clone behaviour causes errors with readonly properties
* [NEXT-40053](https://github.com/shopware/shopware/issues/5825) - Promotion action buttons have initialization issues and send incorrect entity IDs
* [NEXT-39764](https://github.com/shopware/shopware/issues/5669) - Cloud Very long loading & crash from website with many promotion codes
* [NEXT-39718](https://github.com/shopware/shopware/issues/5629) - Restoring currency inheritance breaks advanced pricing
* [NEXT-39690](https://github.com/shopware/shopware/issues/5529) - A11y - OU: Lacking descriptive page titles
* [NEXT-39645](https://github.com/shopware/shopware/issues/5508) - A11y: Subscriptions - lacking descriptive page titles
* [NEXT-39643](https://github.com/shopware/shopware/issues/5506) - A11y: Employee Management - error handling on detail pages for VO
* [NEXT-39635](https://github.com/shopware/shopware/issues/5501) - A11y/Usability: Product slider - Missing slide controls (unlike Image Slider)
* [NEXT-39576](https://github.com/shopware/shopware/issues/5475) - A11y - OU: ARIA dialog and alert dialog nodes should have an accessible name

## Credits

* [null](https://github.com/null)
* [ROBJkE](https://github.com/ROBJkE)
* [Schrank](https://github.com/Schrank)
* [g-volker](https://github.com/g-volker)
* [amenk](https://github.com/amenk)
* [lacknere](https://github.com/lacknere)
* [akf-bw](https://github.com/akf-bw)
* [SpiGAndromeda](https://github.com/SpiGAndromeda)
* [aragon999](https://github.com/aragon999)
* [niklaswolf](https://github.com/niklaswolf)
* [patzick](https://github.com/patzick)
* [OliverSkroblin](https://github.com/OliverSkroblin)

Thanks to all diligent friends for helping us make Shopware better and better with each pull request!

## More resources

* [Detailed diff on Github](https://github.com/shopware/shopware/compare/v6.6.9.0...v6.6.10.0) to the former version
* [Changelog on GitHub](https://github.com/shopware/shopware/blob/v6.6.10.0/CHANGELOG.md) for this version
* [Release News on corporate blog](https://www.shopware.com/en/news/shopware-6-release-news-january-2025/)
* [Installation overview](https://developer.shopware.com/docs/guides/installation/)
* [Update from a previous installation](https://developer.shopware.com/docs/guides/installation/template.html#update-shopware)

## Get in touch

Discuss about decisions, bugs you might stumble upon, etc in our [community slack](https://shopwarecommunity.slack.com/). See you there ;)
180 changes: 180 additions & 0 deletions src/6.6/6.6.10.0.md.backup
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
---
nav:
title: v6.6.10.0
meta:
date: 2025-02-10
---

# Release notes Shopware 6.6.10.0

## Abstract

This minor release contains improvements like MySQL invalidator storage, external media URLs via API, even more A11y improvents and more. Additionally, 10+ bugs had been fixed.

## System requirements

* tested on PHP 8.2 and 8.3
* tested on MySQL 8 and MariaDB 10.11

## Improvements

### Upgrade to Symfony 7.2

* Changed `symfony/*` dependencies to `^7.2`

### Addition of MySQLInvalidatorStorage

* Introduced `/Shopware/Core/Framework/Adapter/Cache/InvalidatorStorage/MySQLInvalidatorStorage` to collect and handle cache invalidations in MySQL as an atomic operation.
* This new storage option allows delayed cache invalidation without requiring Redis (although Redis remains the recommended solution).
* To switch to MySQL for delayed cache invalidation, update your configuration as follows:
```yaml
shopware:
cache:
invalidation:
delay: 1
delay_options:
storage: mysql
```

### [A11y-HTML] Offer HTML alternative to our pdf standard documents

* Besides the existing PDF document which is based on DOMPDF, we added our standard document as HTML documents for fulfilling the A11y criteria.

### Introduce global template data for language and navigation

Some of the data for the Twig template in the storefront, like the current currency or navigation ID, should not depend on the current page object; instead, the should be available globally and independently. The following changes facilitate the introduction of those global template data:

* Added new Twig function `sw_breadcrumb_full_by_id` to get the full breadcrumb for a category ID.
* Added /Shopware/Storefront/Framework/Twig/NavigationInfo to the global shopware Twig variable, to provide the ID of the main navigation and the current navigation path as ID list.
* Added `minSearchLength` to the global Shopware Twig variable, which defines the minimum search term length.
* Added `showStagingBanner` to the global shopware Twig variable, which defines if the staging banner should be shown.
* Deprecated the global `showStagingBanner` Twig variable. Use `shopware.showStagingBanner` instead.
* Deprecated the usage of the header and footer properties of page Twig objects outside the dedicated header and footer templates. Use the following alternatives instead:
* `context.currency` instead of `page.header.activeCurrency`
* `shopware.navigation.id` instead of `page.header.navigation.active.id`
* `shopware.navigation.pathIdList` instead of `page.header.navigation.active.path`
* `context.saleschannel.languages.first` instead of `page.header.activeLanguage`
* Added new optional parameter `serviceMenu` of type /Shopware/Core/Content/Category/CategoryCollection to /Shopware/Storefront/Pagelet/Footer/FooterPagelet. It will be required in the next major version.

### Introduce Edge Side Includes (ESI) for header and

With the next major version, the header and footer will be loaded via ESI. Due to this change, many things were deprecated and will be removed with the next major version, as they are not needed anymore (Please refer to the [changelog](https://github.com/shopware/shopware/blob/v6.6.10.0/CHANGELOG.md) for a detailed list of associated deprecations).

* This changes are currently behind the `cache_rework` flag.
* The header and footer are now loaded via ESI. This allows to cache the header and footer separately from the rest of the page.
* Two new routes `/header` and `/footer` were added to receive the rendered header and footer.
* The rendered header and footer are included into the page with the Twig function `render_esi`, which calls the previously mentioned routes.
* Two new templates `src/Storefront/Resources/views/storefront/layout/header.html.twig` and `src/Storefront/Resources/views/storefront/layout/footer.html.twig` were introduced as new entry points for the header and footer.
* Make sure to adjust your template extensions to be compatible with the new structure. The block names are still the same, so it just should be necessary to extend from the new templates.

### Removal of the asterisk next to every price

* When activating the `ACCESSIBILITY_TWEAKS` feature flag the price asterisk * are no longer displayed next to every price. A text link for tax and shipping information is displayed instead.

### Bulk entity extension

* Deprecated EntityExtension::getDefinitionClass. It will be replaced by `EntityExtension::getEntityName`, which needs to return the entity name.

Before:

```php
<?php

namespace Examples\Extension;

use Shopware\Core\Content\Product\ProductDefinition;
use Shopware\Core\Framework\DataAbstractionLayer\EntityExtension;

class MyEntityExtension extends EntityExtension
{
public function getDefinitionClass(): string
{
return ProductDefinition::class;
}
}
```

After:

```php
<?php

namespace Examples\Extension;

use Shopware\Core\Content\Product\ProductDefinition;
use Shopware\Core\Framework\DataAbstractionLayer\EntityExtension;

class MyEntityExtension extends EntityExtension
{
public function getEntityName() : string
{
return ProductDefinition::ENTITY_NAME;
}
}
```

### Using external URL for media's path without storing physical files

* You can now store media paths as external URLs using the admin API. This allows more flexible media management without the need to store physical files on the server.

**Example Request:**

```http
POST http://sw.test/api/media
Content-Type: application/json

{
"id": "01934e0015bd7174b35838bbb30dc927",
"mediaFolderId": "01934ebfc0da735d841f38e8e54fda09",
"path": "https://test.com/photo/2024/11/30/sunflowers.jpg",
"fileName": "sunflower",
"mimeType": "image/jpeg"
}
```

### Add aggregate admin api

* Added generic `/api/aggregate/{entityName}` API. It is similar to already existing `/api/search/${entityName}`, but without loading entities

## Fixed bugs

* [NEXT-40385](https://github.com/shopware/shopware/issues/6359) - No optional config fields in Shopware 6.6.9.0 in theme.json
* [NEXT-40210](https://github.com/shopware/shopware/issues/6055) - admin watcher ignores HOST & PORT env
* [NEXT-40100](https://github.com/shopware/shopware/issues/5904) - Struct clone behaviour causes errors with readonly properties
* [NEXT-40053](https://github.com/shopware/shopware/issues/5825) - Promotion action buttons have initialization issues and send incorrect entity IDs
* [NEXT-39764](https://github.com/shopware/shopware/issues/5669) - Cloud Very long loading & crash from website with many promotion codes
* [NEXT-39718](https://github.com/shopware/shopware/issues/5629) - Restoring currency inheritance breaks advanced pricing
* [NEXT-39690](https://github.com/shopware/shopware/issues/5529) - A11y - OU: Lacking descriptive page titles
* [NEXT-39645](https://github.com/shopware/shopware/issues/5508) - A11y: Subscriptions - lacking descriptive page titles
* [NEXT-39643](https://github.com/shopware/shopware/issues/5506) - A11y: Employee Management - error handling on detail pages for VO
* [NEXT-39635](https://github.com/shopware/shopware/issues/5501) - A11y/Usability: Product slider - Missing slide controls (unlike Image Slider)
* [NEXT-39576](https://github.com/shopware/shopware/issues/5475) - A11y - OU: ARIA dialog and alert dialog nodes should have an accessible name

## Credits

* [null](https://github.com/null)
* [ROBJkE](https://github.com/ROBJkE)
* [Schrank](https://github.com/Schrank)
* [g-volker](https://github.com/g-volker)
* [amenk](https://github.com/amenk)
* [lacknere](https://github.com/lacknere)
* [akf-bw](https://github.com/akf-bw)
* [SpiGAndromeda](https://github.com/SpiGAndromeda)
* [aragon999](https://github.com/aragon999)
* [niklaswolf](https://github.com/niklaswolf)
* [patzick](https://github.com/patzick)
* [OliverSkroblin](https://github.com/OliverSkroblin)

Thanks to all diligent friends for helping us make Shopware better and better with each pull request!

## More resources

* [Detailed diff on Github](https://github.com/shopware/shopware/compare/v6.6.9.0...v6.6.10.0) to the former version
* [Changelog on GitHub](https://github.com/shopware/shopware/blob/v6.6.10.0/CHANGELOG.md) for this version
* [Release News on corporate blog](https://www.shopware.com/en/news/shopware-6-release-news-january-2025/)
* [Installation overview](https://developer.shopware.com/docs/guides/installation/)
* [Update from a previous installation](https://developer.shopware.com/docs/guides/installation/template.html#update-shopware)

## Get in touch

Discuss about decisions, bugs you might stumble upon, etc in our [community slack](https://shopwarecommunity.slack.com/). See you there ;)
Loading