Adopt Laravel's Image facade for media processing, upgrade Intervention to v4

Laravel 13's Image facade wraps Intervention Image v4 internally, so
switching our upload width probe and resize job/command to it required
bumping intervention/image ^3 -> ^4 (and its intervention/gif ^5
dependency). Removes our own ImageManager container binding and
config/image.php in favour of Laravel's built-in driver resolution.

Also fixes a latent filename mismatch in ProcessMediaJobTest that Pint's
stricter typing on the new Image API turned into a hard TypeError, and
tidies config/flare.php to use imported class names instead of FQCNs.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Sorsgn85nw7uQyRMNvzyD
This commit is contained in:
Jonny Barnes 2026-08-01 17:07:38 +01:00
commit 31c49ac3fc
Signed by: jonny
SSH key fingerprint: SHA256:CTuSlns5U7qlD9jqHvtnVmfYV3Zwl2Z7WnJ4/dqOaL8
9 changed files with 54 additions and 89 deletions

40
composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "01ba04ab77c167a38ed826d7193ba5ef",
"content-hash": "23983a4e6a8e79cb9636fe8f0e604eb7",
"packages": [
{
"name": "aws/aws-crt-php",
@ -1556,26 +1556,26 @@
},
{
"name": "intervention/gif",
"version": "4.2.4",
"version": "5.0.1",
"source": {
"type": "git",
"url": "https://github.com/Intervention/gif.git",
"reference": "c3598a16ebe7690cd55640c44144a9df383ea73c"
"reference": "bb395af960deffe64d70c976b4df9283f68e762d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Intervention/gif/zipball/c3598a16ebe7690cd55640c44144a9df383ea73c",
"reference": "c3598a16ebe7690cd55640c44144a9df383ea73c",
"url": "https://api.github.com/repos/Intervention/gif/zipball/bb395af960deffe64d70c976b4df9283f68e762d",
"reference": "bb395af960deffe64d70c976b4df9283f68e762d",
"shasum": ""
},
"require": {
"php": "^8.1"
"php": "^8.3"
},
"require-dev": {
"phpstan/phpstan": "^2.1",
"phpunit/phpunit": "^10.0 || ^11.0 || ^12.0",
"phpunit/phpunit": "^12.0",
"slevomat/coding-standard": "~8.0",
"squizlabs/php_codesniffer": "^3.8"
"squizlabs/php_codesniffer": "^4"
},
"type": "library",
"autoload": {
@ -1594,7 +1594,7 @@
"homepage": "https://intervention.io/"
}
],
"description": "Native PHP GIF Encoder/Decoder",
"description": "PHP GIF Encoder/Decoder",
"homepage": "https://github.com/intervention/gif",
"keywords": [
"animation",
@ -1604,7 +1604,7 @@
],
"support": {
"issues": "https://github.com/Intervention/gif/issues",
"source": "https://github.com/Intervention/gif/tree/4.2.4"
"source": "https://github.com/Intervention/gif/tree/5.0.1"
},
"funding": [
{
@ -1620,31 +1620,31 @@
"type": "ko_fi"
}
],
"time": "2026-01-04T09:27:23+00:00"
"time": "2026-05-03T06:04:47+00:00"
},
{
"name": "intervention/image",
"version": "3.11.8",
"version": "4.2.0",
"source": {
"type": "git",
"url": "https://github.com/Intervention/image.git",
"reference": "cf04c8dd245697f701057c13d4bfe140d584e738"
"reference": "830907fc5397dfc2a51a4e90322d586989fc8364"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Intervention/image/zipball/cf04c8dd245697f701057c13d4bfe140d584e738",
"reference": "cf04c8dd245697f701057c13d4bfe140d584e738",
"url": "https://api.github.com/repos/Intervention/image/zipball/830907fc5397dfc2a51a4e90322d586989fc8364",
"reference": "830907fc5397dfc2a51a4e90322d586989fc8364",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"intervention/gif": "^4.2",
"php": "^8.1"
"intervention/gif": "^5",
"php": "^8.3"
},
"require-dev": {
"mockery/mockery": "^1.6",
"phpstan/phpstan": "^2.1",
"phpunit/phpunit": "^10.0 || ^11.0 || ^12.0",
"phpunit/phpunit": "^12.0",
"slevomat/coding-standard": "~8.0",
"squizlabs/php_codesniffer": "^4"
},
@ -1680,7 +1680,7 @@
],
"support": {
"issues": "https://github.com/Intervention/image/issues",
"source": "https://github.com/Intervention/image/tree/3.11.8"
"source": "https://github.com/Intervention/image/tree/4.2.0"
},
"funding": [
{
@ -1696,7 +1696,7 @@
"type": "ko_fi"
}
],
"time": "2026-05-01T08:20:10+00:00"
"time": "2026-07-09T13:07:14+00:00"
},
{
"name": "jonnybarnes/indieweb",