Bug Scrub Schedule for 5.9

With 5.9 well underway, we’re ready to schedule the 5.9 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 sessions. These 5.9 specific ticketticket Created for both bug reports and feature development on the bug tracker. scrubs will happen each week until the final release.

Alpha Scrubs:

Hosted by @audrasjb

Hosted by @chaion07 (APAC-friendly)

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. Scrubs:

Focus: issues reported from the previous beta.

RC Scrubs:

Focus: issues reported from the previous RC

Check this schedule often, as it will change to reflect the latest information.

What about recurring component scrubs and triagetriage The act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors. sessions?

The above 5.9 scheduled bug scrubs are separate and in addition.

For your reference, here are some of the recurring sessions:

  • Twenty Twenty-Two Triage: Every Monday 15:00 UTC in the #core-themes channel.
  • 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/ Design Triage: Every Tuesday 16:00 UTC in the #design channel.
  • 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) Scrub: Every Friday 15:00 UTC in the #accessibility channel.
  • Testing Scrub: Every Friday 13:15 UTC in the #core-test channel.
  • CSSCSS Cascading Style Sheets. Scrub: First Thursday of every month 20:00 UTC in the #core-css channel.
  • Upgrade/Install Component: Every Tuesday at 17:00 UTC in the #core-auto-update channel.
  • Help/About Component: Every Monday, 19:00 UTC in the #core channel.

Want to lead a bug scrub?

Did you know that anyone can lead a bug scrub at anytime? Yes, you can!

How? 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.” @audrasjb or @chaion07 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 let us know the day and time you’re considering as well as the report or tickets you want to scrub.

Planning one that’s 5.9-focused? Awesome! We’ll add it to the schedule here. You’ll get well deserved props in the weekly Dev Chat, as well as in the #props Slack channel!

Where can you find tickets to scrub?

  • Report 5 provides a list of all open 5.9 tickets:
    • Use this list to focus on highest priority tickets first.
    • Use this list to focus on tickets that haven’t received love in a while.
  • Report 6 provides a list of open 5.9 tickets ordered by workflow.

Need a refresher on bug scrubs? Checkout Leading Bug Scrubs in the coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. handbook.

Questions?

Have a question, concern, or suggestion? Want to lead a bug scrub? Please leave a comment or reach out directly to @audrasjb or @chaion07 on slack.

Thanks @jeffpaul for proof-reading.

#5-9, #bug-scrub

Thunks in Gutenberg

Gutenberg 11.6 added support for thunks. You can think of thunks as of functions that can be dispatched:

// actions.js
export const myThunkAction = () => ( { select, dispatch } ) => {
	return "I'm a thunk! I can be dispatched, use selectors, and even dispatch other actions.";
};

Why are thunks useful?

Thunks expand the meaning of what a Redux action is. Before thunks, actions were purely functional and could only return and yield data. Common use cases such as interacting with the store or requesting 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. data from an action required using a separate control. You would often see code like:

export function* saveRecordAction( id ) {
	const record = yield controls.select( 'current-store', 'getRecord', id );
	yield { type: 'BEFORE_SAVE', id, record };
	const results = yield controls.fetch({ url: 'https://...', method: 'POST', data: record });
	yield { type: 'AFTER_SAVE', id, results };
	return results;
}

const controls = {
	select: // ...,
	fetch: // ...,
};

Side effects like store operations and fetch functions would be implemented outside of the action. Thunks provide an alternative to this approach. They allow you to use side effects inline, like this:

export const saveRecordAction = ( id ) => async ({ select, dispatch }) => {
	const record = select( 'current-store', 'getRecord', id );
	dispatch({ type: 'BEFORE_SAVE', id, record });
	const response = await fetch({ url: 'https://...', method: 'POST', data: record });
	const results = await response.json();
	dispatch({ type: 'AFTER_SAVE', id, results });
	return results;
}

This removes the need to implement separate controls.

Thunks have access to the store helpers

Let’s take a look at an example from 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/ coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. Prior to thunks, the toggleFeature action from the @wordpress/interface package was implemented like this:

export function* toggleFeature( scope, featureName ) {
	const currentValue = yield controls.select(
		interfaceStoreName,
		'isFeatureActive',
		scope,
		featureName
	);

	yield controls.dispatch(
		interfaceStoreName,
		'setFeatureValue',
		scope,
		featureName,
		! currentValue
	);
}

Controls were the only way to dispatch actions and select data from the store.

With thunks, there is a cleaner way. This is how toggleFeature is implemented now:

