diff --git a/.github/workflows/api_refs.yaml b/.github/workflows/api_refs.yaml index cc51f8b54a..01a6feed9f 100644 --- a/.github/workflows/api_refs.yaml +++ b/.github/workflows/api_refs.yaml @@ -124,6 +124,9 @@ jobs: fi composer config --global http-basic.updates.ibexa.co $SATIS_NETWORK_KEY $SATIS_NETWORK_TOKEN + git config --global user.name "${GITHUB_ACTOR}" + git config --global user.email "${GITHUB_ACTOR}@users.noreply.github.com" + if [[ '4.6' != $BASE_BRANCH ]]; then tools/api_refs/api_refs.sh # Fix escape character: @@ -140,8 +143,6 @@ jobs: env: BASE_BRANCH: ${{ steps.version_and_branches.outputs.base_branch }} run: | - git config --global user.name "${GITHUB_ACTOR}" - git config --global user.email "${GITHUB_ACTOR}@users.noreply.github.com" git add docs/api/php_api/php_api_reference/ if [[ '4.6' != $BASE_BRANCH ]]; then git add tools/api_refs/.phpdoc/template/package-edition-map.twig diff --git a/docs/ai/mcp/mcp_config.md b/docs/ai/mcp/mcp_config.md index 8eb974bad3..1f0e8a4210 100644 --- a/docs/ai/mcp/mcp_config.md +++ b/docs/ai/mcp/mcp_config.md @@ -90,7 +90,7 @@ php bin/console debug:router --siteaccess= ibexa.mcp` | [`instructions`](https://modelcontextprotocol.io/specification/2025-11-25/schema#initializeresult-instructions) | string | No | `null` | Prompt-like instructions provided to the AI agent | | [`tools`](#tool-configuration) | array | No | `[]` | List of tool classes | | [`discovery_cache`](#discovery-cache) | string | Yes | | PSR-6 or PSR-16 cache pool service identifier | -| [`session`](#session-storage) | object | Yes | | Session storage configuration | +| [`session`](#session-storage) | object | No | `{ type: psr16,`
`service: ibexa.cache_pool }` | Session storage configuration | | [`allowed_hosts`](#allowed-hosts) | array | No | `[`
`'localhost',`
`'127.0.0.1',`
`'[::1]'`
`]` | Accepted `Host` headers | !!! note "New servers are disabled by default" @@ -122,7 +122,8 @@ MCP Servers LTS Update comes with the following **experimental** built-in tools: - `get_content_type` - gets a content type by its ID. - `get_content_type_by_identifier` - gets a content type by its identifier. - `get_content_type_list` - gets content types by their IDs. - - `create_content_type` - creates a content type draft. + - `create_content_type` - creates a draft for a new content type. + - `create_content_type_draft` - creates a draft for an existing content type. - `get_content_type_draft` - gets a content type draft by content type ID. - `publish_content_type_draft` - publishes a content type draft by content type ID. - `Ibexa\Mcp\Tool\ContentType\FieldDefinitionTools` @@ -186,19 +187,19 @@ MCP servers store session data in their own way. #### Options -| Option | Type | Default | Description | -|-------------|---------|------------|-----------------------------------------------------------| -| `type` | enum | (required) | Session store type: [`psr16`](#psr-16) or [`file`](#file) | -| `service` | string | `null` | PSR-16 cache service ID for the `psr16` session store | -| `prefix` | string | `mcp_` | Key prefix for the `psr16` session store | -| `directory` | string | `null` | Directory path for the `file` session store | -| `ttl` | integer | `3600` | Session TTL in seconds | +| Option | Type | Default | Description | +|-------------|---------|--------------------|----------------------------------------------------------------| +| `type` | enum | `psr16` | Session store type: [`psr16`](#psr-16) or [`file`](#file) | +| `service` | string | `ibexa.cache_pool` | PSR-16 or PSR-6 cache service ID for the `psr16` session store | +| `prefix` | string | `mcp_` | Key prefix for the `psr16` session store | +| `directory` | string | `null` | Directory path for the `file` session store | +| `ttl` | integer | `3600` | Session TTL in seconds | In production, it’s recommended to use [`psr16`](#psr-16) with Redis/Valkey, like with [regular sessions](clustering.md#shared-sessions). #### PSR-16 -Sessions are stored with a PSR-16 compatible cache implementation. +Sessions are stored with a PSR-16 or PSR-6 compatible cache implementation. It requires that a `service` option points to a valid cache service ID. Optionally, you could use a more specific `prefix` option than the default `mcp_` to avoid key collisions with other cache usages. Such setup is suitable for production environments. diff --git a/docs/commerce/order_management/configure_order_management.md b/docs/commerce/order_management/configure_order_management.md index 05be3fa4ea..8e08c03840 100644 --- a/docs/commerce/order_management/configure_order_management.md +++ b/docs/commerce/order_management/configure_order_management.md @@ -13,7 +13,7 @@ When you work with your Commerce implementation, you can modify and customize th ## Configure order processing workflow -Order processing workflow relies on a [Symfony Workflow]([[= symfony_doc =]]/components/workflow.html). +Order processing workflow relies on a [Symfony Workflow]([[= symfony_doc =]]/workflow.html). Each transition represents a separate order processing step. ### Default order processing configuration diff --git a/docs/commerce/payment/configure_payment.md b/docs/commerce/payment/configure_payment.md index 1bb7cdc5b0..eb2347031f 100644 --- a/docs/commerce/payment/configure_payment.md +++ b/docs/commerce/payment/configure_payment.md @@ -13,7 +13,7 @@ When you work with your Commerce implementation, you can review and modify the p ## Configure payment workflow -Payment workflow relies on a [Symfony Workflow]([[= symfony_doc =]]/components/workflow.html). +Payment workflow relies on a [Symfony Workflow]([[= symfony_doc =]]/workflow.html). Each transition represents a separate payment step. ### Default payment workflow configuration diff --git a/docs/commerce/shipping_management/configure_shipment.md b/docs/commerce/shipping_management/configure_shipment.md index 9bc88d3915..69b2140091 100644 --- a/docs/commerce/shipping_management/configure_shipment.md +++ b/docs/commerce/shipping_management/configure_shipment.md @@ -13,7 +13,7 @@ When you work with your Commerce implementation, you can review and modify the s ## Configure shipment workflow -Shipment workflow relies on a [Symfony Workflow]([[= symfony_doc =]]/components/workflow.html). +Shipment workflow relies on a [Symfony Workflow]([[= symfony_doc =]]/workflow.html). Each transition represents a separate shipment step. The default fallback workflow is `ibexa_shipment`, which is prepended at bundle level. diff --git a/docs/commerce/transactional_emails/transactional_emails.md b/docs/commerce/transactional_emails/transactional_emails.md index 275c486b71..23df8abdca 100644 --- a/docs/commerce/transactional_emails/transactional_emails.md +++ b/docs/commerce/transactional_emails/transactional_emails.md @@ -5,7 +5,7 @@ edition: commerce # Transactional emails -Transactional emails are messages that [[= product_name =]] can send through [Actito](https://www.actito.com/en-BE/) gateway to your end-users to notify them about changes in the status of various actions taken in relation to your commerce presence. +Transactional emails are messages that [[= product_name =]] can send through [Actito](https://actito.com/en) gateway to your end-users to notify them about changes in the status of various actions taken in relation to your commerce presence. By default, notifications are sent in relation to the following events, to an email address of the end-user who has originated these events: @@ -40,7 +40,7 @@ Symfony Flex installs and activates the package. ### Configure Actito integration -Before you can start configuring the notifier engine to process and dispatch notifications to be forwarded as transactional emails, you must first obtain and configure an [Actito license](https://www.actito.com/en-BE/pricing/nk). +Before you can start configuring the notifier engine to process and dispatch notifications to be forwarded as transactional emails, you must first obtain and configure an [Actito license](https://actito.com/en/pricing/). Once you gain access to the Actito dashboard: diff --git a/docs/discounts/discounts_api.md b/docs/discounts/discounts_api.md index 640253b016..544391cc21 100644 --- a/docs/discounts/discounts_api.md +++ b/docs/discounts/discounts_api.md @@ -29,7 +29,7 @@ Discounts are applied in two places, listed in the [`DiscountType`](/api/php_api Regardless of activation place, discounts always apply to products and reduce their base price. To define when a discount activates and how the price is reduced, use rules and conditions. -They use the [Symfony Expression language]([[= symfony_doc=]]/components/expression_language.html) to express their logic. +They use the [Symfony Expression language]([[= symfony_doc=]]/expression_language.html) to express their logic. ### Rules diff --git a/docs/discounts/extend_discounts.md b/docs/discounts/extend_discounts.md index 3b34494d21..36180af222 100644 --- a/docs/discounts/extend_discounts.md +++ b/docs/discounts/extend_discounts.md @@ -20,7 +20,7 @@ Together with the existing [events](event_reference.md) and the [Discounts PHP A With custom [conditions](discounts_api.md#conditions) and [rules](discounts_api.md#rules) you can create more advanced discounts that apply only in specific scenarios. -For both of them, you need to specify their logic with [Symfony's expression language](https://symfony.com/doc/current/components/expression_language.html). +For both of them, you need to specify their logic with [Symfony's expression language]([[= symfony_doc =]]/expression_language.html). ### Available expressions diff --git a/docs/ibexa_products/ibexa_commerce.md b/docs/ibexa_products/ibexa_commerce.md index 67392155bf..e7e4d0a1bc 100644 --- a/docs/ibexa_products/ibexa_commerce.md +++ b/docs/ibexa_products/ibexa_commerce.md @@ -87,7 +87,7 @@ You can set up your search engine using [[= product_name_com =]] to help clients #### Transactional emails -Commerce allows you to send transactional emails - messages that [[= product_name_base =]] can send through the [Actito](https://www.actito.com/en-BE/) gateway to your end-users. +Commerce allows you to send transactional emails - messages that [[= product_name_base =]] can send through the [Actito](https://actito.com/en) gateway to your end-users. These emails include notifications about changes in the status of various actions taken in relation to your commerce presence. With this feature you can also [create email campaigns](transactional_emails.md#create-email-campaigns) to engage users and increase sales. diff --git a/docs/infrastructure_and_maintenance/cache/persistence_cache.md b/docs/infrastructure_and_maintenance/cache/persistence_cache.md index 66b1d11955..4c4f43ca93 100644 --- a/docs/infrastructure_and_maintenance/cache/persistence_cache.md +++ b/docs/infrastructure_and_maintenance/cache/persistence_cache.md @@ -46,7 +46,7 @@ To see where and how to contribute additional caches, refer to the [source code] !!! note Current implementation uses [Symfony application cache]([[= symfony_doc =]]/cache.html#system-cache-and-application-cache). - It technically supports the following cache backends: [APCu, Array, Chain, Doctrine, Filesystem, PDO & Doctrine DBAL, Php Array, Proxy, Redis]([[= symfony_doc =]]/components/cache/cache_pools.html#creating-cache-pools). + It technically supports the following cache backends: [APCu, Array, Chain, Doctrine, Filesystem, PDO & Doctrine DBAL, Php Array, Proxy, Redis]([[= symfony_doc =]]/cache.html#available-cache-adapters). [[= product_name =]] officially supports only using Filesystem for single server and Redis/Valkey for clustered setups. Use of [Redis/Valkey](#redisvalkey) as shared cache backend is a requirement for use in clustering setup. @@ -267,7 +267,7 @@ $pool->save($cacheItem); return $myObject; ``` -For more info on usage, see [Symfony Cache's documentation]([[= symfony_doc =]]/components/cache.html). +For more info on usage, see [Symfony Cache's documentation]([[= symfony_doc =]]/cache.html). ### Clearing persistence cache diff --git a/docs/templating/templates/templates.md b/docs/templating/templates/templates.md index 820453b77f..0b582f5598 100644 --- a/docs/templating/templates/templates.md +++ b/docs/templating/templates/templates.md @@ -93,7 +93,7 @@ twig_variables: {{ custom_variable.nested_variable }} ``` -You can use [Symfony Expression language]([[= symfony_doc =]]/components/expression_language.html) to access other values, for example: +You can use [Symfony Expression language]([[= symfony_doc =]]/expression_language.html) to access other values, for example: ``` yaml params: diff --git a/docs/update_and_migration/from_2.5/to_3.3.md b/docs/update_and_migration/from_2.5/to_3.3.md index 0d8992a0b7..83d44e3455 100644 --- a/docs/update_and_migration/from_2.5/to_3.3.md +++ b/docs/update_and_migration/from_2.5/to_3.3.md @@ -10,7 +10,7 @@ Before you start this procedure, make sure you have completed the previous step, ## 5. Update to v3.3 -[[= product_name =]] v3.3 uses [Symfony Flex]([[= symfony_doc =]]/quick_tour/flex_recipes.html). +[[= product_name =]] v3.3 uses [Symfony Flex](https://symfony.com/tour/flex-recipes). When updating from v3.2 to v3.3, you need to follow a special update procedure. !!! note diff --git a/tools/api_refs/api_refs.sh b/tools/api_refs/api_refs.sh index 26efb47fe2..7899fbc48a 100755 --- a/tools/api_refs/api_refs.sh +++ b/tools/api_refs/api_refs.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash set +x; +set -e; AUTH_JSON=$(realpath ${1:-~/.composer/auth.json}); # Path to an auth.json file allowing to install the targeted edition and version PHP_API_OUTPUT_DIR=${2:-./docs/api/php_api/php_api_reference}; # Path to the directory where the built PHP API Reference is hosted @@ -10,7 +11,7 @@ REST_API_OPENAPI_FILE_JSON=${5:-./docs/api/rest_api/rest_api_reference/openapi.j DXP_EDITION='commerce'; # Edition from and for which the Reference is built DXP_VERSION="${DXP_VERSION:-5.0.*}"; # Version from and for which the Reference is built; can be overridden by the DXP_VERSION env var (e.g. v5.0.x-dev for a dev build) -DXP_ADD_ONS=(automated-translation rector integrated-help fieldtype-richtext-rte connector-anthropic connector-gemini shopping-list cdp connector-raptor connector-quable mcp); # Packages not included in $DXP_EDITION but added to the Reference, listed without their vendor "ibexa" +DXP_ADD_ONS=(automated-translation rector integrated-help fieldtype-richtext-rte connector-anthropic connector-gemini shopping-list cdp connector-raptor connector-quable mcp translations-management); # Packages not included in $DXP_EDITION but added to the Reference, listed without their vendor "ibexa" DXP_EDITIONS=(oss headless experience commerce); # Available editions ordered by ascending capabilities SF_VERSION='7.4'; # Symfony version used by Ibexa DXP PHPDOC_VERSION='3.10.0'; # Version of phpDocumentor used to build the Reference