From 634bb1ba79229a5e1e528e9e40b5df6bfa3f5c7a Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Thu, 19 Feb 2026 16:32:24 +0000 Subject: [PATCH 1/9] Reapply "update dependencies" This reverts commit bb5522dc57bd31caf248952da06dc50390bf0fd9. --- composer.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.json b/composer.json index df7fd2f..6a1a85b 100644 --- a/composer.json +++ b/composer.json @@ -4,15 +4,15 @@ "require": { "php": "^8.4", "friendsofphp/php-cs-fixer": "^3.92.5", - "laravel/framework": "^12.0", + "laravel/framework": "^12.0 || ^13.0", "league/flysystem-aws-s3-v3": "~1.0 || ~3.0", "mustangostang/spyc": "dev-master#dfd9aadc1f5224065d55b42b712c7e99a50a3f4d" }, "require-dev": { - "statamic/cms": "^6.0.0", + "statamic/cms": "^6.0", "mockery/mockery": "^1.4.4", - "orchestra/testbench": "^10.0", - "phpunit/phpunit": "^11.0" + "orchestra/testbench": "^10.0 || ^11.0", + "phpunit/phpunit": "^11.0 || ^12.0" }, "autoload": { "psr-4": { From 8f90153d785b3ff4808abe98c201433bff2fd530 Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Thu, 19 Feb 2026 16:32:24 +0000 Subject: [PATCH 2/9] Reapply "update testing matrix" This reverts commit edcdf17cfc0c70f38510b8b13fd297057b5f85df. --- .github/workflows/tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 88c2465..de87eac 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -15,13 +15,13 @@ jobs: strategy: matrix: php: [8.4, 8.5] - laravel: [12.*] + laravel: [12.*, 13.*] stability: [prefer-lowest, prefer-stable] os: [ubuntu-latest] include: - os: windows-latest php: 8.5 - laravel: 12.* + laravel: 13.* stability: prefer-stable name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - ${{ matrix.os }} From e4f53fd1ffff9d45c1db6065feaac455caa7c409 Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Thu, 19 Feb 2026 16:35:14 +0000 Subject: [PATCH 3/9] wip --- composer.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 6a1a85b..d6796dd 100644 --- a/composer.json +++ b/composer.json @@ -42,5 +42,7 @@ "allow-plugins": { "pixelfear/composer-dist-plugin": true } - } + }, + "minimum-stability": "dev", + "prefer-stable": true } From 5302a89e780ee054b73b26f65872a504fa71914c Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Mon, 9 Mar 2026 10:06:45 +0000 Subject: [PATCH 4/9] bump `statamic/cms` --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index d6796dd..3b73027 100644 --- a/composer.json +++ b/composer.json @@ -9,7 +9,7 @@ "mustangostang/spyc": "dev-master#dfd9aadc1f5224065d55b42b712c7e99a50a3f4d" }, "require-dev": { - "statamic/cms": "^6.0", + "statamic/cms": "^6.5", "mockery/mockery": "^1.4.4", "orchestra/testbench": "^10.0 || ^11.0", "phpunit/phpunit": "^11.0 || ^12.0" From 2cee95106b99cbed78e3b84149cb365dec0533e2 Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Mon, 9 Mar 2026 10:16:46 +0000 Subject: [PATCH 5/9] wip --- tests/MigrateAssetContainerTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/MigrateAssetContainerTest.php b/tests/MigrateAssetContainerTest.php index 6dece85..79abdb5 100644 --- a/tests/MigrateAssetContainerTest.php +++ b/tests/MigrateAssetContainerTest.php @@ -309,7 +309,7 @@ public function it_migrates_disk_with_local_driver() 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', + 'url' => rtrim((string) env('APP_URL'), '/').'/storage', 'visibility' => 'public', 'throw' => false, 'report' => false, From d22bb419eb7d8d5a6e123b5ffb033e5b5612d5ef Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Mon, 9 Mar 2026 10:46:34 +0000 Subject: [PATCH 6/9] Revert "wip" This reverts commit 2cee95106b99cbed78e3b84149cb365dec0533e2. --- tests/MigrateAssetContainerTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/MigrateAssetContainerTest.php b/tests/MigrateAssetContainerTest.php index 79abdb5..6dece85 100644 --- a/tests/MigrateAssetContainerTest.php +++ b/tests/MigrateAssetContainerTest.php @@ -309,7 +309,7 @@ public function it_migrates_disk_with_local_driver() 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), - 'url' => rtrim((string) env('APP_URL'), '/').'/storage', + 'url' => env('APP_URL').'/storage', 'visibility' => 'public', 'throw' => false, 'report' => false, From f977d95cbbefc2d27e49a50b46a8387da9d3a12e Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Mon, 9 Mar 2026 10:51:47 +0000 Subject: [PATCH 7/9] wip --- tests/MigrateAssetContainerTest.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/MigrateAssetContainerTest.php b/tests/MigrateAssetContainerTest.php index 6dece85..b418b48 100644 --- a/tests/MigrateAssetContainerTest.php +++ b/tests/MigrateAssetContainerTest.php @@ -309,7 +309,7 @@ public function it_migrates_disk_with_local_driver() 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', + 'url' => rtrim((string) env('APP_URL'), '/').'/storage', 'visibility' => 'public', 'throw' => false, 'report' => false, @@ -717,6 +717,10 @@ protected function assertFilesystemConfigFileContains($content) $irrelevantConfig = "'default' => env('FILESYSTEM_DRIVER', 'local'),"; } + if (version_compare(app()->version(), '12.45', '<')) { + $config = str_replace("'url' => rtrim((string) env('APP_URL'), '/').'/storage',", "'url' => env('APP_URL').'/storage',", $config); + } + // Assert valid PHP array. $this->assertEquals('array', gettype(include $configPath)); From 4010a7e37957ca177b2fe565cc64947b5d1c8194 Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Mon, 9 Mar 2026 13:52:37 +0000 Subject: [PATCH 8/9] wip --- tests/MigrateAssetContainerTest.php | 43 +++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/tests/MigrateAssetContainerTest.php b/tests/MigrateAssetContainerTest.php index b418b48..89b8b2a 100644 --- a/tests/MigrateAssetContainerTest.php +++ b/tests/MigrateAssetContainerTest.php @@ -380,7 +380,7 @@ public function it_migrates_disk_with_s3_driver() 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', + 'url' => rtrim((string) env('APP_URL'), '/').'/storage', 'visibility' => 'public', 'throw' => false, 'report' => false, @@ -450,7 +450,7 @@ public function it_migrates_disk_with_terser_key_when_assets_already_exists() 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', + 'url' => rtrim((string) env('APP_URL'), '/').'/storage', 'visibility' => 'public', 'throw' => false, 'report' => false, @@ -526,7 +526,7 @@ public function it_migrates_multiple_disks_with_terser_keys_only() 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', + 'url' => rtrim((string) env('APP_URL'), '/').'/storage', 'visibility' => 'public', 'throw' => false, 'report' => false, @@ -633,7 +633,7 @@ public function it_overwrites_disks_when_forced() 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', + 'url' => rtrim((string) env('APP_URL'), '/').'/storage', 'visibility' => 'public', 'throw' => false, 'report' => false, @@ -717,10 +717,6 @@ protected function assertFilesystemConfigFileContains($content) $irrelevantConfig = "'default' => env('FILESYSTEM_DRIVER', 'local'),"; } - if (version_compare(app()->version(), '12.45', '<')) { - $config = str_replace("'url' => rtrim((string) env('APP_URL'), '/').'/storage',", "'url' => env('APP_URL').'/storage',", $config); - } - // Assert valid PHP array. $this->assertEquals('array', gettype(include $configPath)); @@ -817,6 +813,17 @@ protected function normalizeLocalConfig($config) ], EOT; + // Laravel 13+ + $variants[] = <<<'EOT' + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app/private'), + 'serve' => false, + 'throw' => false, + 'report' => false, + ], +EOT; + // Current version $current = <<<'EOT' 'local' => [ @@ -847,7 +854,7 @@ protected function normalizePublicConfig($config) 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', + 'url' => rtrim((string) env('APP_URL'), '/').'/storage', 'visibility' => 'public', ], EOT; @@ -857,18 +864,30 @@ protected function normalizePublicConfig($config) 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', + 'url' => rtrim((string) env('APP_URL'), '/').'/storage', 'visibility' => 'public', 'throw' => false, ], EOT; - // Current version + // Up until Laravel 12.44 + $variants[] = <<<'EOT' + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => rtrim((string) env('APP_URL'), '/').'/storage', + 'visibility' => 'public', + 'throw' => false, + 'report' => false, + ], +EOT; + + // Current version (Laravel 12.45+) $current = <<<'EOT' 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', + 'url' => rtrim((string) env('APP_URL'), '/').'/storage', 'visibility' => 'public', 'throw' => false, 'report' => false, From 88e2ccb80ca763b6ec9a986c7aa459164cbe5efa Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Mon, 9 Mar 2026 14:08:28 +0000 Subject: [PATCH 9/9] wip --- tests/MigrateAssetContainerTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/MigrateAssetContainerTest.php b/tests/MigrateAssetContainerTest.php index 89b8b2a..3e06334 100644 --- a/tests/MigrateAssetContainerTest.php +++ b/tests/MigrateAssetContainerTest.php @@ -854,7 +854,7 @@ protected function normalizePublicConfig($config) 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), - 'url' => rtrim((string) env('APP_URL'), '/').'/storage', + 'url' => env('APP_URL').'/storage', 'visibility' => 'public', ], EOT; @@ -864,7 +864,7 @@ protected function normalizePublicConfig($config) 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), - 'url' => rtrim((string) env('APP_URL'), '/').'/storage', + 'url' => env('APP_URL').'/storage', 'visibility' => 'public', 'throw' => false, ], @@ -875,7 +875,7 @@ protected function normalizePublicConfig($config) 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), - 'url' => rtrim((string) env('APP_URL'), '/').'/storage', + 'url' => env('APP_URL').'/storage', 'visibility' => 'public', 'throw' => false, 'report' => false,