From 18a0f75faff4197eb1a6af5a37b1c718ab3b2557 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Aug 2026 05:32:46 +0000 Subject: [PATCH 1/3] deps(deps-dev): bump @symfony/webpack-encore Bumps the webpack-encore group with 1 update in the /Tests/app directory: [@symfony/webpack-encore](https://github.com/symfony/webpack-encore). Updates `@symfony/webpack-encore` from 6.0.0 to 7.2.0 - [Release notes](https://github.com/symfony/webpack-encore/releases) - [Changelog](https://github.com/symfony/webpack-encore/blob/main/CHANGELOG.md) - [Upgrade guide](https://github.com/symfony/webpack-encore/blob/main/UPGRADE.md) - [Commits](https://github.com/symfony/webpack-encore/compare/v6.0.0...v7.2.0) --- updated-dependencies: - dependency-name: "@symfony/webpack-encore" dependency-version: 7.1.0 dependency-type: direct:development update-type: version-update:semver-major dependency-group: webpack-encore ... Signed-off-by: dependabot[bot] --- Tests/app/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/app/package.json b/Tests/app/package.json index 706ac59..a2ae9fd 100644 --- a/Tests/app/package.json +++ b/Tests/app/package.json @@ -1,7 +1,7 @@ { "devDependencies": { "core-js": "^3.50.0", - "@symfony/webpack-encore": "^6.0.0" + "@symfony/webpack-encore": "^7.2.0" }, "dependencies": { "jquery": "^4.0.0" From 7fdbebc9ae3e5639f3bfa78457c58d5ea7a1a6e1 Mon Sep 17 00:00:00 2001 From: Ton Sharp <45160296+66Ton99@users.noreply.github.com> Date: Thu, 20 Aug 2026 12:12:44 +0300 Subject: [PATCH 2/3] Adapt test app to Webpack Encore 7 Encore 7 is ESM-only with an async getWebpackConfig(), so the test app's webpack config becomes webpack.config.mjs and exports the awaited config. Encore 7 also declares its optional dependencies as peer dependencies, so @babel/core, @babel/preset-env, webpack and webpack-cli are now explicit devDependencies. Babel 8 dropped the useBuiltIns/corejs options from @babel/preset-env, so core-js polyfills are injected via babel-plugin-polyfill-corejs3 instead. Co-Authored-By: Claude Opus 5 --- Tests/app/package.json | 7 ++++++- .../{webpack.config.js => webpack.config.mjs} | 17 ++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) rename Tests/app/{webpack.config.js => webpack.config.mjs} (67%) diff --git a/Tests/app/package.json b/Tests/app/package.json index a2ae9fd..9bd400b 100644 --- a/Tests/app/package.json +++ b/Tests/app/package.json @@ -1,7 +1,12 @@ { "devDependencies": { + "@babel/core": "^8.0.1", + "@babel/preset-env": "^8.0.2", + "@symfony/webpack-encore": "^7.2.0", + "babel-plugin-polyfill-corejs3": "^1.0.0", "core-js": "^3.50.0", - "@symfony/webpack-encore": "^7.2.0" + "webpack": "^5.102.0", + "webpack-cli": "^7.0.2" }, "dependencies": { "jquery": "^4.0.0" diff --git a/Tests/app/webpack.config.js b/Tests/app/webpack.config.mjs similarity index 67% rename from Tests/app/webpack.config.js rename to Tests/app/webpack.config.mjs index 1e6f23a..84ca12c 100755 --- a/Tests/app/webpack.config.js +++ b/Tests/app/webpack.config.mjs @@ -4,7 +4,7 @@ // // Read https://symfony.com/doc/current/frontend.html to learn more about how // to manage CSS and JavaScript files in Symfony applications. -var Encore = require('@symfony/webpack-encore'); +import Encore from '@symfony/webpack-encore'; Encore .setOutputPath('public/build/') @@ -19,10 +19,17 @@ Encore .splitEntryChunks() .enableSingleRuntimeChunk() .enableIntegrityHashes(Encore.isProduction()) - .configureBabel(null, { - useBuiltIns: 'usage', - corejs: 3, + // Babel 8 removed the "useBuiltIns"/"corejs" options from @babel/preset-env, + // so core-js polyfills are now injected by babel-plugin-polyfill-corejs3. + .configureBabel((babelConfig) => { + babelConfig.plugins.push([ + 'babel-plugin-polyfill-corejs3', + { + method: 'usage-global', + version: '3.50', + }, + ]); }) ; -module.exports = Encore.getWebpackConfig(); +export default await Encore.getWebpackConfig(); From b30183cdd66e71921499a54786de55153e0683a5 Mon Sep 17 00:00:00 2001 From: Ton Sharp <45160296+66Ton99@users.noreply.github.com> Date: Thu, 20 Aug 2026 14:30:52 +0300 Subject: [PATCH 3/3] Bump Node.js to 24 Webpack Encore 7 requires Node ^22.18.0 || ^24.11.0 || >=26.0, so pin CI, the Nix shell and the Docker image to Node 24 and update the docs. Co-Authored-By: Claude Opus 5 --- .github/workflows/ci.yml | 6 ++++-- AGENTS.md | 4 ++-- CONTRIBUTING.md | 6 +++--- README.md | 6 +++--- flake.nix | 2 +- phpdocker/README.html | 2 +- phpdocker/README.md | 2 +- phpdocker/php-fpm/Dockerfile | 2 +- 8 files changed, 16 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 67cf02d..d0285b3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,6 +3,8 @@ name: CI on: pull_request: push: + branches: + - master permissions: contents: read @@ -65,7 +67,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v7 with: - node-version: '22' + node-version: '24' - name: Install Cypress system dependencies run: | @@ -135,7 +137,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v7 with: - node-version: '22' + node-version: '24' - name: Install Composer dependencies run: composer update --no-interaction --prefer-dist --no-progress diff --git a/AGENTS.md b/AGENTS.md index fa2c438..920012d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -39,8 +39,8 @@ Local path: `/Volumes/SRC/JsFormValidatorBundle` ## Nix Development Environment - Prefer `nix develop` from the repository root when Nix is available. -- The Nix shell provides the latest PHP available in pinned nixpkgs with Xdebug coverage support, Composer, Node.js 22, npm, zip/unzip, and Linux Cypress runtime libraries. It currently resolves to PHP 8.5. -- The Docker `php-fpm` development image is maintained for vendor installation and ad hoc commands. It uses PHP 8.5, Composer 2, Node.js 22, and the PHP extensions required by the Symfony 8 fixture. +- The Nix shell provides the latest PHP available in pinned nixpkgs with Xdebug coverage support, Composer, Node.js 24, npm, zip/unzip, and Linux Cypress runtime libraries. It currently resolves to PHP 8.5. +- The Docker `php-fpm` development image is maintained for vendor installation and ad hoc commands. It uses PHP 8.5, Composer 2, Node.js 24, and the PHP extensions required by the Symfony 8 fixture. - Run one-off commands with `nix develop -c `, for example: - `nix develop -c composer validate --strict` - `nix develop -c composer test` diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 643d59f..c873e2e 100755 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,7 +8,7 @@ Prefer the Nix development shell from the repository root: nix develop ``` -The shell provides PHP 8.5, Xdebug coverage support, Composer, Node.js 22, npm, +The shell provides PHP 8.5, Xdebug coverage support, Composer, Node.js 24, npm, zip/unzip, and the Linux runtime libraries needed by Cypress. It also keeps Composer, npm, and Cypress caches under `.cache/`. @@ -36,7 +36,7 @@ If Cypress reports that its binary is missing, install it into the local cache: npx cypress install ``` -Without Nix, install PHP 8.4 or newer, Composer, Node.js 22, npm, and the +Without Nix, install PHP 8.4 or newer, Composer, Node.js 24, npm, and the Cypress system dependencies locally before running the same commands. ## Install Vendors Via Docker @@ -50,7 +50,7 @@ docker compose run --rm --no-deps -u "$(id -u):$(id -g)" php-fpm composer update docker compose run --rm --no-deps -u "$(id -u):$(id -g)" php-fpm npm install ``` -The image uses PHP 8.5, Composer 2, Node.js 22, and the PHP extensions needed by +The image uses PHP 8.5, Composer 2, Node.js 24, and the PHP extensions needed by the Symfony 8 test fixture. It also stores Composer, npm, and Cypress caches under `.cache/`. diff --git a/README.md b/README.md index 88f97ae..7a15bd8 100644 --- a/README.md +++ b/README.md @@ -191,7 +191,7 @@ nix develop ``` It provides the latest PHP available in the pinned nixpkgs input, currently -PHP 8.5, with Xdebug coverage support, Composer, Node.js 22, npm, zip/unzip, +PHP 8.5, with Xdebug coverage support, Composer, Node.js 24, npm, zip/unzip, and Cypress runtime libraries. If flakes are not enabled globally, prefix Nix commands with `nix --extra-experimental-features "nix-command flakes"`. @@ -215,7 +215,7 @@ nix develop -c composer test nix develop -c npm test ``` -Without Nix, install PHP 8.4 or newer, Composer, Node.js 22, npm, and the +Without Nix, install PHP 8.4 or newer, Composer, Node.js 24, npm, and the Cypress system dependencies locally before running the same commands. To install vendors via Docker instead of host PHP/Composer: @@ -273,6 +273,6 @@ The same maintained test, static-analysis, and coverage checks are also run by GitHub Actions on pushes and pull requests. Coverage runs generate Cobertura reports and upload them to GitHub Code Quality when workflow permissions allow. -The Docker stack uses PHP 8.5, Composer 2, and Node.js 22. It is maintained for +The Docker stack uses PHP 8.5, Composer 2, and Node.js 24. It is maintained for dependency installation and ad hoc local commands; Nix remains the preferred environment for exact local parity with the documented checks. diff --git a/flake.nix b/flake.nix index 7a734b4..456ebcd 100644 --- a/flake.nix +++ b/flake.nix @@ -56,7 +56,7 @@ packages = with pkgs; [ composer git - nodejs_22 + nodejs_24 php unzip zip diff --git a/phpdocker/README.html b/phpdocker/README.html index d4aca85..b80eab3 100755 --- a/phpdocker/README.html +++ b/phpdocker/README.html @@ -11,7 +11,7 @@

PHP Docker Development Image

and run ad hoc local commands without host PHP or Composer.

The php-fpm image provides PHP 8.5 FPM, Composer 2, - Node.js 22, npm, the PHP extensions used by the Symfony 8 fixture, and the + Node.js 24, npm, the PHP extensions used by the Symfony 8 fixture, and the Linux libraries needed by Cypress.

Build

diff --git a/phpdocker/README.md b/phpdocker/README.md index e326215..77f8387 100755 --- a/phpdocker/README.md +++ b/phpdocker/README.md @@ -8,7 +8,7 @@ The `php-fpm` image provides: * PHP 8.5 FPM * Composer 2 -* Node.js 22 and npm +* Node.js 24 and npm * PHP extensions used by the Symfony 8 fixture: `intl`, `pdo_mysql`, `pdo_sqlite`, and `zip` * Linux libraries needed by the Cypress binary diff --git a/phpdocker/php-fpm/Dockerfile b/phpdocker/php-fpm/Dockerfile index 1b4400c..2c295a0 100755 --- a/phpdocker/php-fpm/Dockerfile +++ b/phpdocker/php-fpm/Dockerfile @@ -29,7 +29,7 @@ RUN set -eux; \ mkdir -p /etc/apt/keyrings; \ curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \ | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg; \ - echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" \ + echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_24.x nodistro main" \ > /etc/apt/sources.list.d/nodesource.list; \ apt-get update; \ apt-get install -y --no-install-recommends nodejs; \