Skip to content

Upgrade Electron and bundled Node runtime - #40

Draft
ashfame wants to merge 1 commit into
trunkfrom
codex/electron-43-spike
Draft

Upgrade Electron and bundled Node runtime#40
ashfame wants to merge 1 commit into
trunkfrom
codex/electron-43-spike

Conversation

@ashfame

@ashfame ashfame commented Jul 27, 2026

Copy link
Copy Markdown
Member

Fixes #37.

This is a draft alternative to #38. Instead of retrying installs with Node engine checks relaxed, it updates the application runtime so current wordpress-develop dependencies run on a supported Node version.

Changes

  • Upgrade Electron from 32.3.3 to 43.2.0, which bundles Node 24.18.0.
  • Upgrade the build-time Node version from 20.19.5 to 24.18.0.
  • Upgrade @wp-playground/cli to 3.1.47 so its native filesystem dependency can be rebuilt for Electron 43.
  • Upgrade electron-builder to 26.15.3 and migrate the Windows signing options to its current signtoolOptions schema.
  • Regenerate the npm lockfile and update the lifecycle-script allowlist.

Why

Electron 32 bundles Node 20.18.1, while current wordpress-develop dependencies require ^20.19.0 || ^22.13.0 || >=24 and enforce that requirement with engine-strict. Upgrading the bundled runtime fixes the incompatibility without bypassing package engine declarations.

Validation completed on Linux

  • Clean npm ci passed on Ubuntu 24.04 with GCC 13 and Debian Trixie with GCC 14.
  • npm test passed: 13/13.
  • npm run build:once passed.
  • Linux packaging produced an AppImage and Snap.
  • The packaged application opened a real GUI window under Xvfb.
  • The packaged runtime reported Electron 43.2.0, Node 24.18.0, and Chromium 150.0.7871.129.
  • The packaged Playground CLI and rebuilt native filesystem module loaded successfully.
  • The packaged isomorphic-git stack cloned current wordpress-develop/trunk.
  • A real wordpress-develop checkout installed 2,567 packages with its normal engine-strict setting and no fallback.
  • The full WordPress Grunt build completed.
  • The Playground server reached ready state; the homepage, wp-admin routing, and Adminer responded successfully.
  • The packaged patch generator handled tracked and untracked text changes and skipped binary content.
  • The npm lifecycle path was exercised without a host Node installation.

Draft validation goals

Buildkite should now tell us whether the updated native dependency, Electron packaging, Windows signing, and macOS signing/notarization work on the real platform agents. After green builds, the Windows and macOS artifacts still need a short launch and WordPress workflow smoke test.

The native dependency did not compile with GCC 12, but passed with GCC 13 and GCC 14. Linux builders therefore need Python, make, and a modern C++ compiler.

@ashfame

ashfame commented Jul 27, 2026

Copy link
Copy Markdown
Member Author

Someone with Automattic Buildkite access needs to:

  1. Open the experimental-wp-dev-env pipeline.
  2. Update/reconnect its repository to WordPress/experimental-wp-dev-env.
  3. Confirm pull-request and branch builds are enabled.
  4. Confirm the bootstrap command uploads .buildkite/pipeline.yml:1.
  5. Manually trigger codex/electron-43-spike if necessary.
  6. Confirm the windows, mac, and default agent queues are available.

@mokagio Is this something you can help us with?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

"Install npm dependencies" fails with EBADENGINE: bundled Node is older than wordpress-develop requires

1 participant