From 99b39f0179f72aeba0fb516cadd0ca9fa356de26 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 18 Oct 2026 12:56:40 +0000 Subject: [PATCH 1/4] chore(deps): bump dunglas/frankenphp from 1.12.7-php8.5 to 1.13.0-php8.5 Bumps dunglas/frankenphp from 1.12.7-php8.5 to 1.13.0-php8.5. --- updated-dependencies: - dependency-name: dunglas/frankenphp dependency-version: 1.13.0-php8.5 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b08b9e64..66f2e39c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ #syntax=docker/dockerfile:1 # Versions -FROM dunglas/frankenphp:1.12.7-php8.5 AS frankenphp_upstream +FROM dunglas/frankenphp:1.13.0-php8.5 AS frankenphp_upstream # The different stages of this Dockerfile are meant to be built into separate images # https://docs.docker.com/develop/develop-images/multistage-build/#stop-at-a-specific-build-stage From 90a653556ee3c21c95e29d829869bd425c44b49a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20VIGNAL?= <2380113+froozeify@users.noreply.github.com> Date: Thu, 22 Oct 2026 08:49:29 +0200 Subject: [PATCH 2/4] Update FrankenPHP base image version to 1.13.2 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 66f2e39c..b4f41b40 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ #syntax=docker/dockerfile:1 # Versions -FROM dunglas/frankenphp:1.13.0-php8.5 AS frankenphp_upstream +FROM dunglas/frankenphp:1.13.2-php8.5 AS frankenphp_upstream # The different stages of this Dockerfile are meant to be built into separate images # https://docs.docker.com/develop/develop-images/multistage-build/#stop-at-a-specific-build-stage From 25ff4fd3a843eb62e695cc2644fb9ed51ba50d15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20VIGNAL?= Date: Thu, 22 Oct 2026 08:59:08 +0200 Subject: [PATCH 3/4] Update reference.php --- config/reference.php | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/config/reference.php b/config/reference.php index 2f6204f8..7821adf7 100644 --- a/config/reference.php +++ b/config/reference.php @@ -687,10 +687,10 @@ * signing_algorithm?: scalar|Param|null, // Default: "sha256" * routing?: array, * }, - * remote-event?: bool|array{ // RemoteEvent configuration + * remote_event?: bool|array{ // RemoteEvent configuration * enabled?: bool|Param, // Default: false * }, * json_streamer?: bool|array{ // JSON streamer configuration @@ -1005,6 +1005,7 @@ * } * @psalm-type MonologConfig = array{ * use_microseconds?: scalar|Param|null, // Default: true + * timezone?: string|Param, // The timezone used for the timestamp of every log record (e.g. "UTC" or "Europe/Paris"). Defaults to the PHP default timezone. // Default: null * channels?: list, * handlers?: array, * members?: list, * connection_string?: scalar|Param|null, @@ -1074,6 +1077,7 @@ * connection_timeout?: scalar|Param|null, * persistent?: bool|Param, * message_type?: scalar|Param|null, // Default: 0 + * expand_newlines?: bool|Param, // Default: false * parse_mode?: scalar|Param|null, // Default: null * disable_webpage_preview?: bool|Param|null, // Default: null * disable_notification?: bool|Param|null, // Default: null @@ -1120,7 +1124,7 @@ * database?: scalar|Param|null, // Default: 0 * key_name?: scalar|Param|null, // Default: "monolog_redis" * }, - * predis?: Param|string|array{ + * predis?: Param|string|array{ // Deprecated: The "predis" option is deprecated and ignored, use the "redis" option to configure the Predis client. * id?: scalar|Param|null, * host?: scalar|Param|null, * }, @@ -1129,6 +1133,7 @@ * subject?: scalar|Param|null, * content_type?: scalar|Param|null, // Default: null * headers?: list, + * parameters?: list, * mailer?: scalar|Param|null, // Default: null * email_prototype?: Param|string|array{ * id?: scalar|Param|null, @@ -1755,6 +1760,7 @@ * denormalization_context?: mixed, * collect_denormalization_errors?: mixed, * hydra_context?: mixed, + * jsonld_context?: mixed, * openapi?: mixed, * validation_context?: mixed, * filters?: mixed, @@ -1794,6 +1800,7 @@ * policy?: mixed, * middleware?: mixed, * parameters?: array Date: Thu, 22 Oct 2026 09:10:17 +0200 Subject: [PATCH 4/4] fix: Wrong caddy config --- .github/workflows/ci.yaml | 2 +- docker/frankenphp/Caddyfile | 15 +++++++++++---- docs/options.md | 1 + 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 6ef68162..615d10dd 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -75,7 +75,7 @@ jobs: run: curl -v --insecure --fail-with-body https://localhost - name: Check Mercure reachability - run: curl -vI --insecure --fail-with-body https://localhost/.well-known/mercure?topic=test + run: curl -vI --insecure --fail-with-body https://localhost/.well-known/mercure?match=test - name: Run PHPUnit id: phpunit diff --git a/docker/frankenphp/Caddyfile b/docker/frankenphp/Caddyfile index 74f72644..279df984 100644 --- a/docker/frankenphp/Caddyfile +++ b/docker/frankenphp/Caddyfile @@ -30,10 +30,17 @@ encode zstd br gzip mercure { - # Publisher JWT key - publisher_jwt {env.MERCURE_PUBLISHER_JWT_KEY} {env.MERCURE_PUBLISHER_JWT_ALG} - # Subscriber JWT key - subscriber_jwt {env.MERCURE_SUBSCRIBER_JWT_KEY} {env.MERCURE_SUBSCRIBER_JWT_ALG} + # Named so that every server generated from the site addresses shares the same hub + name narvik + # Trusted token issuer (must match the "iss" claim of the JWTs) + issuer {$MERCURE_ISSUER:narvik} { + publisher { + jwt {env.MERCURE_PUBLISHER_JWT_KEY} {env.MERCURE_PUBLISHER_JWT_ALG} + } + subscriber { + jwt {env.MERCURE_SUBSCRIBER_JWT_KEY} {env.MERCURE_SUBSCRIBER_JWT_ALG} + } + } # Allow anonymous subscribers (double-check that it's what you want) anonymous # Enable the subscription API (double-check that it's what you want) diff --git a/docs/options.md b/docs/options.md index 1834dae7..9540cd6f 100644 --- a/docs/options.md +++ b/docs/options.md @@ -110,6 +110,7 @@ to inject options block, directive or configuration. | `MERCURE_PUBLISHER_JWT_ALG` | the JWT algorithm to use for publishers | `HS256` | | `MERCURE_SUBSCRIBER_JWT_KEY` | the JWT key to use for subscribers | | | `MERCURE_SUBSCRIBER_JWT_ALG` | the JWT algorithm to use for subscribers | `HS256` | +| `MERCURE_ISSUER` | the Mercure token issuer id, must match the `iss` claim of the JWTs (default: `narvik`) | | `MERCURE_EXTRA_DIRECTIVES` | a list of extra [Mercure directives](https://mercure.rocks/docs/hub/config), one per line | `transport bolt { path /data/mercure.db }` |