diff --git a/.github/workflows/validate-external-links.yml b/.github/workflows/validate-external-links.yml index 84daf3b56f..931c95f65a 100644 --- a/.github/workflows/validate-external-links.yml +++ b/.github/workflows/validate-external-links.yml @@ -18,7 +18,7 @@ jobs: uses: lycheeverse/lychee-action@v2 with: fail: false - args: --retry-wait-time 10 --max-retries 3 --timeout 30 --accept=200,403,429,408 -s "https" "**/*.html" "**/*.md" "**/*.txt" "**/*.json" --exclude "https://github.com/\[your*" --exclude "https://localhost:9200" + args: --retry-wait-time 30 --max-retries 2 --timeout 30 --accept=200,403,429,408 -s "https" "**/*.html" "**/*.md" "**/*.txt" "**/*.json" --exclude "https://github.com/\[your*" --exclude "https://localhost:9200" --exclude "https://shopware.atlassian.net" --root-dir /var/empty - name: Find Link Checker Issue uses: micalevisk/last-issue-action@v2 diff --git a/Makefile b/Makefile index a073a30305..027390a393 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,13 @@ user := "$(shell id -u):$(shell id -g)" ignored = '/docs/resources/references/adr/* /docs/assets/adr/* /docs/resources/guidelines/code/core/* /docs/snippets/guide/*' image = ghcr.io/rojopolis/spellcheck-github-actions:0.49.0 -.PHONY : help spellcheck fix +lychee_image = lycheeverse/lychee:0.24.2 +# Keep HTTPS args in sync with .github/workflows/validate-external-links.yml. +# --root-dir points at a non-existent path so portal root-relative links +# (/frontends/, /docs/, /resources/…) are skipped instead of failing as local files. +lychee_args = --retry-wait-time 10 --max-retries 3 --timeout 30 --accept=200,403,429,408 -s "https" --exclude "https://github.com/\[your*" --exclude "https://localhost:9200" --root-dir /var/empty + +.PHONY : help spellcheck spellcheck-local fix linkcheck .DEFAULT_GOAL : help # This will output the help for each task. thanks to https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html @@ -27,3 +33,7 @@ spellcheck-local: ## Runs the spellcheck tool locally (requires aspell and pyspe fix: ## Runs the linting tool and fixes simple mistakes docker run --rm -u ${user} -v "$(shell pwd):/docs" -e INPUT_FIX=true -e INPUT_IGNORE=${ignored} avtodev/markdown-lint:v1.5 \ --config /docs/markdown-style-config.yml /docs + +linkcheck: ## Check HTTPS links in Markdown (via Docker / Lychee). Optional: DIR=path/to/folder + docker run --init --rm -w /input -v "$(shell pwd):/input" ${lychee_image} \ + ${lychee_args} --no-progress "$(if $(DIR),$(DIR)/**/*.md,**/*.md)" diff --git a/guides/plugins/apps/administration/starter-admin-extension.md b/guides/plugins/apps/administration/starter-admin-extension.md index 0b29de6a09..84b05a0fea 100644 --- a/guides/plugins/apps/administration/starter-admin-extension.md +++ b/guides/plugins/apps/administration/starter-admin-extension.md @@ -159,6 +159,6 @@ When the app is successfully installed, you will see the notification pop up onc This example showed end-to-end how to create a local dev environment and connect it with your Shopware Store. There is a lot more to learn and try out, so why not move on with one of those topics: -* Add [new sections](https://developer.shopware.com/resources/admin-extension-sdk/api-reference/ui/component-section.html) or [entire modules](https://developer.shopware.com/resources/admin-extension-sdk/api-reference/ui/mainModule.html) to the UI -* The Meteor Admin SDK also offers [TypeScript support](https://developer.shopware.com/resources/admin-extension-sdk/getting-started/installation.html#using-npm-require-bundling), including autocompletion +* Add [new sections](https://developer.shopware.com/resources/admin-extension-sdk/api-reference/ui/component-sections.html) or [entire modules](https://developer.shopware.com/resources/admin-extension-sdk/api-reference/ui/mainModule.html) to the UI +* The Meteor Admin SDK also offers [TypeScript support](https://developer.shopware.com/resources/admin-extension-sdk/getting-started/#install-the-sdk), including autocompletion * Don't want to extend the admin panel? Have a look at [App Scripts](../app-scripts/index.md) diff --git a/guides/plugins/plugins/administration/administration-reference/mixins.md b/guides/plugins/plugins/administration/administration-reference/mixins.md index bcf17236e2..446ebe02e6 100644 --- a/guides/plugins/plugins/administration/administration-reference/mixins.md +++ b/guides/plugins/plugins/administration/administration-reference/mixins.md @@ -7,25 +7,25 @@ nav: # Mixins Reference -This is an overview of all the mixins provided by the Shopware 6 Administration. Mixins in the Shopware 6 Administration are essentially the same as the default Vue. They behave generally the same as in Vue, differing only in registration and the way mixins are included in a component. Learn more about them in the official [Vue documentation](https://vuejs.org/v2/guide/mixins.html). +This is an overview of all the mixins provided by the Shopware 6 Administration. Mixins in the Shopware 6 Administration are essentially the same as the default Vue. They behave generally the same as in Vue, differing only in registration and the way mixins are included in a component. Learn more about them in the official [Vue documentation](https://v2.vuejs.org/v2/guide/mixins.html). Also, take a look at [how to use them in plugins](../mixins-directives/using-mixins.md) and [how to register mixins](../mixins-directives/add-mixins.md). ## Overview of all the mixins -| Name | Description | Link | -| :--- | :--- | :--- | -| `discard-detail-page-changes` | Mixin which resets entity changes on page leave or if the ID of the entity changes. This also affects changes in associations of the entity | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/discard-detail-page-changes.mixin.ts) | -| `form-field` | This Mixin is used to provide common functionality between form fields | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/form-field.mixin.ts) | -| `generic-condition` | Mixin that provides reusable logic for rendering and handling generic rule/condition UI elements (a base for condition components) in the admin interface | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/generic-condition.mixin.ts) | -| `listing` | Mixin which is used in almost all listing pages to, for example, keep track of the current page of the administration | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/listing.mixin.ts) | -| `notification` | This Mixin is used to create notifications in the administration more easily | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/notification.mixin.ts) | -| `placeholder` | Provides a function to localize placeholders | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/placeholder.mixin.ts) | -| `position` | A Mixin which contains helpers to work with position integers | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/position.mixin.ts) | -| `remove-api-error` | This Mixin removes API errors e.g., after the user corrected an invalid input, i.e., leaving the product name field blank | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/remove-api-error.mixin.ts) | -| `rule-container` | Provides common functions between the `sw-condition-or-container` and the `sw-condition-and-container` | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/rule-container.mixin.ts) | -| `salutation` | A common adapter for the `salutation` filter | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/salutation.mixin.ts) | -| `sw-inline-snippet` | Makes it possible to use snippets inline | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/sw-inline-snippet.mixin.ts) | -| `form-field` | Mixin that provides standard form‑field behavior and helpers (including name handling and “inheritance” support) for input components used throughout the admin UI | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/form-field.mixin.ts) | -| `user-settings` | adds reusable helpers and reactive support for accessing and managing the current user’s personal settings (e.g., profile preferences like language, UI settings, etc.) | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/user-settings.mixin.ts) | -| `validation` | Is used to validate inputs in various form fields | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/validation.mixin.ts) | +| Name | Description | Link | +|:------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `discard-detail-page-changes` | Mixin which resets entity changes on page leave or if the ID of the entity changes. This also affects changes in associations of the entity | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/discard-detail-page-changes.mixin.ts) | +| `form-field` | This Mixin is used to provide common functionality between form fields | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/form-field.mixin.ts) | +| `generic-condition` | Mixin that provides reusable logic for rendering and handling generic rule/condition UI elements (a base for condition components) in the admin interface | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/generic-condition.mixin.ts) | +| `listing` | Mixin which is used in almost all listing pages to, for example, keep track of the current page of the administration | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/listing.mixin.ts) | +| `notification` | This Mixin is used to create notifications in the administration more easily | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/notification.mixin.ts) | +| `placeholder` | Provides a function to localize placeholders | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/placeholder.mixin.ts) | +| `position` | A Mixin which contains helpers to work with position integers | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/position.mixin.ts) | +| `remove-api-error` | This Mixin removes API errors e.g., after the user corrected an invalid input, i.e., leaving the product name field blank | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/remove-api-error.mixin.ts) | +| `rule-container` | Provides common functions between the `sw-condition-or-container` and the `sw-condition-and-container` | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/rule-container.mixin.ts) | +| `salutation` | A common adapter for the `salutation` filter | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/salutation.mixin.ts) | +| `sw-inline-snippet` | Makes it possible to use snippets inline | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/sw-inline-snippet.mixin.ts) | +| `form-field` | Mixin that provides standard form‑field behavior and helpers (including name handling and “inheritance” support) for input components used throughout the admin UI | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/form-field.mixin.ts) | +| `user-settings` | adds reusable helpers and reactive support for accessing and managing the current user’s personal settings (e.g., profile preferences like language, UI settings, etc.) | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/user-settings.mixin.ts) | +| `validation` | Is used to validate inputs in various form fields | [link](https://github.com/shopware/shopware/blob/v6.6.9.0/src/Administration/Resources/app/administration/src/app/mixin/validation.mixin.ts) | diff --git a/products/extensions/b2b-components/shopping-lists/guides/api-and-pricing.md b/products/extensions/b2b-components/shopping-lists/guides/api-and-pricing.md index 61419a1417..bc3f8c7b84 100644 --- a/products/extensions/b2b-components/shopping-lists/guides/api-and-pricing.md +++ b/products/extensions/b2b-components/shopping-lists/guides/api-and-pricing.md @@ -53,7 +53,7 @@ The shopping list price will be included in the API for getting the shopping lis GET {url}/store-api/shopping-list/{id}/summary ``` -For more details, refer to [B2B Shopping Lists](https://shopware.stoplight.io/docs/store-api/c9849725606fd-create-new-shopping-list) from Store API docs. +For more details, refer to [B2B Shopping Lists](https://shopware.stoplight.io/docs/store-api/0789edb2e95b6-create-new-shopping-list) from Store API docs. ## Admin API diff --git a/resources/guidelines/code/backward-compatibility.md b/resources/guidelines/code/backward-compatibility.md index 294744b83d..9b26cd5afa 100644 --- a/resources/guidelines/code/backward-compatibility.md +++ b/resources/guidelines/code/backward-compatibility.md @@ -67,13 +67,13 @@ See [Announced API changes](#announced-api-changes-bc-change-attributes) for eve When developing new features, the goal should always be to do this in a backward compatible way. This ensures that the feature can be shipped with a minor release to provide value for customers as soon as possible. The following table should help you to use the correct approach for each type of change. -| Case | During development | On feature release | Next major release | -|------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| -| 🚩 **Feature Flag** | Hide code behind normal [feature flag](https://developer.shopware.com/docs/resources/references/adr/2020-08-10-feature-flag-system.html). | Remove the feature flag. | | -| ➕ **New code** | Add `@internal annotation` for new public API. | Remove `@internal` annotation. | | -| ⚪ **Obsolete code** | Add `@feature-deprecated` annotation. | Replace @feature-deprecated with normal `@deprecated` annotation. | Remove old code. | -| 🔴 **Breaking change** | Add `@major-deprecated` annotation. Hide breaking code behind additional major [feature flag](https://developer.shopware.com/docs/resources/references/adr/2020-08-10-feature-flag-system.html). Also, create a separate [changelog](https://developer.shopware.com/docs/resources/references/adr/2020-08-03-implement-new-changelog.html) for the change with the major flag. | | Remove old code. Remove the major feature flag. | -| 🔍 **Tests** | Add new tests behind a feature flag. | Remove feature flags from new tests. Declare old tests as [legacy](https://symfony.com/doc/current/components/phpunit_bridge.html#mark-tests-as-legacy). | Remove legacy tests. | +| Case | During development | On feature release | Next major release | +|------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| +| 🚩 **Feature Flag** | Hide code behind normal [feature flag](https://developer.shopware.com/docs/resources/references/adr/2022-01-20-feature-flags-for-major-versions.html). | Remove the feature flag. | | +| ➕ **New code** | Add `@internal annotation` for new public API. | Remove `@internal` annotation. | | +| ⚪ **Obsolete code** | Add `@feature-deprecated` annotation. | Replace @feature-deprecated with normal `@deprecated` annotation. | Remove old code. | +| 🔴 **Breaking change** | Add `@major-deprecated` annotation. Hide breaking code behind additional major [feature flag](https://developer.shopware.com/docs/resources/references/adr/2022-01-20-feature-flags-for-major-versions.html). Also, create a separate [changelog](https://developer.shopware.com/docs/resources/references/adr/2025-10-28-changelog-release-info-process.html) for the change with the major flag. | | Remove old code. Remove the major feature flag. | +| 🔍 **Tests** | Add new tests behind a feature flag. | Remove feature flags from new tests. Declare old tests as [legacy](https://symfony.com/doc/current/components/phpunit_bridge.html#mark-tests-as-legacy). | Remove legacy tests. | You can also find more detailed information and code examples in the corresponding **[ADR](https://github.com/shopware/shopware/tree/trunk/adr)** for the deprecation strategy.