export function toggleFeature( scope, featureName ) {
	return function ( { select, dispatch } ) {
		const currentValue = select.isFeatureActive( scope, featureName );
		dispatch.setFeatureValue( scope, featureName, ! currentValue );
	};
}

Thanks to the select and dispatch arguments, thunks may use the store directly without the need for generators and controls.

Thunks may be async

Imagine a simple ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/. app that allows you to set the temperature on a thermostat. It only has one input and one button. Clicking the button dispatches a saveTemperatureToAPI action with the value from the input.

If we used controls to save the temperature, the store definition would look like below:

const store = wp.data.createReduxStore( 'my-store', {
    actions: {
        saveTemperatureToAPI: function*( temperature ) {
            const result = yield { type: 'FETCH_JSON', url: 'https://...', method: 'POST', data: { temperature } };
            return result;
        }
    },
    controls: { 
        async FETCH_JSON( action ) {
            const response = await window.fetch( action.url, {
                method: action.method,
                body: JSON.stringify( action.data ),
            } );
            return response.json();
        }
    },
    // reducers, selectors, ...
} );

While the code is reasonably straightforward, there is a level of indirection. The saveTemperatureToAPI action does not talk directly to the API, but has to go through the FETCH_JSON control.

Let’s see how this indirection can be removed with thunks:

const store = wp.data.createReduxStore( 'my-store', {
    __experimentalUseThunks: true,
    actions: {
        saveTemperatureToAPI: ( temperature ) => async () => {
            const response = await window.fetch( 'https://...', {
                method: 'POST',
                body: JSON.stringify( { temperature } ),
            } );
            return await response.json();
        }
    },
    // reducers, selectors, ...
} );

That’s pretty cool! What’s even better is that resolvers are supported as well:

const store = wp.data.createReduxStore( 'my-store', {
    // ...
    selectors: {
        getTemperature: ( state ) => state.temperature
    },
    resolvers: {
        getTemperature: () => async ( { dispatch } ) => {
            const response = await window.fetch( 'https://...' );
            const result = await response.json();
            dispatch.receiveCurrentTemperature( result.temperature );
        }
    },
    // ...
} );

Support for thunks is experimental for now. You can enable it by setting __experimentalUseThunks: true when registering your store.

Thunks API

A thunk receives a single object argument with the following keys:

select

An object containing the store’s selectors pre-bound to state, which means you don’t need to provide the state, only the additional arguments. select triggers the related resolvers, if any, but does not wait for them to finish. It just returns the current value even if it’s null.

If a selector is part of the public API, it’s available as a method on the select object:

const thunk = () => ( { select } ) => {
    // select is an object of the store’s selectors, pre-bound to current state:
    const temperature = select.getTemperature();
}

Since not all selectors are exposed on the store, select doubles as a function that supports passing a selector as an argument:

const thunk = () => ( { select } ) => {
    // select supports private selectors:
    const doubleTemperature = select( ( temperature ) => temperature * 2 );
}

resolveSelect

resolveSelect is the same as select, except it returns a promise that resolves with the value provided by the related resolver.

const thunk = () => ( { resolveSelect } ) => {
    const temperature = await resolveSelect.getTemperature();
}

dispatch

An object containing the store’s actions

If an action is part of the public API, it’s available as a method on the dispatch object:

const thunk = () => ( { dispatch } ) => {
    // dispatch is an object of the store’s actions:
    const temperature = await dispatch.retrieveTemperature();
}

Since not all actions are exposed on the store, dispatch doubles as a function that supports passing a Redux action as an argument:

const thunk = () => async ( { dispatch } ) => {
	// dispatch is also a function accepting inline actions:
	dispatch({ type: 'SET_TEMPERATURE', temperature: result.value });
    
	// thunks are interchangeable with actions
	dispatch( updateTemperature( 100 ) );
	
	// Thunks may be async, too. When they are, dispatch returns a promise
	await dispatch( ( ) => window.fetch( /* ... */ ) );
}

registry

A registry provides access to other stores through its dispatchselect, and resolveSelect methods. These are very similar to the ones described above, with a slight twist. Calling registry.select( storeName ) returns a function returning an object of selectors from storeName. This comes handy when you need to interact with another store. For example:

const thunk = () => ( { registry } ) => {
  const error = registry.select( 'core' ).getLastEntitySaveError( 'root', 'menu', menuId );
  /* ... */
}

This article is now a part of the developer’s handbook.

Special thanks to @jsnajdr, @get_dave, and @mcsf for their countless reviews and ideas for improving this article.

WordPress Performance Team kick off

