Dev Chat summary: April 15, 2026

Startย of the meeting inย SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/, facilitated by @amykamala ๐Ÿ”— Agenda post.

Announcements ๐Ÿ“ข

WordPress 7.0 Updates

  • The Path Forward for WordPress 7.0. The 7.0 release is still on pause for the time being. A new schedule is being worked out and will be announced by the 22nd. There will be another Release Candidaterelease 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). in name, but in practice the next release will be treated as a 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., specifically to test architectural improvements to Real Time Collaboration. Thank you in advance to everyone who helps test!

General

Discussion ๐Ÿ’ฌ

@annezazu has published Defining expectations for Iteration issues announcing some adjustments to iteration issue handling 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/ repo.

From @amykamala: โ€œFinding the most current PRs and discussions can be a bit of a wild goose chase because while PRs mention tickets in their content, the fields/relationships on the right that would link PRs to a ticketticket Created for both bug reports and feature development on the bug tracker., project, status, etc are not actively being used. For 7.0 theres a kan ban board but nothing in it because tickets and PRs are not being tagged. So the only way to find this info is to scroll endlessly on tickets and click on all the links in the notifications. Some of you may remember a while back I asked devs in here to please start tagging their PRs in the fields on the right.โ€

  • @jeffpaul noted that the #core-program channel may be a good place to iterate on this topic.

Matt is requesting community reps and organizers increase emphasis on Elevating Individuals in the contributor space to to celebrate volunteers and folks who contribute in their own spare time.

From @miroku: โ€œI can only report problems; can that be considered a contribution? Iโ€™m always struggling to figure out how to volunteer effectivelyโ€. @jorbin answered that testing and finding bugs is absolutely a contribution!

@westonruter wanted to draw attention to this issue with @wordpress/core-abilities which makes it difficult to use outside of a React context. A PR is available to fix the issue.

#7-0, #core, #core-editor, #dev-chat

Elevating Individuals

Posting here since it spans +make.wordpress.org/design/ , +make.wordpress.org/community/ +make.wordpress.org/marketing/ +make.wordpress.org/meta/ .

My request: Letโ€™s go back to how we used to elevate individual identity and contribution. Learn how to celebrate sponsorship in ways that encourage and cheer equally or more volunteers and people contributing in their spare time, and remember thatโ€™s how almost all of us started and how beautiful and fun that was.

To expand a bit on what I tried to say in the Q&A, I was referring to this tweet:

HFkC1nSagAAoUBl

Krupa, sorry to use you as an example, but the giant SELF EMPLOYED on your badge shocked me, and led me down a path of thinking of all the ways my push to get companies doing what Automattic and Yoast has created some issues in its success, and the unintended consequences itโ€™s maybe led us to.

Iโ€™m not saying someone deliberately created this bad badge design on purpose or maliciously, but I do want to know what led to a result here that everyone involved thought Name and Company was just fine, and no one advocated for personal info you could have on a badge, and that we have before in previous designs. I would suggest WEBSITE since weโ€™re software trying to help people make websites, and want to encourage and promote that, then WordPress.orgWordPress.org The community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org/ username, for same reason, maybe hometown because thatโ€™s usually one of the first things people ask and itโ€™s interesting. Iโ€™d put all those things over the company, because the company for people who want to show it off is usually obvious from their shirt or buttons before you can read the badge.

@desrosj and @peterwilsoncc, Very sorry today for only being able to express disagreement in such a brief and unnuanced way. Iโ€™d love to get a Zoom when Iโ€™m feeling better so we can discuss and understand each otherโ€™s positions better.

Be a good conversationalist

I know I get annoyed when the first question someone asks when you meet is โ€œwhat do you do for work?โ€ Here are fun openers that are better, and how can that inspire how we experiment with badges.

Individual Complaints

I was first made aware of this issue by hearing complaints from coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. WP devs who said they feel like we doing so much more to recognize the contribution of companies. Iโ€™ve heard several versions of โ€œitโ€™s a bigger deal for me to contribute without being paid for it!โ€

Where else is this showing up?

  • In every Five for the Future testimonial.
  • Very much on 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 directories.
  • In the business model of WordCamps.
  • In a lot of our language and goals.
  • In my presentations starting probably 6-7 years ago.

Weโ€™re measuring and celebrating inputs and contributions, not impact or results

I keep repeating this as the biggest thing we need to change in the WordPress culture and way of doing things. In hindsight, how silly is it to emphasize hours pledged in Five for the Future and not actual activity? And then check regularly if that activity is actually aligned with our goals, or perhaps working against them? (It has happened!)

When is more contribution a bad thing? How has our emphasis on participation, process, or inclusive consensus slowed us down, even as we add more people? Are we surprised, given The Mythical Man-Month figured that out in 1975! What have we lost, and who have we lost, as a result of the structure and processes weโ€™ve created?

How am I so smart yet so dumb sometimes?! ๐Ÿ™‚

Hereโ€™s a better version. The most powerful question from Jerry Collona: โ€œHow have I been complicit in creating the conditions I say I donโ€™t want?โ€ It works so well in all parts of life.

Whatโ€™s new in Gutenberg 22.9? (8 April)

โ€œ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 22.9?

Gutenberg 22.9 has been released and is available for download!

This release introduces background gradients that work alongside background images in the Group 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., and adds organized sections to the command palette for better action discovery (experimental). The wordpress/ui package gains a foundational component for consistent empty states, while real-time collaboration receives stability improvements for multi-user editing sessions.

A total of 131 PRs were merged in Gutenberg 22.9, with 5 first-time contributors!

Table of contents

Background gradients alongside background images

The Group block now supports background gradients through a new background.gradient block support, allowing gradients and background images to work together without conflicts. Youโ€™ll find a gradient picker in the Background panel that works independently of the existing color gradient controls, making it possible to create gradient overlays on images or combine multiple background effects.

The new background.gradient block support is available to block authors. This also lays the groundwork for eventually migrating color.gradient to background.gradient across all blocks, providing a more consistent and capable background styling system, including clipping and text gradients. (75859)

Command palette history and suggestions (experimental)

The command palette (Cmd+K/Ctrl+K) now features organized sections that make it easier to find and reuse actions. Instead of showing just a search field and search results, users see sections for Recent commands and Suggestions based on current context. This change is experimental; to give it a try, first go to WP-Adminadmin (and super admin) > Gutenberg > Experiments and enable โ€œWorkflow Paletteโ€.

Other Notable Highlights

The wordpress/ui package adds a new EmptyState component for displaying placeholder content when sections have no data. This compound component provides flexible composition with sub-components for icons, titles, descriptions, and actions, laying groundwork for consistent empty state patterns across the interface (74719).

Real-time collaboration has received some fixes that improve the multi-user editing experience and stability. Block comments (notes) now properly sync between collaborative editors instead of requiring page refreshes to appear. In the post list, the action button correctly updates from โ€œJoinโ€ back to โ€œEditโ€ when collaboration locks expire. Behind the scenes, error recovery has been enhanced to prevent cascading failures that could previously cause memory issues during collaborative sessions. (76873, 76795, 76872, 76716)

The experimental Forms block now supports hidden input fields, filling an important gap for many applications. Hidden fields appear as selectable placeholder blocks in the editor, while remaining invisible on the frontend with values configurable through the Advanced panel. (74131)

Changelog

Enhancements

Block Editor

  • DOM: Prefer standard caretPositionFromPoint over deprecated caretRangeFromPoint. (76921)

Components

  • Add EmptyState component to wordpress/ui. (74719)
  • Admin UIUI User interface: Update Page background color. (76548)
  • Button: hide focus outline on :Active for click feedback in forced-colors mode. (76833)
  • Card: Use Text component for Title typography. (76642)
  • InputControl: Add to wordpress/ui. (76653)
  • Snackbar: Use surface-width design token for max-width. (76592)
  • Storybook: Make โ€œintroductionโ€ top level. (76671)
  • Tabs: Add runtime validation for tab/panel mismatches. (75170)
  • Theme: Change default control cursor to pointer. (76762)
  • ThemeProvider: Add cursor prop. (76410)
  • UI/Dialog: Deprioritize close icon for initial focus. (76910)
  • UI/Dialog: Expose initialFocus and finalFocus on Dialog.Popup. (76860)
  • UI: Add AlertDialog primitive. (76847)
  • UI: Update @base-ui/reactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org from 1.2.0 to 1.3.0. (76603)

