Changelog
Enhancements
Components
- Admin UI: Add Navigation component and Page navigation slot. (79746)
- Align legacy form control focus rings with WPDS. (80417)
- Base Styles: Align
input-controlmixin to design system. (81357) - Base styles: Streamline focus ring override. (81242)
- Calendar: Support custom root roles. (81443)
- CollapsibleCard: Support multiple header descriptions. (81227)
- DataViews: Pass the WordPress locale to the date/datetime calendar controls. (81592)
- Global Styles: Allow editing duotone palettes. (81605)
- Menu: Add UI component. (79560)
- RadioControl: Allow individual options to be disabled. (82026)
- SearchableChipSelect: Add grouped items support. (80989)
- SearchableChipSelectControl: Add form control to
@wordpress/ui. (80980) - Theme: Add color warning diagnostics workbench. (81817)
- UI: Accept locale codes in Calendar components. (81814)
- UI: Add Spinner component. (81358)
- UI: Add TextareaControl component. (81359)
- UI: Add tooltips to Calendar and RangeCalendar navigation buttons. (81983)
- UI: Align Calendar styling with WPDS tokens. (81438)
- UI: Collapse item-popup item sizing to default and small. (81354)
- UI: Expose keyboard shortcut presentation utilities. (81826)
- UI: Set Calendar text direction automatically. (81982)
- ui/Card: Use the default neutral border. (81746)
Block Library
- Add transform to Row for Columns block. (81802)
- Enable axial gap for Group and restrict to flex and grid layouts. (81476)
- Global styles: Register as element. (81160)
- List: Add Align Support. (68002)
- More block: Clarify description about excerpt vs full content. (80619)
- Playlist Track: Show upload spinner inline. (81445)
- Playlist: Add bulk track metadata editing. (81441)
- Query No Results: Add Border & Spacing Support. (64601)
- Tabs: Make inactive panel content findable in page. (81743)
Post Editor
- Add command: View post. (66720)
- Command Palette: Allow commands to override the category icon. (81787)
- Editor: Defer hierarchical term filtering and soften announcements. (81422)
- Editor: Migrate hierarchical term selector to
@wordpress/ui. (81848) - Editor: Refactor 'ErrorBoundary' to use the new recommended components. (81638)
- Editor: Simplify List View sidebar shortcut handling. (81693)
- Editor: Surface debugging details in the ErrorBoundary. (81642)
- Editor: Use PluginSidebar in GlobalStylesSidebar. (81570)
- Pre-publish panel: Remove the headings that repeat the panel title. (81806)
Block Editor
- Add an inserter to the parent selector. (81532)
- Global Styles: Expose additional elements in Typography and Colors. (80852)
- Patterns explorer: Refactor the category sidebar to use Tabs. (81807)
- Quick Inserter: Standardize the design of the Browse all button. (81827)
- Writing flow: Select next block on Enter key. (63484)
- [mini] in-between indicator: Make symmetric. (68074)
Dashboard
- Dashboard Widgets: Let the host decide which component renders an action link. (81740)
- Dashboard Widgets: Promote high-relevance actions into a chrome footer. (81556)
- Dashboard Widgets: Resolve widget types without a metadata module. (81738)
Fields
- Export the package stylesheet. (81769)
DataViews
- DataViews: Add an aspect ratio toggle for grid layouts. (81604)
Collaboration
- Add
__unstable_wp_sync_storagefilter for pluggable storage backends. (81697)
Site Editor
- Update template section description. (81613)
Global Styles
- Filter and indicate blocks that have custom styles. (81373)
Font Library
- Add skeleton loader for the font preview images. (81047)
Bug Fixes
Components
InputControl: Hide the value-like placeholder Safari renders in empty date and time inputs inuiandcomponentspackages. (81991)- Admin UI: Fix the primary color of the Fresh admin color scheme. (81618)
- BoxControl: Update the opposite side when ALT is held on the left or right input. (81530)
- Button: Fix alignment in loading spinner for
rtlscreens. (81901) - DataForm: Fix the datetime control sending two updates per calendar interaction. (81440)
- DataForm: Make the panel layout edit button the real field trigger. (80689)
- DataViews: Fix date and datetime controls selecting the adjacent day. (81498)
- DataViews: Fix invisible sticky Actions column divider. (82055)
- DataViews: Sync the displayed calendar month with external value changes. (81635)
- Duotone Picker: Stop the duotone bar offering to move its control points. (81850)
- Fix Storybook accessibility issues in stories. (81777)
- Improve text detection for button icon-with-text. (81521)
- InputControl: Vertically center date and time input values in Safari. (81361)
- Menu: Close non-modal menus on iframe interaction. (81952)
- Modal: Stop Escape key propagation on dismiss. (81785)
- PaletteEdit: Expose palette swatches as command buttons. (82023)
- Storybook: Handle production module load failures. (81867)
- Theme: Improve color ramp contrast safeguards. (81185)
- UI: Fix accessibility issues in form primitives and their stories. (81853)
Block Library
- Accordion Heading: Route theme.json spacing to the toggle button. (81976)
- Dynamic Gallery block: Skip transforms that expect inner blocks, e.g. Image and Grid transforms. (82009)
- Enable blockGap spacing supports in Query loop block. (79689)
- Fix MediaPlaceholder drag eligibility. (81431)
- Fix playlist track toolbar insertion. (81639)
- Fix: Accordion: Anchored hash inside the accordion throws the malformed URL console error. (81780)
- Fix: Skip empty block markup in navigation to prevent split UL elements. (78793)
- Fix: Term Description block skips display filters inside Terms Query. (81290)
- Icon: Fix margin being applied twice in the editor. (81292)
- Inner Blocks: Fix bug that caused alignment controls to show in Image blocks within a Gallery. (81606)
- Pattern: Disable visibility support. (81866)
- Playlist Track: Improve track upload error flows. (81878)
- Post Template: Fix mover arrows and labels for blocks inside the grid view. (81120)
- Preserve layout and style attributes on Column transform. (81855)
- Rename the media editor toolbar button to 'Edit image'. (81705)
Post Editor
- Add context to change "revisions code diff". (81820)
- Editor: Correctly mark ToolsMoreMenuGroup as a private SlotFill. (81503)
- Editor: Fix start page/template modal footer overflowing the modal width. (82021)
- Editor: Register the editor keyboard shortcuts from the provider. (81580)
- Fix: Post Editor: 403 on /wp/v2/settings at boot for users without manage_options cap. (81813)
- Fix: Post Editor: Canvas animates from the left when switching mobile/tablet preview to desktop. (81484)
- List View: Make focus on mount opt in. (81659)
- Notes: Keep the note actions menu in view for long display names. (81414)
- Notes: Stop forcing capitalization of user names. (81788)
Block Editor
- Block Editor: Don't close inserter panel when inline quick inserter opens. (76241)
- Border Panel: Fix incorrect panel label. (78830)
- Dimensions: Fix aspect ratio and scale controls not reflecting external updates. (80747)
- Fix parent inserter toolbar button alignment when text labels is enabled. (81608)
- Fix viewport state values set by grid resizer. (81601)
- Fix: Delete key on empty heading transforms following paragraph into heading. (78779)
- Global Styles: Keep storing shadow presets as CSS variables when custom presets exist. (81346)
- Hide layout panel when no controls are available. (81968)
- RichText: Use the current record when handling Enter. (81696)
Global Styles
- Close the revisions screen on the first back click. (81897)
- Color Palette panel: Remove empty whitespace when there are no theme colors. (81894)
- Fix: Responsive styles: When enabled and a font-size is set, the corresponding CSS variable remains undefined. (81854)
- Group shadow editor rows as items. (81871)
URL
- Clamp the truncated file name slice in filterURLForDisplay. (81529)
- Fix: getQueryArgs discards everything after the second = in a query argument value. (81066)
- Fix: URL: normalizePath drops the rest of the query after a second "?". (81612)
- Stop normalizePath throwing on a malformed percent sequence. (81086)
Data Layer
- Core Data: Stop storing NaN pagination totals for unpaginated endpoints. (82059)
- Core Data: Validate the parsed-blocks cache against registered block types. (81809)
Env
- Fall back to cached docker images when the registry is unreachable. (81631)
- Update git to latest commit when
--updatepassed. (81447)
Boot
- Restore centered snackbar notices. (81995)
Element
- Serialize memo-wrapped components instead of an empty string. (81986)
Collaboration
- RTC: Disable collaboration for post types without custom fields. (81946)
- RTC: Add fallback identities when user profiles are unavailable. (81408)
- RTC: Fix hidden cursor in Details block. (81322)
wp-build
- Build Package: Use Core's boot module when a plugin has none. (81761)
Font Library
- Fix the preview weight for variable fonts. (81748)
Media
- Fix clipped focus outlines in the media editor Details sidebar. (81703)
Site Editor
- Use inverted ThemeProvider seed for portaled UI. (81653)
DOM
- Treat a caret at a soft line wrap as an ambiguous position in Firefox. (81003)
Media Utils
- Prevent white screen crash during undo operations when Media Modal is open. (79898)
Parsing
- Fix: Line Break Tags Added to Scripts and Styles. (77542)
Paste
- Fix: Stop stripping spaces inside inline HTML elements on paste. (76696)
Accessibility
Post Editor
- Editor: Announce publish date changes to screen readers. (81629)
- Make Back button grid column flexible. (81701)
Block Editor
- Block Styles: Refactor the variation UI to use ui/Button. (81833)
Block Library
- Playlist: Add aria-label to prevent placeholder as label. (81654)
- Playlist: Update playlist track placeholder to match aria label. (81762)
Media
- Media editor: Keep initial modal focus on the dialog frame. (81541)
Performance
Post Editor
- Editor: Speed up the hierarchical term selector for large taxonomies. (81376)
- Editor: Stop
:has()selectors recalculating the whole document on every block selection. (81471)
Global Styles
- Try caching gutenberg_get_global_styles. (81889)
Components
- Theme: Avoid root-level relational selectors. (81457)
Experiments
Site Editor
- Boot: Contain a surface failure to that surface. (81622)
- Boot: Do not offer to edit a trashed entity. (81632)
- Boot: Let the editor canvas navigate between entity records. (81590)
- Boot: Mount the registered plugins. (81754)
- Boot: Preview the site where the canvas has nothing to open. (81749)
- Boot: Sync the editor's device preview with the URL. (81617)
- Boot: Translate the canvas click-to-edit label. (81620)
- Boot: Warn before leaving with unsaved changes. (81625)
- Edit Site Init: Seed the editor preferences the editor expects. (81628)
- Extensible Site Editor: Add a theme preview page with global styles editing. (81954)
- Extensible Site Editor: Add the Identity route. (81576)
- Extensible Site Editor: Preview the site on Home for classic themes. (81578)
- Extensible Site Editor: Show only the style book on Styles for classic themes. (81579)
- Extensible Site Editor: Gate theme screens on theme support. (81581)
- Lazy Editor: Keep the theme's editor styles on the canvas. (81747)
- Lazy Editor: Render the editor preferences modal. (81630)
- Pattern List: Import a pattern from JSON. (81919)
- Site editor v2: Fix block error with navigation-edit route. (82051)
- Site editor v2: Fix template part list pagination and sorting. (82054)
Media
- Media Editor Route: Override media edit links to point to the new experimental media editor. (81559)
- Media Editor Route: Make the route look like it's part of the media menu in the sidebar. (81565)
- Media Editor Route: Try adding undo/redo and save/cancel actions to the header. (81563)
Post Editor
- Editor: Offer the theme export from both site editors. (81992)
- Editor: Set the width an entity opens at from the editor provider. (81750)
Dashboard
- Quick draft: Replace Button+Link with LinkButton. (82031)
- Dashboard: Add a Site Health detail page as the dashboard's second route. (81729)
Documentation
- Add Gutenberg version details for WordPress 7.1. (81600)
- Adds JSdoc for
audioblock's edit.js. (68865) - Adds JSdoc for
avatarblock's edit.js. (68867) - Adds JSdoc for
columnandcolumnsblock's edit.js. (68873) - Adds README for inspector-controls-tabs component. (69072)
- BlockEditVisuallyButton: Update Developer Documentation. (68987)
- Components: Update the combobox changes to be part of
breaking change. (81923) - Design System: Add portable agent skills. (80597)
- Docs: Add Background image control Readme. (69409)
- Docs: Add Block Editing Mode Readme. (69411)
- Docs: Fix broken link to the Document-Isolation-Policy explainer. (81790)
- Docs: Fix broken link to the getEntityRecords selector reference. (81791)
- Docs: Fix broken links to the Block API reference guides. (81571)
- Docs: Fix broken skip ahead anchor on the custom block editor guide. (81835)
- Docs: Fix dead link in the dynamic blocks tutorial. (81399)
- Docs: Narrow the tsconfig split guidance to the standard layout. (81828)
- Docs: Require site editor features to land in the extensible site editor too. (81752)
- Fix Broken Links in Package file. (81700)
- Fix broken documentation link in
accessibility.mdfile. (81832) - PHPCS: Refactor parameter type hints and clean comments. (81898)
- Schemas: Document what the theme.json schema checks. (81773)
- Storybook: Add Story for InnerBlocks. (68651)
- Storybook: Add Story for BlockPopover. (68681)
- Storybook: Add Story for URLPopup component. (68449)
- Storybook: Fix default background color for Example Application theme story. (81765)
- Storybook: Upgrade to 10.5. (80692)
- UI: Add initial agents guidance mapping to contributing guidelines. (81400)
- UI: Mark Autocomplete, Field, and Fieldset as recommended. (80636)
- UI: Mark Input-related components as recommended. (81658)
- UI: Move controlled prop guidance to contributing documentation. (82044)
- Update coding guidelines to recommend TypeScript. (81763)
- Update save & submit documentation. (81077)
- Update broken links in document files. (81961)
Code Quality
Components
- BorderControl, BorderBoxControl: Migrate styles to CSS Modules. (80437)
- ComboboxControl: Narrow
onChangecallback type tostring|null. (81568) - DataViews: Use
Menufrom@wordpress/ui. (81783) - DataViews: Vendor
ValidatedComboboxControl. (81449) - DataViews: Vendor
ValidatedFormTokenField. (81451) - DataViews: Vendor
ValidatedToggleControl. (81492) - DataViews: Vendor
ValidatedToggleGroupControl. (81450) - Fix DataViews list layout color token usage. (81074)
- Migrate ComboboxControl to SCSS module. (80471)
- Migrate DropdownContentWrapper to SCSS module. (81522)
- Migrate GradientPicker, ColorPalette to SCSS module. (80473)
- Migrate ProgressBar styles from Emotion to SCSS module. (80512)
- Migrate ResizableBox to SCSS module. (81792)
- Migrate Scrollable to SCSS module. (80694)
- Migrate StyledLabel to SCSS module. (80001)
- Migrate ZStack styles from Emotion to SCSS module. (80514)
- Migrate
BoxControlto SCSS module. (80715) - Migrate
TextareaControlto SCSS module. (81353) - Storybook: Add missing @types/jest devDependency. (82017)
- Storybook: Keep Vitest story scanning independent of the Vite root. (82020)
- Theme: Rename ThemeProvider wrapper CSS class from root to wrapper. (81996)
- Theme: Update Terrazzo packages to 2.7.1. (81978)
- TypeScript: Bring the remaining route projects under the typecheck run. (81847)
- UI: Add ControlWithError component. (81574)
- UI: Add ValidatedInputControl component. (81627)
- UI: Add
ValidatedTextAreacontrol. (81984) - UI: Update Base UI to 1.7.0. (81390)
- Update Ariakit packages (0.4.35 => 0.4.37). (81080)
- Update Terrazzo packages to 2.5.0. (81082)
Block Library
- Block API: Address review feedback on block keyboard shortcuts. (81621)
- Block API: Declare block keyboard shortcuts on variations and transforms. (81588)
- Stop saving Table of Contents output. (80404)
- Tabs: Number generated tab IDs from 1 and keep them sequential. (81781)
- Playlist: Remove block toolbar sharing between parent and child blocks. (81432)
- Update waveform player dependency patch. (81454)
Post Editor
- ActionItem: Move the more menu deduplication out of the Slot. (81507)
- Block Editor: Never spotlight blocks in a preview. (81615)
- Editor: Remove FlexItem usage from NoteCard. (81851)
- Use
WCInputControlalias for legacy InputControl imports. (81830) - Use
WCTextareaControlalias for legacy TextareaControl imports. (81834)
Data Layer
- Core Data: Allow keyless entities to be addressed without a record ID. (81857)
- TypeScript: Drop redundant undefined casts for keyless entity record IDs. (82018)
- Update is-plain-object to 5.1.0. (81926)
Block Editor
- Add translator context to pseudo-state labels. (81770)
- Remove leftover files. (81793)
- refactor: Convert
createColorHOCto functional component. (70408)
Dashboard
- Dashboard widgets & Grid: Use kebab-case for CSS selectors. (82053)
- Quick Draft widget: Drop a reference to a class that does not exist. (82064)
Media
- Media Editor Route: Add missing dependency to media-editor route. (81845)
Fields
- Migrate last remaining JS file to TS. (81808)
Boot
- Migrate styles to CSS Modules. (81756)
Layout
- Layout block supports: Cast numeric grid attributes before use. (81560)
Private APIs
- DataViews: Add a lint rule preventing private API imports. (81478)
Global Styles
- Style: Update color to use CSS variable in global-styles-ui. (79053)
Tools
Build Tooling
- Build Scripts: Force tsc --pretty so CI reports the project behind global diagnostics. (81937)
- Build Tools: Stop watcher process trees on shutdown. (81504)
- Build: Emit TypeScript declarations with --noCheck. (81839)
- Build: Fix ESM declaration resolution. (82022)
- CI: Skip the package CHANGELOG check when only the CHANGELOG changed. (82069)
- Components, DataViews, Editor, UI: Split tsconfigs into build and dev projects. (81515)
- Dependency updates Aug 2026 (2). (81906)
- Dependency updates Aug 2026. (81870)
- Lint: Prevent private API imports in all bundled packages. (82015)
- Packages: Split story package tsconfigs into build and dev projects. (81516)
- Packages: Split tsconfigs for utility and mid-size packages. (81514)
- Release: Improve changelog categorization. (81475)
- Replace the Storybook test runner with the Vitest integration. (81918)
- Storybook: Fix production build warnings. (81758)
- Storybook: Upgrade Vite to 8. (81494)
- Styles Route: Reference the api-fetch and html-entities projects. (81989)
- Test: Add Vitest React, Emotion compilation, console, and snapshot parity. (81039)
- TypeScript: Add typecheck script and split root tsconfig into build and dev solutions. (81499)
- TypeScript: Put route projects under the typecheck run. (81829)
- Validation: Update dependency-audit to 0.4.6 and ignore the dataviews ./wp bundle. (81928)
Testing
- Automated Testing: Change Storybook default a11y test to error on failure. (81597)
- Block Library: Fix failing test in playlist block. (81950)
- E2E: Replace flaky router styles screenshot assertions. (81739)
- List View: Fix flaky global shortcut test and re-enable it. (81690)
- Perf: Report the first block selection as its own metric. (81616)
- Test: Port shared Vitest test environment. (81038)
- Tests: Make PHPUnit tests independent of test configuration flags and theme root. (79159)
- Vitest: Resolve @flakiness/vitest reporter to an absolute path. (81582)
- end-to-end Tests: Use str_starts_with()/str_contains() in hide-user-rest-routes plugin. (82030)
Data Layer
- Update 23.8 release changes on trunk. (81485)
ESLint plugin
- Remove
fixableoni18n-no-flanking-whitespace. (70279)
First-time contributors
The following PRs were merged by first-time contributors:
- @benazeer-ben: Add command: View post. (66720)
- @dhruvikpatel18: Storybook: Add Story for URLPopup component. (68449)
- @josephfusco: Add
__unstable_wp_sync_storagefilter for pluggable storage backends. (81697) - @konnen916: URL: Stop normalizePath throwing on a malformed percent sequence. (81086)
- @sanketio: Accordion Heading: Route theme.json spacing to the toggle button. (81976)
- @vedant-ere: Fix: Skip empty block markup in navigation to prevent split UL elements. (78793)
Contributors
The following contributors merged PRs in this release:
@aaronrobertshaw @aduth @afercia @amitraj2203 @andrewserong @annezazu @arthur791004 @benazeer-ben @ciampo @coderGtm @dhruvikpatel18 @dilipom13 @ellatrix @getdave @giteshsarvaiya @gregsullivan @hbhalodia @i-am-chitti @im3dabasia @Infinite-Null @ingeniumed @jasmussen @jeremyfelt @jeryj @jorgefilipecosta @josephfusco @jsnajdr @juanfra @Kgupta62 @konnen916 @MaggieCabrera @Mamaduka @manzoorwanijk @maxschmeling @mirka @mukeshpanchal27 @Mustafabharmal @ntsekouras @oandregal @ramonjd @retrofox @sanketio @sarthaknagoshe2002 @scruffian @shail-mehta @shimotmk @simison @sirreal @Soean @swissspidy @t-hamano @tellthemachines @timse201 @USERSATOSHI @vedant-ere @youknowriad