Two weeks ago, Google and Yoast WordPress contributors posted a proposal to create a Performance team responsible for coordinating efforts to increase the performance (speed) of WordPress. The proposal was very well received overall, and many other contributors showed interest in joining the effort (thanks everyone).

This post aims at announcing the next steps.

Initial contributors coordination

As authors of the initial proposal, long time WordPress contributors, @tweetythierry, @flixos90, @aristath, @justinahinon, @adamsilverstein (in no particular order) are committed to:

  • lead the working groups formation
  • coordinate the initial administrative tasks (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, weekly meetings, schedule working groups representative nominations, etc.)
  • create a mission statement for the team
  • coordinate the areas to tackle
  • outline the scope and the roadmap

If you have interest in contributing to any of the above, please join the kickoff meeting, if you can, or use the comments of this post to do so.

Everybody is welcome to join working groups and contribute to performance enhancements without specific nomination 🙂

Kickoff meeting

Given the large interest from many contributors, it sounds like getting together is the first step.

By looking at the CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Meetings calendar, Tuesdays at 3PM UTC seem good candidates. @justinahinon has offered to run chats ad interim, the kick-off meeting will happen on Tuesday, November 2nd 2021 at 3PM UTC in the #performance Slack channel.

Agenda

  • Welcome
  • Contributor interest open floor
  • Defining areas of focus

Defining focus areas and working groups

As we have seen from the initial post comments, there are no shortage of areas in need of performance enhancements in WordPress (which is a good problem to have in a way). With that in mind, we will initially aim to keep the scope limited by defining the most impactful area of focus and create working groups if need be. Defined focus areas will be the main points of discussion during weekly chats.

An agenda item for the first meetings will be to define the initial focus areas for the team. Every contributor will be asked to self-assign themselves to one or two areas, to indicate what they would like to work on. The performance projects are assembled in a spreadsheet which can already be reviewed ahead of the kickoff meeting.

This is not exclusive of any performance contributions.

Props

Thanks to the following for their involvement in authoring, proofreading and providing feedback on this post.

@francina, @flixos90, @aristath, @tweetythierry, @justinahinon (in no particular order)

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

What’s new in Gutenberg 11.8.0? (27 October)

October is almost over, and we’re really close to WordPress 5.9, with this version of GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ being the second to last to make it into that release. This time around we have plenty of enhancements to the editing experience, including a way to discover Featured 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. Patterns, spacing tools for heading blocks, new animations for some elements (such as Dropzone, and Insertion Point), and more.

Featured Patterns from the Pattern Directory.

The Pattern Directory is the go-to source for great Block Patterns, and with this enhancementenhancement Enhancements are simple improvements to WordPress, such as the addition of a hook, a new feature, or an improvement to an existing feature. to the inserter, users get direct access to a selection of featured Patterns, making it easier to find rich Patterns to use or get inspiration from.

Spacing Tools now available to more blocks

Spacing controls are an important piece when getting your Posts, Pages, and Templates looking just right. In Gutenberg 11.8 we’re getting great Improvements in this area.

Spacing on Heading Blocks — Spacing controls were already available for the Site Title Block, and it made sense to add this possibility for all blocks that generate headings, including the Navigation Block, as seen below! With this enhancement, it’s no longer necessary to manually add padding or margin support to each Pattern or Template that uses heading blocks.

Gap support on the Navigation Block — Enables us to control the space between elements of a Navigation Block, taking advantage of the Block Gap support added in Gutenberg 11.5.

Button Block gap and vertical margin — Also related to Block Gap support, this enables us to control the space between buttons, as well as adding vertical margin support in order to adjust the space above and below the Buttons container. As a side note, the discussion behind this change shows off how Contributors come together to add these useful features to Gutenberg; a big thank you to everyone involved!

Enable always-on burger menu for Responsive Navigation Block.

This update is two-fold: users can now hide a Navigation MenuNavigation Menu A theme feature introduced with Version 3.0. WordPress includes an easy to use mechanism for giving various control options to get users to click from one place to another on a site. behind a button at all times, and they also get a new and improved Navigation Block Display options panel.

Other notable improvements

Allow child 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. to be merged with parent theme.json

Child themes containing a theme.json file will now apply their styles on top of those defined by the parent theme’s theme.json, allowing them to easily overwrite certain styles while maintaining the parent’s base ones. If no theme.json file is present on the child themeChild theme A Child Theme is a customized theme based upon a Parent Theme. It’s considered best practice to create a child theme if you want to modify the CSS of your theme. https://developer.wordpress.org/themes/advanced-topics/child-themes/., the parent’s styles are applied, and the other way around as well.

More control over Cover and Column blocks’ inner blocks

