Skip to content

Icons: Redraw 64 icons to be stroke-based. - #78812

Merged
ciampo merged 9 commits into
trunkfrom
update/redraw-icons-batch-2
Sep 1, 2026
Merged

ciampo merged 9 commits into
trunkfrom
update/redraw-icons-batch-2

Conversation

@jasmussen

@jasmussen jasmussen commented May 29, 2026 •

Copy link
Copy Markdown
Contributor

Part of #81274. Sibling PR to #78808, related to #78774.

What?

Updates 64 icon assets. It redraws 63 icons as stroke-based and refines the already stroke-based square icon. The batch focuses on arrow, line, alignment, and other utility icons.

It also updates consumers that colored these icons through fill. Built-in icons now follow CSS color, while Block Manager retains a fill fallback for third-party block icons that do not use currentColor.

Here's the updated icon map.

Icons
  1. Green is the first 35 icons that landed.
  2. Yellow is this PR.
  3. Pink is the proposed next batch with few or no visual differences.
  4. Blue contains icons with small visual updates, including font-based icons moving from fills to strokes.
  5. Red contains icons that need more discussion or possible deprecation.

Why?

Stroke-based icons keep a consistent absolute stroke width at different icon sizes. The revised vectors also remove export artifacts and align related icons more consistently.

How?

  • Uses stroke="currentColor" and vector-effect="non-scaling-stroke" for the converted icons.
  • Updates CheckboxControl, ColorPalette, DataViews filters, welcome guides, and Block Manager to color stroke-based icons correctly.
  • Keeps Block Manager compatible with custom block SVGs that do not use currentColor.
  • Regenerates affected snapshots.

Testing Instructions

  1. Run npm run storybook:dev and open Icons > Library.
  2. Check the icons below at 16px, 24px, and 32px. They should remain visually consistent across sizes.
  3. In the editor, verify checked and indeterminate CheckboxControls remain visible, including when disabled.
  4. Select light and dark ColorPalette swatches. The selected checkmark should switch between black and white for contrast.
  5. Open Block Manager. Built-in icons should use the intended gray, and a custom block icon without currentColor should retain the gray fill fallback.
  6. Open the Edit Post, Edit Site, and Edit Widgets welcome guides. Their modal close icons should remain white in the styled states.
  7. Verify DataViews filter reset and selected-option icons remain visible in their default, hover, focus, and selected states.

Icons: align-center, align-justify, align-left, align-none, align-right, arrow-down, arrow-down-left, arrow-down-right, arrow-left, arrow-right, arrow-up, arrow-up-left, arrow-up-right, block-meta, category, chart-bar, check, chevron-down, chevron-down-small, chevron-left, chevron-left-small, chevron-right, chevron-right-small, chevron-up, chevron-up-down, chevron-up-small, close, close-small, create, download, handle, home-button, justify-bottom, justify-center, justify-center-vertical, justify-left, justify-right, justify-space-between, justify-space-between-vertical, justify-stretch, justify-stretch-vertical, justify-top, line-dashed, line-dotted, line-solid, list-view, menu, next, plus, position-center, position-left, position-right, previous, pull-left, pull-right, pullquote, reset, resize-corner-ne, rss, separator, square, stretch-full-width, stretch-wide, upload.

Testing Instructions for Keyboard

There are no keyboard interaction changes. Repeat the editor checks with Tab, Shift+Tab, Enter, and Space. Focus order, activation, and visible focus should work as before.

Visual Preview

This existing screenshot records the separate Icon block CSS-specificity issue found during the work:

image

Use of AI Tools

Claude Opus 5 helped refine SVG geometry and audit CSS consumers. OpenAI Codex handled the rebase, review feedback, adversarial self-review, verification, and this description update.

@github-actions github-actions Bot added the [Package] Icons /packages/icons label May 29, 2026
@jasmussen jasmussen self-assigned this May 29, 2026
@jasmussen jasmussen added [Type] Enhancement A suggestion for improvement. [Feature] Icons Related to Icon registration API and Icon REST API labels May 29, 2026
@github-actions

github-actions Bot commented May 29, 2026 •

Copy link
Copy Markdown

Flaky tests detected in 0ece777.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/33408891334
📝 Reported tests:

As a user I want to be able to add multiple close buttons so that users can close the overlay from different positions in /test/e2e/specs/site-editor/navigation-overlay-template-part.spec.js, passed after 1 failed attempt.
Error: expect(locator).toHaveCount(expected) failed

Locator:  getByRole('button', { name: 'Close' })
Expected: 2
Received: 1
Timeout:  5000ms

Call log:
  - Expect "toHaveCount" with timeout 5000ms
  - waiting for getByRole('button', { name: 'Close' })
    14 × locator resolved to 1 element
       - unexpected value "1"

    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/site-editor/navigation-overlay-template-part.spec.js:198:33

@jasmussen

Copy link
Copy Markdown
Contributor Author

For those following along, noting that this PR is not ready for review and is blocked on #78808 landing first so it can be rebased, due to some stroke-based issues uncovered in #78808 (comment)

@simison

simison commented Jul 1, 2026

Copy link
Copy Markdown
Member

Not sure if this PR is still relevant, but FYI a new icon:

@jasmussen
jasmussen force-pushed the update/redraw-icons-batch-2 branch from 42a077e to a7b6bd7 Compare August 31, 2026 07:41
@github-actions github-actions Bot added [Package] Components /packages/components [Package] Editor /packages/editor [Package] Block library /packages/block-library [Package] Block editor /packages/block-editor [Package] DataViews /packages/dataviews labels Aug 31, 2026
@jasmussen

Copy link
Copy Markdown
Contributor Author

Following the merger of #78808, and continuing work on #81274, this PR has now been rebased.

This PR still contains a bunch of icons, notably a lot of alignment, justification, and arrow icons, now all stroke-based. With very few exceptions, all icons in this batch remain visualy identical to those shipping in trunk. The few exceptions are: "next" is now a perfect mirror of "previous", the trunk version was misaligned, and the "upload" and "download" icons notably had very off fractional coordinates, they are now rounded. I doubt anyone will notice the changes.

As I worked on this, and as you'll see in one of the commits, I discovered a new set of icons that were affected by parts of the codebase that set fill instead of color. I've fixed those areas—the most visible one being the CheckboxControl—and they are in their own commit. I expect this to be the part of the PR that will need the most feedback, and is the most substantial, as the other icons really just continue the work that was already started. Moving from using fill to using color nevertheless still feels like a code-quality step in the right direction.

