From bb9bba8dd4b289aefb5d69ab77eaccf59ee6c389 Mon Sep 17 00:00:00 2001 From: Olivier Gorzalka Date: Wed, 4 Nov 2026 09:12:02 +0100 Subject: [PATCH 1/2] chore: release v13.40.0 --- CHANGELOG.md | 7 ++++++- README.md | 2 +- composer.json | 12 ++++++------ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 35691cb2..a8451c40 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,12 @@ All notable changes to the Pollora framework will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased](https://github.com/Pollora/framework/compare/v13.39.3...develop) +## [Unreleased](https://github.com/Pollora/framework/compare/v13.40.0...develop) + +## [v13.40.0](https://github.com/Pollora/framework/compare/v13.39.3...v13.40.0) - 2026-11-04 + +### Changed +- The framework requires Laravel 13.40 (`illuminate/*` `^13.40`) ## [v13.39.3](https://github.com/Pollora/framework/compare/v13.39.2...v13.39.3) - 2026-11-02 diff --git a/README.md b/README.md index 75c920cd..8e2a5306 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ composer create-project pollora/pollora my-project Requirements: - PHP 8.4+ for a new project (the skeleton's lock file ships Symfony 8; this package alone accepts PHP 8.3) -- Laravel 13.39 (Pollora's version numbers follow the Laravel release it is built on) +- Laravel 13.40 (Pollora's version numbers follow the Laravel release it is built on) - WordPress 7.1+ ## Quick start diff --git a/composer.json b/composer.json index c51c69c9..ff3f58f6 100644 --- a/composer.json +++ b/composer.json @@ -24,11 +24,11 @@ "require": { "php": "^8.3", "pollora/helper-overrider": "^1.2", - "illuminate/auth": "^13.39", - "illuminate/support": "^13.39", - "illuminate/database": "^13.39", - "illuminate/routing": "^13.39", - "illuminate/console": "^13.39", + "illuminate/auth": "^13.40", + "illuminate/support": "^13.40", + "illuminate/database": "^13.40", + "illuminate/routing": "^13.40", + "illuminate/console": "^13.40", "pollora/abilities": "^1.0", "pollora/ajax": "^1.1", "pollora/assets": "^0.1", @@ -54,7 +54,7 @@ "coduo/php-humanizer": "5.0.3", "nwidart/laravel-modules": "^13.2", "symfony/process": "^7.4 || ^8.0", - "illuminate/config": "^13.39", + "illuminate/config": "^13.40", "laravel/prompts": "^0.3.26" }, "autoload": { From 6a90ae3b1fc30e3baa8b29907ea5a55cc7a4a84c Mon Sep 17 00:00:00 2001 From: Olivier Gorzalka Date: Wed, 4 Nov 2026 09:36:50 +0100 Subject: [PATCH 2/2] test: type the throwing arrow functions as never, as the current Rector asks --- tests/Feature/Doctor/InstallChecksTest.php | 2 +- .../Infrastructure/Services/DiscoveryRegistrarTest.php | 2 +- tests/Unit/Proxy/WordPressDatabaseTest.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/Feature/Doctor/InstallChecksTest.php b/tests/Feature/Doctor/InstallChecksTest.php index b7b018d8..b596fcf2 100644 --- a/tests/Feature/Doctor/InstallChecksTest.php +++ b/tests/Feature/Doctor/InstallChecksTest.php @@ -201,7 +201,7 @@ function writeLock(string $project, array $patches): void it('is skipped when the site cannot request itself', function (): void { config(['app.url' => 'http://pollora.test']); - Http::fake(fn () => throw new RuntimeException('timeout')); + Http::fake(fn (): never => throw new RuntimeException('timeout')); expect((new PublicRootCheck)->run(RunContext::Http)->status->value)->toBe('skipped'); }); diff --git a/tests/Unit/Discovery/Infrastructure/Services/DiscoveryRegistrarTest.php b/tests/Unit/Discovery/Infrastructure/Services/DiscoveryRegistrarTest.php index b3c9e069..5e4ac434 100644 --- a/tests/Unit/Discovery/Infrastructure/Services/DiscoveryRegistrarTest.php +++ b/tests/Unit/Discovery/Infrastructure/Services/DiscoveryRegistrarTest.php @@ -102,7 +102,7 @@ function createMockRegistrarEngine(): DiscoveryEngineInterface }); it('gracefully handles unresolvable bindings', function (): void { - $this->container->singleton('App\\BrokenDiscovery', fn () => throw new RuntimeException('Cannot resolve')); + $this->container->singleton('App\\BrokenDiscovery', fn (): never => throw new RuntimeException('Cannot resolve')); $engine = createMockRegistrarEngine(); $engine->shouldNotReceive('addDiscovery'); diff --git a/tests/Unit/Proxy/WordPressDatabaseTest.php b/tests/Unit/Proxy/WordPressDatabaseTest.php index 12db0105..a2c7cb6a 100644 --- a/tests/Unit/Proxy/WordPressDatabaseTest.php +++ b/tests/Unit/Proxy/WordPressDatabaseTest.php @@ -143,7 +143,7 @@ public function __construct(public string $dbuser, public string $dbpassword, pu it('throws RuntimeException on mysql_connect', function (): void { $proxy = new WordPressDatabase; - expect(fn () => $proxy->mysql_connect()) + expect(fn (): never => $proxy->mysql_connect()) ->toThrow(RuntimeException::class, 'Using mysql_connect is deprecated'); }); });