Starting in Gutenberg 11.8, there is more control over which types of blocks are allowed inside some container blocks, as allowedBlocks support has been added to the Cover Block and to the Column Block.

Enable the Slash Inserter for heading, list, and quote.

The Slash Inserter is the fastest way to find, and add blocks to your content, and from now on users are able to utilize it to add blocks within a Heading, List, and Quote blocks, similarly to how it works in basic Paragraph blocks.


Animations for insertion point, drop zone, and other elements

This release adds a nice touch by providing animations for insertion points and drop zones, among others. For extra clarity, and flair. ✨

Show the ellipsis menu in the ListView

Last but not least, this release also enables the List View’s ellipsis menu (block settings menu) in the Site Editor. Not only does this menu let users copy, duplicate, remove, and perform a bunch of options to blocks from within the List View, but it also helps access the recently revamped Template Part Focus Mode.

11.8.0 Changelog

Spacing tools

  • Buttons: Add gap and vertical margin support. (34546)
  • Add spacing controls to all heading blocks. (35772)
  • Feature Image: Add spacing controls to the 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. block. (35775)
  • Navigation block: Add block gap support. (35277)

More control over inner blocks

  • Column: Allow the specification of blocks allowed within columns. (35342)
  • Cover: Add allowedBlocks and TemplateLock attributes in Cover Block. (31326)

Child theme support for theme.json

  • Allow child theme.json to be merged with parent theme.json. (35459)

Featured Patterns from the directory

  • Featured patterns from the pattern directory. (35115)

Other Improvements

  • Enable slash inserter for heading, list, and quote. (35360)
  • Show the ellipsis menu in the ListView. (35170)
  • Add animations for insertion point, dropzone, and other elements. (33132)
  • Heading: Autogenerate heading anchors. (30825)
  • Enable always-on burger menu for responsive navigation menus. (35568)

Gutenberg 11.8

Enhancements

Block Library

  • Add spacing controls to all heading blocks. (35772)
  • Enable slash inserter for heading, list, and quote. (35360)
  • Unify theme block placeholder content. (35517)
  • Buttons: Add gap and vertical margin support. (34546)
  • Categories: Add support for showing only top-level categories. (35726)
  • Column: Allow the specification of blocks allowed within columns. (35342)
  • Comment Content Block: Add typography, color, and padding support. (35183)
  • Cover: Add allowedBlocks and TemplateLock attributes in Cover Block. (31326)
  • Cover: Add an option to set opacity when the background color is used. (35065)
  • Cover: Allow setting the height from the placeholder state. (35068)
  • Cover: Change dimRatio to 50 if media is added and dimRatio is set to 100. (35789)
  • Cover: Only use white text when the background of the cover block is dark. (33541)
  • Cover: Use the description in the placeholder. (34970)
  • Embed: Add Pinterest as an embed provider. (34895)
  • Feature Image: Add spacing controls to the featured image block. (35775)
  • Featured image and Image: Remove descendent space. (35466)
  • Gallery Block: Get media data in a single request. (34389)
  • Heading: Autogenerate heading anchors. (30825)
  • Quote: Update deprecation to expect style block supports. (35615)
  • Page List: Show empty placeholder if no items. (35441)
  • Post Date: Add more typography options. (35422)
  • Post Comment Author: Add link settings and block supports. (35595)
  • Post Comment Date: Add link setting and block supports. (35112)
  • Quote: Added a “plain” style for quote blocks. (29856)
  • Search: Enable inheritance in the search block. (35723)
  • Site Logo: Add a basic example to the site logo block. (35588)
  • Site Logo: Move the Reset button to the Replace menu dropdown. (35372)
  • Site Logo: placeholder tweaks. (35397)
  • Site Tagline: Add `fontStyle` control to Site Tagline block. (35507)
  • Site Tagline: Add wide + full support to the site tagline block. (35589)
  • Site Title: Add a basic example to the site title block. (35590)
  • Site Logo: Remove the “Reset” button icon. (35434)
  • Social Icons: Add top and bottom margin support. (35374)
  • Social Links: Polish logos only style. (35586)

Design Tools

  • ToolsPanel: Switch to the plus icon when no controls are present in the panel body. (34107)
  • Block Supports: Add panel-specific className. (35793)
  • Block Supports: Switch dimensions inspector controls slot to bubble virtually. (34725)
  • Inspector Controls: Resort the order of the design tools associated with styles 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.. (35574)

