Dev Chat Agenda – October 21, 2026

The next WordPress Developers Chat will take place on Wednesday, October 21, 2026, at 15:00 UTC in the core channel on Make WordPress Slack.

The live meeting focuses on upcoming releases and CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. development, with time for discussions and open floor.

If you have requests for help with a ticketticket Created for both bug reports and feature development on the bug tracker. or another discussion topic, please post details in the comments section at the end of this agenda, or bring it up in Dev Chat during open floor.

Announcements 📢

WordPress 7.2

General

Discussions 💬

The discussion section of the agenda is for discussing important topics affecting the upcoming release or larger initiatives that impact the Core Team. To nominate a topic for discussion, please leave a comment on this agenda with a summary of the topic, any relevant links that will help people get context for the discussion, and what kind of feedback you are looking for from others participating in the discussion.

Open floor  🎙️

Any topic can be raised for discussion in the comments, as well as requests for assistance on tickets. Tickets in the milestone for the next major or maintenance release will be prioritized.

Please include details of tickets / PRs and the links in the comments, and indicate whether you intend to be available during the meeting for discussion or will be async.

Props to @kirasong for review.

#7-2, #agenda, #core, #dev-chat

Performance Chat Summary: 20 October 2026

The full chat log is available beginning here on Slack.

WordPress Performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets

  • @westonruter shared that, as of r64585, eliminating script/style concatenation has landed in WordPress and is included in the 7.2-beta1 release. This retires the use of load-scripts.php and load-styles.php and closed more than 10 Trac tickets, several of which were over 10 years old.
    • Script/style concatenation was only used in the login/adminadmin (and super admin) for coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.’s own assets. It served its purpose, especially for HTTPHTTP HTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands./1.1, but WordPress 7.2 will use a more modern and performant approach where blocking scripts and styles known to be used on the next screen are prefetched. This approach landed recently in r64120.

Our next chat will be held on Tuesday, November 3, 2026 at 16:00 UTC in the #core-performance channel in Slack.

#core-performance, #hosting, #performance, #performance-chat, #summary

Recap: WordPress 7.1 “Mary Lou” Retrospective

This post summarizes the feedback received from the WordPress 7.1 retrospective. Thank you to those who contributed their feedback via the retrospective survey and comments on the post!

For ease of reading, feedback has been synthesized. Full feedback is available for review in the anonymized form responses and comments to the original post.

Please remember that the following feedback are suggestions to bear in mind for future releases rather than action items for implementation. 

What would you keep?

  • The usual release parties and weekly check-in rituals.
  • Good communication throughout the release cycle, including security updates.
  • Security auditing, including handling all known high-risk HackerOne issues before deployDeploy Launching code from a local development environment to the production web server, so that it's available to visitors..
  • Task lists for every role.

What would you add?

  • A kick-off call for the release squad, which helped the group work together and could be continued when time zones allow.
  • More emphasis on user documentation and on completing it on time.
  • Earlier visibility into user-facing blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. editor UIUI User interface changes. Some changes, such as the Elements panel and the GIF video block variation, were mainly documented in dev notesdev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase. or GitHubGitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged by the repository owner. https://github.com/ PRs, which made it harder for documentation contributors and for people supporting site editors to prepare.
  • Developers marking their tickets for dev notes or the field guideField guide The field guide is a type of blogpost published on Make/Core during the release candidate phase of the WordPress release cycle. The field guide generally lists all the dev notes published during the beta cycle. This guide is linked in the about page of the corresponding version of WordPress, in the release post and in the HelpHub version page. where appropriate, and writing their own dev notes.
  • Wider testing, for example by inviting hosts to test in their own environments and providing them with AI prompts to use on their setups.

What would you change, reduce, or remove?

  • Launching live at an event. One respondent felt it was not worth the added stress, and other members of the release squad agreed. If a release is tied to an event again, it helps when everyone involved follows the agreed schedule and arrangements during the event.
  • Better time zone overlap among release squad members where possible.
  • A request to bring back the official Docs role. Documentation work during a release is substantial, and only a few contributors currently have the experience to cover it.
  • More Learn content related to the release.

What else would you like to express about any part of the release cycle or release squad?

  • More contributors who can follow many parts of the project at once would help. This gap was noticeable in several places during the cycle.
  • More awareness of concerns in the pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. and theme ecosystem.
  • More automation, given how often the release process has been carried out.
  • The release squad communicated thoughtfully and was open to feedback, and respondents thanked the squad for their work.

Did you have an official role on the release squad during the 7.1 release?

This section describes if the survey participants are part of release squad or observer.

Did you contribute to the 7.1 release?

This section describes if the participants actually contributed to 7.1 release or not.

How did collaborating on this project feel?

This section included ways for one to indicate how much they agreed or disagreed with a statement around collaboration.

Would you like to be part of future release squads?

  • 25%: I have been part of a release squad and I will gladly repeat.
  • 50%: I haven’t been part of a squad but I would like to try in the future.
  • 25%: I have been part of a release squad but will not repeat in the near future.
  • 0%: I haven’t been part of a release squad and currently have no interest in it.

What is your feedback on the current release squad size?

Takeaways and next steps

  • Consider the impact before tying a release to a live event, and agree early on a schedule that everyone involved can follow.
  • Continue holding a kick-off call for the release squad, and consider time zone overlap when assembling the squad.
  • Find ways to share user-facing editor UI changes earlier with documentation and support contributors.
  • Encourage developers to mark tickets for dev notes or the field guide and to write their own dev notes.
  • Investigate which parts of the release process could be automated.
  • Find new ways to encourage wider testing during the betaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. and RCrelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). period, for example together with hosts.
  • Make it clearer which contributors can follow many parts of the project and are available to help with specific areas.
  • Look at ways to connect more Learn content to each release.
  • Find ways to raise awareness of concerns from the plugin and theme ecosystem during the cycle.

Props to @annezazu for reviewing this post. 

#7-1, #retrospective

WP Feature Notifications weekly update: 2026-10-16

This is the first in a series of weekly status update posts from the WP Feature Notifications work.

Security PRS

There are 30+ open Dependabot PRs that will resolve various dependency security alerts across the repository. It would be really helpful if any contributors have time to help review these PRs, or fix any merge conflicts (using the @dependabot rebase comment).

0.3.0 release tracking issue

GitHubGitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged by the repository owner. https://github.com/ issue #302 has been updated to include any open (and newly created) issues that will make the 0.3.0 (aka MVPMinimum Viable Product "A minimum viable product (MVP) is a product with just enough features to satisfy early customers, and to provide feedback for future product development." - WikiPedia) release possible. This tracking issue now lists the 16 open items required for the 0.3.0 release.

All development work toward releasing 0.3.0 will focus on these 16 open issues, and contributors are invited to focus their efforts on them.

Office hours

I will be restarting weekly office hours, during which time anyone can ask for help, support, or questions about the project. These will take place every Thursday starting on Thursday, October 22, 2026 at 11:00 am UTC in the #feature-notifications channel in Slack.

#feature-notifications

Call for Code Review Help: Repairing Gutenberg GitHub Actions Workflows for wp/x.y Branches

While the only actively supported version of WordPress is the most recent one, security updates are backported to older branches as a courtesy. All versions >=4.7 are in a security-only support state, receiving select security patches as a courtesy to users of WordPress.

The code maintained in the Gutenberg repository is just as critical to all WordPress versions >=5.0.

The code in the GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ repository that corresponds to each release of WordPress is organized using wp/X.Y branches. These branches are frozen in time snapshots of the code that was used by wordpress-develop to build the final software that is released to the world. However, because the testing infrastructure in these branches has not been well maintained so automated checks and test suites are currently broken. Some fail consistently while others don’t run at all due to poorly scoped branchbranch A directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a "branch", such as "the 4.0 branch". filters, event targeting, and other issues.

It’s imperative that these GitHubGitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged by the repository owner. https://github.com/ Actions workflows and the underlying testing infrastructure is restored to a working state to ensure that all relevant security patches that affect Gutenberg can be properly validated and confirmed before being shipped to end users in WordPress coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress..

That’s where you come in!

Enter: Operation Tall Stack 🥞

