Devchat agenda, March 9, 2022

1. Announcements

The Performance Team has released its first plugin! Congratulations to the team!

One week left to build headers for the latest FSE Outreach challenge!

2. Blogblog (versus network, site) posts of note

From @audrasjb: A Week in Core, March 7, 2022

From @annezazu: A Core Editor Improvement: Choose your Style

3. Upcoming releases

The next major is 6.0.

The next minor is 5.9.2.

4. Open floor

See you at Devchat!

Please feel free to add your announcement(s), blog posts, agenda item(s), and tickets that need eyeballs, to the comments! And if you’re a component maintainer with an update or a request, please add that too.

#agenda, #dev-chat

Performance team meeting summary 8 March 2022

Meeting agenda here and the full chat log is available beginning here on Slack.

Focus group updates

Announcements

@shetheliving

Images

@adamsilverstein @mikeschroder

GitHub project

Feedback requested

Object Cache

@tillkruess @spacedmonkey

GitHub project

Feedback requested

Site Health

N/A

GitHub project

  • We’re seeking 1-2 POCs for this group; if you’re interested, please comment here or pingPing The act of sending a very small amount of data to an end point. Ping is used in computer science to illicit a response from a target server to test it’s connection. Ping is also a term used by Slack users to @ someone or send them a direct message (DM). Users might say something along the lines of “Ping me when the meeting starts.” 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/.
  • @furi3r: https://github.com/WordPress/performance/pull/124 has been pending for awhile and can be merged

Feedback requested

Measurement

@wp-source @josephscott

GitHub project

Feedback requested

JavaScriptJavaScript JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user’s browser. https://www.javascript.com/.

@aristath @sergiomdgomes

GitHub project

  • No updates

Feedback requested

Infrastructure

@flixos90

GitHub project

Feedback requested