Styles

  • Allow users to store duotone data. (35318)
  • Allow child theme.json to be merged with parent theme.json. (35459)
  • Extract the three color panels to their own global styles view. (35400)
  • Font family: Switch from CSSCSS Cascading Style Sheets. Custom Property to classes. (31910)
  • Move the global styles reset action to a dropdown menu. (35559)
  • Update descriptions for the different screens under global styles. (35429)
  • Update the global styles 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.’s root view to use Card components. (35547)
  • Use text color to render the Aa preview in global styles. (35631)

Theming

  • Add [data-block] to appender. (35356)
  • Enable theme supports automatically for block themes. (35593)
  • Remove default padding/margin on the body of the page and editor canvas. (35421)
  • Support title in `templateParts`. (35626)
  • CSS: Add a reset for image heights. (30092)

Patterns

  • Increase the number of items per page for default 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. Block. (35603)
  • Featured patterns from the pattern directory. (35115)

Block Editor

  • Add animations for insertion point, dropzone, and other elements. (33132)
  • Adjust Link UIUI User interface visual styling. (35414)
  • Add some top margin. (35717)
  • Show the ellipsis menu in the ListView. (35170)

Template Editor

  • Add more options to template areas in template details. (35577)
  • Add template areas to template inspector. (35239)
  • Add template details to template parts. (35444)
  • Align the layout of the template card with the block card. (35391)
  • Update site editor block placeholder styling. (35513)
  • Use a dark background for the site editor. (35520)
  • Try: Remove dotted ancestor border. (35637)

Components

  • Add shortcut provider. (35652)
  • Iterate on the design of the colors and gradients panel. (35535)
  • Navigator: Update Navigator styling to facilitate sticky positioning. (35518)
  • Repositioned RangeControl tooltip and adjusted image zoom control dropdown height. (27374)
  • Remove segmented control vertical separators. (35497)
  • Storybook: Add RTL switcher to toolbar. (35711)
  • Storybook: Add story for TypographyPanel. (35293)
  • Storybook: Enable Controls and disable Knobs by default. (35682)
  • Storybook: Remove outdated decorator configuration. (35678)
  • Support “any” step in NumberControl and RangeControl. (34542)
  • ToggleGroupControl: Allow custom aria-label. (35423)
  • Update range control metrics. (35540)
  • Update FontSize control. (35395)

Packages

  • Create Block: Add PascalCase slug to create-block template strings. (35462)
  • Create Block: Allow local directories to be passed to –template as relative paths. (35645)
  • Test Setup: Add more complete mocks of common timer functions. (35368)
  • Scripts: Allow customization of the ARTIFACTS_PATH via WP_ARTIFACTS_PATH env var. (35371)

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)

  • Rich text popovers: Move to block tools to fix tab order. (34956)
  • Save button: Prevent focus loss. (34731)

Performance

Global Styles

  • Pass only the data the site editor uses. (35458)
  • Use a context provider for global styles configuration. (35622)

Bug Fixes

Block Library

  • Block Settings: Don’t render ‘Move to’ if the block cannot be moved. (35463)
  • Cover: Update placeholder minHeight style to support non-px units. (35614)
  • Cover: Update ‘templateLock’ attribute. (35671)
  • Featured Image: Center placeholder chip contents. (35417)
  • Heading: Fix undo/redo “trap”. (35767)
  • Heading: Remove anchor map when block unmounts. (35761)
  • Site Logo: Fix site logo block on dark backgrounds. (35718)

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.

  • Fix HelpHub link i18n for page-jumps. (35404)
  • Fix template part block untranslated strings. (35715)
  • Translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. note for Home/end to avoid mistranslations. (35669)

Packages

  • Server Site Render: Prevent empty renders in `ServerSideRender` component caused by changing props while already fetching markup. (35433)

Components

  • Color Picker: Fix some issues on the color picker component; Remove tinycolor2;. (35562)
  • Navigator: Hide horizontal overflow in Navigator. (35332)
  • Popover: Fix __unstableBoundaryParent. (35082)
  • RawHTML component: Allow multiple children. (35532)
  • Rich text: Fix internal paste across multiline and single line instances. (35416)
  • Toggle Group Control: Fix the visual state when no option is selected. (35545)
  • Toggle Group Control: Fixed condition to show separator correctly. (35409)
  • Toggle Group Control: Fix ToggleGroupControlOption not passing ref to the underlying element. (35546)
  • Tooltip: For Tooltips, prevent emitting events to child elements if they are disabled. (35254)
  • Tooltip: Remove extra comma character from Tooltip when the underlying component is disabled. (35247)

Themes

  • Custom Templates: Use “title” from the theme.json. (35592)
  • Elements block support: Fix link color rendering on-site front end. (35446)
  • Move the link color styles to the footer. (35425)
  • Reset margin for all children of flow layouts. (35426)