Over the last few weeks I have worked with AI to create a pull request stack for each and every wp/x.y branch on the gutenberg repository that:

  • Gets CI passing again, so changes to these branches are properly tested before they ship in a WordPress release.
  • Modernizes and hardens the workflows by removing jobs that serve no purpose on a release branch, updating and pinning actions and runner images, and adding safeguards like job timeouts and workflow linting.
  • Makes each branch’s test environment predictable by pinning it to the software versions that match its WordPress release, and testing the PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher and Node.js versions that release actually supports.
  • Repairs the local development tooling (wp-env, Composer and PHPUnit), which broke as the outside services and packages it relies on changed over time.
  • Stabilizes the test suites by fixing or backporting fixes for flaky and broken tests.

Some details about the approach:

  • One fix per PR. Each stack has between 18 and 32 pull requests, and each one addresses a single, specific problem. Reviews come in small, targeted pieces instead of one large diff.
  • Stacked PRs. Each PR is based on the one below it, so the stack reads from the bottom up. The Files changed tab on each PR shows only that PR’s change, and CI on the top PR tests the whole stack together.
  • Same fix, same shape on every branch. A fix that applies to several branches has the same branch name (fix-actions-X.Y/<fix-name>) and a matching title on each of them. It also sits in roughly the same position in every stack. That makes it possible to review one fix across all branches at once, rather than reading through one branch’s entire stack.
  • Only the branches that need it. Each fix was checked against each branch’s actual code, and a fix only appears where the problem exists. Where a branch differs, the PR adapts the fix to that branch.
  • Following trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision. where possible. Many fixes are backports or adaptations of changes already made on trunk, and those PRs link to the original PR or commit.
  • No new package releases: Changes that would publish new versions of the repository’s npm packages are forbidden. The only exception is wp-env, a development-only tool that is not part of the WordPress code shipped to users, that a good portion of the testing infrastructure depends on to be operable.
  • Documented and traceable. Every PR description explains what changed, why, and how, and cites the failing CI runs or error output it addresses. Each PR also links to a tracking issue for its branch.
  • Human review: Any pull request related to this effort in draft state should be considered AI-produced and unverified by a human. I have staged each branch’s stack in my fork for testing and verification before pushing to WordPress/gutenberg. Each PR is then marked ready for review after a final confirmation.

Review Strategy

Before this work can be merged, this needs to be reviewed and approved. With roughly 500 total pull requests across 20+ branches, your help is needed.

After discussing with a few contributors, it’s become clear that the best way to review each branch’s stack of pull requests properly is to divide them up by fix, not by individual stacks. This allows someone to review all of the PRs related to a specific fix as it relates to the code within each wp/X.Y branch without having to context switch through each and every problem in a stack.


While there is an overarching ticketticket Created for both bug reports and feature development on the bug tracker. for this project (GB-82780) and a sub-issue for each wp/X.Y branch, there are no issues for the individual fixes. To help divide and track the review efforts without overlap, I’ve created an issue for claiming and tracking the review efforts (GB-84853).

You’ll find a table on that issue that assigns each fix an alphabetical identifier and links to the corresponding pull request for each version branch. The first comment lists the branch name, a 1-2 sentence description, and any PRs that applied the same changes to trunk for each fix (if any).

Please use the following procedure if you’re able and interested to help in reviewing these pull requests:

  • Comment on GB-84853 to claim a given fix.
  • If you’re able, edit the table in the issue’s description to add yourself as the reviewer for that fix.
  • When you claim a given fix, you are pledging that you will explicitly submit a review with an approval or a request for change on every PR in that row. An approving review is required for every PR in a given stack, otherwise the stack cannot be merged.
  • Claim one row at a time. You can always claim another after you complete the first.
  • If you are reviewing the PRs in a row and are unable to finish within 24 hours, please comment on the issue and (if able) and note in the Reviewer column of the table the branches that you reviewed. Example: “Needed: 6.0-5.7. (@desrosj reviewed 7.1-6.1)”

Anyone is welcome to help review these PRs. However, the rulesets configured on the gutenberg repository require at least one approving review from a member of the WordPress GitHub organization granted write access to the repository.

Currently only the wp/7.1 through wp/5.7 branches are ready and pushed to the gutenberg repository, but the rest will be added in the coming days. When new stacks are pushed and ready, a comment will be left on the issue to notify everyone who has helped out.

Phase 2

Restoring these workflows to a functional state is phase 1 of the necessary efforts to make these more maintainable long term. Once the workflows are functional in each wp/X.Y branch, a second effort will begin to adopt the reusable workflow pattern matching the strategy in wordpress-develop (see TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. #61213), which makes maintenance of these workflow files significantly easier because the functional logic being performed lives in trunk and is shared amongst all branches that perform a given type of testing or automation.

Thank you to everyone in advance for your help contributing to this effort!

Props @johnbillion, @jorbin, @lancewillett for pre-publish review.

#build-test-tools

What’s new in Gutenberg 24.2? (14 October)

“What’s new in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/…” posts (labeled with the #gutenberg-new tag) are posted following every Gutenberg release on a biweekly basis, showcasing new features included in each release. As a reminder, here’s an overview of different ways to keep up with Gutenberg and the Editor.

What’s new in
Gutenberg 24.2?

Gutenberg 24.2 has been released and is available for download!

This release comes with a new place for notes: they now float in a margin next to the content, so collaborating no longer means closing the Settings sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme.. Adding a categoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging., a tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.), or a post to a navigation menuNavigation Menu A theme feature introduced with Version 3.0. WordPress includes an easy to use mechanism for giving various control options to get users to click from one place to another on a site. now takes a single search, and the Gallery blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. can sort its images and tint all of them with one duotone.

The design tools consistency work started in 24.1 continues with about 80 more PRs, and the release also includes more than 60 bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. fixes plus some accessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) and performance improvements. For developers, ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org 19 is now enabled by default, and feedback on it is welcome and needed.

Notes move into a canvas margin beside the content