Data Layer

  • CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Data: Remove offset param from stableKey, use pagination logic. (76808)

Block Library

  • Block Supports: Add background gradient support that can combine with background images. (75859)
  • Forms Block: Add hidden input field variation. (74131)
  • Image/Site Logo: Hide crop toolbar when editMediaEntity is unavailable. (76626)
  • Login/out block: Add button block class names to the submit button. (76746)

DataViews

  • CollapsibleCard: Add HeaderDescription subcomponent. (76867)
  • Improvements to dataviews infinite scroll. (74378)

Site Editor

  • Site Editor > Pages: Move view configuration to the server. (76573)
  • Site Editor > Patterns & Parts: Generate 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. from view configuration. (76823)
  • Site Editor > Patterns: Move configuration to the server. (76734)
  • Site Editor > Quick Edit: Add form configuration to endpoint. (76953)
  • Site Editor > Templates: Move configuration to the server. (76622)

Post Editor

  • DataForm: Add compact configuration option to the datetime control. (76905)
  • Site Editor v2: Add missing menu items to navigation leaf more menu. (76804)

Connectors

  • Improve AI 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. button. (76759)

Collaboration

  • Add backportbackport A port is when code from one branch (or trunk) is merged into another branch or trunk. Some changes in WordPress point releases are the result of backporting code from trunk to the release branch. for WP_ALLOW_COLLABORATION. (76716)

Guidelines

  • Improvements to the UXUX User experience. (76383)

Icon

  • Icons: Enforce strict name validation in register method. (76079)

Commands

  • Add sections to command palette and introduce Recently used functionality. (75691)

Bug Fixes

  • wordpress/date: Recover WP timezone after third-party reload. (75831)

Block Library

  • Icon: Fix center alignment in the editor for classic themes. (76878)
  • Image block media placeholder: Remove duotone. (76721)
  • Latest Comments: Fix v1 block deprecation. (76877)
  • List Item: Disable edit as HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. support. (76897)
  • Navigation: Avoid List View changing position when navigation block saves. (76659)
  • Reduce specificity of nav link default padding so global styles apply. (76876)
  • Show fallback label in MediaControl when filename is empty. (76888)
  • Site Tagline: Fix block error when migrating deprecated textAlign attribute. (76821)

Connectors

  • Boot: Fix black area below content when sidebar is taller than page content. (76764)
  • Add Akismet as a default connector. (76828)
  • Align client registration 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. with server. (76737)
  • Fix button size. (76582)
  • Replace plugin.slug with plugin.file. (76909)
  • Support non-AI provider types and add JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. extensibility end-to-end test. (76722)

Block Editor

  • Block visibility badge: Use canvas 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. for viewport detection. (76889)
  • Cross Origin Isolation: Remove img from the list of elements that get mutated. (76618)
  • Fix locked content when switching to a different template without exiting โ€˜Edit patternโ€™. (76710)
  • Hide Additional CSSCSS Cascading Style Sheets. controls when block is inside contentOnly editing mode. (76512)
  • Reset blockEditingModes on RESET_BLOCKS. (76529)
  • Stop keeping stale controlled blocks after reset. (76591)

Components

  • Admin UI: Fix Page 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. not rendering with only actions and add stories. (76695)
  • Button: Restore specificity of high-contrast mode focus ring. (76719)
  • Card: Add overflow: Clip to root container. (76678)
  • Fix Color Picker Angle Reset on Gradient Type Change. (76595)
  • Storybook: Disable autodocs for Icon library. (76620)
  • compose/useDialog: Add stopPropagation() to Escape handler. (76861)
  • ui/CollapsibleCard: Do not animate focus ring. (76682)

Post Editor

  • Fix: Create custom template modal content width. (76713)
  • Reduce the added halo for selected block. (76619)
  • RevisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision.: Add 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. fields diff panel to document sidebar. (76341)
  • Revisions: Fix template revisions retrieval and sorting. (76760)
  • Style Book: Fix missing styles for classic themes in stylebook route. (76843)

Collaboration

  • RTC: Fix notes not syncing between collaborative editors. (76873)
  • RTC: Fix stuck โ€œJoinโ€ link in post list when lock expires. (76795)
  • RTC: Restore on failed request with compaction update. (76872)

Client Side Media

  • Build: Remove unused JXL WASM module from vips worker. (76639)
  • Gate client-side media processing as plugin-only. (76700)
  • vips: Ensure single instance. (76780)

CSS & Styling

  • MetaboxMetabox A post metabox is a draggable box shown on the post editing screen. Its purpose is to allow the user to select or enter information in addition to the main post content. This information should be related to the post in some way.: Fix checkbox style in sidebar. (76718)

Data Layer

  • Properly resolve getTemplateId for hybrid themes. (76532)

Site Editor

  • Fix unsupported theme flash on direct URLURL A specific web address of a website or web page on the Internet, such as a websiteโ€™s URL www.wordpress.org navigation. (76465)

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)

Components

  • ComboboxControl: Fix accessible association of help text. (76761)
  • RadioControl: Add role=โ€radiogroupโ€ to fieldset. (76745)
  • ToggleGroupControl: Fix accessible association of help text. (76740)
  • ControlWithError: Connect validation messages to controls via aria-describedby. (76742)

Block Editor

  • Stretchy Text: Fix focus loss. (75092)

Experiments

Post Editor

  • Fields: Add 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. field. (76829)
  • Fields: Add sticky field. (76922)
  • Fields: Tweak excerpt field. (76903)
  • Add revisions panel. (76735)
  • Add template panel to include the existing template actions. (76539)

Guidelines

  • Refactor components and improve TypeScript typing. (76394)

Documentation

  • Abilities: Improve JSDoc for public API. (76824)
  • DOM: Document class wildcard matcher for โ€˜cleanNodeListโ€™. (76920)
  • Docs: Remove Puppeteer references and update to Playwright. (76766)
  • Docs: Update PHP_CodeSniffer repository link and schema URL. (76816)
  • Storybook: Add redirect for moved introduction page. (76701)
  • Storybook: Try changing to collapsed folders. (76361)
  • UI Tooltip: Improve documentation to cover intended accessibility practices. (76705)
  • Updating versions in WordPress ahead of 7.0. (76723)
  • admin-ui: Update package README to clarify purpose and distinguish from ui package. (76943)
  • docs(create-block-interactive-template): Document available variants in README. (76831)
  • iAPI Docs: Add client-side navigation compatibility guide. (76242)

Code Quality

  • Core Abilities: Fix sideEffects flag. (76763)
  • Admin UI: Add CSS files to sideEffects array. (76609)
  • admin-ui / Breadcrumbs: Stricter items[].to prop types. (76493)
  • Refactor: Use null coalescing operator for improved readability. (76777)
  • element: Make createInterpolateElement TS/type smart. (71513)

Data Layer

  • Core Data: Optimize getRawEntityRecord selector. (76632)
  • Core Data: Remove โ€˜isRawAttributeโ€™ internal util. (76806)

Block Library

  • Navigation: Add a shared helper for font sizes in Navigation Link and Navigation Submenu blocks. (74855)
  • Tab Block: Remove anchor from save function. (76511)

Site Editor

  • Simplify sidebar for Pages & Templates. (76868)

Commands

  • Fix useSelect warning in command palette. (76822)

Block Editor

  • Deprecate โ€˜__unstableSaveReusableBlockโ€™ action. (76807)

Components

  • UI: Clarify public APIs and component naming, remove NoticeIntent typings. (76791)

DataViews

  • wordpress/dataviews: Migrate card layout to wordpress/ui. (76282)