Template Editor

  • Use slug as template parts area item key. (35796)
  • Fix missing titles in general areas. (35657)

Block 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.

  • Blocks: Apply the most recent filters to previously registered blocks. (34299)
  • Fix class serialization of font size and colors in dynamic blocks that use block supports. (35751)

Design Tools

  • Border Radius Control: Fix undefined value on the first click into RangeControl. (35651)

Block Editor

  • Fix updating the block list after block removal. (35721)
  • Fix sibling inserter animation. (35729)
  • Inserter: Fix gap between Search and Tabs. (35537)
  • Saving post: Transparent disabled button. (35542)
  • FSE: Coding standards: DOCTYPE should be the first line/character of any HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. document. (35442)

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/.

  • Fix preloading middleware referencing stale data for OPTIONS requests. (35527)

List View

  • Fix expand and collapse when the icon is clicked. (35526)

Global Styles

  • Fix presets that use a callback to validate user data. (35255)

CSS & Styling

  • Remove font size classes that are enqueued in the global stylesheet. (35182)

Block API

  • Allow more than 1 block stylesheets. (32510)

Experiments

Navigation Block

  • Add block gap support. (35277)
  • Enable always-on burger menu for responsive navigation menus. (35568)
  • Fix issue with space-between. (35722)
  • Submenu item paddings & fixes. (35716)
  • Fix navigation gap & padding issues. (35752)
  • Remove color inheritance specificity. (35725)
  • Remove deprecated class names from the Navigation Link block. (35358)

Navigation Screen

  • Use new coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. functions in menu items REST API. (35648)
  • Navigation: Preload more API requests. (35402)

Documentation

Handbook

  • Add categories to TOC to help digest the FAQ. (35519)
  • Add missing documentation for the wrapperProps property for the BlockListBlock component returned by the editor.blockListEdit 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.. (26961)
  • Add section on using theme.json schema. (35739)
  • Add Table of Contents to the FAQ page. (35455)
  • Clarify documentation for InnerBlocks orientation prop. (35712)
  • CustomRadius – Remove 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-only text. (35582)
  • Update block categories. (35523)
  • Update npm run build command for developing with Gutenberg locally. (35681)

Packages

  • Block Editor: Update default value of the `viewportWidth` attribute in documentation. (35659)
  • Components: Add the storybook link to the /components README. (35493)
  • Components: Add readme for SkipToSelectedBlock component. (32958)
  • Componentes: Add CHANGELOG entry for the fieldset removal from FontAppearanceControl. (35585)
  • Components: Add an entry to CHANGELOG regarding the new ColorPicker. (35486)
  • Components: Fix markdown highlighting on components CONTRIBUTING.md. (35633)
  • Components: Mark CustomSelectControl hint option as experimental. (35673)
  • Components: Polish ToggleGroupControl. (35600)
  • Components: Small tweaks to contributing guidelines. (35620)
  • Components: Update README for SelectControl. (28811)
  • Components: Update DateTimePicker component README to remove reference to isDayHighlighted callback. (35363)
  • Components, feat(SelectControl): Add children prop. (29540)
  • Create Block: Update documentation and readme post-merge of #35645. (35679)

Code Quality

  • Block Editor: Fix odd usage of transform-styles wrap function (and tighten types). (23599)
  • Constrained tabbing: Simplify. (34836)
  • Compose: Convert `usePrevious` hook to TypeScript. (35597)
  • Update Callers to handle when getBlockType return undefined. (35097)
  • Components: Polish ResizableBox and convert it to TypeScript. (35062)
  • Components: Remove `tinycolor` object usage from the gradient picker. (35544)
  • Components: Remove duplicated className in the Card component. (35333)
  • Components: Remove unused useJumpStep utility. (35561)
  • Components: Use new color picker props. (35566)
  • Components: Replace the color picker component with the new version. (35220)
  • Components, FontAppearanceControl: Remove fieldset wrapper. (35461)
  • Components, ToolsPanel: Remove hardcoded classnames. (35415)
  • Components, UnitControl component: Refactor JSX components to TypeScript. (35281)
  • Global Styles: Refactor how the Global Styles access and sets data. (35264)
  • Post Editor: Fix-up Post Editor’s preferences modal. (35369)
  • Remove Tinycolor usage from component color utils. (35553)
  • Reusable Blocks: Thunkify `reusable-blocks` store. (35217)

Tools

Packages

  • Scripts: Remove inject polyfill by default. (35436)

