From 6996270a8edb695a44d8a2323b4fe246e2a9dc65 Mon Sep 17 00:00:00 2001 From: IanM Date: Sat, 1 Aug 2026 01:14:22 +0100 Subject: [PATCH] fix: refresh 2.x scaffolding after the beta and RC releases MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Generated extensions could not run static analysis at all. The skeleton still set checkMissingIterableValueType, which PHPStan 2 removed, so 'composer analyse:phpstan' died with 'Invalid configuration' on a freshly created extension — flarum/phpstan ^2.0 installs PHPStan ^2.1. The skeleton also asked for @flarum/jest-config ^1.0.1. Core 2.x uses ^2.0.0, and v1 pulls in flarum-webpack-config ^2.0.1 against the ^3.0.0 the skeleton specifies. The upgrade command already got this right, so an extension upgraded to 2.x was correct while a new one was not. The upgrade command pinned flarum/core, flarum/testing and flarum/phpstan to ^2.0.0-beta, written when 2.0 was in beta and now leaving upgraded extensions asking for a beta of a line that has since reached RC. Those become ^2.0.0, with minimum-stability beta and prefer-stable so the constraint still resolves while 2.0 is prerelease. Its PHP floor also said ^8.2; core 2.x requires ^8.3. --- boilerplate/skeleton/extension/js/package.json | 2 +- boilerplate/skeleton/extension/phpstan.neon | 1 - src/steps/upgrade/twopointoh/dependencies.ts | 12 +++++++++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/boilerplate/skeleton/extension/js/package.json b/boilerplate/skeleton/extension/js/package.json index 2005fa4..0136bc0 100644 --- a/boilerplate/skeleton/extension/js/package.json +++ b/boilerplate/skeleton/extension/js/package.json @@ -7,7 +7,7 @@ "dependencies": { }, "devDependencies": { - "@flarum/jest-config": "^1.0.1", + "@flarum/jest-config": "^2.0.0", "@flarum/prettier-config": "^1.0.0", "flarum-tsconfig": "^2.0.0", "flarum-webpack-config": "^3.0.0", diff --git a/boilerplate/skeleton/extension/phpstan.neon b/boilerplate/skeleton/extension/phpstan.neon index c324402..ec3c9d5 100644 --- a/boilerplate/skeleton/extension/phpstan.neon +++ b/boilerplate/skeleton/extension/phpstan.neon @@ -8,5 +8,4 @@ parameters: - src excludePaths: - *.blade.php - checkMissingIterableValueType: false databaseMigrationsPath: ['migrations'] diff --git a/src/steps/upgrade/twopointoh/dependencies.ts b/src/steps/upgrade/twopointoh/dependencies.ts index 6c5591a..397f514 100644 --- a/src/steps/upgrade/twopointoh/dependencies.ts +++ b/src/steps/upgrade/twopointoh/dependencies.ts @@ -58,7 +58,7 @@ export default class Dependencies extends BaseUpgradeStep { }); if (key === 'flarum/core') { - composer.require[key] = '^2.0.0-beta'; + composer.require[key] = '^2.0.0'; } else if (key.startsWith('flarum/') && value !== '*') { composer.require[key] = '*'; } @@ -74,16 +74,22 @@ export default class Dependencies extends BaseUpgradeStep { }); if (['flarum/core', 'flarum/testing', 'flarum/phpstan'].includes(key)) { - composer['require-dev'][key] = '^2.0.0-beta'; + composer['require-dev'][key] = '^2.0.0'; } else if (key.startsWith('flarum/') && (value as string).startsWith('^1')) { composer['require-dev'][key] = '*'; } } if (composer.require.php) { - composer.require.php = '^8.2'; + composer.require.php = '^8.3'; } + // 2.0 constraints resolve to prereleases while the line is in RC, so the + // extension has to accept them — with stable preferred wherever one + // exists, so only Flarum itself comes from the beta channel. + composer['minimum-stability'] = 'beta'; + composer['prefer-stable'] = true; + if (composer.require['fof/extend']) { composer.require['fof/extend'] = '^2.0.0'; }