Tools

  • Add TypeScript parser tests for shouldSkipReference. (76611)
  • ESLint: Add no-unmerged-classname rule. (76458)
  • create-block-interactive-template: Enhance block registration by using blocks-manifest for improved performance. (76317)

Build Tooling

  • wp-build: Hash transformed CSS for data-wp-hash dedupe key. (76743)
  • Build: Fix vips worker 404 when SCRIPT_DEBUG is true. (76657)
  • Build: Skip non-minified build for WASM-inlined workers. (76615)
  • Changelog: Add missing label-to-feature mappings. (76646)
  • React vendor script: Avoid warning on createRoot. (76825)
  • Set milestone on PRs after cherry-picking to release 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".. (76652)
  • react-dom vendor script: Remove __esModule flag. (76925)

Testing

  • Fix: Flaky RichText format end-to-end test. (76958)
  • RTC: Add end-to-end block gauntlet. (76849)
  • e2e: Add end-to-end tests for template and template part revisions. (76923)
  • end-to-end Tests: Enable client-side media processing for site editor image test. (76648)

Collaboration

  • RTC: Update post lock backport PR. (76661)

First-time contributors

The following PRs were merged by first-time contributors:

  • @jigangz: Block Library: Show fallback label in MediaControl when filename is empty. (76888)
  • @meravi: Docs: Remove Puppeteer references and update to Playwright. (76766)
  • @rodrigoprimo: Docs: Update PHP_CodeSniffer repository link and schema URL. (76816)
  • @sandipmaurya2611: Boot: Fix black area below content when sidebar is taller than page content. (76764)
  • @Vedant-Gandhi: Fix Color Picker Angle Reset on Gradient Type Change. (76595)

Contributors

The following contributors merged PRs in this release:

@aaronrobertshaw @adamsilverstein @aduth @alecgeatches @andrewserong @annezazu @aswasif007 @carolinan @CGastrell @chriszarate @ciampo@DAreRodz @dhasilva @dsas @ellatrix @epeicher @gziolo @im3dabasia @ingeniumed @jameskoster @jasmussen @jigangz @jorgefilipecosta @jsnajdr@juanmaguitar @Mamaduka @manzoorwanijk @maxschmeling @meravi @mirka @ntsekouras @oandregal @pento @ramonjd @retrofox @rodrigoprimo@sandipmaurya2611 @scruffian @senadir @sgomes @Shekhar0109 @shekharnwagh @shimotmk @SirLouen @Soean @t-hamano @talldan@tellthemachines @Vedant-Gandhi

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

Dev Chat summary: April 8, 2026

Startย of the meeting inย SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/, facilitated by @audrasjb ๐Ÿ”— Agenda post.

Announcements ๐Ÿ“ข

WordPress 7.0 Updates

  • The Path Forward for WordPress 7.0. Quick summary:
    • trunk is closed to commits for the 7.1 release until further notice
    • Backporting to 7.0 still requires double committercommitter A developer with commit access. WordPress has five lead developers and four permanent core developers with commit access. Additionally, the project usually has a few guest or component committers - a developer receiving commit access, generally for a single release cycle (sometimes renewed) and/or for a specific component. sign off
    • Pre-releases are paused
    • The next release will be a 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).
    • Weโ€™re currently in string freeze
  • Newย 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.:

Discussion ๐Ÿ’ฌ

From @desrosj: contributors who have a list of notes for tickets to create are encouraged to create them before the WordCampWordCamp WordCamps are casual, locally-organized conferences covering everything related to WordPress. They're one of the places where the WordPress community comes together to teach one another what theyโ€™ve learned throughout the year and share the joy. Learn more. Asia Contributor DayContributor Day Contributor Days are standalone days, frequently held before or after WordCamps but they can also happen at any time. They are events where people get together to work on various areas of https://make.wordpress.org/ There are many teams that people can participate in, each with a different focus. https://make.wordpress.org/support/handbook/getting-started/getting-started-at-a-contributor-day/. Especially if they are good-first-bugs!ย 

@desrosj added: โ€œIf someone has some time, triaging the good-first-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. list could also be helpful. Sometimes that list is intimidating because it seems like everything is attended to. But often times the patches need to be refreshed or the approaches so far are not fully solving the issue at hand. If we could note that on the tickets, it may make them more easily actionable.โ€

@audrasjb noted that the 8 tickets in the i18n component for 7.0 are easy tickets that would be nice to address during the contributor day. They are also Polyglots, CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress., and Core Editor cross-team tickets.

@desrosj will encourage our Polyglots contributors to open tickets for strings that need refinement and additional context as it is a great way to contribute to the upcoming release.

#7-0, #core, #core-editor, #dev-chat

Dev Chat summary: April 1, 2026

Startย of the meeting inย SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/, facilitated by @audrasjb ๐Ÿ”— Agenda post.

Announcements ๐Ÿ“ข

Editor

General

WordPress 7.0 Updates

Discussion ๐Ÿ’ฌ

From Matt: Rethinking Left Navigation

  • @audrasjb: โ€œOrdering plugins in a menu is a pretty sensible [but] it would be great if users could order them themselvesโ€
  • @jorbin recommended to make it a Feature PluginFeature Plugin A plugin that was created with the intention of eventually being proposed for inclusion in WordPress Core. See Features as Plugins project
  • @joedolson wanted to note that maintaining consistent navigation order is an explicit accessibility requirement

From @joefusco: โ€œFollowing the awareness/presence discussion in #64696, I built a feature plugin to test the workload independently from RTC feature.โ€

  • @desrosj proposed to make it a Feature Plugin hosted on the WordPress 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/ repository andโ€ฆ tada! Itโ€™s live.

From @wildworks: โ€œI am proposing to remove the ability to embed YouTube videos in the cover 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.. I would appreciate your thoughts on this. In my opinion, this violates the terms of service and also presents 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) issues.โ€ See this PR comment.

  • @jorbin pointed out that WordPress has shipped with header video support for almost a decade with no complaints, so removing this from the cover block should not be rushed.
  • @joedolson added that the accessibility issue is technically a content control issue; it doesnโ€™t directly create an issue, but opens a door for significant issues that were previously easily prevented.
  • @wildworks shared this Slack thread, where comments are welcome about this topic.

#7-0, #core, #core-editor, #dev-chat

The Path Forward for WordPress 7.0

It was announced earlier this week that the final 7.0 release has been delayed specifically to allow more time to address testing feedback about the implementation of real-time collaboration. While the broad reasons for the delay were shared, this post will clarify what the delay means in practice (โ€œreturning to 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.โ€ after entering the Release Candidaterelease 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). phase of a release is unprecedented), and how to handle some specific technical details. Having clear guidance helps to direct attention to the right areas and ensures that the delay is as minimal as necessary.

This post outlines the policies dictating what can move forward, and the processes that should be followed until further notice to best focus community efforts while promoting stability and the ability to remain nimble.

Committing

To help CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. committers understand what types of commits are allowed during this pause, the following policies are now (or continue to be) in place:

For non-Committercommitter A developer with commit access. WordPress has five lead developers and four permanent core developers with commit access. Additionally, the project usually has a few guest or component committers - a developer receiving commit access, generally for a single release cycle (sometimes renewed) and/or for a specific component. contributors, this section may help explain why Core committers make certain decisions.

Commits to trunk

To avoid the potential for merge conflicts while backporting and other complexities, 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. is closed to commits for the 7.1 release until further notice.

Backporting to the 7.0 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".

Backporting commits will continue to require double sign-off by two core committers. The commit dev-feedback keywords should be used to request a second committerโ€™s review, and dev-reviewed should be added to indicate a second committer has reviewed and approved performing the merge to the 7.0 branch.

Changes Allowed

The typical rules followed during the Release Candidate phase of the release cycle will remain in effect:

  • No new features or enhancements are allowed.
  • Only fixes for bugs introduced during the current release cycle are allowed.
  • Built/Test Tool and/or test coverage improvements are allowed at any time.
  • Features can be removed if they are deemed particularly risky, unstable, or new testing data surfaces previously undiscovered issues.