Testing

  • Child theme.json: Update test to better capture that children can update single parts in isolation. (35759)
  • Border Radius Control: Add fallback px unit and add utils tests. (35786)
  • Fix preview end-to-end tests. (35565)
  • Flaky Tests: Fix taxonomies flaky tests. (35534)
  • Flaky Tests: Try another fix for the flaky nav test. (35443)
  • Performance tests: Add more detailed loading metrics. (32237)
  • Components, Panel: Improve unit tests. (35658)
  • Enable/skipped 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. test. (35594)

Build Tooling

  • Revert version bump if build job fails. (33239)
  • Updates `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-aztec` android to use S3 dependency for the Aztec editor. (35606)

A note to extenders on the Navigation Editor

Bugfix #35527 fixed preloading on the Navigation Editor; now cache gets deleted after the first cache hit for OPTIONS requests, potentially affecting 3rd-party plugins.

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.

VersionTime To Render First BlockKeyPress Event (typing)
Gutenberg 11.86.21s40.2ms
Gutenberg 11.76.29s43.13ms
WordPress 5.86.74s51.54ms

Thanks to @critterverse for the assets on this post, @priethor for shepherding the process along, @dd32 for assisting with the release to the plugin directory, and to those who contributed to this release! 👏

FSE Program: Answers from Round Three of Questions

This post is part of a wider series that provides answers to questions gathered through the FSE Outreach Program. This round of questions was started on October 13th and ended on October 27th. Thank you to everyone who submitted a question so our knowledge can grow together! Stay tuned for future rounds and join the FSE Outreach Program if you’re keen to both learn more about these features and help shape how they evolve.

Continue reading

#5-9, #fse-answers, #fse-outreach-program

Dev chat summary – October 27, 2021

@audrasjb led the chat on this agenda. You can also read the Slack logs.

Highlighted blogblog (versus network, site) posts

Bringing to your attention some interesting reads and some call for feedback and/or volunteers:

After 1.5 year, @francina and @audrasjb decided to pass the CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Team Representative baton for 2022. Everyone can nominate the people they think are best suited to be our new Core team reps, just comment in the above post.

Upcoming releases updates

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.8.2

@desrosj confirmed WP 5.8.2 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). is still planned for Tuesday November 2, with a few tickets including #54207 which has been quite a pain for many, so fixing it sooner rather than later is best.

Next 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.: WP 5.9

First the Release Squad for WordPress 5.9 was published. If anyone is interested in volunteering for one of the roles needing more help, please comment on that post. If anyone has any questions about the release squad roles, some answers are available in the Core team handbook.

@audrasjb and @chaion07 published the 5.9 Bug scrub schedule.

Next scrubs are scheduled on Thursday October 28, 2021 at 20:00 UTC and on Friday October 29, 2021 at 06:00 UTC.

Please note that anyone can run 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. Checkout the Leading Bug Scrubs section in the Core handbook.

Also, a WordPress 5.9 Editor Update (26 October) was published.

Component maintainers updates

Build/Test Tools – @sergeybiryukov

The 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/. Notifications workflow was modified to be a reusable one. See changeset [51921] and some follow-up changes on ticketticket Created for both bug reports and feature development on the bug tracker. #53363.

General – @sergeybiryukov

Work has continued on various coding standards fixes in core. See tickets #53359, #54177, #54279, #54295 for more details.

Help/About – @marybaum

Two tickets are getting closer to commit but not completely there. Copy reviews are done, the component maintainers have new patches. Should be able to commit both by next Monday’s component scrub.

Open Floor

@craigfrancis wanted to discuss #54042, as I’d like to make the IN() operator easier/safer, and likewise with quoting table/field identifiers. Given the amount of information shared in the PR, @audrasjb moved this ticket to 5.9, but it will need a deep review as soon as possible to be committed ahead of the feature freeze which is the target for such enhancements.

@marybaum asked if there is still feature freeze a week or so ahead of 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. Feature freeze is scheduled on November 9th, and Beta 1 is on the 16th.

@afragen shared a message of @peterwilsoncc from the #core-auto-updates Slack channel. The Upgrade/Install team will meet in this channel on next Tuesday to discuss a proposal concerning 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 Dependencies feature.

#5-8-x, #5-9, #dev-chat, #summary

CSS Chat Summary: 21 October 2021

The meeting took place here on Slack. @dryanpress facilitated and @danfarrow wrote up these notes.

The meeting was short but props are due to @dryanpress for finding a way to run it despite having no internet!