Open Floor

  • @mitogh: Flagging #209 Consider auto-deleting head branches after PRs are merged if folks have opinions about the approach
    • @flixos90: Makes sense after we’ve protected the branches that shouldn’t get deleted (trunk and release/*
  • @josklever: Had an issue where some images couldn’t be loaded on my WP dashboard and it was caused by a widgetWidget A WordPress Widget is a small block that performs a specific function. You can add these widgets in sidebars also known as widget-ready areas on your web page. WordPress widgets were originally created to provide a simple and easy-to-use way of giving design and structure control of the WordPress theme to the user. that was disabled in the screen options. It appears that all the widgets are loaded even if disabled. Would this be a performance improvement? Or is there a good reason to load resources for disabled widgets?
    • @adamsilverstein: Sounds like a core 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., but don’t see a Trac ticket for it
  • @lu: Are we considering converting animated GIFs to MP4, similar to https://github.com/GoogleForCreators/web-stories-wp/issues/7232? Recently had to do this as the animated GIF size was huge compared to compressed/optimized video.
    • @spacedmonkey: Agreed that there are massive performance and file size wins there, but in Web Stories we converted GIF to MP4 using JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. in browser, which unfortunately won’t work in many WP contexts
    • @adamsilverstein: Could potentially provide a browser-based approach in core if server support is lacking
    • @andronocean: Would be concerned about server resource usage with larger GIFs or budget hosts
    • @gagan0123: If sever support is lacking, someone will have to do it manually rather than by CLICLI Command Line Interface. Terminal (Bash) in Mac, Command Prompt in Windows, or WP-CLI for WordPress. or cron job
    • @spacedmonkey: We used an ffmpeg library which requires array buffering, which isn’t available in older browsers and requires isolation of the page, meaning that images and scripts could not be hotlinked
    • @swisspidy: It’s doable, but there could be conflicts
  • @westonruter: Opened #220 Add Site Health test for full page caching (advanced cache)

Help wanted

#core-js, #core-media, #performance, #performance-chat, #summary

A Week in Core – March 7, 2022

Welcome back to a new issue of Week in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. Let’s take a look at what changed on TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between February 28 and March 7, 2022.

  • 21 commits
  • 43 contributors
  • 62 tickets created
  • 3 tickets reopened
  • 48 tickets closed

The Core team is currently working on the next minor releaseMinor Release A set of releases or versions having the same minor version number may be collectively referred to as .x , for example version 5.2.x to refer to versions 5.2, 5.2.1, 5.2.3, and all other versions in the 5.2 (five dot two) branch of that software. Minor Releases often make improvements to existing features and functionality., WP 5.9.2, and on the next major, WP 6.0 🛠

Ticketticket Created for both bug reports and feature development on the bug tracker. numbers are based on the Trac timeline for the period above. The following is a summary of commits, organized by component and/or focus.

Code changes

Administration

  • Require a valid action parameter to be set for admin-ajax.php requests – #55212

Bootstrap/Load

  • Stop unnecessary queries when using the do_parse_request 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.#10886

Coding Standards

  • Improve formatting in /wp-admin/user-edit.php#54673

Comments

  • Guard against potential PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher notices in get_comment_author and get_comment_ID#54379

Docs

  • Add a @since note for WP::parse_request() about the new return value – #10886
  • Add inline comments for non-visible characters in sanitize_title_with_dashes()#47912, #54729
  • Correct the indentation in delete_term_relationships filter – #54673
  • Update the DocBlockdocblock (phpdoc, xref, inline docs) for the wpmu_new_blog action to suggest wp_initialize_site as an alternative – #49612
  • Use third-person singular verbs for function descriptions in wp-includes/class-wp-user.php#54729
  • Use third-person singular verbs for function descriptions in wp-includes/formatting.php, per the documentation standards – #54729

External Libraries

  • Upgrade PHPMailer to version 6.6.0 – #55277

General

  • Improve MS Edge user-agent sniffsniff A module for PHP Code Sniffer that analyzes code for a specific problem. Multiple stiffs are combined to create a PHPCS standard. The term is named because it detects code smells, similar to how a dog would "sniff" out food.#55297

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.

  • Add a $locale parameter for remove_accents()#54415

Media

  • Allow wp_check_filetype() to support query strings in URLs – #30377

Networks and Sites

  • Suggest wp_initialize_site as an alternative for the deprecated wpmu_new_blog action – #49612

Query

  • Make sure WP_Query::get_queried_object() works for author_name before ::get_posts() is run – #55100

Tests

  • Restore the original user role in the (add|remove)_user_role 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. test – #54164

Themes

  • Correct the logic for displaying a _doing_it_wrong() notice for add_theme_support( 'html5' )#51657
  • Hide 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. themes’ live preview link following installation – #54878
  • Make sure the current_theme_supports-{$feature} filter is consistently applied – #55219

Users

  • Bring some consistency to user role hooks – #54164

Props

Thanks to the 43 people who contributed to WordPress Core on Trac last week: @SergeyBiryukov (6), @dd32 (6), @costdev (3), @johnbillion (2), @audrasjb (2), @peterwilsoncc (2), @azouamauriac (2), @pbearne (1), @arnee (1), @tyxla (1), @DrewAPicture (1), @lukecavanagh (1), @davidbaumwald (1), @Spacedmonkey (1), @voldemortensen (1), @helgatheviking (1), @pavanpatil1 (1), @sivel (1), @jrf (1), @Synchro (1), @miken32 (1), @malthert (1), @knutsp (1), @wonderboymusic (1), @henry.wright (1), @westi (1), @mukesh27 (1), @layotte (1), @atomicjack (1), @supercleanse (1), @spencercameron (1), @ianmjones (1), @abdullahramzan (1), @Boniu91 (1), @ryan (1), @swissspidy (1), @johnregan3 (1), @antonvlasenko (1), @ironprogrammer (1), @asaquzzaman (1), @MadtownLems (1), @junsuijin (1), and @ocean90 (1).

Congrats and welcome to our 4 new contributors of the week: @pavanpatil1, @supercleanse, @spencercameron, @asaquzzaman ♥️

Core committers: @sergeybiryukov (13), @audrasjb (4), @peterwilsoncc (2), @davidbaumwald (1), and @spacedmonkey (1).

#5-9, #6-0, #core, #week-in-core

The Performance Lab plugin has been released

Introducing the Performance Lab 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: After the WordPress performance team began work on it in November 2021, the first version of the plugin is finally here and ready for testing. You can download it or install it directly from your WordPress dashboard. Your testing and feedback will allow iterating towards adding future performance optimizations in WordPress coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress..

What is the Performance Lab plugin?

The Performance Lab plugin is a set of modules that aim to improve performance in WordPress. While this may sound similar to the numerous other performance plugins in the WordPress ecosystem, the Performance Lab plugin exists for an entirely different purpose: It is a collection of performance-related “feature projects” for WordPress core.

Feature projects are intended to gather a group of people to explore potential ideas for WordPress core.

Feature Projects Overview

Historically, feature projects have usually been implemented as separate feature plugins. The Performance Lab plugin provides a centralized location for performance-related features which are intended to eventually be merged into WordPress core. Therefore, it should be considered 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.-testing plugin. The plugin’s performance modules can be individually enabled in the plugin’s settings screen, so that they can be tested in isolation or in combination. Being able to activate/deactivate modules is similar to activating individual plugins, but the Performance Lab approach comes with benefits: For both developers and end users, it removes the burden of keeping track of several plugins. For developers, it additionally reduces maintenance and encourages collaboration between developers.

Settings > Performance screen of the plugin with a list of modules that can be individually toggled on and off
The Performance Lab plugin’s settings screen

Another benefit of the single plugin approach taken with the Performance Lab plugin is that it provides room for experimentation. Some modules included in the plugin are explicitly marked as experimental, and while the entire plugin is for testing WordPress performance features, those modules are at a particularly early stage of exploration and therefore could lead to unexpected results This also leads to the clarification that all performance modules bundled in the Performance Lab plugin are at different stages of development. For example, some may already be official WordPress core feature projects, others may be proposed as feature projects in the near future. Some experimental modules may remain in exploration for a few months to come.

Because the Performance Lab plugin is a collection of potential WordPress core feature modules, the list of modules included may drastically change over time. New modules may be added regularly, while other modules may be removed in a future plugin version once they have landed in a WordPress core release. Also keep in mind that the Performance Lab plugin is not a full replacement for other WordPress performance plugins you may be using already.

Who develops the Performance Lab plugin?

The Performance Lab plugin is being actively worked on by the WordPress performance team, which was formed in late October 2021. The plugin is the primary project of the team where new performance features are being explored and implemented. It complements the direct contributions to WordPress core, which happen for smaller fixes or for features that already have seen significant testing in the plugin.

The modules included in the plugin are based on the priorities of the performance team contributors who meet weekly in the #performance Slack channel to discuss the ongoing efforts and priorities. The performance team takes into account the impact of different features while prioritizing work, and the modules included are also influenced by contributor interest. So far, over 250 people have joined the performance 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/. channel, with many of them participating in the weekly chats and reporting issues on GitHub. While code contributions to the plugin so far have been limited to just slightly more than 10 contributors, the performance team is confident that the volume of code contributions will increase over time, especially as the plugin starts seeing increased usage.

Which features come with this initial Performance Lab plugin version?

This initial release of the Performance Lab plugin (1.0.0-beta.1) comes with the following modules:

  • WebP Uploads: Creates WebP versions for new JPEG image uploads if supported by the server. View related GitHub issues
  • WebP Support: Adds a WebP support check in Site Health status. View related GitHub issues
  • Persistent Object Cache Health Check: Adds a persistent object cache check for sites with non-trivial amounts of data in Site Health status. View related GitHub issues
  • Audit Enqueued Assets (experimental): Adds a CSSCSS Cascading Style Sheets. and JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. resource check in Site Health status. View related GitHub issues

To test the WebP Uploads module, upload some JPEG images to the Media Library, and the module should ensure that the sub-sized versions are also generated in WebP and then used in the front-end when embedding such uploaded images in a post.

To test the other three modules, visit the Site Health status tab, where each module adds a corresponding new check:

  • The Audit Enqueued Assets module monitors the amount of scripts and stylesheets enqueued on your homepage.
  • The WebP support module checks whether your server environment supports creating WebP images.
  • The Persistent Object Cache Health Check promotes usage of an external object cache depending on the amount of data on your site.

Remember that each module you would like to test has to be activated via the plugin’s settings screen at Settings > Performance. Non-experimental modules are enabled by default. If you want to test the modules individually in isolation, you can toggle them one by one.

To learn more about the modules, you can use the GitHubGitHub GitHub is a website that offers online implementation of git repositories that can 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 be the repository owner. https://github.com/ labels to follow along their development via the links from the list above. You can also review the full release changelog.

How can I support the Performance Lab plugin?

Since the Performance Lab plugin is a beta testing plugin, the most straightforward way of contributing is to use it! Test the individual modules, try to break them, explore edge-cases etc. Any feedback or 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. reports are welcome as GitHub issues or alternatively as wordpress.org support forum requests. If you have found a bug and already discovered a fix for it, you can submit a  pull request. You’re also invited to share your feedback in a review. Last but not least, share the news! Only with a solid number of regular testers can the features in this plugin mature over time.

If you would like to participate in developing or shaping the direction of the plugin, the performance team would be pleased to have you join the weekly chats in the #performance Slack channel! The next one will take place at March 8, 2022, at 16:00 UTC.

Another area to contribute to the plugin is localization. If you speak a language other than English, help make the Performance Lab plugin available in your localeLocale A locale is a combination of language and regional dialect. Usually locales correspond to countries, as is the case with Portuguese (Portugal) and Portuguese (Brazil). Other examples of locales include Canadian English and U.S. English. by contributing translations.


Many thanks to all the community volunteers that have contributed to the Performance Lab plugin and the overall efforts of the performance team so far! This beta release is a major milestone and just the beginning – let’s continue from here.

Props to @addyosmani @jonoaldersonwp @tweetythierry @shetheliving @adamsilverstein @clarkeemily @mitogh @dainemawer @justinahinon for review and proofreading.

#feature-plugins, #feature-projects, #performance, #performance-lab

Editor chat agenda: 9th March 2022

Facilitator and notetaker: @get_dave.

This is the agenda for the weekly editor chat scheduled for 2022-03-09 14:00 UTC.

This meeting is held in the #core-editor channel in the Making WordPress 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 you are not able to attend the meeting, you are encouraged to share anything relevant for the discussion:

  • If you have an update for the main site editing projects, please feel free to share as a comment or come prepared for the meeting itself.
  • If you have anything to share for the Task Coordination section, please leave it as a comment on this post.
  • If you have anything to propose for the agenda or other specific items related to those listed above, please leave a comment below.

#agenda, #core-editor, #core-editor-agenda, #meeting

Performance Chat Agenda: 8 March 2022

Here is the agenda for this week’s performance team meeting scheduled for March 8, 2022, at 16:00 UTC.


This meeting happens in the #performance channel. To join the meeting, you’ll need an account on the Making WordPress Slack.

#agenda, #meeting, #performance, #performance-chat

Core Editor Improvement: Choose your Style

These “CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Editor Improvement…” posts (labeled with the #core-editor-improvement tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.)) are a series dedicated to highlighting various new features, improvements, and more from Core Editor related projects. 

With Gutenberg 12.5 and the soon to be released 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/ 12.8, a blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. theme author can now bundle multiple sets of Styles with their theme, allowing anyone using the theme to quickly switch between them as shortcuts for customization. These different Style presets can change both settings available, like turning on/off font weight, and style options, like the default color palette. For a practical example of what this looks like, check out the quick demo below showing off how a theme could offer both light and dark Style presets:

You can experience this for yourself locally by using the Twenty Twenty Two theme, creating a new styles folder in the root of the twentytwentytwo theme folder, and dropping this gist in there. 

This Styles feature gets even more exciting when it’s paired with new enhancements like the fonts API in theme.json coming to Gutenberg 12.8. That opens the door for a wide range of styles per theme — look for more and more themes to leverage this in the coming months. The following video shows off some new creative possibilities that are opened up by these new features in combination: 

If you’re a block theme author looking to take advantage of this new feature, dig into the documentation now to learn how to create different style presets and align with the necessary theme structure

Thank you to @kjellr for the demos and help writing this post. 

#block-themes, #core-editor, #full-site-editing

Dev Chat summary, March 2, 2023

Agenda

Start of the meeting on the Make WordPress coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. 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/. channel.

1. Announcements

Request: When you bring an issue to Open Floor, it would be great if you also bring a suggestion for a solution.

Our very own Person of WordPress: @hellofromtonya featured in February 2022’s People of WordPress series. Thank you to everyone who contributed. Please share these stories which also encourage existing and new contributors to get more involved and to be inspired by the WordPressers featured.

2. Blogblog (versus network, site) posts of note for core

  • Feedback from the first session of Gutenberg Developer Hours (February 24, 2022)
    • Comments requested by @bph on the proposal on developer.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/ and 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/ Developer Hours.
    • Next Gutenberg Developer Hours: Tuesday March 8, 16:00 UTC. Registration link.
  • A feature project around plugin dependencies (February 24, 2022).
    • @afragen: Much of feedback has been in form of questions that I’ve done my best to answer. The biggest is will it be possible to add a non-dot org 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 as a dependency. The answer is that it will be up to lead developers. It could be possible by adding a simple 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. and leaving the heavy lifting to the plugin developer… essentially need lead developer buy-in.
    • encourage further comments and testing of both PRs to see how it might look.
    • @pbiron: I think non-dot-org dependencies are very important use case (e.g., Gravity Forms addons) but also think that it would be fine if they weren’t included in the first version that lands in core

3. Upcoming releases

a) 6.0

WordPress 6.0 development cycle – each major releasemajor release A release, identified by the first two numbers (3.6), which is the focus of a full release cycle and feature development. WordPress uses decimaling count for major release versions, so 2.8, 2.9, 3.0, and 3.1 are sequential and comparable in scope. has a development cycle section on the Make WordPress core blog.

An addition to the timeline for this release is a walkthrough of the features, on April 5, 2022

Questions in dev chat:

  • is there a 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. scrub schedule with BetaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. 1 a month away?
  • will there be a 6.0 release leads channel?
  • @priethor and @chaion07 any updates you can share in the comments?

b) Next minor: 5.9.2

Last week, it was reported that there were 20 tickets in the milestone.

@audrasjb plans a 5.9.2 bug scrub for March 3, 2022 at 21:00 UTC.

4. Open Floor

@craigfrancis: discussion on how to progress ticket 52506 to add escaping method for table names in SQL queries. More on the discussion in the core Slack.

Component Maintainers – if you think you would like to help manage a component, this refresher gives more information. More maintainers are needed.

Props to: @marybaum for the agenda and leading the meeting, to Mary and @audrasjb for reviewing the notes; and to @webcommsat for the summary of the meeting. Could you help with next week’s notes? Contact team reps @audrasjb and @marybaum

#dev-chat, #summary, #week-in-core

What’s new in Gutenberg 12.7? (2 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 tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.)) are posted following every Gutenberg release on a biweekly basis, discovering new features included in each release. As a reminder, here’s an overview of different ways to keep up with Gutenberg and the Full Site Editing project.


Gutenberg 12.7 has been released and is available for download!

Table of Contents


Improving the Patterns experience

Gutenberg 12.7 includes new features that will make working with patterns even easier! 

Make Patterns easier to discover

The block quick inserter now prioritizes patterns instead of blocks when all the following conditions are met:

  • We are editing a template, either on site editor or post editor.
  • The inserter is at the root level.
  • The content being inserted is between other blocks (neither as the first 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. nor as the last one).
Patters inserter demonstration animated screenshot

The template part (e.g. 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. / Footer / 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.) creation flow will now also show patterns, making it easier to create more advanced compositions than adding blocks one by one.

Work will continue improving the logic that decides to show a pattern or a block, so feel free to share your feedback in the Gutenberg repository!

Allow themes to highlight Patterns

Themes can now highlight specific patterns to their users!

Recommending patterns to the users is as easy as adding a pattern field to the theme.json file. When handling patterns from the Pattern Directory, you can find their slugs on the URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org when browsing them individually.

Adding patterns in theme.json example

List View Improvements

Once more, the List View keeps getting better! Gutenberg 12.7 includes a few iterative improvements to improve the block editor experience.

You will be able to select multiple blocks at the same level, and then drag and drop them to move them around. To select multiple blocks, the keyboard shortcuts are:

  • Shift Key + Click 
  • Shift Key + Up/Down arrow.
List View drag and drop animated screenshot

Also, when you click on a block in the editor, the List View will expand to show the selected block for better visibility of the selection’s context within the block tree.

Block List view expanding animated screenshot

Changes to frontend HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. when using layouts and image blocks

In order to add consistency to the block editor, we are removing some wrappers divs that were generated on the editor in order to add alignment to some blocks.

Keep in note that this div cleaning can affect themes that support layout and many blocks that have this alignment support. Many contributors helped with testing, but theme developers are encouraged to check their themes and leave any feedback they may encounter.

Other notable highlights

Gutenberg 12.7 provides a few other iterative enhancements worth highlighting.

Column options on Column blocks screenshot
Margin options available on Group blocks screenshot
  • To avoid backward compatibility issues reported in WordPress 5.9, the automatic anchor generation for headings introduced in Gutengerg 11.8 is now opt-in. To enable this feature, simply add:
add_filter(
	'block_editor_settings_all',
	static function( $settings ) {
		$settings['__experimentalGenerateAnchors'] = true;
		return $settings;
	}
);

Props to new contributors

Contributors avatars background and contributor text with an applause emoji.

Recognizing and celebrating contributors, both and new, becomes more efficient and effective! A contributor props list has been automated when creating the release and added to the changelog! Any user who merges a PR during a Gutenberg release cycle will be aknowledged.

In Gutenberg 12.7, up to 52 contributors merged PRs of any kind, including 6 new contributors. Props to @Alex-Kostov, @HasnainAshfaq, @mjstoney, @razwan, @sanzeeb3, and @Sisanu for their first PR! 🎉

Changelog

Enhancements

Block Library

  • Columns: Add border support. (31737)
  • Group Blocks: Add margin support (top/bottom). (37344)
  • Comment Template: Improve comment pagination with nested replies. (38187)
  • Comments Query 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.: Show placeholder comments on site editor. (38072)
  • Navigation: Try unifying submenu arrow positioning. (37003)
  • Submenu: Add revert button. (38203)

Components

  • FocalPointPicker: Allow updating its value while dragging. (38247)
  • General Interface: Simplify site icon animation on hover. (38783)
  • Navigator: Add NavigatorButton and NavigatorBackButton components. (38634)
  • Type Refactor: Use forwardedRef type for all forwarded refs in wordpress/components. (38948)

Block Editor

  • Block Editor: Add settings to enable/disable auto anchor generation. (38780)
  • Block Transforms: Keep additional HTML classes during a block transform. (38964)
  • LineHeightControl: Enhance interactions by migrating internals to NumberControl on Style options. (37160)
  • List View: Add multi-select behaviour for blocks when shift key is selected. (38314)
  • List View: Expand block list tree on selection. (35817)

Styles

  • Add initial version of the style engine. (37978)
  • Style engine: Refine Box type. (38894)

Post Editor

  • Enable tooltip for the main dashboard button. (38790)

Themes

  • Lowered specificity of alignment rules for support layout so wide alignments work. (38947)
  • Remove data-align divs for themes that support layout. (38613)
  • Remove the div wrapper from the aligned image blocks. (38657)

Patterns

  • Quick Inserter: Prioritize showing patterns instead of blocks. (38709)
  • Allow pattern registration from directory with 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.. (38323)
  • Template Parts: Show existing template parts and a list of block patterns at creation flow. (38814)

Bug Fixes

Block Library

  • Block Transforms: Fix Image and Video to Cover block transformations. (38959)
  • Cover: Fix gradient overlay (remove black background color) (38765)
  • File: Fix PDF file block full content fixture. (38725)
  • Latest Posts: Add missing class to post title. (38740)
  • Logo: Avoid division by zero in site logo. (38808)
  • Post navigation link: Use correct closing tag. (38976)
  • Query Loop: Display nothing if we want only sticky posts but no stickies exist. (38909)
  • Template Parts: Decode entities in labels. (38805)
  • Social Links: Only apply the social links block migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. if there’s a need for a migration. (38561)

Block Editor

  • 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. from coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.: Global styles duotone not rendering in post editor. (38897)
  • Block Editor: insertDefaultBlock should not trigger an error if the default block is not registered. (38886)
  • Inserter: Fix focus loss after closing patterns explorer from modal. (38884)
  • Multi-selection: avoid RichText instances becoming disabled after multi selection. (38821)
  • Rehabilitate drag gesture in LineHeightControl. (38930)
  • RichText: Fix wrong block merging when pressing delete consecutively. (38991)

Site Editor

  • Add site editor initial redirect error handling. (38655)
  • Add template check to ‘setPage’ action. (38656)
  • Adds additional check to guard against incompete presets. (38902)
  • Limit template part slugs to Latin chars. (38695)
  • Template List: Decode entities in record titles. (38863)

Styles

  • Allow child classes to be called instead of the parents. (38857)
  • Backport: Allow for classic themes using default presets. (38701)
  • Fix global styles loading logic. (38745)

Components

  • Fix unexpected dragging triggered on spinner buttons on hover in Safari. (38840)
  • Show tooltip on toggle custom size in FontSizePicker. (38985)

List View

  • Fix error triggering after duplicating a block making it unselectable. (38760)
  • Fix UIUI User interface broken due to error when deleting first item in canvas. (38775)

CSSCSS Cascading Style Sheets. & Styling

  • Fix button width on Widgets Editor. (38846)
  • Load block support styles in the <head> for block themes. (38750)
  • Reduce the margin of the block toolbar. (38746)

Block Directory

  • Fix the block activation when metadata registered on server. (38697)

Colors

  • Strip double # char on HexInput. (38335)

Packages

  • Core Data: CanUser resolver always use the OPTIONS method. (38901)
  • Dom: Avoid RangeError in findPrevious method. (38961)

Apps

  • Fix Custom Palette colors and support multiple origins and theme cache issues. (38417)

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)

  • Adds aria-label to the search button, as accessibility enhancementenhancement Enhancements are simple improvements to WordPress, such as the addition of a hook, a new feature, or an improvement to an existing feature.. (38136)
  • Avoid duplicate labels for “Save Draft” and “Save as pending” buttons. (38776)
  • RichText: Reverse disableLineBreaks to determine aria-multiline state. (38652)
  • TreeGrid: Add Home/End keys to jump to start/end of grid. (38679)

Performance

CSS & Styling

  • Use wp_unique_id() instead of uniqid() to generate CSS class names. (38891)

Experiments

New APIs in Core Data

  • Propose useEntityRecords (experimental). (38782)
  • UseEntityRecord (experimental). (38522)

Documentation

Handbook

  • Add documentation for deprecating styles. (38540)
  • Add documentation about the patterns field of theme.json. (38700)
  • Add more info about contextual patterns and pattern transformations. (38809)
  • Add semantic patterns documentation. (38778)
  • Clarify deprecations documentation. (38683)
  • Fix hyperlink in block Metadata page. (38941)
  • Improve point releaseMinor Release A set of releases or versions having the same minor version number may be collectively referred to as .x , for example version 5.2.x to refer to versions 5.2, 5.2.1, 5.2.3, and all other versions in the 5.2 (five dot two) branch of that software. Minor Releases often make improvements to existing features and functionality. documentation to include even more detail. (38631)
  • Increase support for experimental-link-color until WordPress 5.9 is the minimum version. (38711)
  • Group: Update block supports. (38962)
  • Links changed for Developer.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/ on block editor section. (38841)
  • Removing comma so that the code snippet of theme.json represents standard JSON. (38938)
  • theme.json Update version section docs to v2 (38937)
  • Update Getting Started with more granular options. (38682)

Block Library

  • Add instructions on how to add new core blocks to block-library. (38868)

Components

  • FormFileUpload: Add Storybook stories. (38734)
  • Storybook: Move experimental components to correct section. (38640)
  • Storybook: Remove story for Typography Panel. (38867)
  • wp-env: Document some caveats when using xdebug with VSCode. (38882)

Code Quality

Block Library

  • Cover: Remove unnecessary temporaryMinHeight. (38887)
  • Cover block: Update deprecated gradient fixture. (38728)
  • Gallery: Register gallery in block_names dynamic block array. (38689)
  • Navigation: Improve consistency of block hook. (38705)
  • Navigation: Select dropdown encapsulation and further consolidation. (38627)
  • Navigation: Update wp_kses usage to be consistent (use wp_kses_post). (38732)
  • Post Navigation Link: Prefer kses to blanket esc_html on label. (38696)
  • Remove data-controls mock from Image block RN tests. (38852)

Components

  • Block Supports: Improve image block regex. (38742)
  • Block Supports: Load Styles on <head> backport to core. (38880)
  • Context: Omit as prop in types. (38844)
  • Core Data: Remove fallback for OPTIONS response headers in canUser resolver. (38881)
  • Core Data: TypeScript definitions for entity records. (38666)
  • Data: Normalize selector args when handling metadata selectors/actions. (38945)
  • Edit Site: Migrate store to thunks. (38812)
  • Icons: Deprecate duplicate icons. (38849)
  • PostTrash: Call trashPost action with no arguments, rewrite to 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.. (38615)

npm Packages

  • Packages: Automate cherry-picking to 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. commits created during publishing. (38977)
  • Packages: Ensure that private packages do not update when publishing to npm. (38946)

Tools

Testing

  • Add end-to-end test for merging paragraphs and soft line break afterwards. (39009)
  • Post Visibility end-to-end test: Improve XPath selector to avoid reliance on DOM structure. (38717)
  • Replace no-shadow eslint rule with @typescript-eslint/no-shadow. (38665)
  • Remove client ID from fixtures. (38685)
  • Remove originalContent from fixtures. (38638)
  • RichText: Add test for merging and then splitting paragraphs. (39007)
  • Site Editor Tests: Use 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/. to delete templates and template parts. (38524)
  • TreeGrid: Add tests for callback functions. (38942)

Build Tooling

  • Build separate full contributors list. (38777)
  • Bump @svgr/webpack from ^5.5.0 to ^6.2.1 (38866)
  • Generate full release contributors list in release changelog. (38704)
  • Generate sourcemap for production 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 builds. (33718)
  • Mobile: Improve npm clean scripts for reactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/.-native-editor. (38752)
  • PWA: Fix URL query param issue. (38755)
  • Scripts: Do not exit build when no entry found in src directory. (38737)
  • Scripts: Fix Entry points are not detected in Windows OS. (38781)
  • Scripts: Copy PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher files from src into build. (38715)

Components

  • BaseControl: Refactor stories to use Controls. (38741)
  • Migrate Post Template Delete button from confirm() to ConfirmDialog. (37535)
  • Migrate the Post ‘Switch to draft’ button to ConfirmDialog component. (37491)
  • Storybook: Ensure rerender for RTL switcher. (38963)

Post Editor

  • Edit Post: Migrate store actions to thunks. (36551)
  • Editor store: Remove a noop SETUP_EDITOR action. (38622)
  • Migrate editor store to thunks. (35929)

Styles

  • Allow to extend the WP_Theme_JSON_Gutenberg class. (38671)
  • Global Styles: Fix PHP warning in WP_REST_Global_Styles_Controller. (38888)
  • Update Global Styles code to continue adding settings & styles. (38883)

Block Library

  • Change Gallery block code ownership. (38722)

Performance Benchmark

The following benchmark compares performance for a particularly sizeable post (~36,000 words, ~1,000 blocks) over the last releases. Such a large post isn’t representative of the average editing experience but is adequate for spotting variations in performance.

Post Editor

VersionTime to first blockKeypress event
Gutenberg 12.75.0 s41 ms
Gutenberg 12.65.1 s40 ms
WordPress 5.95.2 s40 ms

Site Editor

VersionTime to first blockKeypress event
Gutenberg 12.74.7 s30 ms
Gutenberg 12.65.2 s29 ms
WordPress 5.95.2 s29 ms

Kudos to all the contributors that helped with the release! 👏

Thanks to @javiarce for the visual assets!

Thanks to @matveb @priethor and @santosguillamot for proofreading.

Editor chat summary: Wednesday, March 2, 2022

This post summarizes the latest weekly Editor meeting (agendaslack transcript), held in the #core-editor 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/. channel, on Wednesday, March 2, 2022, 14:00 UTC.

General Updates

  • Latest Gutenberg Release is 12.7 RC from last week.  The final release for 12.7 is scheduled for today. Huge thank you to Carlos Bravo @cbravobernal for leading this release.
    • @ndiego called attention to a regression issue.
    • @mamaduka suggested issuing a point releaseMinor Release A set of releases or versions having the same minor version number may be collectively referred to as .x , for example version 5.2.x to refer to versions 5.2, 5.2.1, 5.2.3, and all other versions in the 5.2 (five dot two) branch of that software. Minor Releases often make improvements to existing features and functionality., once a solution is available
  • Anne McCarthy @annezazu published  a new Call For testing out from the #fse-outreach-experiment program: FSE Program Testing Call #12: Hyping Headers. The deadline for feedback is March 16th, 2022

Updates on Key Projects (asynchronous)

We used to exchange key project updates synchronously during the chat. However, many of the key 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/ projects sustain a regular cadence of updates on their tracking issues on GithubGitHub GitHub is a website that offers online implementation of git repositories that can 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 be the repository owner. https://github.com/.

This week we tried async updates. The attendees are encouraged to read the latest updates directly from the following tracking issues at everyone’s leisure:

@talldanwp wrote: “I just wanted to provide an update and raise awareness of a project I’m undertaking to make each of our editors implement preferences in a consistent way. Here’s the tracking issue –.
 Migrate editor preferences to new package Last week I merged a PR that added a new `wordpress/preferences` package, and this week I’m going through each of our editors migrating them to use this new package. Let me know if you have any feedback or spot any bugs. Thanks!”

Task Coordination

@mamaduka

* Site Editor export archive now includes 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. file.
* Looking for a code sanity check on Site Editor server-side redirection PR.
* Currently working on 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. Locking UIUI User interface and hope to share some early results this week.

Open Floor

@trapsta
asked for more input on this issue Backspace doesn’t (always) delete images (7422), before starting working on a PR. @youknowriad commented on the issue that Jasper should go ahead with the PR.

There were no additional open floor items and we ended the meeting early.

Read complete transcript