Until now, floating notes and the Settings sidebar couldn’t be open at the same time, and the notes column took space away from the content. In Gutenberg 24.2, notes live in a margin the editor reserves next to the canvas, so they stay visible while you change blocks or post settings (#83786).

When the canvas gets narrower, each thread shrinks to its author’s avatarAvatar An avatar is an image or illustration that specifically refers to a character that represents an online user. It’s usually a square box that appears next to the user’s name., and clicking the avatar expands the thread again. A new Notes submenu in the Options menu expands, minimizes, or hides the notes, and the editor remembers your choice (#83768).

Other changes make working with notes safer: deleting a note now shows an Undo action (#83988), a note or reply you haven’t sent is kept when you select another block (#84110), and the notes scroll together with the canvas (#83852).

Adding anything other than a page to a navigation menu used to mean knowing the right block first, like Category Link or Tag Link, and then searching inside it. Now the link search of the Navigation block looks through every type of content at once and shows the type beside each result, so pages, posts, categories, and tags are one search away (#83408). Switching an existing link to another type, for example from a category to a page, also no longer means deleting it and adding it again.

The same search lists the blocks a navigation menu accepts, so typing “Home” finds the Home Link block (#83652). Results are now ranked by type too, with posts and pages before categories, tags, and media, and nothing is discarded when several types are searched together. That ranking applies to every link search in the editor, so on large sites, tags and attachments no longer push the post you’re looking for out of the results (#83407).

The Order by control of the Gallery block now works for galleries of hand-picked images too. Choosing Newest to oldest, Oldest to newest, A → Z, or Z → A sorts the images once, and you can still drag them into any other order afterwards. Random moved into the same control and shuffles the images on the front end each time the page loads (#83438).

Galleries also gain duotone support. One filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. now tints every image in a gallery, either from the block settings or, for every gallery on the site, from Global Styles. A duotone set on a single image keeps priority over the one set on the gallery (#83978).

Design tools reach even more blocks

The design tools consistency work continues with about 80 more PRs. Some highlights:

  • Minimum width and height controls, previously available on five blocks, now reach 40, including Buttons, Columns, Heading, Media & Text, and Post Title.
  • Shadows reach ten more blocks, including Paragraph, List, Buttons, Social Icons, and Gallery.
  • Duotone reaches Gallery, Media & Text, and Video, so a video can now match the tint of the images around it (#83979, #83981).
  • Background images and gradients reach Button, List, List Item, and Media & Text.
  • Line indent reaches Heading, Post Author Biography, and Poetry, which also gains text columns and fit text.

Every block and support is listed in the changelog.

React 19 is now on by default and some Interactivity APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. enhancements

Gutenberg 24.2 turns the React 19 experiment on by default (#83784). Sites now load React 19 for the react and react-dom scripts, unless a theme or pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. known to have compatibility issues is active, so folks using one of those keep React 18. That list started from the issues observed on WordPress.comWordPress.com An online implementation of WordPress code that lets you immediately access a new WordPress environment to publish your content. WordPress.com is a private company owned by Automattic that hosts the largest multisite in the world. This is arguably the best place to start blogging if you have never touched WordPress before. https://wordpress.com/ and was extended for this release (#84607).

If you maintain a plugin or theme that uses React, please test it with Gutenberg 24.2 and report any issue you find. If something breaks on a site, turn React 19 off under Gutenberg > Experiments. To set the inert attribute in a way that works with both React 18 and React 19, use the new @wordpress/react-inert-value package (#83987).

The Interactivity API also gets two additions. The new data-wp-html directive renders HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. from the store, the same way data-wp-text renders text, and it only accepts values marked as trusted with asDangerousHTML() (#83092):

import { asDangerousHTML, store } from '@wordpress/interactivity';

store( 'myPlugin', {
	state: {
		get description() {
			return asDangerousHTML(
				'<p>A <strong>formatted</strong> description.</p>'
			);
		},
	},
} );
<div data-wp-interactive="myPlugin">
	<article data-wp-html="state.description">
		<p>Loading description.</p>
	</article>
</div>

The router now exposes state.navigating and state.initiator, so a block knows when a client-side navigation is in progress and which block started it (#83280).

Other notable highlights

  • Restore original image: after cropping an image, the Image editor offers Restore original image in its More options menu, so going back to the uncropped image no longer needs a trip to the Media Library (#81805).
  • Button links: the link popover of the Button block opens only when you click Link or press the keyboard shortcut, instead of every time you select a linked button (#30166).
  • Columns: the column count slider is gone. Add a column with the plus button next to the Columns button in the block toolbar, and remove one like any other block (#83262).
  • Options menu: the View group now has Appearance, Notes, and Panels submenus. Sidebars added by plugins moved into Panels, and their pinned toolbar buttons stay where they were (#82976).
  • Post author: the author field is always searchable, and it searches users on the server, so the right person shows up on sites with many users (#83323).
  • Navigation Link states: Global Styles can style the hover, focus, focus-visible, and active states of navigation links, starting with typography (#83451).
  • Icon search: the icon library also matches keywords, so “hamburger” finds the Menu icon and “gear” finds Settings (#82367).
  • Reduced motion: the Video and Cover blocks don’t autoplay in the editor when reduced motion is preferred, and Cover background embeds don’t autoplay on the front end either (#83337, #83452).
  • Inserter performance: opening the inserter blocks the main thread for less time, and selecting another block while it’s open no longer re-renders every item in it (#83437, #83284).
  • New post slugs: a new post could be published with the auto-draft slug after clicking into the Slug field. That no longer happens (#83518).

Changelog

Features

Components

  • UIUI User interface: Add Meter. (83855)
  • UI: Add Progress with custom color support. (83781)
  • UI: Add SearchableSelectControl. (80979)

Interactivity API

  • Add a data-wp-html directive. (83092)
  • Interactivity API Router: Add reactive navigation lifecycle and initiator API. (83280)

Enhancements

  • Dashboard Widgets: Let a mounted widgetWidget A WordPress Widget is a small block that performs a specific function. You can add these widgets in sidebars also known as widget-ready areas on your web page. WordPress widgets were originally created to provide a simple and easy-to-use way of giving design and structure control of the WordPress theme to the user. declare actions at runtime. (83877)
  • React 19: Add new incompatible plugins. (84607)

Block Library

  • Accordion Heading: Add line height support. (83958)
  • Archives: Add minimum height support. (83573)
  • Avatar: Add shadow support. (83929)
  • Avatar: Explain that avatars use the GravatarGravatar Is an acronym for Globally Recognized Avatar. It is the avatar system managed by WordPress.com, and used within the WordPress software. https://gravatar.com service. (83567)
  • Button: Add background image, size, and gradient support. (83950)
  • Button: Only open the link popover on explicit user action. (30166)
  • Buttons: Add minimum width and height support. (83894)
  • Buttons: Add shadow support. (83916)
  • Code: Add minimum width and height support. (83574)
  • Columns: Add minimum width and height support. (83895)
  • Columns: Remove the column count slider. (83262)
  • Comments Pagination: Add border support. (83746)
  • Comments Pagination: Add padding, margin, and block gap support. (83744)
  • Details: Add minimum width support. (83576)
  • Embed: Add minimum width and height support. (83903)
  • Embed: Add padding support. (83963)
  • File: Add minimum width and height support. (83896)
  • File: Add shadow support. (83918)
  • Footnotes: Add minimum width and height support. (83579)
  • Gallery Lightbox: Prevent image click from closing the dialog when navigation is enabled. (78898)
  • Gallery: Add duotone support. (83978)
  • Gallery: Add minimum width and height support. (83897)
  • Gallery: Add Order By controls for static gallery, consolidate controls in settings sidebar. (83438)
  • Gallery: Add shadow support. (83919)
  • Heading: Add minimum width and height support. (83580)
  • Heading: Add text indent support. (83615)
  • Home Link: Add minimum width and height support. (83582)
  • Home Link: Add padding and margin support. (83607)
  • Icon: Add block bindings support to the icon attribute. (80730)
  • Latest Comments: Add border support. (84148)
  • Latest Comments: Add minimum width and height support. (83904)
  • Latest Posts: Add minimum width and height support. (83905)
  • List Item: Add background image, size, and gradient support. (83936)
  • List Item: Add shadow support. (83925)
  • List Item: Enable editableRoot for multi-selection on mobile. (82816)
  • List: Add background image, size, and gradient support. (83935)
  • List: Add shadow support. (83923)
  • Login/out: Add minimum width and height support. (83583)
  • Math: Add minimum width and height support. (83585)
  • Media & Text: Add background image, size, and gradient support. (83927)
  • Media & Text: Add duotone support. (83981)
  • Media & Text: Add minimum width and height support. (83906)
  • Media & Text: Add shadow support. (83976)
  • Media & Text: Lower the specificity of the content padding. (83563)
  • Navigation: List allowed blocks in the link UI search results. (83652)
  • Navigation: Search every entity type from the link UI. (83408)
  • No Results: Add minimum width and height support. (83584)
  • Page List: Add minimum width and height support. (83908)
  • Pagination: Add border support. (83745)
  • Pagination: Add padding, margin, and block gap support. (83743)
  • Paragraph: Add shadow support. (83926)
  • Poetry: Add fit text support. (83980)
  • Post Author Biography: Add text indent support. (83614)
  • Post Comments Form: Add font family support. (83967)
  • Post Comments Form: Add minimum width and height support. (83910)
  • Post Content: Add minimum width support. (83575)
  • Post ExcerptExcerpt An excerpt is the description of the blog post or page that will by default show on the blog archive page, in search results (SERPs), and on social media. With an SEO plugin, the excerpt may also be in that plugin’s metabox.: Add minimum width and height support. (83578)
  • Post Featured ImageFeatured image A featured image is the main image used on your blog archive page and is pulled when the post or page is shared on social media. The image can be used to display in widget areas on your site or in a summary list of posts.: Add border style support. (83956)
  • Post Terms: Add minimum width and height support. (83586)
  • Post Time to Read: Add minimum width and height support. (83598)
  • Post Title: Add minimum width and height support. (83600)
  • Preformatted: Add minimum width and height support. (83587)
  • Pullquote: Add minimum width support. (83588)
  • Query Total: Add minimum width and height support. (83590)
  • Quote: Add button colour support. (83983)
  • Quote: Add minimum width support. (83592)
  • Read More: Add border style support. (83735)
  • Read More: Add minimum width and height support. (83912)
  • RSS: Add minimum width and height support. (83913)
  • Search: Add padding support. (83984)
  • Site Tagline: Add minimum width and height support. (83589)
  • Site Title: Add minimum width and height support. (83593)
  • Social Icons: Add shadow support. (83920)
  • Tab List: Add shadow support. (83922)
  • Tab Panels: Add minimum height support. (83594)
  • Tabs: Add minimum width support. (83595)
  • Term Count: Add margin support. (83608)
  • Term Count: Add minimum width and height support. (83596)
  • Term Description: Add minimum width and height support. (83597)
  • Term Name: Add margin support. (83606)
  • Term Name: Add minimum width and height support. (83599)
  • Term Template: Add minimum width and height support. (83914)
  • Verse: Add minimum width support. (83609)
  • Verse: Add text columns and indent support. (83962)
  • Video: Add duotone support. (83979)

Components

  • Card: Migrate from Emotion to SCSS modules. (82577)
  • CheckboxControl: Keep the legacy control visually consistent across viewports. (83612)
  • ColorPalette: Show design system focus ring on custom color button. (83841)
  • ContentEditableControl: Keep a disabled field focusable. (84083)
  • CustomGradientPicker: Extend control point targets to the bar height. (84124)
  • CustomGradientPicker: Migrate control wrappers to an SCSS module. (82576)
  • Deprecate Badge. (82379)
  • FontSizePicker: Migrate Emotion styles to SCSS Modules. (84126)
  • FormToggle: Match Switch colors across states. (83773)
  • Icons: Experiment with proportional stroke scaling. (84081)
  • InputControl: Darken the field border on hover. (83306)
  • ItemGroup: Use design system focus ring. (83764)
  • Menu: Align group labels and separators with indented item labels. (83993)
  • Menu: Align submenu labels and highlight open parents. (84031)
  • Menu: Guard against nesting Group and RadioGroup. (83792)
  • Menu: Tighten spacing, use 16px prefix icons, and cap width at 320px. (84028)
  • Progress: Migrate remaining ProgressBar usages and recommend UI Progress. (84021)
  • ProgressBar: Use WPDS color tokens. (83779)
  • RadioControl: Align colors with UI Radio. (83270)
  • Text: Migrate Emotion styles to an SCSS Module. (82573)
  • Theme: Generate complete border token modes for Figma testing. (84035)
  • UI: Add item labels and descriptions to remaining popups. (83493)
  • UI: Add separators to item popup components. (83776)
  • UI: Align component names with their semantics. (83789)
  • UI: Keep InputLayout chrome at md on small viewports. (82764)
  • UI: Recommend the Checkbox, Radio, and Switch component families and the Notice component. (82685, 83771, 83872, 84097)
  • UI: Remove automatic Notice announcements. (82737)
  • UI: Update Spinner appearance and add a color prop. (83775)
  • VisuallyHidden: Move hiding styles outside CSSCSS Cascading Style Sheets. cascade layers. (84114)

Block Editor

  • Block Supports: Add background-clip block support infrastructure. (77141)
  • Block Supports: Ensure position type is a string. (83500)
  • Block Switcher: Show design system focus ring on pattern previews. (83933)
  • Fit text: Size each block instance in a loopLoop The Loop is PHP code used by WordPress to display posts. Using The Loop, WordPress processes each post to be displayed on the current page, and formats it according to how it matches specified criteria within The Loop tags. Any HTML or PHP code in the Loop will be processed on each post. https://codex.wordpress.org/The_Loop independently. (83985)
  • Fix translator comments for block count announcements. (83555)
  • Honour background skip serialization in the editor. (83943)
  • Inserter: Use design system focus ring for previews. (83126)
  • Migrate state-control badges to UI Badge. (82608)
  • States: Scope per-instance rules to the block’s root element. (83986)

Icons

  • Add keywords to icon manifest. (83884)
  • Make the “B” icon bolder. (83321)
  • Polish the typography and “block-default” icons. (84073)
  • Support keyword-based search in the icons registry. (82367)
  • Update and add justify icons. (83519)
  • Update heading level icons for optical balance. (83268)

Post Editor

  • Base Styles: Default the adminadmin (and super admin) theme color to Blueberry. (83749)
  • Document Outline: Show the design system focus ring instead of legacy box-shadow. (83755)
  • Editor: Gather the View group of the Options menu into submenus. (82976)
  • Editor: Remove icon for ‘Export’ more menu item. (83901)
  • Editor: Use SearchableSelect for the post author field. (83323)
  • Editor: Use UI Menu for template options. (82964)

Media

  • Media Editor: Add a session boundary above the cropper. (83550)
  • Media Editor: Restore original image in modal. (81805)
  • Media Editor: Show an error when saving attachment details fails. (83560)
  • Media Editor: Use UI Menu for crop aspect ratio. (82968)
  • Track the original attachment ID for edited images. (81803)

Site Editor

  • Canvas loader: Use Progress from wordpress/ui. (83860)
  • Font Library: Use UI Menu for collection actions. (82965)
  • Global Styles: Add pseudo-state controls for Navigation Link. (83451)
  • Global Styles: Update the Styles > Blocks description. (83515)
  • Style book: Add link to example text. (83448)

DataViews

  • Fields API: Add the server-side registry and REST route. (84078)
  • List hideable fields alphabetically in the view configuration. (83947)
  • MediaEdit: Use design system focus ring. (83854)
  • Truncate filter chips instead of wrapping them. (83879)

Collaboration

  • Notes: Add show and hide options for floating notes. (83768)
  • Notes: Add Undo to deleted note snackbar. (83988)
  • Notes: Move floating notes into a canvas margin. (83786)

Bug Fixes

  • Connectors: Keep a stored API key read-only when it can’t be verified. (83889)
  • Date: Drop a trailing backslash instead of formatting it as “undefined”. (81528)
  • Experiments: Don’t invalidate saved option with a legacy key. (84619)
  • useServerSideRender: Parse messages from caught errors. (83365)

Components

  • BorderControl: Remove % from the border width units. (83492)
  • Checkbox: Prevent rounded themes from making checkboxes circular. (83526)
  • CollapsibleCard: Scope the headerHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes. focus ring to its own trigger. (81314)
  • Fix polymorphism typings leaking as prop. (82704)
  • FocalPointPicker: End a drag released over the editor canvas. (83348)
  • Menu: Disable triggers instead of roots in consumers. (83791)
  • PaletteEdit: Stop changing the slug when renaming a preset. (83750)
  • Popover: Close non-modal popovers on iframeiframe iFrame is an acronym for an inline frame. An iFrame is used inside a webpage to load another HTML document and render it. This HTML document may also contain JavaScript and/or CSS which is loaded at the time when iframe tag is parsed by the user’s browser. interaction. (83509)
  • Popover: Drop the will-change hint once the popover stops moving. (77359)
  • RadioControl: Keep a 16px visual with a larger hit target. (83840)
  • SandBox: Fix embed previews that require a referrer in Safari. (84014)
  • TextControl: Use design system colors when disabled. (83307)
  • Theme: Fix virtual modules, root styles, and seed validation. (83355)
  • Theme: Improve accessibility, API documentation, and compatibility checks. (83358)
  • Theme: Make JavaScriptJavaScript JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user’s browser. https://www.javascript.com token fallback transforms syntax-aware. (83356)
  • Theme: Preserve global token references in Lightning CSS. (83359)
  • UI: Align selection popup checkmarks with the first label line. (82942)
  • UI: Preserve Autocomplete item type inference. (84095)
  • UI: Preserve Budugbox source item generics. (84094)

Block Editor

  • Columns: Allow dropping a column at the outer edges. (83274)
  • Fix ‘Manage allowed blocks’ not shown when it’s the only ‘Advanced’ control. (84067)
  • Fix style / nested attribute overwrite during multi-selection. (80070)
  • Paste: Give each pasted data-URI image unique filename to avoid upload collisions. (79480)
  • Paste: Replace non-breaking spaces at the edges of text with regular spaces. (83464)
  • Rich text: Fix iOSiOS The operating system used on iPhones and iPads. double tap selection, preventing focus capture under editable host. (81042)
  • Show whitespace changes in the Resolve Block diff. (82397)
  • Style states: Fix exception when there’s no selected block. (84140)
  • Typography: List only the weights inside a variable font’s range. (83128)

Block Library

  • Group, Cover: Track drop zone element in state. (83756)
  • Image: Fix invalidinvalid A resolution on the bug tracker (and generally common in software development, sometimes also notabug) that indicates the ticket is not a bug, is a support request, or is generally invalid. CSS url() value in circle-mask style. (82333)
  • Image: Fix lightbox using thumbnail aspect ratio instead of original image ratio. (79058)
  • Image: Fix the lightbox overlay becoming unusable (can’t close) when it isn’t a direct child of <body>. (83480)
  • Image: Improve specificity of the lightbox button selector. (70800)
  • Math: Store cell alignment in the MathML and polyfill alignment and overlines in Chromium. (83164)
  • Post Featured Image: Fix crash when isLink is enabled. (81584)
  • Tag Cloud: Update styles and add !important. (70224)
  • Template Part: Fall back to rendering a template part from the theme file if the db version is unavailable. (83809)

Collaboration

  • Notes: Delete permanently when the trashTrash Trash in WordPress is like the Recycle Bin on your PC or Trash in your Macintosh computer. Users with the proper permission level (administrators and editors) have the ability to delete a post, page, and/or comments. When you delete the item, it is moved to the trash folder where it will remain for 30 days. is disabled. (84102)
  • Notes: Draw the canvas divider from body so it uses the theme text color. (84158)
  • Notes: Keep anchor writes out of undo history. (84079)
  • Notes: Preserve unsent note and reply drafts. (84110)
  • Notes: Reset paragraph top margin in floating notes. (84101)
  • Notes: Restore child notes trashed along with their parent note. (84100)
  • Notes: Restrict menu actions for resolution notes and resolved threads. (73243)
  • Notes: Scroll floating notes with the canvas. (83852)

Media

  • Media Editor: Fix pan drag flooding undo history after wheel zoom. (83558)
  • Media Editor: Stop the crop pixel snap from recording undo history. (83571)
  • MediaEdit: Show a checkerboard background behind image previews. (83846)
  • MediaUpload: Fix console error when reopening Gallery media library. (76749)
  • MediaUpload: Fix the gallery prop ignoring allowedTypes. (78257)

Data Layer

  • CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Data: Rank link suggestions by type, and stop discarding merged results. (83407)
  • RTC: Fix undo breaking for non-synced entities. (83888)

DataViews

  • Fields: Fix AuthorView for users who can’t edit users. (83498)
  • Measure the container as the data view mounts to avoid a single column flash. (83752)

Post Editor

  • Editor: Fix new posts being published with the auto-draft slug. (83518)
  • REST APIREST API The REST API is an acronym for the RESTful Application Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is how the front end of an application (think “phone app” or “website”) can communicate with the data store (think “database” or “file system”) https://developer.wordpress.org/rest-api/: Add action-trash link to posts and comments. (84045)

Site Editor

  • ExtensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software. Site Editor: Pass custom block categories to the blocks store. (83762)
  • Global Styles: Fix popover position in Styles screen. (84048)

Accessibility

  • Editor: Merge adjacent revision inline diffs. (80579)
  • UI: Announce selected chips in SearchableChipSelect. (82863)

Block Library

  • Cover: Don’t autoplay embedded background videos when reduced motion is preferred. (83452)
  • Video, Cover: Don’t autoplay in the editor when reduced motion is preferred. (83337)

Performance

Block Editor

  • Check the inserter’s fallback containers unmemoized. (83446)
  • Inserter: Manage roving tab index to skip re-rendering every item. (83437)
  • Inserter: Stop re-rendering the block list on block selection change. (83284)

Experiments

  • Admin design tokens: Consolidate wp-admin container radiuses onto the design system scale. (82427)
  • Admin design tokens: Restyle classic wp-admin controls from design system tokens. (82425)
  • Experiments: Turn the React 19 experiment on by default, except when an incompatible theme or plugin is detected. (83784)
  • RTC: Add an EntitySyncManager interface in core-data. (83410)

Documentation

  • Block Parser: Correctly document the blockName property as nullable. (70900)
  • Block Parser: Document \WP_Block_Parser::$stack as a list. (82695)
  • Budugbox: Label popup dialogs in stories. (83476)
  • DataViews: Fix README to describe sort() as receiving field values, not items. (83483)
  • Design System: Clarify tooltip labeling and UI review guidance. (83898)
  • Docs: Clarify wordpress/ui icon color requirements. (83564)
  • Docs: Describe isolated dependencies for agents. (84141)
  • Docs: Fix published Vitest migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies.-guide links. (83449)
  • Docs: Note that block attributes and global styles values are untrusted at render time. (83473)
  • Docs: Recommend UI Tabs for switching views. (83516)
  • Docs: Refine design system agent guidance. (84007)
  • Docs: Remove CheckboxControl heading from InspectorControls example. (83844)
  • Docs: Update deprecation testing guidance for shared reset. (83989)
  • Env: Change the core branchbranch A directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a "branch", such as "the 4.0 branch". from trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision. to master in the documentation. (83566)
  • Fix broken links in documentation. (83545)
  • Navigation Link: Update readme title to match block name. (83999)
  • Storybook: Add new contributing page. (83345)
  • Storybook: Place Notice announcements under Components. (83617)
  • Storybook: Show prop descriptions in Canvas controls. (83581)
  • UI: Add change actions to form primitive stories. (83591)

Code Quality

  • Packages: Declare missing peer dependencies and check them in CI. (83765)
  • wp-build: Remove unused optional peer dependencies. (83601)

React 19

  • Add inertValue helper and use it for setting inert attribute. (83871)
  • Add new react-inert-value package with inertValue helper. (83987)
  • Breadcrumb: Fix getMeasurementRender for React 19. (84069)
  • DataViews: Use inertValue in CompositeGrid. (84072)
  • react-inert-value: Add missing @types/react peer dependency. (84024)
  • Remove use-memo-one usage (missing React 19 compat). (83952)
  • Upgrade code and types to React 19. (83941)

Block Editor

  • Bump @react-spring/web from 9.4.5 to 10.1.2. (83796)
  • Format Library: Unify FormatEditProps to one type, move private types. (83487)
  • Position controls: Fix useSelect warning for selected state viewports. (83570)
  • RichText: Refactor useMarkPersistent, fix StrictMode mount mark. (83463)
  • RichText: Remove dead exports and consolidate deprecations. (83461)
  • RichText: Rename utils.jsx to utils.js. (83758)

Collaboration

  • Notes: Extract note selection sync into useNoteSelection hook. (83528)
  • Notes: Extract NoteReply and lift AddNote gating. (84106)
  • Notes: Refactor floating board measurement. (83485)
  • Sync: Remove exposed wp.sync package. (81999)

Media

  • Media Editor: Remove initial state seeding from the session. (83893)
  • Media Utils: Add MediaEdit as a private API. (84046)
  • Return 0 from the edit root lookup when there is no edit root. (84096)

Block Library

  • Breadcrumbs: Fix typo in aria label translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. context. (84112)
  • Playlist: Replace the waveform player patchpatch A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing. with its no-autoinit entry. (83132)

Components

  • Deprecate the private Menu API. (82947)
  • Packages: Update Ariakit to 0.4.40. (83278)

CSS & Styling

  • Style: Update color to use CSS variable in edit-site. (79002)
  • Table: Replace deprecated word-break with overflow-wrap: anywhere. (82480)

Interactivity API

  • Add typing to iAPI’s getConfig(). (71692)
  • Remove expired deprecated behaviors. (84098)

Themes

  • Global Styles: Ignore theme.jsonJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML. values of unexpected types. (84523)

Tools

  • PR metaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress.: Move the props list into the shared comment. (82302)
  • Props Bot: Skip bare reviews that duplicate their review comment runs. (84076)

Testing

  • Block editor: Isolate mutable test fixtures. (83098)
  • Block editor: Wait for final keyboard link suggestions. (83489)
  • Block library: Isolate order-sensitive test interactions. (83101)
  • Blocks: Isolate registration state in tests. (83099)
  • Components: Isolate order-sensitive UI tests. (83103)
  • Core data: Finish deferred selection updates in RTC test. (83366)
  • Data: Assert and silence resolution error in useSuspenseSelect test. (83491)
  • E2E: Mock Openverse in image drag-and-drop inserter test. (83842)
  • E2E: Pin the site title in the router specs; raise the end-to-end Storybook build heap. (83474)
  • ESLint: Allow non-module stylesheet imports in unit tests. (84019)
  • Icons: Use assertEqualHTML() in icons registry tests. (83544)
  • Include end-to-end Storybook sources in docgen. (83634)
  • Notes: Fix flaky thread scroll end-to-end test. (84118)
  • React 19 codemod: Apply defaultProps when rendering a memo component. (84568)
  • Tests: Add browser coverage for Menu scroll lock and LinkControl protocols. (83991)
  • Tests: Add floating notes end-to-end coverage. (83477)
  • Tests: Add Vitest Browser Mode failure artifacts. (83093)
  • Tests: Cover translation setup in override script tests. (83886)
  • Tests: Enforce per-call Vitest console expectations. (83095)
  • Tests: Enforce Vitest assertion coverage. (83572)
  • Tests: Enforce Vitest callback, promise, and title rules. (83620)
  • Tests: Fix order-dependent wp-env schema test. (84139)
  • Tests: Fix PostCSS browser-externalized warnings in Vitest. (83091)
  • Tests: Isolate deprecation warning state. (83107)
  • Tests: Isolate mutable configuration fixtures. (83104)
  • Tests: Lint JavaScript Vitest mock imports. (83783)
  • Tests: Migrate internal linting to Vitest and remove unused Jest dependencies. (83502)
  • Tests: Reset deprecation history in shared Vitest setup. (83849)
  • Tests: Resolve Browser Mode commands against the live iframe. (83495)
  • Tests: Run Vitest type graph validation in process. (83851)
  • Tests: Shuffle test cases in CI. (83111)
  • Tests: Use strict assertions in layout, template registry, and theme.json tests. (83619)
  • Tests: Use strict assertions in override script tests. (83782)
  • Tests: Verify localized data retention in override script test. (83845)
  • Theme: Add integration test coverage for seed colors in artifacts. (81161)
  • Tooltip: Stabilize the hover delay cancellation test. (84113)
  • UI: Add end-to-end Storybook popup item layout fixtures. (83488)
  • Unit tests: Detect the database client in the debug step. (84089)
  • Use a mock plugin slug within tests that no WordPress build ships. (84133)

Dependencies

  • Add prettier, eslint and stylelint to the root package.json. (84017)
  • Build: Remove patch-package. (83982)
  • Build: Update Vite to 8.3.1 and simplify Storybook tooling. (83569)
  • Build: Update Vite to 8.3.2 and remove the PostCSS browser resolver. (83992)
  • CI: Cover the AI development lockfile with Dependabot instead of npm audit. (83997)
  • Fix peer dependency conflicts left in the lockfile. (83754)
  • Framework: Declare React types in the workspaces that use them. (84013)
  • Framework: Move @typescript/native from the root to the workspaces that use it. (84027)
  • Framework: Switch from hoisted to isolated dependencies. (83847)
  • npm: Switch from legacy-peer-deps to strict-peer-deps. (81029)
  • Repair invalid peer dependencies in the lockfile. (84062)
  • Tests: Bump ibm-cloud-sdk-core in the AI development test lockfile. (83887)
  • Tests: Bump undici in the AI development test lockfile. (83799)
  • Tests: Patch basic-ftp in AI development dependencies. (84000)
  • Tests: Update AI development package versions after npm audit. (83830)
  • Tests: Update Vitest to 5.0.3 and Storybook to 10.6.1. (83996)
  • Upgrade typescript-eslint to v8.70.1. (83760)

Build Tooling

  • Build Tools: Fix flaky ESM package types test timeout. (84068)
  • Changelog validator: Ignore Markdown, Storybook, and configuration files. (83618)
  • CI: Check CHANGELOG presence for published tooling and configuration packages. (83577)
  • Coding standards: Skip anonymous class methods in block library function name sniffsniff A module for PHP Code Sniffer that analyzes code for a specific problem. Multiple stiffs are combined to create a PHPCS standard. The term is named because it detects code smells, similar to how a dog would "sniff" out food.. (83900)
  • Developer tools: Simplify editor setup and add Zed settings. (84143)
  • Fix check type declarations errors when running npm run dev. (84070)
  • Ignore composer vendor files from top-level gitignore. (22283)
  • Link upstream fixes for Storybook and Vitest warnings. (83632)
  • Read npm v12 pack –json output. (84011)
  • Release Tooling: Read the npm v12 JSON output shapes. (84075)
  • Release: Rewrite SVNSVN Subversion, the popular version control system (VCS) by the Apache project, used by WordPress to manage changes to its codebase. publication scripts in Node.js. (84034)
  • Use Node.js v24.20 in .nvmrc. (84061, 84138)
  • VS Code: Add managed workspace configuration. (84025)
  • Widget Primitives: Avoid Vite warnings for runtime widget modules. (83602)

Storybook

  • Avoid duplicate block-editor store registration in Storybook. (83636)
  • Fix missing block styles in BlockCanvas playground stories. (81070)
  • Give CI job a distinct name. (83869)
  • Read icon keywords from the manifest. (84127)
  • Register playground core blocks once in Storybook. (83637)
  • Reuse PostCSS browser resolver in Storybook smoke tests. (83635)
  • Update BlockPopover Storybook fixture to API version 3. (83642)
  • Update manifest snapshot for Spinner color prop. (83856)

WP Scripts

  • Scripts: Refactor Stylelint configuration detection in lint-style.js. (79280)
  • Scripts: Resolve default configs without hoisted dependencies. (83902)
  • Scripts: Treat files passed after –fix as file arguments. (83521)

Env

  • Add an option to choose the MariaDB version. (83751)
  • Pass -T to docker compose commands when stdin is not a TTY. (78374)

ESLint plugin

  • ESLint: Add allowUseWithCaution option to use-recommended-components. (83536)
  • ESLint: Allow generated test titles. (83995)

Security

  • Env, E2E: Update dependencies that ran native install scripts. (84012)
  • Opt in to the npm v12 supply-chain defaults. (82689)

First-time contributors

The following PRs were merged by first-time contributors:

  • @adamwoodnz: Base Styles: Default the admin theme color to Blueberry. (83749)
  • @haritpanchal: Tests: Use strict assertions in layout, template registry, and theme.json tests. (83619)
  • @Intenzi: Block Editor: Fix style / nested attribute overwrite during multi-selection. (80070)
  • @jshawl: Env: Pass -T to docker compose commands when stdin is not a TTY. (78374)
  • @karthick-320: Icons: Add keywords to icon manifest. (83884)
  • @Kgupta62: Popover: Drop the will-change hint once the popover stops moving. (77359)
  • @tbradsha: Bump @react-spring/web from 9.4.5 to 10.1.2. (83796)

Contributors

The following contributors merged PRs in this release:

@aaronrobertshaw @adamsilverstein @adamwood @aduth @alecgeatches @Aljullu @amitraj2203 @andrewserong @ciampo @desrosj @ellatrix @haritpanchal @hbhalodia @Hug0-Drelon @i-am-chitti @im3dabasia @Infinite-Null @Intenzi @jameskoster @jasmussen @jeryj @Jiwoon-Kim @johnbillion @jorgefilipecosta @jshawl @jsnajdr @karthick-320 @karthick-murugan @Kgupta62 @lancewillett @luisherranz @Mamaduka @manzoorwanijk @mcsf @mecskyverse @mikachan @mirka @mukeshpanchal27 @Mustafabharmal @n8finch @noruzzamans @ntsekouras @oandregal @peterwilsoncc @R1shabh-Gupta @ramonjd @retrofox @SainathPoojary @shail-mehta @simison @stokesman @t-hamano @talldan @tbradsha @tellthemachines @theaminulai @USERSATOSHI @whyisjake @yashjawale

#block-editor, #core-editor, #gutenberg, #gutenberg-new

Real-time Collaboration: A Guide to Sync Engines

In Moving to a server-aware approach for collaboration, @chriszarate explains why the server needs to be at the heart of real-time collaboration, and introduces the engines we’ve been investigating to power the future of RTC. In this post, we’ll explore each of the sync engines built for RTC and the different ways they achieve collaboration.

All engines currently live in an experimental pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party., gutenberg-sync-engines, which you can run right now to evaluate the engines below. Our goal is to assess engine choices with your help, and choose the next engine foundation for server-side RTC in WordPress.

This post is a guide for testers and an introduction to the concepts of each engine. We’d love for you to try each engine and help us evaluate which best matches an ideal future for RTC in WordPress.

Terms

Here are some common technical terms used in this post worth explaining:

  • A sync engine is logic for combining changes when multiple people edit the same post. The three sync engines available in gutenberg-sync-engines are yjs-server, DE-RTC, and intent-log.
  • A transport is the way changes travel between a browser and the server. These include a combination of HTTPHTTP HTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. polling, WebRTC, WebSockets, and Server-sent events (SSE). Any engine works with any transport.
  • Any change that is set aside for review is held somewhere but not applied to the post. This can apply to merge conflicts and changes blocked for security reasons. When a change is set aside for review, a person is required to decide whether to accept it.

Setup

Sync engines and transports are chosen under Settings → Collaboration:

The requirements for running the plugin are WordPress 7.0+ and the Presence API plugin, which is used to keep track of which users are on which post. The plugin ships an internal (lightly modified) copy of GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ in order to make the sync engine swappable, so it will not work with another active Gutenberg plugin.

To try out the engines, follow the setup steps in the README. Select a sync engine and transport, and start editing a post in multiple browsers.

Engines: What do they have in common?

In all engines, every change is processed through WordPress. When an edit arrives, the server confirms who sent it, checks they are allowed to make it, validates it for unsafe code, determines how to merge it with everyone else’s changes, and stores the result. The differences between engines are the implementations of these steps. Every engine allows multiple users to edit at the same time, works with every transport, and shows who is editing a post in varying levels of detail.

Engine 1: yjs-server

Summary: Built on the conflictconflict A conflict occurs when a patch changes code that was modified after the patch was created. These patches are considered stale, and will require a refresh of the changes before it can be applied, or the conflicts will need to be resolved.-free replicated data type (CRDT) library Yjs, the same technology used for client-side RTC in the current Gutenberg experiment. Every browser uses the Yjs library to merge changes into a document, sending the result to the server. The server verifies changes before they are shared with other users.

Yjs is an open-source and widely used CRDT implementation. In Yjs, two copies of a document edited separately can always be combined, in any order, and both end up identical. There are no merge conflicts. The server implementation runs a PHP version of Yjs to verify changes before passing them on to other users.

Engine: yjs-server
Transport: Polling with a WebRTC advisory channel

How your change travels to peers: You type a word. Your browser applies it locally to a copy of the editor document and sends a binary update to the server. The server opens the shared copy of the post, verifies the update, and saves it. Everyone else receives the update over the engine transport and applies it to their local copy of the document.

Strengths

  • The most battle-tested library for collaboration. Yjs is used by many products, and has also received the most testing in Gutenberg.
  • No merge conflicts. Yjs has a deterministic algorithm for combining edits, which means there’s never an edit that conflicts with the document.
  • The most “real time” collaboration. Yjs updates are fast and small (no matter the size of a document), communicate cursor-level presence, and are designed for a real-time feel.

Weaknesses

  • Yjs “hides” conflicts by choosing a winner itself. If two collaborators change a blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. setting at the same time, one user silently wins. If two people rewrite the same sentence at the same time, it’s possible for the result to be a mix that nobody wrote individually. Nobody is warned about conflicts, because the engine does not treat them as conflicts.
  • It communicates in compressed binary messages. Instead of “User A added ‘Lorem ipsum’ to paragraph 1”, Yjs messages look like { "type": "update", "data": "AAAG+/m3og8CA4IERAE0A6gAx…" }. This is efficient for update size, but can make debugging and understanding history more difficult.
  • Server agents cannot easily participate in collaboration. Outside tools that alter post content directly can’t easily interact with live collaboration, which can make it possible for an editor’s working copy and post content in the database to diverge.
  • Two implementations. The yjs-server engine requires matching JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. and PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher implementations because the browser is in charge of merging changes, but the server must also validate. The implementations are kept matching by shared tests, but a divergence between them would cause issues. Protocol updates must be made on server and client at the same time.

Engine 2: DE-RTC

Summary: Most similar to single-user WordPress. People share and merge changes only when they save. The server combines incoming saves with everyone else’s, and produces merge conflicts when there is an overlap. This engine is not designed for Google Docs-style real-time editing, preferring a slower update cadence. Because changes are made via save, external plugins, scripts, or WP-CLIWP-CLI WP-CLI is the Command Line Interface for WordPress, used to do administrative and development tasks in a programmatic way. The project page is http://wp-cli.org/ https://make.wordpress.org/cli/ commands that change post content can take part almost as easily as human edits.

The “DE” in DE-RTC stands for Distributed Editing. @dmsnell proposed the design in WordPress/wordpress-develop#12334 and WordPress/gutenberg#79602, and we’ve ported it into the sync engines plugin. It follows a more traditional WordPress model: if saving is how people share work, then anything that can save a post can take part, including tools that are not browsers. Although DE-RTC can send advisory data over every transport, post data updates are sent via regular saves on the configured save cadence.

Engine: DE-RTC with 10 second save cadence

How your change travels to peers: You make some changes. Every ten seconds (default), your browser sends the whole post to the server through WordPress’s normal autosave. The server merges based on three copies of the post: the version you started from, your updated version, and the current shared version on the server. Changes that do not overlap are combined automatically. When two people change a block in a way that conflicts, that block is set aside for review.

Engine: DE-RTC with 10 second save cadence. Merge dialog improvements are in progress.

Strengths

  • Outside tools can easily take part. A plugin, script, or agent that changes post content can collaborate with a live editor instead of replacing their work.
  • One implementation for merging, owned by the server. Browser logic is simple and sends the whole post to the server, and the server is in charge of making merges. Unlike yjs-server and intent-log, there is no required duplication of logic between browser and server.
  • Great for small, low-cost hosting. A few larger requests over a long interval are usually more friendly than constant polling on resource-constrained hosts.

Weaknesses

  • It is not real-time. You see other people’s changes on the save interval, not author cursors with live updates. The save interval can be adjusted, but DE-RTC scales best with infrequent updates.
  • Each save sends the whole post, so updates get bigger as the post grows.
  • Outside tools must say which version they started from. For outside post edits to merge with folks in the editor, tools are required to say which post version they started from (e.g. Base-version: 123). This is simpler than the other engines, but requires tools to be RTC-aware.
  • The server does not know what you meant. DE-RTC only sees content before and after a save, not “I split this paragraph.” Large post changes made together, like splitting or rearranging blocks, are more often set aside for review.

Engine 3: intent-log

Summary: The browser sends messages describing what a person did in Gutenberg terms, and the server is in charge of keeping a log. For example “Split block 1 at index 20”, then “Add text ‘Lorem Ipsum’ to block 2”. Messages explain changes in human terms. Simultaneous changes are combined via operational transform. Incompatible changes cause conflicts like DE-RTC.

Engine: intent-log
Transport: Polling (with 10 second cadence to allow time to edit)

How your change travels to peers: You type some text. Your browser describes it: “insert ‘Lorem ipsum’ at position 0 in block 1”, and sends the message to the server. The server adjusts your change to fit anything that arrived since (if a peer added three letters before yours, your insert moves three places over), adds it to the log, and sends back an answer. Conflicts are set aside for human merge review. Everyone else receives the official server-side log of actions after your changes are processed.

Example intent-log messages for the demo above:

// User B adds content to block 02f5e6c3
{
    "intentId": "...",
    "baseSeq": 585,
    "type": "insert_text",
    "payload":{
        "syncId": "02f5e6c3-2876-43a6-b041-6f3d0a217095",
        "field": "content",
        "offset": 42,
        "text": " in the editor."
    }
}

// At the same time, User A merges block 02f5e6c3 into block 8d979605
{
    "intentId": "...",
    "baseSeq": 585,
    "type": "merge_blocks",
    "payload":{
        "survivorId": "8d979605-e1d7-4cec-bc6e-4a3eaa6f30bc",
        "absorbedId": "02f5e6c3-2876-43a6-b041-6f3d0a217095",
        "field": "content",
        "joinOffset": 48
    }
}

Strengths

  • The server understands what happened in human terms. In yjs-server, moving a block in a post can look like a rewrite of the post, because the engine has no context when diffing a change. In intent-log, a block move is a simple message (“Moved block 1 to position 3”). This allows for context-aware merge strategies and server-side understanding of changes.
  • Intent-log keeps a human-readable record of the session. Every post has a built-in readable history of recent actions and who made them.
  • Outside tools can join by saying which version they started from, similar to DE-RTC. External saves can be turned into intent-log edits and combined with others.

Weaknesses

  • Intent-log can only process one update at a time per post. Intent-log uses a lock to manage incoming messages one at a time. Under heavy use within a single post, lock contention may be an issue and cause updates to sync more slowly.
  • Operational transforms are difficult. Intent-log is built on operational transforms, which involve realigning concurrent edits so that they can be combined without conflict. This difficult logic still needs a lot of work in intent-log.
  • Two implementations. The intent-log engine requires both a JS and PHP implementation because the browser must show your edits instantly as well as keep them in the right place as other changes arrive. This means intent-log runs the same logic in your browser (JS) and on the server (PHP) in order to avoid separation between the two logs. The implementations are kept matching by shared tests, but a divergence between them would cause issues. Protocol updates must be made on server and client at the same time.

Side by side

yjs-serverDE-RTCintent-log
Updates arrive quickly?YesNoYes
Live cursors in the textYes, Google Docs-styleNoYes (not implemented yet)
What the browser sendsBinary updatesThe whole postShort descriptions of edits
Where does the merge logic live?Server and browserServerServer (with browser preview)
Two people make a conflicting changeCombined silently, one person winsSet aside for reviewSet aside for review
Outside toolsNot merged with live sessionJoin by naming a versionJoin by naming a version
Server work per changeMost, grows with post sizeMiddle, upload grows with post sizeLeast

Transports: How changes travel

We’re mostly concerned with engine selection in this post, but we have several transports available that all engines can support. We expect transport options to depend on hosting availability. Here’s a quick rundown of those transports:

TransportHow it worksWhat it needs
PollingThe browser sends local updates and asks the server for updates on a timer, every N seconds. Can be adjusted anywhere from one to 25 seconds (default 5).No special infrastructure. Works on every host, and can be scaled at the cost of PHP workers.
Polling with WebRTC advisory channelThe browser sends local updates and asks the server for updates on a relaxed polling timer. However, when any peer makes a change, other peers are notified via WebRTC to immediately request an update from the server instead of waiting until the next poll cycle.Browsers that can reach each other over WebRTC. When not possible, falls back to regular polling.
Server-sent eventsThe browser keeps one connection open to WordPress and receives updates through it continuously. Local updates are sent to the polling endpoint.Hosting that allows long-open connections. One server process per open window, can consume PHP workers.
Server-sent events (daemon)The same one-way connection as server-sent events, but run on a stable, separate process instead of a general PHP worker. Local updates are sent to the polling endpoint.A server that can run a separate process, and hosting that allows long-open connections.
WebSocketA connection open in both directions, run on a separate process. Changes arrive almost instantly.A server that can run a separate WebSocket process.

Higher-fidelity transports are designed to be downgradable and fall back to polling. That means that if you choose a transport that relies on a separate service (such as the WebSocket daemon) and it stops responding, polling will always be available as a backup.

Call to action

Try it out and tell us what you think! When you test, please keep in mind that all three engines need polish and may have bugs. We want to hear about bugs, but care most about the major design differences between the engines and how they might affect your workflow. Are fast updates and live cursors a must for you? Do you prefer the simpler model of DE-RTC? How do you feel about the merge conflicts you encountered?

Report what you find on GitHub issues or in #feature-realtime-collaboration on WordPress Slack. For more in-depth information, see documentation in the repository:

Please let us know if there’s anything we can do to improve your testing.

Dev Chat Agenda – October 14, 2026

The next WordPress Developers Chat will take place on Wednesday, October 14, 2026, at 15:00 UTC in the core channel on Make WordPress Slack.

The live meeting will focus on the discussion for upcoming releases, and have an open floor section.

The various curated agenda sections below refer to additional items. If you have ticketticket Created for both bug reports and feature development on the bug tracker. requests for help, please continue to post details in the comments section at the end of this agenda or bring them up during the dev chat.

Announcements 📢

WordPress 7.2

General

Discussions 💬

The discussion section of the agenda is for discussing important topics affecting the upcoming release or larger initiatives that impact the CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Team. To nominate a topic for discussion, please leave a comment on this agenda with a summary of the topic, any relevant links that will help people get context for the discussion, and what kind of feedback you are looking for from others participating in the discussion.

Open floor  🎙️

Any topic can be raised for discussion in the comments, as well as requests for assistance on tickets. Tickets in the milestone for the next major or maintenance release will be prioritized.

Please include details of tickets / PRs and the links in the comments, and indicate whether you intend to be available during the meeting for discussion or will be async.

#7-2, #agenda, #core, #dev-chat

Presence API meeting summary: October 12, 2026

The Presence APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. meeting took place on Monday, October 12, 2026 at 15:00 UTC in #feature-presence-api. It also hosts the real-time collaboration (RTC) work. This week’s focus was the feature pluginFeature Plugin A plugin that was created with the intention of eventually being proposed for inclusion in WordPress Core. See Features as Plugins merge criteria, and which gaps are left before a coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. proposal.

Start of the meeting in Slack

Announcements

  • Presence API: What’s new went up on Make/Core on October 2.
  • Presence API 0.17.0 shipped October 8. A site can now switch off each piece it doesn’t want, and the presence functions take an $args array (#789).
  • The debugger and DB viewer moved into their own presence-debugger pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. (#760), and Presence Scenes gained arrivals, coming-back and fading-out scenes (#775).

Follow-ups

  • GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ Sync Engines (GSE) is drafting a Make post to be published this week.
  • The collaborator-liveness work left over from #647 now lives in GSE: a second tab is GSE#147, and another device is GSE#148. #815 gives GSE#148 a way to tell a second browser from a second tab.

Merge criteria

Each item from the handbook’s feature plugin criteria is tracked on #550.

  • @huzaifaalmesbah linted the CSSCSS Cascading Style Sheets. (#811), and @rejaulalomkhan linted the PHPUnit tests (#817).
  • @iamchitti is taking Firefox and WebKit end-to-end runs, scoped to the tab coordination specs (#808).
  • Inline CSS in the PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher files moves into stylesheets (#807).
  • @iamchitti took touch devices (#821), keyboard-only checks (#822) and the feature with JavaScriptJavaScript JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user’s browser. https://www.javascript.com off (#823).
  • Nobody has claimed HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. validation or a security audit yet, and neither has an issue. Comment on #550 to take one.

Path to core

Post locks are the first consumer, and GSE is the first outside project on the API. The readiness gate on #550 asks for three outside projects and eight weeks without a breaking API change, counted from 0.17.0, so December 3 at the earliest. Anyone building on the API, or considering it for a plugin or host, is welcome to get in touch.

Open floor

  • Private security reporting is now enabled on the repository, thanks to @huzaifaalmesbah.
  • @iamchitti asked where the TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. proposal draft is, and offered to review it this week.

Since the meeting

Presence API 0.18.0 shipped with the session hash (#815) and core’s copy of each API function winning once it exists (#805).

Next meeting

Monday, October 26, 2026 at 15:00 UTC in #feature-presence-api.

#collaboration, #presence-api, #summary

Call for feedback: the W and the site name in the Toolbar

Since WordPress 7.1 the Toolbar is also displayed in the Post Editor and the Site Editor (#65091, dev note). That change made an old problem more visible: the first two items of the Toolbar, the W and the site name, do not behave the same everywhere. #66258 proposes to fix that. This post outlines the change, the reasons, and asks for feedback before a patchpatch A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing. is written.

Current behavior

  • A click on the W goes to the About WordPress page.
  • A click on the site name goes to the site in the adminadmin (and super admin), and to the Dashboard on the front end.
  • The site name menu also changes. In the admin it has only Visit Site. On the front end it has Dashboard, Plugins and Themes.
  • In the editors, the Toolbar has no link to the Dashboard.

The proposal

Two fixed links.

  • The W always goes to the Dashboard. Dashboard is the first item of the W menu. About WordPress and the other items stay in the menu. On small screens the W stays visible. Today it is hidden under 600px.
  • The site name always goes to the site. The menu is the same everywhere: Visit Site, Plugins and Themes. On multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site, Manage Site comes after Visit Site. Classic themes keep Widgets, Menus, Background and HeaderHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes..

The Dashboard has one place, under the W. Please, check following images: 

Why

  • The W is the most visible item of the Toolbar, and today it goes to a page people rarely need. With this change it gets a useful click. There is no learned behavior to unlearn.
  • One click to the Dashboard from everywhere. So, we can build the right mental model.
  • One behavior to learn. People do not need to check where they are before they click.
  • Two clear places. The W is the admin. The site name is the site front end.
  • It works on multisite. My Sites stays next to the W, as today. In the Networknetwork (versus site, blog) Admin, the W goes to the network Dashboard.

How to test it

Open the Playground link. It loads WordPress with the test pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. active and lands on the Dashboard. Or download the plugin and install it on a test site. Deactivate it to compare with the current behavior. It stores nothing in the database.

What to look for:

  • The admin, the front end, the Post Editor and the Site Editor. The W and the site name do the same thing in all of them.
  • A window under 600px. The W is visible and goes to the Dashboard.
  • A multisite, if you have one. The Network Admin and a sub site.
  • A classic theme. Widgets, Menus, Background and Header stay in the site name menu.
  • A plugin that adds items to the W menu or the site name menu. The node IDs do not change, so they should keep working.

Leave feedback by October 16th

Please leave feedback in the Trac ticket, so it stays in one place. Comments on this post are welcome too. The deadline is October 16th, ahead of the 7.2 BetaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. 1 on October 20th 😊