Skip to content
Merged
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
55 changes: 55 additions & 0 deletions .gitbook.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,37 @@ redirects:
resources/references/api-reference/admin-api-reference.html: guides/integrations-api/
concepts/extensions/elasticsearch-concept.html: concepts/framework/elasticsearch.html
guides/plugins/plugins/storefront/use-csrf-protection.html: guides/hosting/configurations/framework/samesite-protection.html
guides/plugins/plugins/storefront/add-caching-to-custom-controller.html: guides/plugins/plugins/storefront/advanced/add-caching-to-custom-controller.html
guides/plugins/plugins/storefront/add-cookie-to-manager.html: guides/plugins/plugins/storefront/advanced/add-cookie-to-manager.html
guides/plugins/plugins/storefront/add-custom-assets.html: guides/plugins/plugins/storefront/styling/add-custom-assets.html
guides/plugins/plugins/storefront/add-custom-captcha.html: guides/plugins/plugins/storefront/howto/add-custom-captcha.html
guides/plugins/plugins/storefront/add-custom-controller.html: guides/plugins/plugins/storefront/controllers/add-custom-controller.html
guides/plugins/plugins/storefront/add-custom-javascript.html: guides/plugins/plugins/storefront/javascript/add-custom-javascript.html
guides/plugins/plugins/storefront/add-custom-page.html: guides/plugins/plugins/storefront/controllers/add-custom-page.html
guides/plugins/plugins/storefront/add-custom-pagelet.html: guides/plugins/plugins/storefront/controllers/add-custom-pagelet.html
guides/plugins/plugins/storefront/add-custom-sorting-product-listing.html: guides/plugins/plugins/storefront/howto/add-custom-sorting-product-listing.html
guides/plugins/plugins/storefront/add-custom-styling.html: guides/plugins/plugins/storefront/styling/add-custom-styling.html
guides/plugins/plugins/storefront/add-custom-twig-function.html: guides/plugins/plugins/storefront/templates/add-custom-twig-function.html
guides/plugins/plugins/storefront/add-data-to-storefront-page.html: guides/plugins/plugins/storefront/controllers/add-data-to-storefront-page.html
guides/plugins/plugins/storefront/add-dynamic-content-via-ajax-calls.html: guides/plugins/plugins/storefront/controllers/add-dynamic-content-via-ajax-calls.html
guides/plugins/plugins/storefront/add-icons.html: guides/plugins/plugins/storefront/styling/add-icons.html
guides/plugins/plugins/storefront/add-javascript-as-script-tag.html: guides/plugins/plugins/storefront/javascript/add-javascript-as-script-tag.html
guides/plugins/plugins/storefront/add-listing-filters.html: guides/plugins/plugins/storefront/howto/add-listing-filters.html
guides/plugins/plugins/storefront/add-scss-variables-via-subscriber.html: guides/plugins/plugins/storefront/styling/add-scss-variables-via-subscriber.html
guides/plugins/plugins/storefront/add-scss-variables.html: guides/plugins/plugins/storefront/styling/add-scss-variables.html
guides/plugins/plugins/storefront/add-translations.html: guides/plugins/plugins/storefront/styling/add-translations.html
guides/plugins/plugins/storefront/customize-header-footer.html: guides/plugins/plugins/storefront/templates/customize-header-footer.html
guides/plugins/plugins/storefront/customize-templates.html: guides/plugins/plugins/storefront/templates/customize-templates.html
guides/plugins/plugins/storefront/fetching-data-with-javascript.html: guides/plugins/plugins/storefront/javascript/fetching-data-with-javascript.html
guides/plugins/plugins/storefront/override-existing-javascript.html: guides/plugins/plugins/storefront/javascript/override-existing-javascript.html
guides/plugins/plugins/storefront/reacting-to-cookie-consent-changes.html: guides/plugins/plugins/storefront/advanced/reacting-to-cookie-consent-changes.html
guides/plugins/plugins/storefront/reacting-to-javascript-events.html: guides/plugins/plugins/storefront/javascript/reacting-to-javascript-events.html
guides/plugins/plugins/storefront/remove-unnecessary-js-plugin.html: guides/plugins/plugins/storefront/advanced/remove-unnecessary-js-plugin.html
guides/plugins/plugins/storefront/use-media-thumbnails.html: guides/plugins/plugins/storefront/howto/use-media-thumbnails.html
guides/plugins/plugins/storefront/use-nested-line-items.html: guides/plugins/plugins/storefront/howto/use-nested-line-items.html
guides/plugins/plugins/storefront/using-a-modal-window.html: guides/plugins/plugins/storefront/howto/using-a-modal-window.html
guides/plugins/plugins/storefront/using-custom-fields-storefront.html: guides/plugins/plugins/storefront/howto/using-custom-fields-storefront.html
guides/plugins/plugins/storefront/using-the-datepicker-plugin.html: guides/plugins/plugins/storefront/howto/using-the-datepicker-plugin.html
products/extensions/b2b-suite/*: products/extensions/b2b/b2b-suite/*
products/extensions/b2b-components/*: products/extensions/b2b/b2b-components/*
guides/plugins/plugins/administration/add-shortcuts.html: guides/plugins/plugins/administration/advanced-configuration/add-shortcuts.html
Expand Down Expand Up @@ -68,6 +99,27 @@ redirects:
products/paas/fastly.html: products/paas/shopware-paas/fastly.html
products/paas/blackfire.html: products/paas/shopware-paas/blackfire.html
guides/plugins/apps/in-app-purchase/: guides/plugins/apps/in-app-purchases.html
guides/plugins/apps/app-registration-setup.html: guides/plugins/apps/lifecycle/app-registration-setup.html
guides/plugins/apps/app-signature-verification.html: guides/plugins/apps/lifecycle/app-signature-verification.html
guides/plugins/apps/clientside-to-app-backend.html: guides/plugins/apps/lifecycle/clientside-to-app-backend.html
guides/plugins/apps/configuration.html: guides/plugins/apps/lifecycle/configuration.html
guides/plugins/apps/payment.html: guides/plugins/apps/checkout/payment.html
guides/plugins/apps/shipping-methods.html: guides/plugins/apps/checkout/shipping-methods.html
guides/plugins/apps/starter/add-api-endpoint.html: guides/plugins/apps/app-scripts/add-api-endpoint.html
guides/plugins/apps/starter/index.html: guides/plugins/apps/index.html
guides/plugins/apps/starter/product-translator.html: guides/plugins/apps/lifecycle/product-translator.html
guides/plugins/apps/starter/starter-admin-extension.html: guides/plugins/apps/administration/starter-admin-extension.html
guides/plugins/apps/tax-provider.html: guides/plugins/apps/checkout/tax-provider.html
guides/plugins/apps/webhook.html: guides/plugins/apps/lifecycle/webhook.html
guides/plugins/plugins/plugin-fundamentals/add-custom-service.html: guides/plugins/plugins/services/add-custom-service.html
guides/plugins/plugins/plugin-fundamentals/add-plugin-dependencies.html: guides/plugins/plugins/dependencies/add-plugin-dependencies.html
guides/plugins/plugins/plugin-fundamentals/adjusting-service.html: guides/plugins/plugins/services/adjusting-service.html
guides/plugins/plugins/plugin-fundamentals/custom-fields-of-type-media.html: guides/plugins/plugins/database/custom-fields-of-type-media.html
guides/plugins/plugins/plugin-fundamentals/database-migrations.html: guides/plugins/plugins/database/database-migrations.html
guides/plugins/plugins/plugin-fundamentals/dependency-injection.html: guides/plugins/plugins/services/dependency-injection.html
guides/plugins/plugins/plugin-fundamentals/listening-to-events.html: guides/plugins/plugins/framework/event/listening-to-events.html
guides/plugins/plugins/plugin-fundamentals/using-composer-dependencies.html: guides/plugins/plugins/dependencies/using-composer-dependencies.html
guides/plugins/plugins/plugin-fundamentals/using-npm-dependencies.html: guides/plugins/plugins/dependencies/using-npm-dependencies.html
guides/plugins/plugins/in-app-purchase/: guides/plugins/plugins/in-app-purchases.html
products/paas/shopware/CLI/account.html: products/paas/shopware/fundamentals/account.html
products/paas/shopware/CLI/applications.html: products/paas/shopware/fundamentals/applications.html
Expand Down Expand Up @@ -110,6 +162,8 @@ redirects:
resources/references/upgrades/core/translation/language-pack-migration.html: guides/upgrades-migrations/language-pack-migration.html
resources/references/upgrades/administration/: guides/upgrades-migrations/administration/
resources/references/upgrades/: guides/upgrades-migrations/
resources/references/storefront-reference/plugin-reference.html: guides/plugins/plugins/storefront/javascript/plugin-reference.html
resources/references/storefront-reference/twig-function-reference.html: guides/plugins/plugins/storefront/templates/twig-function-reference.html
guides/plugins/plugins/testing/php-unit.html: guides/development/testing/unit/php-unit.html
guides/plugins/plugins/testing/jest-storefront.html: guides/development/testing/unit/jest-storefront.html
guides/plugins/plugins/testing/jest-admin.html: guides/development/testing/unit/jest-admin.html
Expand Down Expand Up @@ -145,6 +199,7 @@ redirects:
guides/plugins/plugins/testing/cypress/cypress-best-practises.html: guides/development/testing/legacy/cypress/cypress-best-practises.html
guides/plugins/plugins/testing/cypress/cypress-end-to-end-testing/: guides/development/testing/legacy/cypress/
guides/resources/references/core-reference/dal-reference/filters-reference.html: resources/references/core-reference/dal-reference/filters-reference.html
resources/guidelines/code/core/database-migations.html: resources/guidelines/code/core/database-migrations.html
resources/guidelines/code/core/final-and-internal.html: guides/development/extensions/architecture/final-and-internal.html
resources/guidelines/code/core/internal.html: guides/development/extensions/architecture/internal.html
resources/guidelines/code/core/extendability.html: guides/development/extensions/architecture/extendability.html
Expand Down
4 changes: 2 additions & 2 deletions concepts/commerce/content/cookie-consent-management.md
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@

Use an event listener to add custom cookies.

<PageRef page="../../../guides/plugins/plugins/storefront/add-cookie-to-manager" />
<PageRef page="../../../guides/plugins/plugins/storefront/advanced/add-cookie-to-manager" />

Check warning on line 200 in concepts/commerce/content/cookie-consent-management.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] concepts/commerce/content/cookie-consent-management.md#L200

Unpaired symbol: ‘"’ seems to be missing (EN_UNPAIRED_QUOTES) URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-parentheses Rule: https://community.languagetool.org/rule/show/EN_UNPAIRED_QUOTES?lang=en-US Category: PUNCTUATION
Raw output
concepts/commerce/content/cookie-consent-management.md:200:88: Unpaired symbol: ‘"’ seems to be missing (EN_UNPAIRED_QUOTES)
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-parentheses 
 Rule: https://community.languagetool.org/rule/show/EN_UNPAIRED_QUOTES?lang=en-US
 Category: PUNCTUATION

### For Apps

Expand All @@ -209,7 +209,7 @@

React to user consent changes in your custom JavaScript.

<PageRef page="../../../guides/plugins/plugins/storefront/reacting-to-cookie-consent-changes" />
<PageRef page="../../../guides/plugins/plugins/storefront/advanced/reacting-to-cookie-consent-changes" />

Check warning on line 212 in concepts/commerce/content/cookie-consent-management.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] concepts/commerce/content/cookie-consent-management.md#L212

Unpaired symbol: ‘"’ seems to be missing (EN_UNPAIRED_QUOTES) URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-parentheses Rule: https://community.languagetool.org/rule/show/EN_UNPAIRED_QUOTES?lang=en-US Category: PUNCTUATION
Raw output
concepts/commerce/content/cookie-consent-management.md:212:14: Unpaired symbol: ‘"’ seems to be missing (EN_UNPAIRED_QUOTES)
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-parentheses 
 Rule: https://community.languagetool.org/rule/show/EN_UNPAIRED_QUOTES?lang=en-US
 Category: PUNCTUATION

Check warning on line 212 in concepts/commerce/content/cookie-consent-management.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] concepts/commerce/content/cookie-consent-management.md#L212

Unpaired symbol: ‘"’ seems to be missing (EN_UNPAIRED_QUOTES) URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-parentheses Rule: https://community.languagetool.org/rule/show/EN_UNPAIRED_QUOTES?lang=en-US Category: PUNCTUATION
Raw output
concepts/commerce/content/cookie-consent-management.md:212:101: Unpaired symbol: ‘"’ seems to be missing (EN_UNPAIRED_QUOTES)
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-parentheses 
 Rule: https://community.languagetool.org/rule/show/EN_UNPAIRED_QUOTES?lang=en-US
 Category: PUNCTUATION

## Best Practices

Expand Down
4 changes: 2 additions & 2 deletions concepts/extensions/apps-concept.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Shopware communicates with your app exclusively via HTTP requests. Therefore, yo

![Communication between Shopware and your app](../../assets/extensions-apps-shopwareCommunication.svg)

To secure this communication, a registration handshake is performed during the installation of your app. During this registration, it is verified that Shopware talks to the right app backend server, and your app gets credentials used to authenticate against the API. See [App registration & backend setup](../../guides/plugins/apps/app-registration-setup.md).
To secure this communication, a registration handshake is performed during the installation of your app. During this registration, it is verified that Shopware talks to the right app backend server, and your app gets credentials used to authenticate against the API. See [App registration & backend setup](../../guides/plugins/apps/lifecycle/app-registration-setup.md).

::: info
Note that this is optional if Shopware and your app don't need to communicate, e.g., because your app provides a [Theme](../../guides/plugins/themes/index.md).
Expand All @@ -38,7 +38,7 @@ Your app can modify the Storefront's appearance by shipping your Storefront asse
This functionality is available starting with Shopware 6.4.1.0.
:::

Shopware provides functionality that allows your app to integrate payment providers. You can use synchronous payments with providers that do not require user interaction; in that case, approval can be requested with a simple background request. You can use asynchronous payments if you want to redirect the user to a payment provider. Your app then provides a URL for redirection. After the user returns to the shop, Shopware will verify the payment status with your app. Find out more about providing payment endpoints in the [App payment guide](../../guides/plugins/apps/payment.md).
Shopware provides functionality that allows your app to integrate payment providers. You can use synchronous payments with providers that do not require user interaction; in that case, approval can be requested with a simple background request. You can use asynchronous payments if you want to redirect the user to a payment provider. Your app then provides a URL for redirection. After the user returns to the shop, Shopware will verify the payment status with your app. Find out more about providing payment endpoints in the [App payment guide](../../guides/plugins/apps/checkout/payment.md).

## Execute business logic inside Shopware with App Scripts

Expand Down
4 changes: 2 additions & 2 deletions concepts/framework/data-abstraction-layer.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

### Provisioning code to use the repositories

Before using the repositories, you will need to get them from the [Dependency Injection Container (DIC)](../../guides/plugins/plugins/plugin-fundamentals/dependency-injection).
Before using the repositories, you will need to get them from the [Dependency Injection Container (DIC)](../../guides/plugins/plugins/services/dependency-injection.md).
This is done with [Constructor injection](https://symfony.com/doc/current/service_container/injection_types.html#constructor-injection), so you will need to extend your services constructor by expecting an EntityRepository:

```php
Expand All @@ -55,7 +55,7 @@

You can read more about dependency injection and service registration in Shopware in the services guides:

<PageRef page="../../guides/plugins/plugins/plugin-fundamentals/add-custom-service" />
<PageRef page="../../guides/plugins/plugins/services/add-custom-service" />

Check warning on line 58 in concepts/framework/data-abstraction-layer.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] concepts/framework/data-abstraction-layer.md#L58

Unpaired symbol: ‘"’ seems to be missing (EN_UNPAIRED_QUOTES) URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-parentheses Rule: https://community.languagetool.org/rule/show/EN_UNPAIRED_QUOTES?lang=en-US Category: PUNCTUATION
Raw output
concepts/framework/data-abstraction-layer.md:58:57: Unpaired symbol: ‘"’ seems to be missing (EN_UNPAIRED_QUOTES)
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-parentheses 
 Rule: https://community.languagetool.org/rule/show/EN_UNPAIRED_QUOTES?lang=en-US
 Category: PUNCTUATION

### Translations

Expand Down
4 changes: 1 addition & 3 deletions concepts/framework/migrations.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,8 @@

Each migration filename follows a specific pattern. To ease plugin development, Shopware provides a console command which can be used to generate a correctly named migration file with the default methods needed.

<PageRef page="../../guides/plugins/plugins/plugin-fundamentals/database-migrations.html#create-migration" title="Create migration" />

## Modifying the database

Each migration can have two methods. The `update` and `updateDestructive`. The `update` method must contain only non-destructive changes which can be rolled back at any time. The `updateDestructive` method can contain destructive changes, like dropping columns or tables, which cannot be reversed. For examples of database migrations, refer to the below guide:

<PageRef page="../../guides/plugins/plugins/plugin-fundamentals/database-migrations.html" title="Database migration" />
<PageRef page="../../guides/plugins/plugins/database/database-migrations" title="Database migration" />

Check warning on line 22 in concepts/framework/migrations.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] concepts/framework/migrations.md#L22

Unpaired symbol: ‘"’ seems to be missing (EN_UNPAIRED_QUOTES) URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-parentheses Rule: https://community.languagetool.org/rule/show/EN_UNPAIRED_QUOTES?lang=en-US Category: PUNCTUATION
Raw output
concepts/framework/migrations.md:22:14: Unpaired symbol: ‘"’ seems to be missing (EN_UNPAIRED_QUOTES)
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-parentheses 
 Rule: https://community.languagetool.org/rule/show/EN_UNPAIRED_QUOTES?lang=en-US
 Category: PUNCTUATION

Check warning on line 22 in concepts/framework/migrations.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] concepts/framework/migrations.md#L22

Unpaired symbol: ‘"’ seems to be missing (EN_UNPAIRED_QUOTES) URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-parentheses Rule: https://community.languagetool.org/rule/show/EN_UNPAIRED_QUOTES?lang=en-US Category: PUNCTUATION
Raw output
concepts/framework/migrations.md:22:72: Unpaired symbol: ‘"’ seems to be missing (EN_UNPAIRED_QUOTES)
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-parentheses 
 Rule: https://community.languagetool.org/rule/show/EN_UNPAIRED_QUOTES?lang=en-US
 Category: PUNCTUATION
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ The best-known example is the [`checkout.order.placed`](https://github.com/shopw

#### Hooks

Hooks are another good example of the observer pattern. Hooks are entry points for apps where the so-called [**App scripts**](/docs/guides/plugins/apps/app-scripts/) are enabled. Since apps do not have the permission to execute code on the server directly, hooks are a way to execute more complex business logic within the request without having to address the own app server via HTTP. Hooks are the equivalent of **events**.
Hooks are another good example of the observer pattern. Hooks are entry points for apps where the so-called [**App scripts**](../../../plugins/apps/app-scripts/index.md) are enabled. Since apps do not have the permission to execute code on the server directly, hooks are a way to execute more complex business logic within the request without having to address the own app server via HTTP. Hooks are the equivalent of **events**.

One of the best-known hooks is the [`product page loaded hook`](https://github.com/shopware/shopware/blob/v6.4.12.0/src/Storefront/Page/Product/ProductPageLoadedHook.php). This hook allows apps to load additional data on the product detail page. The hook is instantiated and dispatched [at the controller level](https://github.com/shopware/shopware/blob/v6.4.12.0/src/Storefront/Controller/ProductController.php#L100). Each app script registered to the hook is executed.

Expand Down
10 changes: 5 additions & 5 deletions guides/development/monetization/quality-guidelines.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ For apps, we additionally test:
Before publishing an extension, review the full test process to ensure fast approval.

::: info
[Test your app for the Shopware Store (DE):](https://www.youtube.com/watch?v=gLb5CmOdi4g); EN version is coming soon.
[Test your app for the Shopware Store (DE):](https://www.youtube.com/watch?v=gLb5CmOdi4g); EN version is coming soon.
:::

## Store listing requirements
Expand Down Expand Up @@ -158,7 +158,7 @@ All extensions must:
* Be installable and uninstallable without issues.
* During uninstall, users must be able to choose in the Extension Manager whether to "completely delete or "keep the app data, text snippets, media folder, including own media and table adjustments." The free [Adminer](https://store.shopware.com/en/frosh79014577529f/adminer-for-admin.html) extension from Friends of Shopware enables you to do this via your provided test environment.
* Avoid extending or overwriting the Extension Manager.
* Properly register cookies in the [Cookie Consent Manager](../../../guides/plugins/plugins/storefront/add-cookie-to-manager).
* Properly register cookies in the [Cookie Consent Manager](../../../guides/plugins/plugins/storefront/advanced/add-cookie-to-manager.md).
* Every cookie set from the store URL should be optional and not technically required for running Shopware. We differentiate between "Technically required", "Marketing," and "Comfort features."
* All cookies must appear (unchecked) in the cookie configuration box in the frontend.
* Do not introduce severe performance regressions.
Expand All @@ -170,7 +170,7 @@ All extensions must:

These apply only to plugins:

* [Composer dependencies](../../../guides/plugins/plugins/plugin-fundamentals/using-composer-dependencies) must be declared in `composer.json` so they are traceable.
* [Composer dependencies](../../../guides/plugins/plugins/dependencies/using-composer-dependencies.md) must be declared in `composer.json` so they are traceable.
* If `executeComposerCommands() === true` is used, dependencies are installed dynamically and do not need to be bundled.
* `composer.lock` must not be included in the archive.
* Deliver uncompiled (readable) JavaScript in addition to compiled assets. Uncompiled sources must be included in a separate folder to allow code review.
Expand Down Expand Up @@ -207,7 +207,7 @@ If the extension includes Composer dependencies:

## Storefront guidelines

* No inline CSS allowed in storefront templates. Use your own classes and let your CSS be compiled by the plugin. See [Add SCSS variables](../../../guides/plugins/plugins/storefront/add-scss-variables.md#add-scss-variables).
* No inline CSS allowed in storefront templates. Use your own classes and let your CSS be compiled by the plugin. See [Add SCSS variables](../../../guides/plugins/plugins/storefront/styling/add-scss-variables.md#add-scss-variables).
* Avoid using the `!important` rule unless unavoidable.
* All images must include meaningful `alt` tags, or original `alt` tags from the media manager.
* All links must include meaningful `title` tags.
Expand Down Expand Up @@ -312,7 +312,7 @@ Use Scheme.org's [Schema Markup Validator](https://validator.schema.org/) and Go

## Tools

Use the [Shopware CLI](/development/tooling/cli) to build, validate, and upload Shopware 6 plugin releases to the Community Store. It also supports efficiently managing store descriptions and plugin images.
Use the [Shopware CLI](../../../products/cli/index.md) to build, validate, and upload Shopware 6 plugin releases to the Community Store. It also supports efficiently managing store descriptions and plugin images.

## Final notes

Expand Down
Loading
Loading