That makes this PR ready for review. With no particular rush (would be nice to get all icons updated for 7.2, but also fine if we don't), I'd appreciate a look from @WordPress/gutenberg-design.


A few notes to be aware of:

  • rss loses its dot in icon-registry contexts until Icons Registry: improve SVG sanitizer #75550 lands. Its dot is a <rect>, and the registry's wp_kses allowlist currently permits only svg, path and polygon, so the element is stripped.
  • Forced-colors rules need a second look. Four places set fill: CanvasText under @media (forced-colors: active) (block-icon and its content.scss, Button, Placeholder, list-view). These are now redundant for library icons, all of which now inherit through currentColor. But BlockIcon renders third-party block icons, which are arbitrary SVGs that may carry hardcoded fills, worth pondering.

As for the overall next steps for this icon work, here's an updated map of icons:

Icons
  1. Green was the first 35 icons to land. Few to no visual differences.
  2. Yellow is this PR, another 65 icons to land. Few to no visual differences.
  3. Pink is my the next PR I propose, a rather huge batch of icons but in all of them, few to no visual differences.
  4. Blue is the last big batch of updates I'd propose. These are icons that have received slight visual updates.
  5. Red are icons we need to talk about, consider for deprecation.

Expanding on 4 I will do in more depth when we get to that, but in all the cases the change have been discussed either in issues (such as improving the pagination icons), in some cases they are small stylistic changes to make them match the set better such as geometric curves in the "move to" icon rather than custom beziers, but notably these also include redesigns of most of the font-based icons, so that those move from fills to strokes.

@jasmussen
jasmussen marked this pull request as ready for review August 31, 2026 12:26
@github-actions

github-actions Bot commented Aug 31, 2026 •

Copy link
Copy Markdown

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: jasmussen <joen@git.wordpress.org>
Co-authored-by: ciampo <mciampini@git.wordpress.org>
Co-authored-by: mirka <0mirka00@git.wordpress.org>
Co-authored-by: simison <simison@git.wordpress.org>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@github-actions

github-actions Bot commented Aug 31, 2026 •

Copy link
Copy Markdown

Size Change: -1.49 kB (-0.02%)

Total Size: 7.91 MB

📦 View Changed
Filename Size Change
build/modules/boot/index.min.js 58 kB -182 B (-0.31%)
build/modules/workflow/index.min.js 18.6 kB -1 B (-0.01%)
build/scripts/block-editor/index.min.js 477 kB -171 B (-0.04%)
build/scripts/block-library/index.min.js 370 kB -71 B (-0.02%)
build/scripts/commands/index.min.js 19.9 kB -14 B (-0.07%)
build/scripts/components/index.min.js 266 kB -316 B (-0.12%)
build/scripts/customize-widgets/index.min.js 14.9 kB -11 B (-0.07%)
build/scripts/edit-post/index.min.js 52.7 kB -39 B (-0.07%)
build/scripts/edit-site/index.min.js 381 kB -107 B (-0.03%)
build/scripts/edit-widgets/index.min.js 22.4 kB -90 B (-0.4%)
build/scripts/editor/index.min.js 580 kB -262 B (-0.05%)
build/scripts/format-library/index.min.js 39.5 kB -13 B (-0.03%)
build/scripts/media-utils/index.min.js 199 kB -157 B (-0.08%)
build/scripts/preferences/index.min.js 3.35 kB -15 B (-0.45%)
build/styles/block-editor/style-rtl.css 20 kB +3 B (+0.01%)
build/styles/block-editor/style-rtl.min.css 17.1 kB +2 B (+0.01%)
build/styles/block-editor/style.css 20.1 kB +3 B (+0.01%)
build/styles/block-editor/style.min.css 17.1 kB +2 B (+0.01%)
build/styles/components/style-rtl.css 16.2 kB -4 B (-0.02%)
build/styles/components/style-rtl.min.css 13.7 kB -4 B (-0.03%)
build/styles/components/style.css 16.3 kB -4 B (-0.02%)
build/styles/components/style.min.css 13.7 kB -4 B (-0.03%)
build/styles/edit-post/style-rtl.min.css 1.97 kB -2 B (-0.1%)
build/styles/edit-post/style.min.css 1.97 kB -2 B (-0.1%)
build/styles/edit-site/style-rtl.css 21.7 kB -8 B (-0.04%)
build/styles/edit-site/style-rtl.min.css 17.8 kB -3 B (-0.02%)
build/styles/edit-site/style.css 21.7 kB -8 B (-0.04%)
build/styles/edit-site/style.min.css 17.8 kB -5 B (-0.03%)
build/styles/edit-widgets/style-rtl.css 5.06 kB -2 B (-0.04%)
build/styles/edit-widgets/style-rtl.min.css 3.63 kB -3 B (-0.08%)
build/styles/edit-widgets/style.css 5.06 kB -2 B (-0.04%)
build/styles/edit-widgets/style.min.css 3.64 kB -2 B (-0.05%)
build/styles/editor/style-rtl.min.css 27 kB +4 B (+0.01%)
build/styles/editor/style.css 31.6 kB -1 B (0%)
build/styles/editor/style.min.css 27 kB +4 B (+0.01%)

compressed-size-action

@ciampo
ciampo force-pushed the update/redraw-icons-batch-2 branch from 72fb52c to 554f707 Compare August 31, 2026 13:44
jasmussen and others added 2 commits September 1, 2026 13:39
Rewriting the dot from `<rect>` to `<path>` kept `wp_kses()` from
stripping it, but also added `stroke="none"`. The rect was 1.5x1.5 and
relied on the inherited 1.5 stroke to reach its drawn size of 3x3, so
dropping the stroke left a dot a quarter of the intended area -- one
solid pixel with a faint halo rather than a square.

Re-exported from Figma as a filled and stroked path. Uses only `svg`
and `path`, so it still survives the current sanitizer allowlist, and
the dot again measures identical to trunk. Keeping the stroke also
means the dot continues to track stroke-width alongside the arcs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ciampo
ciampo force-pushed the update/redraw-icons-batch-2 branch from bed70d0 to 8433196 Compare September 1, 2026 11:43
@ciampo ciampo changed the title Icons: Redraw 65 icons to be stroke-based. Icons: Redraw 64 icons to be stroke-based. Sep 1, 2026

@ciampo ciampo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To unblock this PR, I've removed both Search changes and the related changelog and description references. We can handle the conversion separately once we agree on the compatibility boundary and migration approach.

Given this, and @mirka 's previous review round, I believe we can approve and merge 🚀


Is there a way to know how big the impact is? Outside the Icon block and the editor itself, what's the back compat promise as far as these icons?
And absent including full copies of fill-based versions of these, is there any CSS/polyfill we can write that we can output with high specificity?

We'll need to look more into this, including any precedents regarding this type of breaking change (search is a public export and the Search block renders it on the front end).

We can't really do polyfills here, since the style (fill) that third-party consumers apply today will just stop working, since the new icon wouldn't have any filled shapes. Not sure if we can convert fill rules into strokes.

I will also note, there was already precedence for stroke icons. square has been a strokes-only icon for a while.

square shows that stroke-based icons are supported, but it does not necessarily make converting an existing fill-based icon compatible.

@ciampo
ciampo enabled auto-merge (squash) September 1, 2026 12:02
@ciampo
ciampo merged commit bb3752e into trunk Sep 1, 2026
73 checks passed
@ciampo
ciampo deleted the update/redraw-icons-batch-2 branch September 1, 2026 12:10
@github-actions github-actions Bot added this to the Gutenberg 24.0 milestone Sep 1, 2026
@jasmussen

Copy link
Copy Markdown
Contributor Author

Thank you for the help. Before I move on to the next round, I wonder if we shouldn't settle that strategy first. What's the best way to make this happen?

@ciampo

ciampo commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Before I move on to the next round, I wonder if we shouldn't settle that strategy first. What's the best way to make this happen?

For @wordpress/icons, we can follow the policy established in #78808 and migrate Search to a stroke-based icon, with the same dev note guidance.

The server-rendered Search block potentially needs a more careful rollout because existing sites receive the new SVG automatically. I tried searching on Veloria and found 12 WordPress.org themes (covering about 1,050 active installs) with CSS that directly conflicts with the change. The actual exposure is smaller because it only affects sites using the icon-button Search block in the matching context.

If we wanted to reduce the breakage, we could consider a gradual migration: a setting (on the block or, potentially even better, at the theme level) read by both editor and PHP renderer, to swith betwen the old fill-based or new stroke-based icon:

  1. We would start with the fill-based option as default (and stroke as opt-in), add a note / warning of some sort
  2. After some time (1/2 WP releases?) we could flip and switch to stroke as the default, and leave fill as an opt-out option
  3. After some more time (another 1/2 WP releases?) we could remove the fill version entirely.

But I also admit I don't have as much knowledge/confidence in advising re. changes that involve public blocks. I'll ping a few folks with better expertise here (cc @WordPress/gutenberg-components @Mamaduka @t-hamano @andrewserong @aaronrobertshaw @ramonjd @tellthemachines )

@ramonjd

ramonjd commented Sep 2, 2026 •

Copy link
Copy Markdown
Member

What's the exact risk here? I'm not sure I follow - do the new icons (if implemented on blocks) represent a visual change to published sites? Or is the worst that can happen that themes silently lose whatever CSS overrides they've implemented to style icons?

If the latter, why not test in the themes we know about, ship the icon with whatever block tweaks it requires in Gutenberg, and write a note for theme authors on make blog? There are about six blocks to migrate?

Sorry, I don't want to simplify or trivalize the costs, just wondering if we've weighed the return on a multi-release opt-in verses ensuring that the icons are pulled from the same source in the editor + frontend.

In other words, just getting it in like #30180 seemed to do 😄

Sorry if I'm missing something!

@jasmussen

Copy link
Copy Markdown
Contributor Author

Thanks for chiming in, and I agree finding out the impact is key. My confusion was whether this affected every icon, but it sounds like it's primarily the search icon. But to answer clearly:

do the new icons (if implemented on blocks) represent a visual change to published sites

The overwhelming majority, 80% plus, will be pixel-identical in the new stroke-based versions.

For the other 20% of icons, it sounds like they are used only in-editor, and here I will be proposing small visual changes. Not breaking: the overall shape and message is the same, but something that we will review and then merge if we agree it's an improvement. I'm speaking about all the blue icons in this screenshot.

So what's the exact risk? I did more digging, based on Marco's comment: it's about 6 icons are styled by themes on the frontend. It's mainly chevrons, the close button(s), and the search icon.

The main risk is that a theme might have the following CSS:

.wp-block-search__button svg { fill: #333 }

Since there's no longer a fill inside the icon, the icon will no longer receive the intended colour. Instead it will inherit its colour from the surrounding button, i.e. currentColor.

@ciampo

ciampo commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Yes, that's the risk.

My honest opinion: it should be relatively low impact. It won't break sites. But also, I don't have experience with dealing with changes affecting blocks and the front-end of our sites, which is why I asked for extra opinions.

@jasmussen

Copy link
Copy Markdown
Contributor Author

@henriqueiamarino @beafialho @iamtakashi my theme developer friends, with no rush and only if you have time, what are your instincts on this?

The context is: we are exploring new features for icons that improve the plumbing for future features. But one consequence that has, as we continue to work on it: you can no longer set the colour of an icon using fill: red;, now you have to do it using color: red;.

That means if you previously added something like:

.wp-block-search__button svg { fill: #333 }

This CSS will stop working, and instead of the icon being #333, the icon will now inherit its colour from the the color value of .wp-block-search__button svg { fill: #333 } (unless you update the CSS). So if the color of .wp-block-search__button was blue, the icon is now blue.

The question: how big of an impact do you perceive this change to have?

@simison

simison commented Sep 2, 2026

Copy link
Copy Markdown
Member

I doubt we could simply remove the fill styling support at least in already inserted blocks just like that, even over one version WP as opt-in. We typically support public APIs for a very long time, and this has risk of breaking customer's sites frontend, not just dashboards.

For example, one of the sites (regional library of a city in Finland) using themes @ciampo highlighted uses the style and would look broken without it:

Screenshot 2026-09-02 at 12 04 45 Screenshot 2026-09-02 at 12 04 50

Can we keep old icon with fill support for already inserted blocks, and any newly inserted block just uses the new icon? It might make sense to move the legacy icon to be part of the block's code rather than icons package so that we don't need to maintain it there.

@jasmussen

Copy link
Copy Markdown
Contributor Author

That actually touches on an important point. The icons in question—search, loupe, chevrons—that are used on the frontend are all part of the blocks frontend rendering piece. They happen to be the same as WordPress icons, because why not, but they don't have to be part of the set. Functionally they serve different needs, and can be on separate tracks. That's me both validating that I think it makes sense to move their SVG code and make it part of the block's code.

A longer term perspective is also to explore using the Icon Block for those particular pieces, so that it doesn't have to be locked to the built-in icon, but can benefit from third party icon sets registered.

@ciampo

ciampo commented Sep 2, 2026 •

Copy link
Copy Markdown
Contributor

It might make sense to move the legacy icon to be part of the block's code rather than icons package so that we don't need to maintain it there.

From what I understand, the Search block already has two separate SVG definitions:

  • @wordpress/icons provides search.svg, used by the block in the editor.
  • The dynamic block’s PHP renderer contains its own inline SVG for the front end.

So the icon rendered in the front end is already a separate (identically looking) icon.

Can we keep old icon with fill support for already inserted blocks, and any newly inserted block just uses the new icon?

I may be wrong, but my understanding is that search is dynamically rendered, so existing and newly inserted blocks both receive whatever SVG the current PHP renderer emits. Distinguishing them would require a persisted attribute or version marker.

@ciampo

ciampo commented Sep 2, 2026 •

Copy link
Copy Markdown
Contributor

We could update only the icon in @wordpress/icons and keep the PHP-rendered icon (the one shows on the front-end) still fill-based, but it would have some consequences:

  • The Search block editor would @wordpress/icons in both on the React side (index.js and edit.jsx). It would show the stroke icon while the PHP renderer shows the fill icon. Theme CSS using fill could therefore work on the published page but not in the editor.
  • Other JavaScript consumers of @wordpress/icons would receive the new icon. Any consumer styling search through fill would need to use color instead (as already applied for other icons)

We could even consider changing edit.jsx to use the same icon as in the PHP renderer (ie the fill based legacy version) so that block usage won't be affected neither in the editor, not in the frontend.

Is this a better compromise?

@jasmussen

Copy link
Copy Markdown
Contributor Author

My mental model as of this comment is: think of them as different icons. One is the search icon part of the WordPress UX, we use it here:

image

The other is the search block loupe icon, and we use it here:

image

They are different icons, and that's okay. The latter could eventually be from the Icon Block, arguably should be. So divorcing those feels like a valid choice, even outside of any stroke-conversations.

Am I missing some nuance in the usage?

@jasmussen

Copy link
Copy Markdown
Contributor Author

Realising also that it's weird we do this:

.commands-command-menu__header-search-icon:dir(ltr) {
    transform: scaleX(-1);
}

@ciampo

ciampo commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

We could update only the icon in @wordpress/icons and keep the PHP-rendered icon (the one shows on the front-end) still fill-based
[...]
We could even consider changing edit.jsx to use the same icon as in the PHP renderer (ie the fill based legacy version) so that block usage won't be affected neither in the editor, not in the frontend.

I'm about to open a PR to implement this approach.

@henriqueiamarino

Copy link
Copy Markdown

Hey @jasmussen, just chiming in with my two cents: the change from #fill to #color would not impact my themes, as I have been avoiding SVGs since they were not accepted without a plugin. I know folks from Theme 51 would use Safe SVG a lot, but not us on the Themes team.
With that, I endorse your work and decision here, and I’ll happily use the improved icons you are working on. 👊

wporg-sync pushed a commit to WordPress/wordpress-develop that referenced this pull request Sep 8, 2026
This updates the pinned commit hash of the Gutenberg repository from `658c8cbe89db5d90279051d3bb816ca210fe4646 ` (version `23.8.0`) to `5a4cc502d43016f1efa66f8f6d9bd3bb4bb24d85`, which contains the latest changes up until the Node.js version was bumped from 20.x to 24.x.

A full list of changes included in this commit can be found on GitHub: https://github.com/WordPress/gutenberg/compare/658c8cbe89db5d90279051d3bb816ca210fe4646..5a4cc502d43016f1efa66f8f6d9bd3bb4bb24d85.

- Menu: Stabilize iframe reload test (WordPress/gutenberg#82081)
- Packages: Recover August 26 npm release metadata (WordPress/gutenberg#82085)
- Storybook: Demonstrate light, dark, and nested themes (WordPress/gutenberg#82039)
- Project Management: Add validation for missing GitHub labels configuration (WordPress/gutenberg#76263)
- Automated Testing: Enforce `.tsx` for all new React files (WordPress/gutenberg#80123)
- UI: Use root theme for portaled overlays (WordPress/gutenberg#82038)
- Menu: Stabilize portaled iframe test (WordPress/gutenberg#82092)
- Theme: Move post-release changelog entry to Unreleased (WordPress/gutenberg#82093)
- Media: Refuse a multi-file drop on a placeholder that takes one file (WordPress/gutenberg#82046)
- Font Library: Keep CSS custom properties unquoted in font previews (WordPress/gutenberg#82010)
- Add "reading settings" link to Front Page template (WordPress/gutenberg#81987)
- Docs: Fix grammar in documentation (WordPress/gutenberg#82032)
- Media Editor: refactor the panel layout (WordPress/gutenberg#81840)
- DataViews layout storybook: action names and primary status (WordPress/gutenberg#82104)
- Make `@wordpress/reusable-blocks` a no-op compatibility package (WordPress/gutenberg#79186)
- Widget Dashboard: add a Policy provider to govern what users may do (WordPress/gutenberg#81967)
- Build Package: Restore Core Boot layout compatibility (WordPress/gutenberg#82112)
- Edit Widgets: Guard canInsertBlockInWidgetArea against an empty block list (WordPress/gutenberg#82107)
- Build: Enforce NodeNext resolution for ESM packages (WordPress/gutenberg#82088)
- UI: Remove unused outset-ring--focus-within-visible class. (WordPress/gutenberg#82077)
- Inserter: Keep the block preview inside the viewport (WordPress/gutenberg#82060)
- Test: Enforce Vitest conventions and CI guardrails (WordPress/gutenberg#81040)
- Editor: Apply the showListViewByDefault preference in the shared editor (WordPress/gutenberg#82119)
- Release: Use CLI runtime for package publishing (WordPress/gutenberg#82122)
- Reusable Blocks: Remove leftover merge conflict markers from the changelog (WordPress/gutenberg#82126)
- chore: Update grep settings and remove comments (WordPress/gutenberg#82121)
- Fix: Content Guidelines: UX/UI Accessibility issues (WordPress/gutenberg#80306)
- Extensible Site Editor: Let menu items be added from the navigation screen (WordPress/gutenberg#82125)
- Navigation: Change WCText to Text (WordPress/gutenberg#82130)
- Storybook: Persist sidebar theme in URL (WordPress/gutenberg#82111)
- Editor assets endpoint: prime the theme JSON resolver before capturing (WordPress/gutenberg#82134)
- Remove unused dependencies across the monorepo (WordPress/gutenberg#82103)
- Update changelog instructions for agents (WordPress/gutenberg#82097)
- Build: Normalize JSX file extensions (WordPress/gutenberg#80990)
- Fix pattern export filenames by normalizing special characters (WordPress/gutenberg#77033)
- Site editor v2: navigation takes view config from endpoint (WordPress/gutenberg#82138)
- Extensible Site Editor: Load media assets before the media fields open (WordPress/gutenberg#82135)
- Site editor v2: pages take view config from endpoint (WordPress/gutenberg#82140)
- Extensible site editor: Add a revisions entry point to the Styles route (WordPress/gutenberg#82142)
- List: outdent an empty middle item without adding an item (WordPress/gutenberg#82011)
- Extensible site editor: Fall back to the raw title in edit route document titles (WordPress/gutenberg#82143)
- Blocks: Make BlockTransform a discriminated union over its type (WordPress/gutenberg#81831)
- Theme: add LightningCSS WPDS token fallback plugin (WordPress/gutenberg#80401)
- UI: Add popupWidth prop to item popup components (WordPress/gutenberg#82087)
- Snackbar: Restart timeout when a notice is recreated (WordPress/gutenberg#81764)
- Media: Report server upload failures in plain language (WordPress/gutenberg#81735)
- Format library: visualise non-breaking spaces (WordPress/gutenberg#74040)
- Bump the github-actions group across 1 directory with 2 updates (WordPress/gutenberg#81932)
- Try adding a Grid block variation to Gallery (WordPress/gutenberg#81909)
- Components: Keep foreign items out of a ToolsPanel menu (WordPress/gutenberg#82127)
- Enable Gallery columns and crop controls in viewport states (WordPress/gutenberg#82003)
- Query: Don't write excludeCurrent into blocks that never had it (WordPress/gutenberg#82147)
- Site title: Add fit-text support. (WordPress/gutenberg#82074)
- Accordion Panel: Reset padding-block when panel is hidden (WordPress/gutenberg#81782)
- Replace npm-run-all with native npm script chaining (WordPress/gutenberg#82166)
- Grid: per-item tile size limits (WordPress/gutenberg#81899)
- Fix: Tabs block: Anchor links in tab panels are not functional (WordPress/gutenberg#81744)
- Validate tsconfig references against declared dependencies (WordPress/gutenberg#82106)
- Performance tests: Build once and shard the suites across parallel CI jobs (WordPress/gutenberg#82160)
- Site Health widget: route the body's review link through the host (WordPress/gutenberg#82066)
- Build: allow wp-theme 2.x peer deps (WordPress/gutenberg#82139)
- Bundled packages: Add a check for transitive private API usage (WordPress/gutenberg#82027)
- List: try to preserve indentation level of children after outdenting+merging their parent (WordPress/gutenberg#82145)
- Block Library: Fix categories block handling of invalid taxonomy (WordPress/gutenberg#82153)
- useViewConfig: don't request the view config twice (WordPress/gutenberg#82141)
- Documentation: Remove invalid references to Babel in packages README (WordPress/gutenberg#82176)
- Automated Testing: Fix failing categories test on trunk (WordPress/gutenberg#82182)
- Jest: Update to 30.5.0 (WordPress/gutenberg#82181)
- Fix: Retain focus and caret position after Backspace undo of a prefix block transform (WordPress/gutenberg#82116)
- Scaffold e2e tests for the editor inspector consolidation experiment (WordPress/gutenberg#82178)
- Package lock: Deduplicate Jest dependencies (WordPress/gutenberg#82187)
- Components: Migrate remaining JSX files to TypeScript (WordPress/gutenberg#82132)
- Text: Use pretty wrapping by default (WordPress/gutenberg#82133)
- Build Tooling: Add browserslist config for build targeting (WordPress/gutenberg#82179)
- Columns: Fix appender drop zone visibility when dragging into empty column (WordPress/gutenberg#77852)
- Build: Require explicit JSX file extensions (WordPress/gutenberg#82189)
- Icons: Redraw 35 prominent icons with consistent stroke widths (WordPress/gutenberg#78808)
- Test: Classify and enforce unit test environments by filename (WordPress/gutenberg#80991)
- Test: Fix CI failures on trunk (WordPress/gutenberg#82201)
- Fix editor link colour cascade order for nested blocks (WordPress/gutenberg#77833)
- Add New Template: Show the design system focus ring instead of legacy box-shadow rings (WordPress/gutenberg#82164)
- List View: Don’t focus the last Table cell on keyboard activation (WordPress/gutenberg#81964)
- Fix spelling typos in docs and inline comments (WordPress/gutenberg#82217)
- CI: Pin npm version in the private API check job (WordPress/gutenberg#82222)
- Private APIs: Add back '@wordpress/dataviews' to the allowed core modules (WordPress/gutenberg#82221)
- Editor: Mark __unstableSaveForPreview options as optional (WordPress/gutenberg#81858)
- Docs: Explain when the Cover block's overlay controls appear (WordPress/gutenberg#82234)
- Menu: Use Text for item labels and descriptions (WordPress/gutenberg#82237)
- Test: Type pipe's supported array inputs (WordPress/gutenberg#82210)
- Widget Dashboard: keep the plain anchor for an empty-string download (WordPress/gutenberg#82073)
- CI: Read the required npm version from a single source (WordPress/gutenberg#82235)
- Components: Add `defaultShown`, `onShownChange` to `ToolsPanelItem` (WordPress/gutenberg#78010)
- Storybook: Drop unused support for js-as-jsx (WordPress/gutenberg#82192)
-  Math: Declare clientNavigation interactivity support (WordPress/gutenberg#82248)
- Point to docmumentation about release assets (WordPress/gutenberg#82250)
- Change stray `ubuntu-latest` to `ubuntu-24.04`. (WordPress/gutenberg#82156)
- Performance tests: Reuse the plugin an earlier trunk run already built (WordPress/gutenberg#82223)
- Breadcrumb: Add UI component (WordPress/gutenberg#80425)
- Components: Cut the ToolsPanel render cascade (WordPress/gutenberg#82180)
- Fix: alert dialog box cancel button color (WordPress/gutenberg#82261)
- UI: Add Form best practices Storybook page (WordPress/gutenberg#82197)
- Media: Stop claiming "Upload complete" when upload failed (WordPress/gutenberg#81397)
- Boot, Site Editor: Seed content surfaces with default background color (WordPress/gutenberg#81646)
- Format Library: Fix Edit as HTML crash with background-only highlight (WordPress/gutenberg#82215)
- Remove the template activation experiment (WordPress/gutenberg#82241)
- Packages: Add cross-version compatibility skill (WordPress/gutenberg#81890)
- Show the block outline where the grab cursor shows (WordPress/gutenberg#81798)
- DataViews: Scope the search field's fixed width to the default UI search row (WordPress/gutenberg#82128)
- Background image: support setting the image from a URL (WordPress/gutenberg#82230)
- Border Box Control: Try moving the unlink button to the label row, and rename the panel to Borders (WordPress/gutenberg#82163)
- Widget Dashboard: govern Reset to default through the policy (WordPress/gutenberg#82255)
- Media: Attach unattached media to the current post on save/publish (WordPress/gutenberg#81977)
- Widget Dashboard: make the column count a host decision (WordPress/gutenberg#82204)
- Global styles: resolve theme-relative background image URLs for display (WordPress/gutenberg#82242)
- CI: Unify the automation comments into a single PR comment (WordPress/gutenberg#82249)
- Core Data: Convert hooks tests to renderHook and drop JSX (WordPress/gutenberg#82276)
- Release: Map [Type] Flaky Test to the Tools changelog section (WordPress/gutenberg#82078)
- DateTime tests: freeze the clock in the empty-value calendar test (WordPress/gutenberg#82282)
- DataForm: treat combined form fields purely as layout containers (WordPress/gutenberg#82175)
- Global styles engine: return a copy from getResolvedValue instead of mutating (WordPress/gutenberg#82278)
- Test: Migrate Node unit tests to Vitest (WordPress/gutenberg#82211)
- Icons: Redraw 64 icons to be stroke-based. (WordPress/gutenberg#78812)
- Tests: Fix Vitest setup and stale jest types under non-hoisting installs (WordPress/gutenberg#82290)
- UI: Rename Popup `popupWidth` prop to `width` (WordPress/gutenberg#82193)
- Query: Replace the "Reload full page enabled" modal with a snackbar notice (WordPress/gutenberg#82246)
- Project Management: Update CODEOWNERS to reflect current participation (WordPress/gutenberg#82262)
- Editor: Refactor the Options menu to use the Menu component (WordPress/gutenberg#81564)
- UI: Add Field.VisualLabel (WordPress/gutenberg#82095)
- Update Stylelint to v17 and related packages (WordPress/gutenberg#80738)
- Media: keep indexed PNG sub-sizes indexed (WordPress/gutenberg#81884)
- UI: Add Combobox and Autocomplete Status (WordPress/gutenberg#82195)
- UI: Drop Status and Empty live region test assertions (WordPress/gutenberg#82300)
- Project Management: Remove empty entries from CODEOWNERS (WordPress/gutenberg#82292)
- Documentation: Add recommended bulk suppressions configuration for ESLint (WordPress/gutenberg#82303)
- UI: Hide Input field ring when a slot control is focused (WordPress/gutenberg#82257)
- Widgets: Surface debugging details in the ErrorBoundary (WordPress/gutenberg#82099)
- TypeScript: Migrate format-library package to TS (WordPress/gutenberg#79486)
- BorderBoxControl: Make sure the group of controls is associated with the label (WordPress/gutenberg#82279)
- Image block cropping: Sync image size and link destination settings (WordPress/gutenberg#82316)
- Menu: Support multiple item descriptions (WordPress/gutenberg#81825)
- CI: Do not fail the type label check on a newly opened pull request (WordPress/gutenberg#82322)
- UI: Align overlay Trigger props with Base UI (WordPress/gutenberg#81824)
- Gallery block: Fix 'Crop images to fit' broken in editor (WordPress/gutenberg#82318)
- Widget Dashboard: enforce the policy on the staging layer for every instance operation (WordPress/gutenberg#82256)
- DataForm: Communicate the timezone in the datetime control (WordPress/gutenberg#82291)
- Add more e2e tests for the editor inspector consolidation experiment (WordPress/gutenberg#82239)
- Framework: Error on npm versions older than the required floor (WordPress/gutenberg#82320)
- Document every type for DataViews/DataForm/Field API (WordPress/gutenberg#82326)
- ESLint plugin: remove usage of Babel parser (WordPress/gutenberg#82144)
- DataViews: remove the rich text options from the control config type (WordPress/gutenberg#82330)
- Meta Boxes: Move meta box markup with moveBefore to keep classic editors alive (WordPress/gutenberg#82243)
- Add more e2e tests for the editor inspector consolidation experiment (WordPress/gutenberg#82327)
- Test: Enforce JavaScript test runner ownership (WordPress/gutenberg#82299)
- DataViews: clamp page after delete (WordPress/gutenberg#82244)
- Stylelint tools: Resolve test config extends from the workspace (WordPress/gutenberg#82336)
- Editor: Deprecate the `as` prop of the plugin menu item components (WordPress/gutenberg#82319)
- Icons: Convert Search icon to strokes (WordPress/gutenberg#82338)
- DataViews: Document that table column styles do not apply to the primary column (WordPress/gutenberg#82238)
- DataViews: add hierarchical levels story (WordPress/gutenberg#82344)
- CI: Add "Required changes from trunk" PR check (WordPress/gutenberg#82272)
- feat: Improve TypeScript definitions in the getEntityRecord function (WordPress/gutenberg#81863)
- Framework: Update Node.js to v24 LTS and npm to v11 (WordPress/gutenberg#80395)
- Revert "Framework: Update Node.js to v24 LTS and npm to v11 (WordPress/gutenberg#80395)" (WordPress/gutenberg#82355)
- UI: Remove ValidityIndicator outer margin (WordPress/gutenberg#82267)
- Span the writing flow focus capture elements over the canvas (WordPress/gutenberg#82354)
- Fields: Hide the slug field for posts without a permalink (WordPress/gutenberg#82341)
- Fix: Responsive horizontal orientation does not override a vertical layout. (WordPress/gutenberg#82364)
- View Config: Move the table column style descriptions to the 7.2 compat layer (WordPress/gutenberg#82372)
- Block Library: Allow themes to override the padding added via background color (WordPress/gutenberg#82024)
- DataViews: Append an ellipsis to action labels that open a dialog (WordPress/gutenberg#81994)
- Pages: require authentication and a capability to render generated standalone pages (WordPress/gutenberg#82254)
- Build/Test Tools: Replace npx with npm exec --no (WordPress/gutenberg#82331)
- Navigation: restore flex-grow on container when accessible label is present (WordPress/gutenberg#78447)
- DOM Ready: Exclude src from published package files (WordPress/gutenberg#77302)
- UI: Support custom targets on Link and Menu.LinkItem (WordPress/gutenberg#82347)
- Escape HTML: Exclude src from published package files (WordPress/gutenberg#77304)
- keycodes: Exclude src from published files (WordPress/gutenberg#77306)
- Packages: Exclude src from block-serialization-default-parser published package (WordPress/gutenberg#77307)
- A11y: Exclude src from published package files (WordPress/gutenberg#77309)
- Packages: Exclude src from autop published package (WordPress/gutenberg#77283)
- Blob: Exclude src from published package files (WordPress/gutenberg#77289)
- Packages: Exclude src from deprecated published package (WordPress/gutenberg#77303)
- fix(list-reusable-blocks): exclude src from published files (WordPress/gutenberg#77305)
- Admin UI: Exclude src from published files and sideEffects (WordPress/gutenberg#77285)
- Standardize 'Back' and 'Go back' labels (WordPress/gutenberg#79211)
- Audio: Update autoplay help text for clarity (WordPress/gutenberg#69978)
- Theme JSON: Avoid rebuilding identical block schemas during sanitization (WordPress/gutenberg#82203)
- Docs: Improve setAttributes updater function wording (WordPress/gutenberg#82405)
- Query Loop: Rename the "Keyword" filter to "Search terms" and add help text (WordPress/gutenberg#82387)
- CI: add a per-workflow status check job and filter paths (WordPress/gutenberg#81015)
- ESLint: Thin use-recommended-components tests (WordPress/gutenberg#82407)
- UI: Fix enabled input placeholder contrast (WordPress/gutenberg#82304)
- Tab trap escape hatch: leave/enter the canvas with Escape/Enter (WordPress/gutenberg#82314)
- List: preserve client IDs on indent, just like outdent (WordPress/gutenberg#59216)
- Templates REST API: prevent fatal error when a null template reaches prepare_item_for_response (WordPress/gutenberg#82374)
- Editor: Refactor the View menu to use the Menu component (WordPress/gutenberg#82321)
- CSS Styling: Cleanup focus outline override for grid component (WordPress/gutenberg#82337)
- E2E: Run the site editor suite against the extensible site editor too (WordPress/gutenberg#82117)
- Fields: Remove unused CSS rule from slug field control (WordPress/gutenberg#77961)
- Fix: Footnote IDs can start with a digit and break CSS selectors (WordPress/gutenberg#82398)
- feat: Introduce 'Add Media' in the block controls for media-text block (WordPress/gutenberg#82420)
- fix: Audio element to have it's own name (WordPress/gutenberg#82389)
- Docs: Update Playground CLI wording (WordPress/gutenberg#77579)
- Upgrade React 19 to 19.2.8, read version from package.json (WordPress/gutenberg#82439)
- Tab Panel: Show focus with outline instead of legacy box-shadow ring (WordPress/gutenberg#82421)
- Editor: Fix disabled and link items of the more menu adapter (WordPress/gutenberg#82428)
- UI: Fix Menu.LinkItem target detection (WordPress/gutenberg#82442)
- SearchableSelect: Add form primitive to @wordpress/ui (WordPress/gutenberg#80961)
- Validated form controls: Use design token for invalid focus rings (WordPress/gutenberg#82410)
- feat: Update layout icons (WordPress/gutenberg#82025)
- Widgets: Replace {TODO} placeholder with PR number in changelog entries (WordPress/gutenberg#82450)
- UI: Remove ESLint ref suppressions and refactor AlertDialog state (WordPress/gutenberg#82131)
- Menu: Align selection indicators and prefix icons with item labels (WordPress/gutenberg#82346)
- ToggleGroupControl: Honor the root disabled prop (WordPress/gutenberg#82259)
- Block Library: Remove the form blocks experiment (WordPress/gutenberg#82451)
- List: indent and outdent multi-selected items with Tab (WordPress/gutenberg#82411)
- CodeRabbit: Only review on request, keep PR descriptions untouched (WordPress/gutenberg#82448)
- Privacy policy page badge: make it visible in Site Editor > Pages and Editor Inspector (WordPress/gutenberg#82422)
- Support `isAny` and `isNone` filter operators for numeric fields. (WordPress/gutenberg#77942)
- UI: Keep focus rings visible in overlay content (WordPress/gutenberg#82443)
- Menu: Correct alignment documentation and changelog (WordPress/gutenberg#82455)
- UI: Name unlabeled form primitive stories (WordPress/gutenberg#82311)
- UI: Re-read the native validity on blur in ControlWithError (WordPress/gutenberg#82376)
- Media Utils: Preserve arrays in multipart form data (WordPress/gutenberg#82353)
- fix: Remove stories from performance tests (WordPress/gutenberg#82459)
- Add the template e2e tests for the editor inspector consolidation experiment (WordPress/gutenberg#82394)
- UI: Fix Link target detection (WordPress/gutenberg#82447)
- Fix privacy policy page setting unit test on multisite (WordPress/gutenberg#82467)
- UI, DataViews: Give input and selection controls solid backgrounds (WordPress/gutenberg#82391)
- Fix LocationPicker popover alignment with InputGroup (WordPress/gutenberg#82090)
- List: indent and outdent a fully selected list item with Tab (WordPress/gutenberg#82460)
- UI: Fix Minimal Select popup width (WordPress/gutenberg#82461)
- Rich text: resolve owned event listeners once instead of per subscriber (WordPress/gutenberg#80605)
- UI: Keep borderless InputLayout chrome when disabled (WordPress/gutenberg#82468)
- Theme: Cache luminance for contrast checks (WordPress/gutenberg#82445)
- Add promptfoo for testing agent development setup and skills (WordPress/gutenberg#80812)
- wp-env: Fix Docker build errors with Debian Bullseye repositories (WordPress/gutenberg#82478)
- Query Loop: Fall back to `post` when the query has no `postType` (WordPress/gutenberg#82465)
- Block Supports: Bail early in state styles when a block has no style attribute (WordPress/gutenberg#81908)
- CSS Styling: Represent focus with outline for list view component (WordPress/gutenberg#82129)
- Icons: Remove the obsolete forced colors mode hack (WordPress/gutenberg#82481)
- Docs: Remove invalid `@return` tag from the `block_core_social_link_get_services` hook docblock (WordPress/gutenberg#82488)
- Site Editor: Add a root error boundary to prevent a blank screen (WordPress/gutenberg#82486)
- Writing Flow: Bail out of Enter handling when no block is selected (WordPress/gutenberg#82424)
- Docs: Remove the blank line between @PARAM and @return in test docblocks (WordPress/gutenberg#81907)
- List View: Disable block icon colors while the block is selected (WordPress/gutenberg#82498)
- Fix: Restore layout styles for block style variations (WordPress/gutenberg#82335)
- Post slug: prefer server sanitization in the editor (WordPress/gutenberg#78135)
- Media Modal Experiment: Allow filtering by attached to the post, or unattached (WordPress/gutenberg#81974)
- Media editor: Lock the editing tools while a save is running (WordPress/gutenberg#82417)
- DataViews: Restrict the isAll filter operator to array fields (WordPress/gutenberg#82463)
- Media Fields: Pass the field's disabled state to the textarea controls (WordPress/gutenberg#82516)
- Theme: Make chroma capacity caching deterministic (WordPress/gutenberg#82505)
- Global Styles: Remove the color randomizer experiment (WordPress/gutenberg#82452)
- DataViews: Fix Field.sort TypeScript type definition (WordPress/gutenberg#82162)
- Migrate __experimentalText and __experimentalHeading to @wordpress/ui Text in Inspector Popover Header (WordPress/gutenberg#77449)
- Migrate __experimentalText to @wordpress/ui Text in Block switcher bindings hint (WordPress/gutenberg#77366)
- UI: Add Radio form primitive (WordPress/gutenberg#82214)
- Migrate __experimentalText to @wordpress/ui Text in Allowed Blocks Modal (WordPress/gutenberg#78119)
- UI: Add CheckboxControl (WordPress/gutenberg#82213)
- Core Data: Scope revisionId to the entity it is provided for (WordPress/gutenberg#82517)
- Migrate __experimentalText to @wordpress/ui Text in Pattern Overrides Dropdown (WordPress/gutenberg#77492)
- ProgressBar: Respect reduced motion preferences (WordPress/gutenberg#82490)
- Theme: Clarify color seed and warning guarantees (WordPress/gutenberg#82526)
- Theme: Build default ramps before token artifacts (WordPress/gutenberg#82525)
- CodeRabbit: Disable the review status comment (WordPress/gutenberg#82534)
- Project Management: Restore CODEOWNERS exclusions for suppression lists (WordPress/gutenberg#82538)
- Editor: merge duplicate "Enhancements" changelog sections (WordPress/gutenberg#82533)
- UI: Validate compound component context (WordPress/gutenberg#82510)
- Docs: Document isolated worktree setup (WordPress/gutenberg#82524)
- DataForm: render untyped fields without an edit control that are read-only (WordPress/gutenberg#82514)
- API Fetch: Add unregister to remove a registered middleware (WordPress/gutenberg#82408)
- Editor: Show revision data in Post Title component (WordPress/gutenberg#82536)
- Components: Add compound component composition diagnostics (WordPress/gutenberg#82509)
- Fieldset: Fix gap token to match spec (WordPress/gutenberg#75479)
- Test: Migrate deterministic JSDOM tests and harden Vitest isolation (WordPress/gutenberg#82212)
- Release: Make npm publication verification resumable (WordPress/gutenberg#82089)
- Block Library: Use 'useEntityProp' in Site Title and Tagline blocks (WordPress/gutenberg#82518)
- Theme: Migrate Terrazzo modes to resolvers (WordPress/gutenberg#82537)
- Fix auto-capitalization after Enter on iOS Safari (WordPress/gutenberg#82475)
- Update navigation link block name, use a default variation for custom link (WordPress/gutenberg#82375)
- API Fetch: Expose defaultFetchHandler so overrides can restore it (WordPress/gutenberg#82553)
- Core Data: Return a stable record for equivalent `_fields` queries (WordPress/gutenberg#82552)
- API Fetch: Rename defaultFetchHandler parameter to options (WordPress/gutenberg#82588)
- Fields: remove unused custom sort from the author fields (WordPress/gutenberg#82559)
- Fields: Declare the caption, alt text, description and ping status controls through the Field API (WordPress/gutenberg#82539)
- Docs: Align @PARAM tag columns in phpunit/ docblocks (WordPress/gutenberg#81904)
- Docs: Align @PARAM tag columns in lib/ docblocks (WordPress/gutenberg#81902)
- Docs: Align @PARAM tag columns in packages/ docblocks (WordPress/gutenberg#81903)
- Fix help paragraph color contrast ratio in the Connectors page. (WordPress/gutenberg#82378)
- DataViews: Declare transitive dependencies imported by the ./wp bundle (WordPress/gutenberg#81843)
- DataForm: Add a `showPlaceholderIfEmpty` option to the panel layout (WordPress/gutenberg#82527)
- Global Styles UI: migrate revisions Active Badge to UI Badge (WordPress/gutenberg#82560)
- UI: Put overflow on Select.List instead of a nested wrapper (WordPress/gutenberg#82470)
- Editor: migrate post-card-panel Badge to UI Badge (WordPress/gutenberg#82500)
- Fields: migrate page-title Badge to UI Badge (WordPress/gutenberg#82499)
- DataViews: Skip table columns for field ids without a field definition (WordPress/gutenberg#82601)
- View config: remove stale fields from the wp_template default view (WordPress/gutenberg#82602)
- Rich text: restore contenteditable on pointercancel (WordPress/gutenberg#82598)
- Components: Add an Emotion-to-SCSS migration skill and guide (WordPress/gutenberg#82567)

See #66070.

git-svn-id: https://develop.svn.wordpress.org/trunk@63538 602fd350-edb4-49c9-b593-d223f7449a82
wporg-sync pushed a commit to WordPress/WordPress that referenced this pull request Sep 8, 2026
This updates the pinned commit hash of the Gutenberg repository from `658c8cbe89db5d90279051d3bb816ca210fe4646 ` (version `23.8.0`) to `5a4cc502d43016f1efa66f8f6d9bd3bb4bb24d85`, which contains the latest changes up until the Node.js version was bumped from 20.x to 24.x.

A full list of changes included in this commit can be found on GitHub: https://github.com/WordPress/gutenberg/compare/658c8cbe89db5d90279051d3bb816ca210fe4646..5a4cc502d43016f1efa66f8f6d9bd3bb4bb24d85.

- Menu: Stabilize iframe reload test (WordPress/gutenberg#82081)
- Packages: Recover August 26 npm release metadata (WordPress/gutenberg#82085)
- Storybook: Demonstrate light, dark, and nested themes (WordPress/gutenberg#82039)
- Project Management: Add validation for missing GitHub labels configuration (WordPress/gutenberg#76263)
- Automated Testing: Enforce `.tsx` for all new React files (WordPress/gutenberg#80123)
- UI: Use root theme for portaled overlays (WordPress/gutenberg#82038)
- Menu: Stabilize portaled iframe test (WordPress/gutenberg#82092)
- Theme: Move post-release changelog entry to Unreleased (WordPress/gutenberg#82093)
- Media: Refuse a multi-file drop on a placeholder that takes one file (WordPress/gutenberg#82046)
- Font Library: Keep CSS custom properties unquoted in font previews (WordPress/gutenberg#82010)
- Add "reading settings" link to Front Page template (WordPress/gutenberg#81987)
- Docs: Fix grammar in documentation (WordPress/gutenberg#82032)
- Media Editor: refactor the panel layout (WordPress/gutenberg#81840)
- DataViews layout storybook: action names and primary status (WordPress/gutenberg#82104)
- Make `@wordpress/reusable-blocks` a no-op compatibility package (WordPress/gutenberg#79186)
- Widget Dashboard: add a Policy provider to govern what users may do (WordPress/gutenberg#81967)
- Build Package: Restore Core Boot layout compatibility (WordPress/gutenberg#82112)
- Edit Widgets: Guard canInsertBlockInWidgetArea against an empty block list (WordPress/gutenberg#82107)
- Build: Enforce NodeNext resolution for ESM packages (WordPress/gutenberg#82088)
- UI: Remove unused outset-ring--focus-within-visible class. (WordPress/gutenberg#82077)
- Inserter: Keep the block preview inside the viewport (WordPress/gutenberg#82060)
- Test: Enforce Vitest conventions and CI guardrails (WordPress/gutenberg#81040)
- Editor: Apply the showListViewByDefault preference in the shared editor (WordPress/gutenberg#82119)
- Release: Use CLI runtime for package publishing (WordPress/gutenberg#82122)
- Reusable Blocks: Remove leftover merge conflict markers from the changelog (WordPress/gutenberg#82126)
- chore: Update grep settings and remove comments (WordPress/gutenberg#82121)
- Fix: Content Guidelines: UX/UI Accessibility issues (WordPress/gutenberg#80306)
- Extensible Site Editor: Let menu items be added from the navigation screen (WordPress/gutenberg#82125)
- Navigation: Change WCText to Text (WordPress/gutenberg#82130)
- Storybook: Persist sidebar theme in URL (WordPress/gutenberg#82111)
- Editor assets endpoint: prime the theme JSON resolver before capturing (WordPress/gutenberg#82134)
- Remove unused dependencies across the monorepo (WordPress/gutenberg#82103)
- Update changelog instructions for agents (WordPress/gutenberg#82097)
- Build: Normalize JSX file extensions (WordPress/gutenberg#80990)
- Fix pattern export filenames by normalizing special characters (WordPress/gutenberg#77033)
- Site editor v2: navigation takes view config from endpoint (WordPress/gutenberg#82138)
- Extensible Site Editor: Load media assets before the media fields open (WordPress/gutenberg#82135)
- Site editor v2: pages take view config from endpoint (WordPress/gutenberg#82140)
- Extensible site editor: Add a revisions entry point to the Styles route (WordPress/gutenberg#82142)
- List: outdent an empty middle item without adding an item (WordPress/gutenberg#82011)
- Extensible site editor: Fall back to the raw title in edit route document titles (WordPress/gutenberg#82143)
- Blocks: Make BlockTransform a discriminated union over its type (WordPress/gutenberg#81831)
- Theme: add LightningCSS WPDS token fallback plugin (WordPress/gutenberg#80401)
- UI: Add popupWidth prop to item popup components (WordPress/gutenberg#82087)
- Snackbar: Restart timeout when a notice is recreated (WordPress/gutenberg#81764)
- Media: Report server upload failures in plain language (WordPress/gutenberg#81735)
- Format library: visualise non-breaking spaces (WordPress/gutenberg#74040)
- Bump the github-actions group across 1 directory with 2 updates (WordPress/gutenberg#81932)
- Try adding a Grid block variation to Gallery (WordPress/gutenberg#81909)
- Components: Keep foreign items out of a ToolsPanel menu (WordPress/gutenberg#82127)
- Enable Gallery columns and crop controls in viewport states (WordPress/gutenberg#82003)
- Query: Don't write excludeCurrent into blocks that never had it (WordPress/gutenberg#82147)
- Site title: Add fit-text support. (WordPress/gutenberg#82074)
- Accordion Panel: Reset padding-block when panel is hidden (WordPress/gutenberg#81782)
- Replace npm-run-all with native npm script chaining (WordPress/gutenberg#82166)
- Grid: per-item tile size limits (WordPress/gutenberg#81899)
- Fix: Tabs block: Anchor links in tab panels are not functional (WordPress/gutenberg#81744)
- Validate tsconfig references against declared dependencies (WordPress/gutenberg#82106)
- Performance tests: Build once and shard the suites across parallel CI jobs (WordPress/gutenberg#82160)
- Site Health widget: route the body's review link through the host (WordPress/gutenberg#82066)
- Build: allow wp-theme 2.x peer deps (WordPress/gutenberg#82139)
- Bundled packages: Add a check for transitive private API usage (WordPress/gutenberg#82027)
- List: try to preserve indentation level of children after outdenting+merging their parent (WordPress/gutenberg#82145)
- Block Library: Fix categories block handling of invalid taxonomy (WordPress/gutenberg#82153)
- useViewConfig: don't request the view config twice (WordPress/gutenberg#82141)
- Documentation: Remove invalid references to Babel in packages README (WordPress/gutenberg#82176)
- Automated Testing: Fix failing categories test on trunk (WordPress/gutenberg#82182)
- Jest: Update to 30.5.0 (WordPress/gutenberg#82181)
- Fix: Retain focus and caret position after Backspace undo of a prefix block transform (WordPress/gutenberg#82116)
- Scaffold e2e tests for the editor inspector consolidation experiment (WordPress/gutenberg#82178)
- Package lock: Deduplicate Jest dependencies (WordPress/gutenberg#82187)
- Components: Migrate remaining JSX files to TypeScript (WordPress/gutenberg#82132)
- Text: Use pretty wrapping by default (WordPress/gutenberg#82133)
- Build Tooling: Add browserslist config for build targeting (WordPress/gutenberg#82179)
- Columns: Fix appender drop zone visibility when dragging into empty column (WordPress/gutenberg#77852)
- Build: Require explicit JSX file extensions (WordPress/gutenberg#82189)
- Icons: Redraw 35 prominent icons with consistent stroke widths (WordPress/gutenberg#78808)
- Test: Classify and enforce unit test environments by filename (WordPress/gutenberg#80991)
- Test: Fix CI failures on trunk (WordPress/gutenberg#82201)
- Fix editor link colour cascade order for nested blocks (WordPress/gutenberg#77833)
- Add New Template: Show the design system focus ring instead of legacy box-shadow rings (WordPress/gutenberg#82164)
- List View: Don’t focus the last Table cell on keyboard activation (WordPress/gutenberg#81964)
- Fix spelling typos in docs and inline comments (WordPress/gutenberg#82217)
- CI: Pin npm version in the private API check job (WordPress/gutenberg#82222)
- Private APIs: Add back '@wordpress/dataviews' to the allowed core modules (WordPress/gutenberg#82221)
- Editor: Mark __unstableSaveForPreview options as optional (WordPress/gutenberg#81858)
- Docs: Explain when the Cover block's overlay controls appear (WordPress/gutenberg#82234)
- Menu: Use Text for item labels and descriptions (WordPress/gutenberg#82237)
- Test: Type pipe's supported array inputs (WordPress/gutenberg#82210)
- Widget Dashboard: keep the plain anchor for an empty-string download (WordPress/gutenberg#82073)
- CI: Read the required npm version from a single source (WordPress/gutenberg#82235)
- Components: Add `defaultShown`, `onShownChange` to `ToolsPanelItem` (WordPress/gutenberg#78010)
- Storybook: Drop unused support for js-as-jsx (WordPress/gutenberg#82192)
-  Math: Declare clientNavigation interactivity support (WordPress/gutenberg#82248)
- Point to docmumentation about release assets (WordPress/gutenberg#82250)
- Change stray `ubuntu-latest` to `ubuntu-24.04`. (WordPress/gutenberg#82156)
- Performance tests: Reuse the plugin an earlier trunk run already built (WordPress/gutenberg#82223)
- Breadcrumb: Add UI component (WordPress/gutenberg#80425)
- Components: Cut the ToolsPanel render cascade (WordPress/gutenberg#82180)
- Fix: alert dialog box cancel button color (WordPress/gutenberg#82261)
- UI: Add Form best practices Storybook page (WordPress/gutenberg#82197)
- Media: Stop claiming "Upload complete" when upload failed (WordPress/gutenberg#81397)
- Boot, Site Editor: Seed content surfaces with default background color (WordPress/gutenberg#81646)
- Format Library: Fix Edit as HTML crash with background-only highlight (WordPress/gutenberg#82215)
- Remove the template activation experiment (WordPress/gutenberg#82241)
- Packages: Add cross-version compatibility skill (WordPress/gutenberg#81890)
- Show the block outline where the grab cursor shows (WordPress/gutenberg#81798)
- DataViews: Scope the search field's fixed width to the default UI search row (WordPress/gutenberg#82128)
- Background image: support setting the image from a URL (WordPress/gutenberg#82230)
- Border Box Control: Try moving the unlink button to the label row, and rename the panel to Borders (WordPress/gutenberg#82163)
- Widget Dashboard: govern Reset to default through the policy (WordPress/gutenberg#82255)
- Media: Attach unattached media to the current post on save/publish (WordPress/gutenberg#81977)
- Widget Dashboard: make the column count a host decision (WordPress/gutenberg#82204)
- Global styles: resolve theme-relative background image URLs for display (WordPress/gutenberg#82242)
- CI: Unify the automation comments into a single PR comment (WordPress/gutenberg#82249)
- Core Data: Convert hooks tests to renderHook and drop JSX (WordPress/gutenberg#82276)
- Release: Map [Type] Flaky Test to the Tools changelog section (WordPress/gutenberg#82078)
- DateTime tests: freeze the clock in the empty-value calendar test (WordPress/gutenberg#82282)
- DataForm: treat combined form fields purely as layout containers (WordPress/gutenberg#82175)
- Global styles engine: return a copy from getResolvedValue instead of mutating (WordPress/gutenberg#82278)
- Test: Migrate Node unit tests to Vitest (WordPress/gutenberg#82211)
- Icons: Redraw 64 icons to be stroke-based. (WordPress/gutenberg#78812)
- Tests: Fix Vitest setup and stale jest types under non-hoisting installs (WordPress/gutenberg#82290)
- UI: Rename Popup `popupWidth` prop to `width` (WordPress/gutenberg#82193)
- Query: Replace the "Reload full page enabled" modal with a snackbar notice (WordPress/gutenberg#82246)
- Project Management: Update CODEOWNERS to reflect current participation (WordPress/gutenberg#82262)
- Editor: Refactor the Options menu to use the Menu component (WordPress/gutenberg#81564)
- UI: Add Field.VisualLabel (WordPress/gutenberg#82095)
- Update Stylelint to v17 and related packages (WordPress/gutenberg#80738)
- Media: keep indexed PNG sub-sizes indexed (WordPress/gutenberg#81884)
- UI: Add Combobox and Autocomplete Status (WordPress/gutenberg#82195)
- UI: Drop Status and Empty live region test assertions (WordPress/gutenberg#82300)
- Project Management: Remove empty entries from CODEOWNERS (WordPress/gutenberg#82292)
- Documentation: Add recommended bulk suppressions configuration for ESLint (WordPress/gutenberg#82303)
- UI: Hide Input field ring when a slot control is focused (WordPress/gutenberg#82257)
- Widgets: Surface debugging details in the ErrorBoundary (WordPress/gutenberg#82099)
- TypeScript: Migrate format-library package to TS (WordPress/gutenberg#79486)
- BorderBoxControl: Make sure the group of controls is associated with the label (WordPress/gutenberg#82279)
- Image block cropping: Sync image size and link destination settings (WordPress/gutenberg#82316)
- Menu: Support multiple item descriptions (WordPress/gutenberg#81825)
- CI: Do not fail the type label check on a newly opened pull request (WordPress/gutenberg#82322)
- UI: Align overlay Trigger props with Base UI (WordPress/gutenberg#81824)
- Gallery block: Fix 'Crop images to fit' broken in editor (WordPress/gutenberg#82318)
- Widget Dashboard: enforce the policy on the staging layer for every instance operation (WordPress/gutenberg#82256)
- DataForm: Communicate the timezone in the datetime control (WordPress/gutenberg#82291)
- Add more e2e tests for the editor inspector consolidation experiment (WordPress/gutenberg#82239)
- Framework: Error on npm versions older than the required floor (WordPress/gutenberg#82320)
- Document every type for DataViews/DataForm/Field API (WordPress/gutenberg#82326)
- ESLint plugin: remove usage of Babel parser (WordPress/gutenberg#82144)
- DataViews: remove the rich text options from the control config type (WordPress/gutenberg#82330)
- Meta Boxes: Move meta box markup with moveBefore to keep classic editors alive (WordPress/gutenberg#82243)
- Add more e2e tests for the editor inspector consolidation experiment (WordPress/gutenberg#82327)
- Test: Enforce JavaScript test runner ownership (WordPress/gutenberg#82299)
- DataViews: clamp page after delete (WordPress/gutenberg#82244)
- Stylelint tools: Resolve test config extends from the workspace (WordPress/gutenberg#82336)
- Editor: Deprecate the `as` prop of the plugin menu item components (WordPress/gutenberg#82319)
- Icons: Convert Search icon to strokes (WordPress/gutenberg#82338)
- DataViews: Document that table column styles do not apply to the primary column (WordPress/gutenberg#82238)
- DataViews: add hierarchical levels story (WordPress/gutenberg#82344)
- CI: Add "Required changes from trunk" PR check (WordPress/gutenberg#82272)
- feat: Improve TypeScript definitions in the getEntityRecord function (WordPress/gutenberg#81863)
- Framework: Update Node.js to v24 LTS and npm to v11 (WordPress/gutenberg#80395)
- Revert "Framework: Update Node.js to v24 LTS and npm to v11 (WordPress/gutenberg#80395)" (WordPress/gutenberg#82355)
- UI: Remove ValidityIndicator outer margin (WordPress/gutenberg#82267)
- Span the writing flow focus capture elements over the canvas (WordPress/gutenberg#82354)
- Fields: Hide the slug field for posts without a permalink (WordPress/gutenberg#82341)
- Fix: Responsive horizontal orientation does not override a vertical layout. (WordPress/gutenberg#82364)
- View Config: Move the table column style descriptions to the 7.2 compat layer (WordPress/gutenberg#82372)
- Block Library: Allow themes to override the padding added via background color (WordPress/gutenberg#82024)
- DataViews: Append an ellipsis to action labels that open a dialog (WordPress/gutenberg#81994)
- Pages: require authentication and a capability to render generated standalone pages (WordPress/gutenberg#82254)
- Build/Test Tools: Replace npx with npm exec --no (WordPress/gutenberg#82331)
- Navigation: restore flex-grow on container when accessible label is present (WordPress/gutenberg#78447)
- DOM Ready: Exclude src from published package files (WordPress/gutenberg#77302)
- UI: Support custom targets on Link and Menu.LinkItem (WordPress/gutenberg#82347)
- Escape HTML: Exclude src from published package files (WordPress/gutenberg#77304)
- keycodes: Exclude src from published files (WordPress/gutenberg#77306)
- Packages: Exclude src from block-serialization-default-parser published package (WordPress/gutenberg#77307)
- A11y: Exclude src from published package files (WordPress/gutenberg#77309)
- Packages: Exclude src from autop published package (WordPress/gutenberg#77283)
- Blob: Exclude src from published package files (WordPress/gutenberg#77289)
- Packages: Exclude src from deprecated published package (WordPress/gutenberg#77303)
- fix(list-reusable-blocks): exclude src from published files (WordPress/gutenberg#77305)
- Admin UI: Exclude src from published files and sideEffects (WordPress/gutenberg#77285)
- Standardize 'Back' and 'Go back' labels (WordPress/gutenberg#79211)
- Audio: Update autoplay help text for clarity (WordPress/gutenberg#69978)
- Theme JSON: Avoid rebuilding identical block schemas during sanitization (WordPress/gutenberg#82203)
- Docs: Improve setAttributes updater function wording (WordPress/gutenberg#82405)
- Query Loop: Rename the "Keyword" filter to "Search terms" and add help text (WordPress/gutenberg#82387)
- CI: add a per-workflow status check job and filter paths (WordPress/gutenberg#81015)
- ESLint: Thin use-recommended-components tests (WordPress/gutenberg#82407)
- UI: Fix enabled input placeholder contrast (WordPress/gutenberg#82304)
- Tab trap escape hatch: leave/enter the canvas with Escape/Enter (WordPress/gutenberg#82314)
- List: preserve client IDs on indent, just like outdent (WordPress/gutenberg#59216)
- Templates REST API: prevent fatal error when a null template reaches prepare_item_for_response (WordPress/gutenberg#82374)
- Editor: Refactor the View menu to use the Menu component (WordPress/gutenberg#82321)
- CSS Styling: Cleanup focus outline override for grid component (WordPress/gutenberg#82337)
- E2E: Run the site editor suite against the extensible site editor too (WordPress/gutenberg#82117)
- Fields: Remove unused CSS rule from slug field control (WordPress/gutenberg#77961)
- Fix: Footnote IDs can start with a digit and break CSS selectors (WordPress/gutenberg#82398)
- feat: Introduce 'Add Media' in the block controls for media-text block (WordPress/gutenberg#82420)
- fix: Audio element to have it's own name (WordPress/gutenberg#82389)
- Docs: Update Playground CLI wording (WordPress/gutenberg#77579)
- Upgrade React 19 to 19.2.8, read version from package.json (WordPress/gutenberg#82439)
- Tab Panel: Show focus with outline instead of legacy box-shadow ring (WordPress/gutenberg#82421)
- Editor: Fix disabled and link items of the more menu adapter (WordPress/gutenberg#82428)
- UI: Fix Menu.LinkItem target detection (WordPress/gutenberg#82442)
- SearchableSelect: Add form primitive to @wordpress/ui (WordPress/gutenberg#80961)
- Validated form controls: Use design token for invalid focus rings (WordPress/gutenberg#82410)
- feat: Update layout icons (WordPress/gutenberg#82025)
- Widgets: Replace {TODO} placeholder with PR number in changelog entries (WordPress/gutenberg#82450)
- UI: Remove ESLint ref suppressions and refactor AlertDialog state (WordPress/gutenberg#82131)
- Menu: Align selection indicators and prefix icons with item labels (WordPress/gutenberg#82346)
- ToggleGroupControl: Honor the root disabled prop (WordPress/gutenberg#82259)
- Block Library: Remove the form blocks experiment (WordPress/gutenberg#82451)
- List: indent and outdent multi-selected items with Tab (WordPress/gutenberg#82411)
- CodeRabbit: Only review on request, keep PR descriptions untouched (WordPress/gutenberg#82448)
- Privacy policy page badge: make it visible in Site Editor > Pages and Editor Inspector (WordPress/gutenberg#82422)
- Support `isAny` and `isNone` filter operators for numeric fields. (WordPress/gutenberg#77942)
- UI: Keep focus rings visible in overlay content (WordPress/gutenberg#82443)
- Menu: Correct alignment documentation and changelog (WordPress/gutenberg#82455)
- UI: Name unlabeled form primitive stories (WordPress/gutenberg#82311)
- UI: Re-read the native validity on blur in ControlWithError (WordPress/gutenberg#82376)
- Media Utils: Preserve arrays in multipart form data (WordPress/gutenberg#82353)
- fix: Remove stories from performance tests (WordPress/gutenberg#82459)
- Add the template e2e tests for the editor inspector consolidation experiment (WordPress/gutenberg#82394)
- UI: Fix Link target detection (WordPress/gutenberg#82447)
- Fix privacy policy page setting unit test on multisite (WordPress/gutenberg#82467)
- UI, DataViews: Give input and selection controls solid backgrounds (WordPress/gutenberg#82391)
- Fix LocationPicker popover alignment with InputGroup (WordPress/gutenberg#82090)
- List: indent and outdent a fully selected list item with Tab (WordPress/gutenberg#82460)
- UI: Fix Minimal Select popup width (WordPress/gutenberg#82461)
- Rich text: resolve owned event listeners once instead of per subscriber (WordPress/gutenberg#80605)
- UI: Keep borderless InputLayout chrome when disabled (WordPress/gutenberg#82468)
- Theme: Cache luminance for contrast checks (WordPress/gutenberg#82445)
- Add promptfoo for testing agent development setup and skills (WordPress/gutenberg#80812)
- wp-env: Fix Docker build errors with Debian Bullseye repositories (WordPress/gutenberg#82478)
- Query Loop: Fall back to `post` when the query has no `postType` (WordPress/gutenberg#82465)
- Block Supports: Bail early in state styles when a block has no style attribute (WordPress/gutenberg#81908)
- CSS Styling: Represent focus with outline for list view component (WordPress/gutenberg#82129)
- Icons: Remove the obsolete forced colors mode hack (WordPress/gutenberg#82481)
- Docs: Remove invalid `@return` tag from the `block_core_social_link_get_services` hook docblock (WordPress/gutenberg#82488)
- Site Editor: Add a root error boundary to prevent a blank screen (WordPress/gutenberg#82486)
- Writing Flow: Bail out of Enter handling when no block is selected (WordPress/gutenberg#82424)
- Docs: Remove the blank line between @PARAM and @return in test docblocks (WordPress/gutenberg#81907)
- List View: Disable block icon colors while the block is selected (WordPress/gutenberg#82498)
- Fix: Restore layout styles for block style variations (WordPress/gutenberg#82335)
- Post slug: prefer server sanitization in the editor (WordPress/gutenberg#78135)
- Media Modal Experiment: Allow filtering by attached to the post, or unattached (WordPress/gutenberg#81974)
- Media editor: Lock the editing tools while a save is running (WordPress/gutenberg#82417)
- DataViews: Restrict the isAll filter operator to array fields (WordPress/gutenberg#82463)
- Media Fields: Pass the field's disabled state to the textarea controls (WordPress/gutenberg#82516)
- Theme: Make chroma capacity caching deterministic (WordPress/gutenberg#82505)
- Global Styles: Remove the color randomizer experiment (WordPress/gutenberg#82452)
- DataViews: Fix Field.sort TypeScript type definition (WordPress/gutenberg#82162)
- Migrate __experimentalText and __experimentalHeading to @wordpress/ui Text in Inspector Popover Header (WordPress/gutenberg#77449)
- Migrate __experimentalText to @wordpress/ui Text in Block switcher bindings hint (WordPress/gutenberg#77366)
- UI: Add Radio form primitive (WordPress/gutenberg#82214)
- Migrate __experimentalText to @wordpress/ui Text in Allowed Blocks Modal (WordPress/gutenberg#78119)
- UI: Add CheckboxControl (WordPress/gutenberg#82213)
- Core Data: Scope revisionId to the entity it is provided for (WordPress/gutenberg#82517)
- Migrate __experimentalText to @wordpress/ui Text in Pattern Overrides Dropdown (WordPress/gutenberg#77492)
- ProgressBar: Respect reduced motion preferences (WordPress/gutenberg#82490)
- Theme: Clarify color seed and warning guarantees (WordPress/gutenberg#82526)
- Theme: Build default ramps before token artifacts (WordPress/gutenberg#82525)
- CodeRabbit: Disable the review status comment (WordPress/gutenberg#82534)
- Project Management: Restore CODEOWNERS exclusions for suppression lists (WordPress/gutenberg#82538)
- Editor: merge duplicate "Enhancements" changelog sections (WordPress/gutenberg#82533)
- UI: Validate compound component context (WordPress/gutenberg#82510)
- Docs: Document isolated worktree setup (WordPress/gutenberg#82524)
- DataForm: render untyped fields without an edit control that are read-only (WordPress/gutenberg#82514)
- API Fetch: Add unregister to remove a registered middleware (WordPress/gutenberg#82408)
- Editor: Show revision data in Post Title component (WordPress/gutenberg#82536)
- Components: Add compound component composition diagnostics (WordPress/gutenberg#82509)
- Fieldset: Fix gap token to match spec (WordPress/gutenberg#75479)
- Test: Migrate deterministic JSDOM tests and harden Vitest isolation (WordPress/gutenberg#82212)
- Release: Make npm publication verification resumable (WordPress/gutenberg#82089)
- Block Library: Use 'useEntityProp' in Site Title and Tagline blocks (WordPress/gutenberg#82518)
- Theme: Migrate Terrazzo modes to resolvers (WordPress/gutenberg#82537)
- Fix auto-capitalization after Enter on iOS Safari (WordPress/gutenberg#82475)
- Update navigation link block name, use a default variation for custom link (WordPress/gutenberg#82375)
- API Fetch: Expose defaultFetchHandler so overrides can restore it (WordPress/gutenberg#82553)
- Core Data: Return a stable record for equivalent `_fields` queries (WordPress/gutenberg#82552)
- API Fetch: Rename defaultFetchHandler parameter to options (WordPress/gutenberg#82588)
- Fields: remove unused custom sort from the author fields (WordPress/gutenberg#82559)
- Fields: Declare the caption, alt text, description and ping status controls through the Field API (WordPress/gutenberg#82539)
- Docs: Align @PARAM tag columns in phpunit/ docblocks (WordPress/gutenberg#81904)
- Docs: Align @PARAM tag columns in lib/ docblocks (WordPress/gutenberg#81902)
- Docs: Align @PARAM tag columns in packages/ docblocks (WordPress/gutenberg#81903)
- Fix help paragraph color contrast ratio in the Connectors page. (WordPress/gutenberg#82378)
- DataViews: Declare transitive dependencies imported by the ./wp bundle (WordPress/gutenberg#81843)
- DataForm: Add a `showPlaceholderIfEmpty` option to the panel layout (WordPress/gutenberg#82527)
- Global Styles UI: migrate revisions Active Badge to UI Badge (WordPress/gutenberg#82560)
- UI: Put overflow on Select.List instead of a nested wrapper (WordPress/gutenberg#82470)
- Editor: migrate post-card-panel Badge to UI Badge (WordPress/gutenberg#82500)
- Fields: migrate page-title Badge to UI Badge (WordPress/gutenberg#82499)
- DataViews: Skip table columns for field ids without a field definition (WordPress/gutenberg#82601)
- View config: remove stale fields from the wp_template default view (WordPress/gutenberg#82602)
- Rich text: restore contenteditable on pointercancel (WordPress/gutenberg#82598)
- Components: Add an Emotion-to-SCSS migration skill and guide (WordPress/gutenberg#82567)

See #66070.
Built from https://develop.svn.wordpress.org/trunk@63538


git-svn-id: http://core.svn.wordpress.org/trunk@62714 1a063a9b-81f0-0310-95a4-ce76da25c4cd
@t-hamano t-hamano mentioned this pull request Sep 30, 2026
3 of 26 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Feature] Icons Related to Icon registration API and Icon REST API [Package] Block editor /packages/block-editor [Package] Block library /packages/block-library [Package] Components /packages/components [Package] DataViews /packages/dataviews [Package] Edit Post /packages/edit-post [Package] Edit Site /packages/edit-site [Package] Edit Widgets /packages/edit-widgets [Package] Editor /packages/editor [Package] Icons /packages/icons [Type] Enhancement A suggestion for improvement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants