From 4f6d081880658ae87e7d3e3c5fb4c3f65439bd32 Mon Sep 17 00:00:00 2001
From: Felix Yeung <19355619+imfelixyeung@users.noreply.github.com>
Date: Wed, 26 Aug 2026 23:16:12 +0100
Subject: [PATCH 1/3] chore(deps): bump composer.lock
---
composer.lock | 145 +++++++++++++++++++++++++-------------------------
1 file changed, 73 insertions(+), 72 deletions(-)
diff --git a/composer.lock b/composer.lock
index 0872999..ef587e1 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1265,16 +1265,16 @@
},
{
"name": "symfony/console",
- "version": "v7.4.14",
+ "version": "v7.4.17",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "92f58bc4bf97a92ed1b9f367f0cd44f20bde0e87"
+ "reference": "962e18f09ebe68a49039b4c82fc0ea4871824fca"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/92f58bc4bf97a92ed1b9f367f0cd44f20bde0e87",
- "reference": "92f58bc4bf97a92ed1b9f367f0cd44f20bde0e87",
+ "url": "https://api.github.com/repos/symfony/console/zipball/962e18f09ebe68a49039b4c82fc0ea4871824fca",
+ "reference": "962e18f09ebe68a49039b4c82fc0ea4871824fca",
"shasum": ""
},
"require": {
@@ -1339,7 +1339,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v7.4.14"
+ "source": "https://github.com/symfony/console/tree/v7.4.17"
},
"funding": [
{
@@ -1359,7 +1359,7 @@
"type": "tidelift"
}
],
- "time": "2026-06-16T11:50:14+00:00"
+ "time": "2026-08-21T12:09:28+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -1434,16 +1434,16 @@
},
{
"name": "symfony/finder",
- "version": "v7.4.14",
+ "version": "v7.4.17",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "13b38720174286f55d1761152b575a8d1436fc25"
+ "reference": "5ce28827081f6d1f0c32eaf3882750f19cb5bbe6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/13b38720174286f55d1761152b575a8d1436fc25",
- "reference": "13b38720174286f55d1761152b575a8d1436fc25",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/5ce28827081f6d1f0c32eaf3882750f19cb5bbe6",
+ "reference": "5ce28827081f6d1f0c32eaf3882750f19cb5bbe6",
"shasum": ""
},
"require": {
@@ -1478,7 +1478,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v7.4.14"
+ "source": "https://github.com/symfony/finder/tree/v7.4.17"
},
"funding": [
{
@@ -1498,7 +1498,7 @@
"type": "tidelift"
}
],
- "time": "2026-06-27T08:31:18+00:00"
+ "time": "2026-08-21T12:09:28+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -1585,16 +1585,16 @@
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.38.1",
+ "version": "v1.41.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "e9247d281d694a5120554d9afaf54e070e88a603"
+ "reference": "bb899c1db0aa8127dc3afe8cda4a67eb24915f8d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/e9247d281d694a5120554d9afaf54e070e88a603",
- "reference": "e9247d281d694a5120554d9afaf54e070e88a603",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/bb899c1db0aa8127dc3afe8cda4a67eb24915f8d",
+ "reference": "bb899c1db0aa8127dc3afe8cda4a67eb24915f8d",
"shasum": ""
},
"require": {
@@ -1643,7 +1643,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.38.1"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.41.0"
},
"funding": [
{
@@ -1663,20 +1663,20 @@
"type": "tidelift"
}
],
- "time": "2026-05-26T05:58:03+00:00"
+ "time": "2026-07-28T08:25:59+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.38.0",
+ "version": "v1.42.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b"
+ "reference": "aa20edea75bd9c48cfecc8360922e5a6e5c44502"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/2d446c214bdbe5b71bde5011b060a05fece3ae6b",
- "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/aa20edea75bd9c48cfecc8360922e5a6e5c44502",
+ "reference": "aa20edea75bd9c48cfecc8360922e5a6e5c44502",
"shasum": ""
},
"require": {
@@ -1728,7 +1728,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.38.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.42.0"
},
"funding": [
{
@@ -1748,7 +1748,7 @@
"type": "tidelift"
}
],
- "time": "2026-05-25T13:48:31+00:00"
+ "time": "2026-08-07T06:33:24+00:00"
},
{
"name": "symfony/polyfill-mbstring",
@@ -1920,16 +1920,16 @@
},
{
"name": "symfony/process",
- "version": "v7.4.13",
+ "version": "v7.4.17",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "f5804be144caceb570f6747519999636b664f24c"
+ "reference": "058d17fc284cce14efb2385783b55014a461b176"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/f5804be144caceb570f6747519999636b664f24c",
- "reference": "f5804be144caceb570f6747519999636b664f24c",
+ "url": "https://api.github.com/repos/symfony/process/zipball/058d17fc284cce14efb2385783b55014a461b176",
+ "reference": "058d17fc284cce14efb2385783b55014a461b176",
"shasum": ""
},
"require": {
@@ -1961,7 +1961,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v7.4.13"
+ "source": "https://github.com/symfony/process/tree/v7.4.17"
},
"funding": [
{
@@ -1981,7 +1981,7 @@
"type": "tidelift"
}
],
- "time": "2026-05-23T16:05:06+00:00"
+ "time": "2026-08-21T17:40:08+00:00"
},
{
"name": "symfony/service-contracts",
@@ -2072,16 +2072,16 @@
},
{
"name": "symfony/string",
- "version": "v7.4.13",
+ "version": "v7.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "961683010db3b27ec6ebcd7308e6e1ee8fa7ffde"
+ "reference": "e394af32256bf9e7bf80849d95e589167c10097b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/961683010db3b27ec6ebcd7308e6e1ee8fa7ffde",
- "reference": "961683010db3b27ec6ebcd7308e6e1ee8fa7ffde",
+ "url": "https://api.github.com/repos/symfony/string/zipball/e394af32256bf9e7bf80849d95e589167c10097b",
+ "reference": "e394af32256bf9e7bf80849d95e589167c10097b",
"shasum": ""
},
"require": {
@@ -2139,7 +2139,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v7.4.13"
+ "source": "https://github.com/symfony/string/tree/v7.4.15"
},
"funding": [
{
@@ -2159,20 +2159,20 @@
"type": "tidelift"
}
],
- "time": "2026-05-23T15:23:29+00:00"
+ "time": "2026-07-28T07:33:02+00:00"
},
{
"name": "symfony/uid",
- "version": "v7.4.9",
+ "version": "v7.4.17",
"source": {
"type": "git",
"url": "https://github.com/symfony/uid.git",
- "reference": "2676b524340abcfe4d6151ec698463cebafee439"
+ "reference": "69d732355a139c6f8881337d28515aa01f12b8be"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/uid/zipball/2676b524340abcfe4d6151ec698463cebafee439",
- "reference": "2676b524340abcfe4d6151ec698463cebafee439",
+ "url": "https://api.github.com/repos/symfony/uid/zipball/69d732355a139c6f8881337d28515aa01f12b8be",
+ "reference": "69d732355a139c6f8881337d28515aa01f12b8be",
"shasum": ""
},
"require": {
@@ -2217,7 +2217,7 @@
"uuid"
],
"support": {
- "source": "https://github.com/symfony/uid/tree/v7.4.9"
+ "source": "https://github.com/symfony/uid/tree/v7.4.17"
},
"funding": [
{
@@ -2237,20 +2237,20 @@
"type": "tidelift"
}
],
- "time": "2026-04-30T15:19:22+00:00"
+ "time": "2026-08-11T07:38:58+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v7.4.14",
+ "version": "v7.4.17",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "9a3a56a4a1e65a5cb4f8d13801fe8ab0a170e358"
+ "reference": "53712df8727da1744490202eeb9cb50d4b95419d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/9a3a56a4a1e65a5cb4f8d13801fe8ab0a170e358",
- "reference": "9a3a56a4a1e65a5cb4f8d13801fe8ab0a170e358",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/53712df8727da1744490202eeb9cb50d4b95419d",
+ "reference": "53712df8727da1744490202eeb9cb50d4b95419d",
"shasum": ""
},
"require": {
@@ -2266,7 +2266,7 @@
"symfony/http-kernel": "^6.4|^7.0|^8.0",
"symfony/process": "^6.4|^7.0|^8.0",
"symfony/uid": "^6.4|^7.0|^8.0",
- "twig/twig": "^3.12"
+ "twig/twig": "^3.12|^4.0"
},
"bin": [
"Resources/bin/var-dump-server"
@@ -2304,7 +2304,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v7.4.14"
+ "source": "https://github.com/symfony/var-dumper/tree/v7.4.17"
},
"funding": [
{
@@ -2324,20 +2324,20 @@
"type": "tidelift"
}
],
- "time": "2026-06-08T20:24:16+00:00"
+ "time": "2026-08-21T12:09:28+00:00"
},
{
"name": "symfony/yaml",
- "version": "v7.4.14",
+ "version": "v7.4.17",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "f8f328665ace2370d1e10645b807ba1646dc7dcc"
+ "reference": "0b040d7b66ceb10b7bb24c8e6656257932693a12"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/f8f328665ace2370d1e10645b807ba1646dc7dcc",
- "reference": "f8f328665ace2370d1e10645b807ba1646dc7dcc",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/0b040d7b66ceb10b7bb24c8e6656257932693a12",
+ "reference": "0b040d7b66ceb10b7bb24c8e6656257932693a12",
"shasum": ""
},
"require": {
@@ -2380,7 +2380,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v7.4.14"
+ "source": "https://github.com/symfony/yaml/tree/v7.4.17"
},
"funding": [
{
@@ -2400,7 +2400,7 @@
"type": "tidelift"
}
],
- "time": "2026-06-08T20:24:16+00:00"
+ "time": "2026-08-21T12:09:28+00:00"
},
{
"name": "webmozart/assert",
@@ -2595,11 +2595,11 @@
},
{
"name": "phpstan/phpstan",
- "version": "2.2.6",
+ "version": "2.2.9",
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/a6e9b5a9420f6109c091e87d82683bd1a80b87ed",
- "reference": "a6e9b5a9420f6109c091e87d82683bd1a80b87ed",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/13d6b4f347bad222da436580c8304fa6f83e6bd0",
+ "reference": "13d6b4f347bad222da436580c8304fa6f83e6bd0",
"shasum": ""
},
"require": {
@@ -2655,20 +2655,20 @@
"type": "github"
}
],
- "time": "2026-07-26T21:22:49+00:00"
+ "time": "2026-08-22T07:38:16+00:00"
},
{
"name": "phpstan/phpstan-deprecation-rules",
- "version": "2.0.4",
+ "version": "2.0.5",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan-deprecation-rules.git",
- "reference": "6b5571001a7f04fa0422254c30a0017ec2f2cacc"
+ "reference": "67bedd65c24bc72840afc45aed48b1059dd44bec"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/6b5571001a7f04fa0422254c30a0017ec2f2cacc",
- "reference": "6b5571001a7f04fa0422254c30a0017ec2f2cacc",
+ "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/67bedd65c24bc72840afc45aed48b1059dd44bec",
+ "reference": "67bedd65c24bc72840afc45aed48b1059dd44bec",
"shasum": ""
},
"require": {
@@ -2678,7 +2678,8 @@
"require-dev": {
"php-parallel-lint/php-parallel-lint": "^1.2",
"phpstan/phpstan-phpunit": "^2.0",
- "phpunit/phpunit": "^9.6"
+ "phpunit/phpunit": "^9.6",
+ "shipmonk/name-collision-detector": "^2.1"
},
"type": "phpstan-extension",
"extra": {
@@ -2703,9 +2704,9 @@
],
"support": {
"issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues",
- "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/2.0.4"
+ "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/2.0.5"
},
- "time": "2026-02-09T13:21:14+00:00"
+ "time": "2026-07-22T06:50:43+00:00"
},
{
"name": "phpstan/phpstan-strict-rules",
@@ -2761,16 +2762,16 @@
},
{
"name": "rector/rector",
- "version": "2.5.8",
+ "version": "2.6.3",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
- "reference": "861c77fd2a6d45317a401f4e0b617f947e8b6f96"
+ "reference": "7e46709996a4b3dc59e1d6ecbb6a38ace335bd58"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/861c77fd2a6d45317a401f4e0b617f947e8b6f96",
- "reference": "861c77fd2a6d45317a401f4e0b617f947e8b6f96",
+ "url": "https://api.github.com/repos/rectorphp/rector/zipball/7e46709996a4b3dc59e1d6ecbb6a38ace335bd58",
+ "reference": "7e46709996a4b3dc59e1d6ecbb6a38ace335bd58",
"shasum": ""
},
"require": {
@@ -2809,7 +2810,7 @@
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/2.5.8"
+ "source": "https://github.com/rectorphp/rector/tree/2.6.3"
},
"funding": [
{
@@ -2817,7 +2818,7 @@
"type": "github"
}
],
- "time": "2026-07-27T06:19:16+00:00"
+ "time": "2026-08-18T22:01:18+00:00"
}
],
"aliases": [],
From 770858e0598c20d1dd736d5ef9952d264d278555 Mon Sep 17 00:00:00 2001
From: Felix Yeung <19355619+imfelixyeung@users.noreply.github.com>
Date: Wed, 26 Aug 2026 23:16:34 +0100
Subject: [PATCH 2/3] chore: remove deprecated rector rules and apply new
rector changes
---
classes/local/lint/linters/base.php | 2 +-
rector.php | 6 ------
2 files changed, 1 insertion(+), 7 deletions(-)
diff --git a/classes/local/lint/linters/base.php b/classes/local/lint/linters/base.php
index 4c2bfb0..cd80ad3 100644
--- a/classes/local/lint/linters/base.php
+++ b/classes/local/lint/linters/base.php
@@ -106,7 +106,7 @@ public static function get_linter_attribute(): linter {
$attributes = $class->getAttributes(linter::class);
[$attribute] = count($attributes) > 0 ? $attributes : [null];
- if ($attribute === null) {
+ if (!$attribute instanceof \ReflectionAttribute) {
throw new coding_exception('linter classes must have the linter attribute set');
}
diff --git a/rector.php b/rector.php
index ccdbb3a..8e0d316 100644
--- a/rector.php
+++ b/rector.php
@@ -7,12 +7,9 @@
use Rector\CodingStyle\Rector\Catch_\CatchExceptionNameMatchingTypeRector;
use Rector\CodingStyle\Rector\ClassLike\NewlineBetweenClassLikeStmtsRector;
use Rector\CodingStyle\Rector\ClassMethod\NewlineBeforeNewAssignSetRector;
-use Rector\CodingStyle\Rector\Encapsed\EncapsedStringsToSprintfRector;
-use Rector\CodingStyle\Rector\Encapsed\WrapEncapsedVariableInCurlyBracesRector;
use Rector\CodingStyle\Rector\Stmt\NewlineAfterStatementRector;
use Rector\Config\RectorConfig;
use Rector\DeadCode\Rector\Property\RemoveUselessVarTagRector;
-use Rector\EarlyReturn\Rector\If_\ChangeOrIfContinueToMultiContinueRector;
return RectorConfig::configure()
->withPaths([
@@ -41,13 +38,10 @@
)
->withSkip([
CatchExceptionNameMatchingTypeRector::class,
- ChangeOrIfContinueToMultiContinueRector::class,
- EncapsedStringsToSprintfRector::class,
NewlineAfterStatementRector::class,
NewlineBeforeNewAssignSetRector::class,
NewlineBetweenClassLikeStmtsRector::class,
RemoveUselessVarTagRector::class,
ShortenElseIfRector::class,
- WrapEncapsedVariableInCurlyBracesRector::class,
])
;
From 390380ba6d920b3c72cd44e86dfe9e3e49c1571f Mon Sep 17 00:00:00 2001
From: Felix Yeung <19355619+imfelixyeung@users.noreply.github.com>
Date: Wed, 26 Aug 2026 23:21:23 +0100
Subject: [PATCH 3/3] chore(deps): update thirdpartylibs.xml
---
thirdpartylibs.xml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/thirdpartylibs.xml b/thirdpartylibs.xml
index 2a83bed..9e48715 100644
--- a/thirdpartylibs.xml
+++ b/thirdpartylibs.xml
@@ -23,7 +23,7 @@
vendor/mcp/sdk
MCP PHP SDK
- 0.6.0
+ 0.7.1
Apache
@@ -37,7 +37,7 @@
vendor/php-debugbar/php-debugbar
PHP DebugBar
- 3.7.0
+ 3.8.0
MIT
@@ -51,7 +51,7 @@
vendor/phpstan
PHPStan
- 2.1
+ 2.2.9
MIT