CSSCSS Cascading Style Sheets. Custom Properties (#49930)

Thanks everybody!

#core-css, #summary

WordPress 5.9 Release Squad

WordPress 5.9 is full steam ahead towards the December 14, 2021 release date. With the Go/No Go deadline behind us, the necessary roles required for this version’s release squad have become more clear, and the team is starting to take shape.

Below is the list of roles the squad roles for the 5.9 release with confirmed contributors listed. Any role listed with a hand raised emoji (✋) still need contributors and volunteers.

  • Release LeadRelease Lead The community member ultimately responsible for the Release.: @matt
  • Release Coordinators:
  • Triagetriage The act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors. Leads: @chaion07, @audrasjb.
  • Editor Tech: @noisysocks, @mamaduka.
  • Editor Design:
  • CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Tech: @hellofromtonya. ✋
  • Theme Leads: @kjellr, @jffng.
  • Technical Writer: @psykro. ✋
  • Documentation Leads: @mkaz, @milana_cap.
  • Marketing & Communications: @chanthaboune. ✋
  • 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) Lead:
  • Test Leads: @boniu91, @annezazu.

Some Notes

  • The release squad list on the 5.9 development cycle page has also been updated. As additional contributors are confirmed for the positions needing volunteers, they will only be added to the development cycle page (not accompanied by an additional post here).
  • @noisysocks is coordinating a group of feature-specific contributors, and will be the main information person for all editor related features.
  • All WordPress 5.9 related coordination will happen inside of the #5-9-release-leads 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/. room. This room is a public viewing area for transparency (and knowledge sharing!), but is a workspace for that release squad so please limit posting as much as possible for those not on the release squad.

Props @chanthaboune and @jeffpaul for peer review.

#5-9

Dev Chat Agenda for October 27, 2021

Here is the agenda for this week’s developer meeting to occur on October 27 2021, at 20:00 UTC.

Please note that depending on your timezone, the time may have changed with the end of daylight saving time.

Blogblog (versus network, site) Post Highlights and announcements

Bringing to your attention some interesting reads and some call for feedback and/or volunteers:

Next releases status update

Have you been working on 5.9 related issues? Let everyone know!

Components check-in and status updates

  • Check-in with each component for status updates.
  • Poll for components that need assistance.

Open Floor

Do you have something to propose for the agenda, or a specific item relevant to the usual agenda items above?

Please leave a comment, and say whether or not you’ll be in the chat, so the group can either give you the floor or bring up your topic for you accordingly.

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

#5-9, #agenda, #core, #dev-chat

Nominations for Core Team Reps 2022

This post kicks off the election process with nominations to replace @audrasjb and @francina as CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. team reps. We have been in the role for over a year now, so 2022 marks the time to get new folks!

The Role

In the WordPress 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. project, each team has on average one or two representatives, abbreviated as reps

It is not called “team lead” for a reason. It’s an administrative role. While people elected as team reps will generally come from the pool of folks that people think of as experienced leaders, the team repTeam Rep A Team Rep is a person who represents the Make WordPress team to the rest of the project, make sure issues are raised and addressed as needed, and coordinates cross-team efforts. role is designed to change hands regularly.

This role has a time commitment attached to it. Not a huge amount, it’s at least two hours a week.

Here are the main tasks:

Full details on the Team Rep role is on the Team Update site.

How the election works

Please nominate people in the comments of this post. Self-nominations are welcome. The deadline is 10 November 2021.

After that, a poll will be opened for voting. It will stay open for about two weeks. The new reps will start their role on January 1st, 2022.

If you want to nominate someone in private, please reach out to @francina or @audrasjb 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/..

Disclaimer: if you get nominated, please don’t feel like you have to say yes. The polls will only include the names of the people that are responding positively to a nomination.  So feel free to reply with a “Thank you, but no thank you”.

If you have any questions, please feel free to ask in the comments, we will be happy to reply.

Thanks to @audrasjb for the peer review.

#team-reps

WordPress 5.9 Editor Update – 26 October

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/ 11.9 (the last 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 release which will make its way into WP 5.9) will be cut on November 3 which is in 9 days!

The merge to CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. for this release will be tricky. I’m seeking volunteers to assist with the patchpatch A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing.. Let me know if you can help.

@mamaduka has ran an audit of our __experimental APIs. Please give it a look over.

I asked around to identity what the “must have” enhancements are for this release and have added them to the WordPress 5.9 Must-Haves project board. Please regularly check in with this project board. There are a bunch of bugs in the board, too, and you should also pay attention to them, but they’re slightly less important because bugs can be addressed after the feature freeze.

Here’s a overview of the “must have” enhancements:

🤙

#core-editor #5-9