Note: These restrictions also apply to the wp/7.0 branch 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, which is used to merge changes targeted for the 7.0 release into wordpress-develop.

The primary exceptions to the rules above are any changes related to the stability of real-time collaboration (see #64696, #64904, #64890, #65008, #64622 and this board on GitHub), and any improvements necessary to refine the experience of the new Connectors adminadmin (and super admin) screen (see #64960 and #64789).

Pre-release Versions During Delay

To allow everyone a chance to regroup and properly identify the outstanding issues and discuss how best to address them, additional pre-release versions of WordPress 7.0 will be paused through April 17th.

Enough of the surrounding context about the work remaining will be better understood by then. The release squad and project leadership can then develop a new, well informed schedule for the 7.0 final stretch, which will be published no later than April 22nd.

Testing During This Pause

Following standard procedures during a major version release cycle, the nightly releases are now being generated from the 7.0 branch. During this pause, it is recommended that you perform testing using the latest nighty build.

The easiest way to accomplish this is by installing and activating the WordPress Beta Tester 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. on a test site and selecting the โ€œBleeding edgebleeding edge The latest revision of the software, generally in development and often unstable. Also known as trunk.โ€ channel and โ€œNightliesโ€ stream.

Version Numbering

While the nature of the pause suggests that the release is returning to the beta phase, truly returning to beta releases from a version string perspective is challenging due to a number of technical limitations. Mainly, version_compare() will not recognize 7.0-beta7 as newer than 7.0-RC2.

After considering a number of ways to approach the situation and discussing with contributors, Iโ€™ve concluded that the best option seems to be continuing releases in the expected numerical order (RCX+1). This is a bit unorthodox because RC3 and likely RC4 will be represented as Release Candidates by version string despite being considered a beta release in practice. But itโ€™s the most technically sound option to ensure minimal confusion around which version to test, and that sites continue to update as expected when future versions are published.

Each release post must clearly mention this nuance with clear testing instructions and guidance to avoid confusion.

Given that new releases are paused until April 17th, there is a bit more time to consider other options if new data or rationale is presented before then.

String Freeze

To avoid creating new work for Polyglots contributors, new strings should be avoided as much as possible. Exceptions can be made for critical strings (the About page or real-time collaboration, for example) provided they are properly tagged with the i18ni18n Internationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill.-change keyword in TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. and the Polyglot team is made aware. Existing strings can be removed and/or duplicated as necessary.

Feedback

If a specific and compelling scenario comes up that makes clear adjustments to the above policies are required, please note them in the comments below for discussion and consideration. This post will be updated as changes to these policies are deemed necessary with each change clearly noted at the top. Additionally, changes will be announced in #core on SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/ and noted in each next Dev Chat agenda.

Props @peterwilsoncc, @matveb, @annezazu, and @jorbin for peer review.

Building a custom sync provider for real-time collaboration

Real Time Collaboration was removed from the scope of WordPress 7.0 before RC3.

WordPress 7.0 will introduce real-time collaboration in the 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. Out of the box, the editor syncs changes between peers using an 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 provider. However, an HTTP polling transport isnโ€™t the only option and it may not be the best fit for your infrastructure, especially if you are a WordPress hosting provider.

The sync.providers client-side 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. proposed for WordPress 7.0 lets you replace the default transport with your own. This post walks through why youโ€™d want to use one, what a provider does, and how to build one.

Why build a custom provider?

The default HTTP polling provider is designed to work on any WordPress installation. It batches document and awareness updates into periodic HTTP requests: every four seconds when editing alone, every second when collaborators are present. (These values are filterable.)

It works reliably, but there can be good reasons to swap it out:

  • Lower latency. Transports such as WebSockets deliver updates as they happen, not on a polling interval. For sites doing heavy collaborative editing, the difference can be noticeable.
  • Reduced server load. Polling generates requests even when nothing has changed. A push-based transport only sends data when needed.
  • Infrastructure alignment. If you already run WebSocket servers or other real-time transport, you can benefit from using familiar infrastructure with WordPress.

These benefits come with a substantial overhead. Building a custom provider is not trivial. It will require custom code. Most likely, it will also involve deployingDeploy Launching code from a local development environment to the production web server, so that it's available to visitors. and maintaining server resources.

What a sync provider does

Real-time collaboration in WordPress is powered by Yjs, a 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. WordPress content is represented by Yjs documents; syncing happens by exchanging updates to those documents.

The sync provider is the transport layer. It facilitates the exchange of Yjs document updates between peers.

Concretely, a provider needs to:

  1. Receive local Yjs document updates and send them to remote peers.
  2. Receive remote updates and apply them to the local Yjs document.
  3. Report connection status so the editor UIUI User interface can show whether the user is connected.

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/โ€™s sync manager orchestrates the syncing process. It creates a sync provider for each Yjs document that will be synced. Therefore, supplying a custom sync provider means supplying a provider creator function. A provider creator is an async function following this example:

async function myProviderCreator( options ) {
ย ย ย ย const objectType = options.objectType; // e.g., "postType/post"
ย ย ย ย const objectId ย  = options.objectId; ย  // e.g., "123"
ย ย ย ย const ydoc ย  ย  ย  = options.ydoc; ย  ย  ย  // Yjs document
ย ย ย ย const awarenessย  = options.awareness;ย  // Yjs awareness

ย ย ย ย // Create provider.
ย ย ย ย const room ย  ย  = `${ objectType }:${ objectId }`;
ย ย ย ย const provider = new MyYjsProvider( ydoc, awareness, room );

ย ย ย ย // Connect.
ย ย ย ย provider.connect();

ย ย ย ย return {
ย ย ย ย ย ย ย ย destroy: () => provider.destroy(),
ย ย ย ย ย ย ย ย on: ( event, callback ) => provider.on( event, callback ),
ย ย ย ย ย };
}

Note that the returned object has two function properties that the provider must implement:

  • destroy(): The sync manager will call this function when it is time to close connections, remove listeners, and free resources.
  • on(): This function allows the sync manager to subscribe to connection state changes. Emit { status: 'connecting' }, { status: 'connected' }, or { status: 'disconnected', error?: ConnectionError } as appropriate.
    • A disconnected event can be accompanied by an error. Using specific error codes allows the editor to give specific feedback to the user. See the list of error codes and resulting messaging.

Existing Yjs providers

You donโ€™t have to build a sync provider from scratch. Yjs has a provider ecosystem and several existing libraries can handle the heavy lifting.ย 

y-websocket is the most widely used Yjs provider and has been deployedDeploy Launching code from a local development environment to the production web server, so that it's available to visitors. by WordPress VIP and other WordPress hosts. It includes both a client and a simple Node.js server.

Note: y-webrtc is nominally a peer-to-peer provider that syncs via WebRTC, but in practice it requires centralized servers to reliably connect peers with each other. It is not recommended unless you are willing to invest in those servers.ย 

Minimal client example with y-websocket

Wrapping a Yjs provider in a ProviderCreator function is straightforward, as seen in the following example. However, note that this example is missing essential authorization checks (discussed in the next section):

import { addFilter } from '@wordpress/hooks';
import { WebsocketProvider } from 'y-websocket';

addFilter( 'sync.providers', 'my-plugin/websocket', () => {
    return [
        async ( { objectType, objectId, ydoc, awareness } ) => {
            const roomName = `${ objectType }-${ objectId ?? 'collection' }`;
            const provider = new WebsocketProvider(
                'wss://my-sync-server.example.com',
                roomName,
                ydoc,
                { awareness }
            );

            return {
                destroy: () => provider.destroy(),
                on: ( event, callback ) => provider.on( event, callback ),
            };
        },
    ];
} );

This code replaces the default HTTP polling provider entirely. The filter callback ignores the incoming providerCreators array and returns a new array containing a single WebSocket-based provider creator.

The WebSocket server (wss://my-sync-server.example.com in the example above) must be configured and deployed separately. The y-websocket-server library is the server companion to y-websocket.

Authorization and security

A custom sync provider connects to infrastructure that you own and operate, e.g., a WebSocket server. Because that infrastructure lives outside of WordPress, WordPress canโ€™t authorize requests to it on your behalf.

Securing the connection between the editor and your sync server is your responsibilityโ€”a critical one. Without authorization checks, any user could connect to your WebSocket server and participate in a collaborative session with your WordPress users.ย 

Token-based auth

A common pattern is to issue short-lived tokens via a WordPress 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/ endpoint, then pass the token when opening the WebSocket connection. The tokens assert that the user has permission to collaborate on a specific entity.

Hereโ€™s a simplified example of how the WPVIP Real-Time Collaboration plugin handles it:

// Fetch a short-lived token from a WordPress REST endpoint.
// This endpoint is provided by your plugin. Tokens encode the
// type and ID of the entity being edited, as well as the current
// WordPress user ID.
const data = await apiFetch( {
ย ย ย ย path: '/my-plugin/v1/sync/auth',
ย ย ย ย method: 'GET',
ย ย ย ย data: { objectType, objectId },
} );

// Pass the token as a query parameter when connecting.
provider.params = { auth: data.token };
provider.connect();

Key considerations

  • Validate on the server. Never trust the client. The sync server should verify the token on every connection request. The token should encode information about the user, the entity being edited, and which actions are authorized. The sync server should validate each assertion and reject unauthorized connections before applying any document updates.
  • Authorize per-document. Itโ€™s worth restating: Donโ€™t just authenticate the user, additionally verify they have permission to edit the specific post or entity being synced. Your WebSocket server should validate this on every connection.
  • Rotate tokens. WebSocket connections are long-lived. Use short-lived tokens and re-authenticate on reconnect so that revoked permissions take effect promptly.
  • Handle disconnects gracefully. When authorization fails or a token is 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., emit a { status: 'disconnected', error } event so the editor can inform the user. The WPVIP 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. maps WebSocket close codes to specific error types to give users actionable feedback.

The WPVIP Real-Time Collaboration plugin is a functional and secure example using WebSockets. Itโ€™s open sourceOpen Source Open Source denotes software for which the original source code is made freely available and may be redistributed and modified. Open Source **must be** delivered via a licensing model, see GPL. and contributions are welcome.

Feedback

If you have questions or feedback about building a custom sync provider, please share them in a comment on this post or in the #hosting channel of Make WordPress Slack.

Props to @jorbin and @westonruter for feedback and contributions.

#7-0, #dev-notes, #dev-notes-7-0, #feature-real-time-collaboration

Extending the 7.0 Cycle

After discussions with project leadership, the decision has been made to delay the 7.0 release by a few weeks to finalize key architectural details.

WordPress 7.0 is shaping up to be a big release, with some great highlight features and a long list of improvements. Iโ€™m excited to get this in the hands of users. Within that context, contributors have been hard at work discussing, iterating, and polishing every detail.

One of the larger items for this release is the introduction of real-time collaboration primitives, which includes built-in support 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. polling to ensure the widest possible reach and access to this capabilitycapability Aย capabilityย is permission to perform one or more types of task. Checking if a user has a capability is performed by the current_user_can function. Each user of a WordPress site might have some permissions but not others, depending on theirย role. For example, users who have the Author role usually have permission to edit their own posts (the โ€œedit_postsโ€ capability), but not permission to edit other usersโ€™ posts (the โ€œedit_others_postsโ€ capability).. To support this system in coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress., a new custom table was proposed. While there was general agreement that it would be nice to have for collaborative editing and sync coordination, it was paused due to time and design uncertainties.

Due to a combination of rapid iteration around data storage solutions and cache invalidation strategies, discussions were held before RC2. This led to a path forward that addresses the outstanding concerns by continuing to store content changes in postmeta while moving awareness/presence information about users in session to transients. This approach avoids rapid and frequent cache invalidation issues with special handling for collaborative editing 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. fields. Since then, Matt has expressed a preference to revisit the custom table and ensure adequate time is given to come up with the best design possible from the start. To support this, more time is being added to the 7.0 cycle to ensure the best solution for the overwhelming majority of users is included.

Additionally, there was one extra consideration raised about use cases beyond the real time support (like accommodating broader sync use cases) that should also be discussed to ensure we design the right primitives in the broadest possible sense. After getting more clarity on how a new table will look and function, a new final timeline for 7.0 will be announced. This will likely be a delay of a few weeks, as there are many features that will benefit users, and it would be counterproductive to hold them back for too long. The extra time will help ensure we can process all the feedback given so far and ensure the design can stand the test of time. New features and enhancements not already in core will not be considered for inclusion.

Overall, the intention in shipping collaborative editing in 7.0 as an opt-in is to give the WordPress ecosystem time to adapt to a major change. For hosts, this can have an impact in WordPress resource usage and database interactions. WordPress sites are generally very read-heavy, but collaborative features inherently involve a writing state that is then rebroadcast to other users. The HTTP polling mechanism as designed is a lowest-common-denominator approach, but its broad compatibility comes at the cost of relative inefficiency compared to more specialized solutions like WebSockets. Itโ€™s important to empower site owners and hosts to have full control during this process. So, rather than enabling the feature for 100% of users on day one, the opt-in approach allows usage to ramp up organically. Hosts can monitor requests to the sync endpoints, perform profiling to ensure their particular caching and request management approaches are appropriate, etc.

Thus far, for example, WordPress.com has done extensive testing on this feature and has demonstrated that the conservative defaults, the limit on the number of collaborators, and the number of active editor sessions in the shared environment make HTTP polling a viable transport that can work on essentially any WordPress host without additional dependencies. Other hosts are encouraged to test this as well, and a call for testing will be coming to make.wordpress.orgWordPress.org The community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org//hosting after the final architecture has been committed.

For 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. developers, many popular plugins still rely on metaboxes for their UIUI User interface. These plugins submit their inputs when a post is saved in the editor via 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/โ€™s compatibility mode. This approach, on its own, is not compatible with collaborative editing, which builds on the wordpress/data package used by the 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 to detect and sync changes across all users in a session, gracefully handling common types of conflicts. As a result, real-time collaboration is disabled when metaboxes are present. The 7.0 cycle will be a window in which these plugin developers can implement a bridge to make their metaboxes compatible or adopt more modern Gutenberg APIs that will instead render their UI in a way that more seamlessly integrates with the editor. Learn more in the official dev note for the feature and, for more details on migrating from metaboxes, see the Meta Boxes guide in the Block Editor Handbook.

Thank you to everyoneโ€™s continued commitment to ensuring 7.0 is an outstanding release, both from a features and stability perspective.

Props to @jorbin @desrosj @annezazu @griffbrad @4thhubbard for helping review this post.ย 

#7-0

WordPress 7.0 Release Candidate Phase, Pt. 2

This updates the expectations and policies that should be followed through the final release of WordPress 7.0 following the previous post and the release of RC2 on 26 March.

These policies mainly cover how and when CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. committers can commit. For non-committing contributors, this post may help explain why Core committers make certain decisions.

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. is now WordPress 7.1-alpha

WordPress 7.0 has been copied to its own branch, trunk is now open for commits for the next version of the software.

Backporting to the 7.0 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".

Backporting commits of production code (that is, anything that ends up in the zip file) now requires double sign-off by two core committers. The dev-feedback keyword should be used to request a second committercommitter A developer with commit access. WordPress has five lead developers and four permanent core developers with commit access. Additionally, the project usually has a few guest or component committers - a developer receiving commit access, generally for a single release cycle (sometimes renewed) and/or for a specific component.โ€™s review, dev-reviewed should be added to indicate a second committer has reviewed and approved the commit to the 7.0 branch.

String Freeze

The RC1 release marked the hard string freeze point of the release cycle and that continues. Strings will be available for Polyglots contributors shortly. Please subscribe to the Make Polyglots blog for updates.

No new strings are permitted. Exceptions can be made for critical strings (the About page, for example) provided they are properly tagged with the i18n-change keyword in TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. and the Polyglot team is made aware. Existing strings can be removed and/or duplicated as necessary.

Seek guidance from the Polyglots team reps for any strings reported as buggy. A buggy string is one that can not be translated to all languages in its current form.ย 

Tickets on the WordPress 7.0 milestone

For the remainder of the cycle, only two types of tickets may be placed on/remain on the 7.0 milestone:

  • Regressions: bugs that have been introduced during the WordPress 7.0 development cycle, either to existing or new features.
  • Test suite expansion: tests can be committed at any time without regard to code or string freezes. This can cover either new or existing features.

Please make sure to observe all code freezes, which applies to changes of any kind. Coordinate with the release squad in the #7-0-release-leads channel in SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/ if there is a change you feel should be committed during a freeze.

Props @jorbin, @audrasjb, @amykamala for peer review.

#7-0

Whatโ€™s new in Gutenberg 22.8? (25 March)

โ€œ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.

Gutenberg 22.8 has been released and is available for download!

Table of contents

Real-time Collaboration improvements

Real-time collaboration now shows collaborator text selections, not just cursor positions. When another user selects text, you see their selection highlighted in their assigned colour โ€” matching the behaviour youโ€™d expect from collaborative editors like Google Docs.

The presence UIUI User interface has also been polished: avatars are redesigned, you can now see your own presence indicator, and a new Writing preference lets you control whether you receive collaborator notifications. Under the hood, peer limits and disconnection debouncing improve stability for busier editing sessions. (76107, 75652, 76413, 76460, 76565, 76114)

Button pseudo-state styling in Global Styles

A new โ€œStateโ€ dropdown now appears next to the Button 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. title in Global Styles. Selecting a state โ€” Hover, Focus, or Active โ€” switches all the style controls below to edit that specific state. The block preview updates live to show the selected state, giving you a visual preview of how the button will appear on the frontend.

While 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. has supported pseudo selectors for some time, there has been no visual interface to edit them until now. The Button block is the starting point, with the architecture designed to expand to other blocks in future releases. Separately, theme.json now also supports styling the current/active 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. item and its interactive states, giving theme authors control over active-page highlighting without custom CSSCSS Cascading Style Sheets.. (75627, 75736, 76326)

Site Logo & Icon in the Design panel

Site logo and icon management now has its own dedicated screen in the Design panel. The new screen uses a compact media editor for both fields, making it quicker to set or swap your siteโ€™s logo and favicon without navigating through adminadmin (and super admin) settings or finding the block settings. (76116)

Connectors extensibility

The Connectors screen, introduced in 22.7, now has a registry 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. that allows plugins to register their own connectors. Plugins can use registerConnector() to add entries to the Connectors admin page, and unregisterConnector() to remove them.

These extension points allow any 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. to integrate with the Connectors system, so it can grow beyond the built-in providers. (76364, 76541, 76142).

Other Notable Highlights

  • Add navigation links from 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. List View: You can now add new links directly from the Site Editorโ€™s sidebar List View for navigation menus, rather than needing to open the block inspector. (75918)
  • Client-side media processing: Client-side image uploads now support the AVIF format, cross-origin isolation no longer breaks third-party plugin iframes, and server-side plugins that process uploaded images (for watermarking, CDN sync, etc.) now work correctly alongside client-side processing. (76371, 75991, 74913, 76616)
  • Command Palette in the admin bar: A trigger button for the Command Palette now appears in the WordPress admin bar, making it accessible from anywhere in the admin. The button displays the keyboard shortcut for your platform (โŒ˜K on Mac, Ctrl+K on Windows/Linux). (75757)

Changelog

Features

Collaboration

  • RTC: Add preference for collaborator notifications. (76460)

Enhancements

Components

  • wordpress/ui: Add Collapsible component. (76280)
  • Add ExampleApplication story for ThemeProvider to better demonstrate component theme-ability.
    (76463)
  • Add Link primitive to @wordpress/ui. (76013)
  • Add primitive Text component to wordpress/ui. (75870)
  • Add styles for outside days in Calendar components. (76199)
  • Admin UI: Add Storybook stories for Breadcrumbs and Page components. (76467)
  • Adopt surface-width design tokens for Dialog, Notice, and Modal widths. (76494)
  • Collapsible.Card: Make contents hidden until found. (76498)
  • CollapsibleCard: Move trigger to the whole 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.. (76265)
  • Editor: Polish real-time collaboration presence UI and move 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. to editor package.
    (75652)
  • Field.Label, Fieldset.Legend: Add visuallyHidden prop. (76052)
  • Refactor admin-ui Page component to use wordpress/theme tokens and wordpress/ui layout primitive.
    (75963)
  • Storybook: Change the default font. (76366)
  • Storybook: Deduplicate injected package stylesheets. (76158)
  • Theme package: Add surface width design tokens. (76047)
  • Theme: Add no-token-fallback-values stylelint rule. (76415)
  • Tooltip: Change default placement from bottom to top. (76131)
  • UI Notice: Let description and actions span icon column at narrow widths. (76202)
  • UI/Badge: Add border and neutral-strong background to none intent. (76356)
  • @wordpress/ui: Add Card and CollapsibleCard components. (76252)
  • CollapsibleCard: Add animations. (76378)
  • ui/Card: Increase padding, align with legacy Card. (76368)
  • Admin UI: Update font size for title and breadcrumbs to match. (76452)

Connectors

  • Add AI Experiments plugin callout with install/activate functionality. (76379)
  • Add connectors registry for extensibility. (76364)
  • Add empty state when no connectors are registered. (76375)
  • Add unregisterConnector and upsert support. (76541)
  • Move plugin status computation to script module data. (76409)
  • Sync PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher code with WordPress CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. (76443)
  • Update page identifier to options-connectors. (76142)
  • WP Admin: Update Connectors screen footer text for consistency. (76382)

Block Library

  • Block Library: Improve the design of MediaControlPreview and MediaControl.
    (76430)
  • Link Picker: Use Homepage badge instead of Page if Homepage. (75929)
  • Navigation link: Add support to style current menu item via theme.json. (75736)
  • Navigation: Allow creating new links in site editor sidebar List View. (75918)
  • Post Date: Migrate to textAlign block support. (75856)
  • 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.: Migrate to textAlign block support. (75860)
  • Tabs: Disable anchor support on Tab Menu Item. (76442)
  • Tabs: Restructure Tabs Menu and inner blocks. (75954)

DataViews

  • Add border to sticky table headers. (76396)
  • DataForm: Add customizable button text to panel modal. (76099)
  • DataForm: Reduce panelโ€˜s dialog min-width. (76345)
  • DataViews Grid and Picker Grid: Add density option for gap between items. (75887)
  • Improve storybook infinite scroll. (76566)

Post Editor

  • Add Site Logo & Icon screen to Design panel. (76116)
  • Editor: Show own presence in collaborative editing sessions. (76413)
  • Fields: Add format field. (76308)
  • Media: Add hooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same. and extension points for client-side media processing. (74913)

Collaboration

  • RTC: Add collaborator selection highlighting in rich text. (76107)
  • RTC: Allow filtering of SyncConnectionModal. (76554)
  • RTC: Auto-register custom taxonomyTaxonomy A taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. https://codex.wordpress.org/Taxonomies#Default_Taxonomies. rest_base values for CRDT sync. (75983)
  • RTC: Do not sync role=local attributes. (76267)
  • RTC: Implement disconnection debounce after initial connection. (76114)
  • RTC: Implement front-end peer limits. (76565)
  • RTC: Remove post list lock icon and replace user-specific lock text. (76322)
  • Use V2 Yjs methods 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. Polling. (76304)
  • Add a limit for the default provider. (76437)

Content Guidelines

  • Rename route and use the right Notice component. (76427)

Block Editor

  • Implement state UI for pseudo selectors on Global styles. (75627)
  • Media: Use Document-Isolation-Policy for cross-origin isolation on Chromium 137+.
    (75991)
  • Pattern Editing and Block Fields: Highlight selected block. (74841)
  • Icons API: Support searching in labels. (75878)
  • Media Upload Modal: Try an uploading state with popover in the footer. (76228)
  • Set placeholder to 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. field. (76342)
  • Add confirmation dialog before disconnecting/detaching. (75713)

Interactivity API

  • Add client-side navigation block with interactive features. (76331)

Command Palette

  • Add command palette trigger button to admin bar. (75757)

Bug Fixes

Post Editor

  • Add isNavigationPostEditorKey symbol to fix menu display context. (76461)
  • Allow Post Content to be edited when โ€˜Show templateโ€™ is active and Post content is nested in a Template Part.
    (76305)
  • Client-side media processing: Try plumbing invalidation to the block-editorโ€™s mediaUpload onSuccess callback.
    (76173)
  • Editor: Fix autosaves for draft and auto-draft posts. (76624)
  • Fix: Document Bar: Back button flickers. (76320)
  • Fix: QuickEdit: Consolidate how โ€œStatus > Scheduledโ€ works. (76129)
  • Navigation: Disable Mobile Menu in Isolated Editor or Site Editor Preview. (76203)
  • Notes: Disable for in-editor revisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision.. (76180)
  • Page Parent: Change the default value of โ€˜fieldValueโ€™ state. (76354)
  • Page/Post Content Focus Mode: Fix insertion into Post Content block. (76477)
  • RTC: Place sync connection modal in front of popover. (76431)
  • Revisions: Show changed block attributes in inspector sidebar. (76550)
  • Revisions: Use useSubRegistry={false} to fix global store selectors. (76152)
  • Site Editor: Ensure editor settings are populated with server-side settings ASAP.
    (75785)

Block Library

  • Cover Block: Add a playlist parameter to 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 YouTube background videos. (76004)
  • Disables anchor support for the Page Break block. (76434)
  • Fix: Update the playlist-track file permissions from 755 to 644. (76315)
  • Fix: Use add_filter() for get_block_type_variations hook. (76297)
  • HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. & ShortcodeShortcode A shortcode is a placeholder used within a WordPress post, page, or widget to insert a form or function generated by a plugin in a specific location on your site.: Disable viewport visibility support. (76138)
  • HTML Block: Fix broken layout. (76278)
  • Hide template part replace button when viewing revisions. (76169)
  • Navigation Overlays: Fix submenu overflow when parent nav is right-justified.
    (76360)
  • Navigation block: Fix submenu chevron toggle on touch devices. (76197)
  • Navigation overlay close button may be displayed twice. (76585)
  • Navigation: Update close button size. (76482)
  • Playlist: Clip content to respect border-radius. (76146)
  • Show spinner when replacing media via drag-and-drop. (76245)
  • Site Title Block: Fix preview display. (76614)

Data Layer

  • Core Data: Add โ€˜supportsPaginationโ€™ flag for Font Collection entity. (76404)
  • Core Data: Fix โ€˜canUserโ€™ returning โ€˜undefinedโ€™ when the allow header is missing.
    (76307)
  • Core Data: Fix per_page query logic for when offset is present in the query.
    (76613)
  • Core Data: Fix selectors returning stale results for different โ€˜per_pageโ€™ queries.
    (76422)
  • Core Data: Support reading revision data in useEntityProp (fixes footnotes in revisions UI).
    (76106)
  • Core Data: Treat single-item responses specially. (76318)
  • API Fetch: Respect caller-provided Content-Type in httpV1 middleware. (76285)

Connectors

  • Add logo URLURL A specific web address of a website or web page on the Internet, such as a websiteโ€™s URL www.wordpress.org support for custom AI providers. (76190)
  • Align Gutenberg init hook priorities with Core. (76161)
  • Fetch specific plugin instead of all plugins. (76594)
  • Gate unavailable install actions behind install capabilitycapability Aย capabilityย is permission to perform one or more types of task. Checking if a user has a capability is performed by the current_user_can function. Each user of a WordPress site might have some permissions but not others, depending on theirย role. For example, users who have the Author role usually have permission to edit their own posts (the โ€œedit_postsโ€ capability), but not permission to edit other usersโ€™ posts (the โ€œedit_others_postsโ€ capability).. (75980)
  • Improve placeholder text and make it translatable. (75996)
  • Improve responsive layout for small viewport and screens. (76231, 76186)
  • Memoize getConnectors selector. (76339)
  • Move API key validation and masking to REST dispatch level. (76327)
  • Show API key source for env vars and wp-config constants. (76266)
  • Fix RTL styling on AI plugin callout banner. (76497)
  • Fix RTL styling on Connectors, Font Library, and boot-based admin pages. (76496)

Components

  • Compose: Implement useCopyToClipboard and useCopyOnClick with native clipboard API.
    (75723)
  • Fix token fallback plugins breaking JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. strings with quoted font names. (76254)
  • InputLayout.Slot: Forward className prop. (76459)
  • Menu: Fix RadioItem controlled checked state. (76041)
  • Revert โ€œButton: Add word-break: Break-wordโ€œ. (76230)
  • TimePicker: Clamp month day to valid day for month. (76400)
  • useMediaQuery: Support in-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. queries via new WindowContext. (76446)

Block Editor

  • Block Bindings: Remove source items constrained by enums. (76200)
  • Fix HEIC upload error handling and sub-size format. (76514)
  • Navigation Editor: Allow any blocks to be inserted by gating contentOnly insertion rules to section blocks.
    (76189)
  • Rename and visibility modals: Gate shortcuts behind canEditBlock to prevent triggering in revisions UI.
    (76168)
  • Fix shortcode conversion when separated by
    tags. (76213)

DataViews

  • Add spinner in DataViewsLayout in initial load of data. (76486)
  • DataForm datetime control: Fix date handling. (76193)
  • Fields: Hide scheduledDateField from the list and filters. (76247)
  • Fix last column classname in table layout. (76133)
  • Fix layout scrolling in constrained-height containers. (76453)

Collaboration

  • Fix list sidebar reset during real-time collaboration. (76025)
  • Fix backportbackport A port is when code from one branch (or trunk) is merged into another branch or trunk. Some changes in WordPress point releases are the result of backporting code from trunk to the release branch. changelog PR for Gutenberg #75746. (76154)
  • Use apiFetch capabilitiescapability Aย capabilityย is permission to perform one or more types of task. Checking if a user has a capability is performed by the current_user_can function. Each user of a WordPress site might have some permissions but not others, depending on theirย role. For example, users who have the Author role usually have permission to edit their own posts (the โ€œedit_postsโ€ capability), but not permission to edit other usersโ€™ posts (the โ€œedit_others_postsโ€ capability)., allow nonce refresh. (76283)
  • Fix backport changelog for #76060. (76174)
  • Verify client ID to avoid awareness mutation. (76056)
  • Disable RTC in the site editor. (76223)
  • Fix CRDT serialization of nested RichText attributes. (76597)
  • Fix TypeError in areEditorStatesEqual when selection is undefined. (76163)
  • Fix cursor index sync with rich text formatting. (76418)
  • Fix error when entity record doesnโ€™t have โ€˜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.โ€™ property. (76311)
  • Fix performance regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5. on post save. (76370)

Interactivity API

  • Fix router initialization race condition on Safari/Firefox. (76053)
  • Fix crypto.randomUUID crash in non-secure contexts. (76151)
  • Make Window.scheduler required to match DOM lib. (76271)

Site Editor

  • Fix block style variations not rendering in Site Editor Patterns page. (76122)
  • Site Editor > Templates: Fix author 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.. (76625)

Client Side Media

  • Media: Enable AVIF support for client-side uploads. (76371)
  • Upload Media: Loosen client-side media processing requirements. (76616)

Global Styles

  • Theme_JSON: Prevent implicit coercion in to_ruleset. (76392)
  • Fix block pseudo-state styles incorrectly applied to default state. (76326)

Patterns

  • Block context menu: Context menu not closing for disconnecting unsynced pattern menu items.
    (75405)

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)

  • Connectors: Improve accessibility. (76456)
  • Add word-break property to visually hidden styles to prevent screen reader issues.
    (75539)

Performance

Block Library

  • Add fetchpriority=low to IMG tags in collapsed Accordion Item blocks. (76336)
  • Add fetchpriority=low to IMG tags in collapsed Details blocks. (76269)
  • Duotone: Lazily load settings. (74748)
  • Image: Replace โ€˜getEntityRecordPermissions` with โ€˜canUserโ€™. (76125)
  • Navigation Overlay: Explicitly set fetchpriority for images. (76208)

Data Layer

  • Core Data: Optimize revision selectors. (76043)
  • Revisions: Skip rendered fields in 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/ responses. (76347)

Design Tools

  • Block Visibility: Add fetchpriority=auto to IMG tags in blocks with conditional viewport visibility to prevent potential erroneous
    high loading priority. (76302)

Experiments

Post Editor

  • Add experiment: Render the editor inspector with DataForm. (76244)
  • Fields: Add post content information field. (76309)
  • Fields: Add support for classic themes in template. (76441)
  • Template field: Match exactly the behavior of post template panel. (76596)

Site Editor

  • ExtensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software. Site Editor: Make canvas previews full height. (76201)
  • Move site editor preview CSS to boot package. (76211)
  • Sync some post list changes with Extensible Site Editor. (76243)

Documentation

  • Add Client-Side Navigation documentation to manifest and table of contents.
    (76351)
  • Data: Update documentation for global โ€˜dispatchโ€™ and โ€˜selectโ€™ methods. (76134)
  • Docs: Document controlled/uncontrolled prop naming conventions for @wordpress/ui.
    (76281)
  • RTC: Update sync documentation. (75972)
  • Storybook: Add basic accent color guidance. (76340)
  • Storybook: Redesign Icon library page. (76034)
  • Storybook: Rename โ€œComponents (Deprecated)โ€ to โ€œDeprecatedโ€. (76362)
  • Storybook: Upgrade to 10.2.8. (76403)
  • Theme: Document build plugins in README. (76003)
  • ThemeProvider: Fix tags in Storybook. (76500)
  • Update block registration methods in documentation for WordPress 6.8+. (76324)
  • theme.json schema: Fix pseudo-class definition for button block. (76272)
  • wp-env: Update JSON Schema with missing properties and add README documentation.
    (76115)

Code Quality

  • Boot: Remove manual fallbacks from design token usages. (76414)
  • Fix: Rewrite the license check scripts to use Nodeโ€™s native module resolution.
    (75039)
  • Add Router type export to wordpress/route. (76139)
  • DataForm: Consolidate date and datetime input placement. (76136)

Block Library

  • HTML Block: Remove โ€œunsaved changesโ€ check. (76086)
  • Icon Block: Clean up selectors configuration. (75786)
  • Icons: Fix incorrect icon slug. (76074)
  • Navigation: Use the shared icon rendering functions for all navigation blocks.
    (76372)
  • Playlist: Move getTrackAttributes to utils. (76096)
  • Simplify require statements for navigation files. (76373)

Data Layer

  • Convert data package fully to TS. (76149)
  • Core Data: Fix the list of properties persisted in autosaves. (76451)

Collaboration

  • Move event hooks from editor to core-data. (76358)
  • Replace apiFetch with core-data store selectors. (76333)

Components

  • Admin UI: Use hasPadding prop in Page stories. (76601)
  • Use --wpds-cursor-control design token. (76218)

Post Editor

  • Remove redundant onNavigateToEntityRecord handling. (76523)
  • TemplateContentPanel: Fix useSelect warning. (76421)

Block Editor

  • ESLint: Add use-recommended-components rule. (76222)
  • Editor canvas iframe: Use load event and default body element. (76314)
  • Add end-to-end test for date field in QuickEdit. (76528)
  • Correct input of setIsLoading. (76381)

Tools

Build Tooling

  • Add [Package] UI label to PR labeler configuration. (76411)
  • Add support for linting annotations and other static analysis workflow improvements.
    (76120)
  • CI: Donโ€™t build release notes during plugin build workflow for WP Core sync.
    (76398)
  • CI: Simplify strategy matrix in Build Gutenberg Plugin Zip workflow. (76435)
  • Check for IS_WORDPRESS_CORE before npm_package_config_IS_WORDPRESS_CORE.
    (76334)
  • ESLint: Add bare token check to no-unknown-ds-tokens. (76210)
  • Fix IS_GUTENBERG_PLUGIN env var override in build configuration. (76605)
  • Only run label enforcement workflow on open PRs. (76274)
  • Publish built Gutenberg plugin to the 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/ Container Registry. (75844)
  • Remove function_exists checks from PHP template. (76062)
  • Upgrade actionlint and run linting when composite actions are modified. (76503)
  • Scripts: Relax wordpress/env peer dependency to allow newer versions. (76192)
  • Ensure consistent, repeatable build results when inlining WASM files via wasmInlinePlugin.
    (76113)
  • wp-build: Stop bundling Core packages, generate prerequisites asset instead.
    (75987)
  • ESLint: Broaden no-setting-ds-tokens to all object property keys. (76212)
  • ESLint: Modernize eslint-plugin rule APIs for v10 compatibility. (76507)
  • ESLint: Replace eslint-plugin-ssr-friendly with custom rules. (76508)
  • Include AI tools disclosure in pull request template. (76425)
  • Remove alexstine from codeowners. (76551)
  • Exclude experimental pages from Core builds. (76038)

Testing

  • Auto Cherry-Pick: Fix race condition in workflow trigger. (76083)
  • Fix โ€œshould undo boldโ€ flaky test. (76464)
  • RTC: Fix โ€˜networkidleโ€™ and other end-to-end tests that are flaky. (76214)
  • RTC: Fix post-editor-template-mode end-to-end test. (76209)
  • RTC: Fix tests related to publish undo stack. (76206)
  • Tests: Skip connector logo URL tests when AI Client is unavailable. (76343)
  • Update Node version to v24 for flaky test reporter. (76492)
  • end-to-end Tests: Add connector setup flow tests with test AI provider. (76433)
  • end-to-end Tests: Add coverage for AI plugin callout banner. (76432)
  • end-to-end Tests: Fix flaky autocomplete and mentions test. (76407)

First-time contributors

The following PRs were merged by first-time contributors:

  • @apermo: Fix: Use add_filter() for get_block_type_variations hook. (76297)
  • @chubes4: API Fetch: Respect caller-provided Content-Type in httpV1 middleware. (76285)
  • @kannan-ravi: Add word-break property to visually hidden styles to prevent screen reader issues. (75539)
  • @markusfoo: Interactivity API: Fix router initialization race condition on Safari/Firefox. (76053)
  • @sagarjadhav: HTML & Shortcode: Disable viewport visibility support. (76138)
  • @smithjw1: RTC: Auto-register custom taxonomy rest_base values for CRDT sync. (75983)
  • @wwahammy: Correct input of setIsLoading. (76381)

Contributors

The following contributors merged PRs in this release:

@aaronrobertshaw @adamsilverstein @aduth @alecgeatches @alexstine @Aljullu @andrewserong @annezazu @apermo @aswasif007 @CGastrell @chriszarate @chubes4 @ciampo @Copons @dabowman @desrosj @dhasilva @dlind1 @ellatrix @enejb @getdave @gigitux @gziolo @hbhalodia @huzaifaalmesbah @iamchughmayank @im3dabasia @ingeniumed @jameskoster @jasmussen @jeryj @jorgefilipecosta @jsnajdr @juanmaguitar @kannan-ravi @kraftbj @MaggieCabrera @Mamaduka @manzoorwanijk @markusfoo @mattgrshaw @maxschmeling @mcsf @mikachan @mikejolley @mirka @Mustafabharmal @ntsekouras @oandregal @ockham @pkevan @ramonjd @retrofox @sagarjadhav @scruffian @sgomes @shekharnwagh @shimotmk @simison @smithjw1 @t-hamano @talldan @westonruter @wwahammy @youknowriad @yuliyan

Props to @annezazu for reviewing and @joen for providing the design assets.

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