Skip to content

Merge latest changes to feature branch - #2633

Merged
mukeshpanchal27 merged 153 commits into
feature/2449-gallery-blockfrom
trunk
Aug 27, 2026
Merged

Merge latest changes to feature branch#2633
mukeshpanchal27 merged 153 commits into
feature/2449-gallery-blockfrom
trunk

Conversation

@mukeshpanchal27

Copy link
Copy Markdown
Member

Summary

Get the latest change from trunk.

Relevant technical choices

Use of AI Tools

westonruter and others added 30 commits June 30, 2026 18:58
Assemble the release notes for the plugins currently being released — those
with an open, dated milestone whose title does not contain "n.e.x.t" — by
reading each plugin's stable-tag changelog entry from its readme.txt (as
populated by npm run readme). Progress and warnings go to STDERR so STDOUT (the
Markdown notes) can be piped to a file or the clipboard.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Create a draft GitHub release for the release date, using the combined
per-plugin changelogs from `npm run prepare-release-notes` as the body. The tag
and title are $RELEASE_DATE and the target is the release/$RELEASE_DATE branch.

Fails early if the target branch is missing on origin or a release for the tag
already exists, and authenticates the milestone lookup with the gh token to
avoid rate limiting.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: b1ink0 <b1ink0@git.wordpress.org>
Co-authored-by: mukeshpanchal27 <mukesh27@git.wordpress.org>
Add `@covers` tags to the existing Test_WebP_Uploads_REST_API tests and add
regression tests for the defensive guards in webp_uploads_update_rest_attachment(),
covering a missing/non-string `source_url`, a missing/invalid mime source `file`
in both the per-size and full-size loops, and non-array response data.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…filter

Convert the query-string test into a data-provider-driven test covering an
empty string, a query string, an array, and an invalid `false` value passed
as the `$attr` argument, asserting each is normalized before being passed to
the inner `webp_uploads_filter_wp_get_attachment_image` filter.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
`build-plugins:zip` rebuilds each plugin archive from a freshly re-copied
build directory, so the `zip` command embeds new entry timestamps every run
and the resulting bytes always differ even when the file contents are
identical. This bumped the ZIP's modified time on every build regardless of
whether anything actually changed.

Build the archive into a temporary file and compare it against the existing
ZIP using a timestamp-independent content fingerprint (each entry's
uncompressed size, CRC-32, and name via `unzip -v`). The existing ZIP is only
replaced when its contents actually change; otherwise the temporary file is
discarded and the existing file — including its modified time — is left
untouched.

Building fresh into a temporary file each time also ensures files removed from
a plugin no longer linger in an updated-in-place archive.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
When zipping a plugin, stray files left in the plugin source directory get
copied into the build output and silently bundled into the archive. This
makes it easy to ship files that were never meant to be part of a release.

Before creating the archive, check the plugin source directory for files that
Git considers untracked (and are not ignored via .gitignore), narrowed to
those that actually made it into the build output — i.e. files not excluded by
the copy step's ignore patterns. If any are found, fail the build with a
message listing them. Generated build artifacts are unaffected because they
are either committed or gitignored.

The check can be bypassed with `--env force=true` for cases where including
untracked files is intentional.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The `build-plugins:zip` script wraps `build:plugin:*` via `npm-run-all`, which
did not pass extra command-line arguments through to the matched scripts. As a
result there was no way to reach the whole-suite zip build with the new
`--env force=true` override.

Add npm-run-all's `{@}` argument placeholder (and the required trailing `--`)
so arguments after `--` are forwarded to each plugin build. This makes
`npm run build-plugins:zip -- --env force=true` bypass the untracked-files
check across all plugins, while `npm run build-plugins:zip` continues to work
unchanged when no arguments are given.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ttachment-image

Prevent fatal error in `webp_uploads_filter_wp_get_attachment_image()` when `wp_get_attachment_image_src()` returns false
Co-authored-by: thelovekesh <lovekesh.kumar@rtcamp.com>
Only suggest `gh release delete` when the existing release is still a
draft. A published release is immutable, so advise supplying a
different RELEASE_DATE instead.

Co-authored-by: thelovekesh <thelovekesh@git.wordpress.org>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…nchanged

Build: Preserve plugin ZIP modified time when contents are unchanged

Co-authored-by: westonruter <westonruter@git.wordpress.org>
Co-authored-by: b1ink0 <b1ink0@git.wordpress.org>
Build: Fail plugin ZIP build when untracked files would be included

Co-authored-by: westonruter <westonruter@git.wordpress.org>
Co-authored-by: b1ink0 <b1ink0@git.wordpress.org>
Bumps the phpstan-packages group with 2 updates: [phpstan/phpstan](https://github.com/phpstan/phpstan-phar-composer-source) and [phpstan/phpstan-phpunit](https://github.com/phpstan/phpstan-phpunit).


Updates `phpstan/phpstan` from 2.2.2 to 2.2.3
- [Commits](https://github.com/phpstan/phpstan-phar-composer-source/commits)

Updates `phpstan/phpstan-phpunit` from 2.0.16 to 2.0.17
- [Release notes](https://github.com/phpstan/phpstan-phpunit/releases)
- [Commits](phpstan/phpstan-phpunit@2.0.16...2.0.17)

---
updated-dependencies:
- dependency-name: phpstan/phpstan
  dependency-version: 2.2.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: phpstan-packages
- dependency-name: phpstan/phpstan-phpunit
  dependency-version: 2.0.17
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: phpstan-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.47.2 to 1.48.0.
- [Release notes](https://github.com/crate-ci/typos/releases)
- [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md)
- [Commits](crate-ci/typos@37bb988...bee27e3)

---
updated-dependencies:
- dependency-name: crate-ci/typos
  dependency-version: 1.48.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the wordpress-packages group with 3 updates: [@wordpress/e2e-test-utils-playwright](https://github.com/WordPress/gutenberg/tree/HEAD/packages/e2e-test-utils-playwright), [@wordpress/env](https://github.com/WordPress/gutenberg/tree/HEAD/packages/env) and [@wordpress/scripts](https://github.com/WordPress/gutenberg/tree/HEAD/packages/scripts).


Updates `@wordpress/e2e-test-utils-playwright` from 1.49.0 to 1.50.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/e2e-test-utils-playwright/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/e2e-test-utils-playwright@1.50.0/packages/e2e-test-utils-playwright)

Updates `@wordpress/env` from 11.9.0 to 11.10.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/env/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/env@11.10.0/packages/env)

Updates `@wordpress/scripts` from 32.5.0 to 32.6.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/scripts/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/scripts@32.6.0/packages/scripts)

---
updated-dependencies:
- dependency-name: "@wordpress/e2e-test-utils-playwright"
  dependency-version: 1.50.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/env"
  dependency-version: 11.10.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/scripts"
  dependency-version: 32.6.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [fs-extra](https://github.com/jprichardson/node-fs-extra) from 11.3.5 to 11.3.6.
- [Changelog](https://github.com/jprichardson/node-fs-extra/blob/master/CHANGELOG.md)
- [Commits](jprichardson/node-fs-extra@11.3.5...11.3.6)

---
updated-dependencies:
- dependency-name: fs-extra
  dependency-version: 11.3.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
westonruter and others added 9 commits August 21, 2026 08:26
Run via:

```bash
npm run bump-versions -- --increment prerelease embed-optimizer image-prioritizer
```
Fill in the empty changelog entries that bump-versions stubbed out for the seven
plugins being released. The entries are written by hand because the changelog and
prepare-release-notes commands derive their content from a release milestone, and
these releases deliberately skip milestones.

The bulk of each entry is the same across all seven plugins, since what is pending
is a single cross-cutting sweep: strict types, native property types, and the
raised WordPress 6.9 and PHP 7.4 minimums. Only three plugins carry anything
beyond that:

* Optimization Detective moved the URL Metrics storage HMAC validation into the
  REST endpoint callback and dropped its deprecated constants.
* Speculative Loading hardened the JSON encoding of its inline scripts.
* Image Prioritizer fixed TypeScript 6 type errors in the video lazy-loading
  script.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The script could report a plugin as having no pending changes when it actually
had some. Bumping "Tested up to: 7.0" to "7.1" replaces a line with one of
exactly the same length, and the working copy is reused between runs, so a
previous run's rsync leaves the build file's mtime on the copy. Both rsync's
default quick check and SVN's own stat cache compare size and mtime rather than
content, so each concludes the file is unchanged and "svn status" comes back
clean.

The failure is intermittent, since it only bites once a prior run has left a
matching mtime behind, and it is silent in the worst way: the affected plugin is
reported under a "No changes." note, which reads as confirmation that there is
nothing to release.

Pass -c so rsync compares checksums, and --no-times so the files it copies get a
fresh mtime that invalidates SVN's stat cache. Both are needed; -c alone still
leaves SVN unable to see the change.

Verified against a cold checkout and a warm one, with identical results.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The two web-vitals bundles under build/ accounted for 35% of the whole diff,
42 KB out of 124 KB, for what amounts to a library upgrade. They are minified
despite not carrying a .min.js suffix, so the existing *.min.js exclusion misses
them, and each is a single line, meaning any change at all renders as a
whole-file rewrite.

Exclude build/*.js, which brings the diff down from 127 KB to 85 KB. The sibling
build/*.asset.php is deliberately left in, since its 'version' is the compact
signal that the bundled library changed: two lines showing 5.1.0 becoming 6.1.0,
in place of 42 KB of unreadable bundle.

That signal turned out to be worth keeping. It surfaced that web-vitals is going
from 5.1.0 to 6.1.0, across a major release, which was missing from Optimization
Detective's changelog entry and is now added.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Excluding generated assets from the rsync kept the diff readable but blinded
"svn status" to them, which is the wrong trade: status is the view that answers
which files are being added, removed, and modified, and it should be complete.
Worse, the exclusion also protected those files from --delete, so a stray
minified asset dropped into an already-tracked directory was reported nowhere at
all. Only one landing in a brand new directory showed up, and then merely as its
parent directory, with no indication of what was inside.

Copy everything instead, and filter "svn diff" so that generated files keep their
header but have their contents replaced with a placeholder. They stay visible as
changed without dragging in tens of KB of unreadable bundle: the whole report
goes from 127 KB to 88 KB. The *.asset.php files are left intact, since their
'version' is the readable signal that a bundled library changed.

Also expand unversioned directories in the status output, so that a batch of
added files is listed file by file rather than collapsing into its parent.

This supersedes the build/*.js exclusion added in the previous commit, whose
carve-out for *.asset.php is preserved here by the same reasoning.

Both edge cases are now covered: a stray min file in a tracked directory shows as
"? stray.min.js", and a new directory lists its contents. It immediately turned
up a real pending change that the exclusion had been hiding, a modified
view-transitions .min.css, which on inspection is only a minifier emitting #0000
where it used to emit transparent.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
web-vitals began publishing source maps in 6.0.0, and emits a sourceMappingURL
comment alongside them. That reference is correct inside the package, where the
map sits next to the bundle, but the webpack config copies only the bundles out
of node_modules. The upgrade would therefore have shipped two files pointing at
maps that do not exist, making browsers request a URL that 404s whenever devtools
is open.

Copy the maps too, rather than stripping the comment. Upstream publishes them
deliberately for exactly this case, and Optimization Detective is a plugin whose
entire purpose is measuring real user performance, so readable web-vitals frames
are worth having when debugging it or an extension built on it. Both maps carry
sourcesContent, so they are self-contained and need nothing else fetched. The
Gutenberg plugin ships source maps for the same reason; WordPress core does not,
but core is not distributed as a plugin.

The cost is 49 KB on a 106 KB zip, and nothing at runtime: browsers only request
a map once devtools is open, so no visitor ever pays for it.

Two renames had to be handled, since web-vitals.attribution.js is copied in as
web-vitals-attribution.js. Its map is now named to match, the sourceMappingURL
comment in the bundle is repointed at the new name, and the map's own "file"
field is repointed at the renamed bundle. Both transformers are written as
factories over a file name rather than hardcoded, since any vendored bundle
renamed on the way in needs the same treatment.

Note that the two added .map files are visible in the pending release diff as
untracked additions only because generated assets are now copied and suppressed
rather than excluded. Under the previous exclusion they would have been added to
the plugin without appearing anywhere in the report.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The release notes were the last step still requiring milestones, and it failed
quietly rather than loudly. Only one of the seven plugins being released has a
dated milestone, so prepare-release-notes produced notes for that one alone, and
create-draft-release checked only that the notes file was non-empty. A draft
release would therefore have been created covering one plugin out of seven, with
nothing to indicate the other six were missing.

The milestone was never the source of the content: getReadmeChangelogEntry()
already reads each plugin's changelog from its readme.txt, and the milestone only
decided which plugins to include. So accept plugin slugs as positional arguments
and skip the lookup entirely when any are given, matching what bump-versions
already does.

There is deliberately no option to select every plugin here, unlike bump-versions
where one exists but is rarely useful. A plugin that is not being released still
has a changelog entry for its current stable tag, so including it would repeat an
already-published entry in the new release notes.

When plugins are named explicitly, a failure on any of them is now fatal and
nothing at all is written, rather than the previous per-plugin tolerance emitting
a subset. Asking for specific plugins and silently getting fewer is the exact
failure this commit exists to prevent. Milestone selection keeps the old
behaviour, since there the set was never asserted by hand.

create-draft-release forwards any slugs through, then verifies each one is present
in the generated notes before creating the draft. Where no slugs are given it now
lists which plugins the notes actually cover, so an omission is visible rather
than implied by silence.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Post 2026-08-25 release merge

Co-authored-by: westonruter <westonruter@git.wordpress.org>
Co-authored-by: b1ink0 <b1ink0@git.wordpress.org>
…dpress/plugin-check-action-1.1.9

Bump wordpress/plugin-check-action from 1.1.7 to 1.1.9
dependabot Bot and others added 2 commits August 26, 2026 08:03
Bumps [globals](https://github.com/sindresorhus/globals) from 17.9.0 to 17.11.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](sindresorhus/globals@v17.9.0...v17.11.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 17.11.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…ls-17.11.0

Bump globals from 17.9.0 to 17.11.0
dependabot Bot and others added 2 commits August 26, 2026 08:15
Bumps [wp-phpunit/wp-phpunit](https://github.com/wp-phpunit/wp-phpunit) from 7.0.2 to 7.0.4.
- [Commits](wp-phpunit/wp-phpunit@7.0.2...7.0.4)

---
updated-dependencies:
- dependency-name: wp-phpunit/wp-phpunit
  dependency-version: 7.0.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
…t/wp-phpunit-7.0.4

Bump wp-phpunit/wp-phpunit from 7.0.2 to 7.0.4
dependabot Bot and others added 2 commits August 26, 2026 08:29
Bumps the wordpress-packages group with 4 updates in the / directory: [@wordpress/e2e-test-utils-playwright](https://github.com/WordPress/gutenberg/tree/HEAD/packages/e2e-test-utils-playwright), [@wordpress/env](https://github.com/WordPress/gutenberg/tree/HEAD/packages/env), [@wordpress/prettier-config](https://github.com/WordPress/gutenberg/tree/HEAD/packages/prettier-config) and [@wordpress/scripts](https://github.com/WordPress/gutenberg/tree/HEAD/packages/scripts).


Updates `@wordpress/e2e-test-utils-playwright` from 1.52.0 to 1.53.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/e2e-test-utils-playwright/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/e2e-test-utils-playwright@1.53.0/packages/e2e-test-utils-playwright)

Updates `@wordpress/env` from 11.12.0 to 11.13.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/env/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/env@11.13.0/packages/env)

Updates `@wordpress/prettier-config` from 4.52.0 to 4.53.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/prettier-config/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/prettier-config@4.53.0/packages/prettier-config)

Updates `@wordpress/scripts` from 34.0.0 to 34.1.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/scripts/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/scripts@34.1.0/packages/scripts)

---
updated-dependencies:
- dependency-name: "@wordpress/e2e-test-utils-playwright"
  dependency-version: 1.53.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/env"
  dependency-version: 11.13.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/prettier-config"
  dependency-version: 4.53.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/scripts"
  dependency-version: 34.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
…ress-packages-c218e662ad

Bump the wordpress-packages group across 1 directory with 4 updates
dependabot Bot added 3 commits August 26, 2026 17:35
Bumps [github/codeql-action/init](https://github.com/github/codeql-action) from 4.37.6 to 4.37.7.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@5595cca...ff2f1c6)

---
updated-dependencies:
- dependency-name: github/codeql-action/init
  dependency-version: 4.37.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [github/codeql-action/analyze](https://github.com/github/codeql-action) from 4.37.6 to 4.37.7.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@5595cca...ff2f1c6)

---
updated-dependencies:
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.37.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [web-vitals](https://github.com/GoogleChrome/web-vitals) from 6.1.0 to 6.1.1.
- [Changelog](https://github.com/GoogleChrome/web-vitals/blob/main/CHANGELOG.md)
- [Commits](GoogleChrome/web-vitals@v6.1.0...v6.1.1)

---
updated-dependencies:
- dependency-name: web-vitals
  dependency-version: 6.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@mukeshpanchal27
mukeshpanchal27 merged commit dc33d1b into feature/2449-gallery-block Aug 27, 2026
63 of 65 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no milestone PRs that do not have a defined milestone for release skip changelog PRs that should not be mentioned in changelogs [Type] Enhancement A suggestion for improvement of an existing feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants