A Week in Core – November 9, 2020

Three years after the last post published using the #week-in-core 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.), CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Team Reps @francina and @audrasjb wanted to restore the Week in Core tradition, thanks for @helen reminder that such thing existed. The idea is to provide a general overview on what changed on core from one week to another. So let’s take a look on what changed on TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between November 2 and November 9, 2020.

  • 35 commits
  • 57 contributors
  • 47 tickets created
  • 6 tickets reopened
  • 79 tickets closed

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

Code changes

About/Help

  • Optimize freedoms sprite and add 2 column layout – #46363

Build/Test Tools

  • Check if all the required PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 extensions are loaded before running the test suite – #50640
  • Disable update attempts while running unit tests – #51670
  • Clean up the new contributor welcome message – #50401
  • Remove PHP >= 5.3 check – #51737
  • Remove duplicate fields key in WP_Query test – #51344

Bundled Themes

  • Sync Twenty Twenty-One with the latest changes from 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/#51526
  • Correct list 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. alignment in editor styles – #51157
  • Twenty Thirteen: Correct alignment of blocks inside a full-width or wide-width group block – #51440
  • Twenty Twenty: Correct heading blocks alignment in editor styles – #51148
  • Twenty Twenty: Correctly indent nested unordered lists in RTL editor styles – #51574

CustomizerCustomizer Tool built into WordPress core that hooks into most modern themes. You can use it to preview and modify many of your site’s appearance settings.

  • Customize: Ensure menu items expand horizontally on large screens – #51647

Documentation

  • Improve return value description for esc_url()#50585
  • Fix typo in a comment in Walker::display_element()#51713.
  • Improve documentation for is_archive()#50545
  • Change the @since entry for template and template_lock post type arguments to 5.0.0#46261
  • Document the $linkdata parameter of wp_insert_link() using hash notation – #50853.
  • General: Make some inline comments more descriptive – #51683
  • Clean up the new contributor welcome message – #50401

Editor

Feeds

  • Don’t treat media URLs with fragments as unique for enclosures – #47421

Formatting

  • Update docs for $context in sanitize_title_with_dashes()#50569

Internationalization

  • Merge duplicate “Column” strings, remove unnecessary context – #47259
  • Unify various “Back to…” vs. “Return to…” vs. “Go to…” strings – #47235

Login and Registration

  • App Passwords: Further 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) improvements – #51580

Media

  • Restore the ability of WP_Image_Editor_Imagick->save() to create a missing directory when needed – #51665
  • Adjust box-sizing for audio players – #51685
  • Adjusts alignment of file name text in browser uploader – #41648

Networks and Sites (Multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site)

  • Assign the array of site or networknetwork (versus site, blog) data returned from filters to the respective class property – #51333

Privacy

  • More precise checking of user request action names – #46536

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

  • Use _n() in some error messages for proper plural forms support – #51727.

Site Health

  • Validate the test result data format in JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. before using it – #50145.
  • Site errors are for *this* site, not necessarily *your* site – #51524

Upgrade/Install

  • Change the notice displayed after saving auto-update settings to .notice-success#51701
  • Update help tab text to include major WordPress updates – #51653
  • Prevent removal of additional data from 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 update info – #51609

Props

Thanks to everyone who contributed to WordPress Core last week:

@sergeybiryukov (18), @audrasjb (11), @sabernhardt (7), @helen (6), @desrosj (5), @stevenlinx (4), @garrett-eclipse (4), @johnbillion (3), @TimothyBlynJacobs (4), @ryelle (2), @ocean90 (2), @kjellr (2), @ramiy (2), @Clorith (3), @justinahinon (2), @amolv (1), @francina (1), @david.binda (1), @antpb (1), @Lumne (1), @metalandcoffee (1), @peterwilsoncc (1), @techboyg5 (1), @ayeshrajans (1), @poena (1), @luminuu (1), @aristath (1), @felipeelia (1), @jrf (1), @valentinbora (1), @tobifjellner (1), @mikeschroder (1), @noisysocks (1), @ravipatel (1), @alexstine (1), @afercia (1), @archduck (1), @dshanske (1), @joedolson (1), @jeffpaul (1), @eemitch (1), @hellofromTonya (1), @whyisjake (1), @p00ya (1), @kharisblank (1), @yakimun (1), @spacedmonkey (1), @dogwithblog (1), @kraftbj (1) and @joostdevalk (1).

Core committers: @sergeybiryukov, @helen, @desrosj, @noisysocks, @antpb, @TimothyBlynJacobs and @johnbillion.

CSS Chat Summary: 5 November 2020

Full meeting transcript here on slack. @notlaura facilitated the meeting & wrote up this summary.

Housekeeping

Daylight savings time caused a bit of confusion this week, and we decided to keep the meeting at 5pm EDT and 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 one hour earlier every other week (the next bug scrub will be November 19th).

CSSCSS Cascading Style Sheets. Audit (#49582)

No CSS audit updates this week – work is still being done on adding the option for a config file to the css-audit repo (PR here) and adding some template style to make the results more readable.

Color Scheming (#49999)

There were no color scheming updates this week – we discussed putting a pause on asking for feedback until after 5.6 is released. That said, the WP Adminadmin (and super admin) can be tested with the color replacements using the login info outlined in this Slack message.

Visual Regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5. Testing (#49606)

@isabel_brison did some experimenting for on visual regression testing a while back, and mentioned that the setup worked locally, but what quite brittle and ran into problems on CI. @danfarrow tried out running the tests recently from this pull request. @isabel_brison suggested the best approach for running the tests on CI would be to:

  • generate snapshots from the main branchbranch A directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a "branch", such as "the 4.0 branch".
  • switch to the feature branch and run the tests for the comparison

This would be as opposed to storing the local snapshots in the repo because there are always different pixel differences depending on the machine where the screenshots were taken. This approach would also solve the issue of storage space in the repo.

Open Floor + CSS Link Share

@ravipatel asked a question about ticketticket Created for both bug reports and feature development on the bug tracker. #51706 which had some browser compatibility issues.

@sabernhardt asked for help testing theme editor styles in #51157, and to 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.” him in the channel if any questions.

#core-css, #summary

Media Meeting Recap – November 5, 2020

The following is a summary of the weekly media component meeting that occurred on Thursday, November 5, 2020 at 15:00 UTC. Weekly media meetings are held every Thursday at 15:00 UTC. A full transcript can be found here in the #core-media room in the Make WordPress Slack.

Attendees: @antpb, @johnbillion, @sergeybiryukov, @desrosj, @hongnizzle

5.6 Remaining Tickets

#41648Alignment issue on media-new.php when browse uploader screen is active – Currently owned by @antpb. The ticketticket Created for both bug reports and feature development on the bug tracker. will be reviewed and committed by end of day November 6, 2020.

#22363Accents in attachment filenames should be sanitized@antpb will be reviewing ticket to confirm pending issues have been addressed before closing.

#51665wp_get_image_editor() ->save stopped creating the directory in 5.6-beta2-49360@mikeschroder has responded to ticket and there are still tasks to be completed.

#42663Imagick support for stream wrappersDev notesdev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include: a description of the change; the decision that led to this change a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase. are pending for this ticket. Otherwise, if no notes are available, then the commit message describes the changes very well.

#51685: Media Element CSSCSS Cascading Style Sheets. Issue : Some layout display crop – Per @antpb, this ticket has recently moved to 5.6 as a fix to some UIUI User interface bits. Very recently refreshed. Will be completed by @antpb.

With these pending tickets addressed, the milestone will be cleared! Thank you everyone!

Props @antpb for proofreading and final review.

#core, #media, #summary

Twenty Twenty-One Test Scrub

As part of the 5.6 release, we’ll be hosting a Twenty Twenty-One focused test scrub today Friday, November 6, 2020, 13:30 UTC in the #core channel 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/..

What we will test

  1. UXUX User experience/UIUI User interface of dark-mode, in particular, https://github.com/WordPress/twentytwentyone/issues/790
  2. Bugs that need testing after WordPress 5.6 Beta 3: https://core.trac.wordpress.org/tickets/needs-testing – those marked as “Next release”

How we will test

  • We will go through each item as a group.
  • We will create a thread in Slack for each items where you can post the results. This will make it easier to reply in the existing issues or create new ones.

What do you need to test

  • WordPress 5.6 Beta 3 installed
  • To test TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. patches, you need a development environment
    • https://make.wordpress.org/core/handbook/testing/patch/
    • https://make.wordpress.org/core/2020/09/29/test-scrub-for-wordpress-5-6/#comment-39945

See you later!

#5-6, #bug-scrub, #test, #twenty-twenty-one

CSS Chat Agenda: 5 November 2020

This is the agenda for the upcoming CSSCSS Cascading Style Sheets. meeting scheduled for Thursday, November 5, at 5:00 PM EDT.

This meeting will be held in the #core-css 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 there’s any topic you’d like to discuss, please leave a comment below!

  • Housekeeping
  • Updates
    • CSS Audit (#49582)
    • Color Scheming (#49999) – Visual regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5. testing (#49606)
  • Open floor + CSS link share

#agenda, #core-css

Application Passwords: Integration Guide

WordPress 5.6 will finally see the introduction of a new system for making authenticated requests to various WordPress APIs — Application Passwords.

The existing cookie-based authentication system is not being removed, and any custom authentication solutions provided by plugins should continue to operate normally.

For any sites using the Application Passwords feature plugin, it is recommended to deactivate 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 after upgrading to WordPress 5.6. However, sites won’t experience any errors if the plugin remains active. The current plan is to use the plugin for future prototyping.

Application Password Format

Application Passwords are 24-characters long, generated by wp_generate_password() without the use of special characters — so they consist exclusively of upper-case, lower-case, and numeric characters. For the cryptographically curious, that comes to over 142 bits of entropy.

When presented to the user for entering into an application, they are displayed chunked for ease of use, like so:

abcd EFGH 1234 ijkl MNOP 6789

Application passwords can be used with or without the spaces — if included, spaces will just be stripped out before the password is hashed and verified.

Data Store

WordPress will be storing a user’s application passwords as an array in user metaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress., similar to how interactive login sessions (via WP_Session_Tokens) are stored already.

The WP_Application_Passwords class has all the methods for storing and retrieving records. Records include a number of attributes about them — including assigned name for the application, a timestamp for when it was created, and data on their last usage such as, date and IP address. Each application password is also assigned a uuid for reference, in case you’d like to build infrastructure for additional properties and store them in an alternate location.

Getting Credentials

Generating Manually

From the Edit User page, you can generate new, and view or revoke existing application passwords. The form and the list table are both fully extensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software. to allow for overloading to store additional data (more on this later, in “Authentication Scoping”).

The Application Passwords section of Edit User screen, after a new application password has been created.
The Edit User screen, after a new application password has been created.

Once a given password has been used, it will keep track of where and when it has been used – the “Last Used” column is accurate to within 24 hours (so that WordPress isn’t writing to the database on every usage — only if it’s a new day). This can be incredibly useful for identifying passwords that are no longer in use, so that they can be safely revoked.

Authorization Flow

To ensure that application password functionality is available, fire off a request to the 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/. root URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org, and look at the authentication key in the response data. If this key is empty, then application passwords are not available (perhaps because the request is not over https:// or it has been intentionally disabled).

If, however, response.authentication is an object with a key of application-passwords it will offer a URL to send a user to complete the authentication flow. (You could just guess at the URL, but this gives us more of the relevant information in one go, as well as confirming that application passwords are available and enabled.)

The response.authentication['application-passwords'].endpoints.authorization url will likely look something like this:

https://example.com/wp-admin/authorize-application.php

Instead of just sending the user there to generate an application password, it would then be up to the user to reliably re-enter it into your application. So instead, some additional GET parameters are accepted along with the request:

  • app_name (required) – The human readable identifier for your app. This will be the name of the generated application password, so structure it like … “WordPress Mobile App on iPhone 12” for uniqueness between multiple versions.
    Whatever name you suggest can be edited by the user if they choose before the application is created. While you can choose to not pre-populate it for the user, it is required to create a password, so they will then be forced to create their own, and could select a non-intuitive option.
  • app_id (recommended) – a UUID formatted identifier. The app_id allows for identifying instances of your application, it has no special meaning in and of itself. As a developer, you can use the app_id to locate all Application Passwords created for your application.
    In the event of a data breach, your app_id could be distributed to void credentials generated with it, or if a site wants to allow only a given app_id or set of app_ids to register, this would enable that. However, it is strictly on the honor system — there is nothing to stop applications from generating new uuids with every authorization.
  • success_url (recommended) – The URL that you’d like the user to be sent to if they approve the connection. Three GET variables will be appended when they are passed back (site_url, user_login, and password); these credentials can then be used for 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. calls.
    If the success_url variable is omitted, a password will be generated and displayed to the user instead, to manually enter into their application.
  • reject_url (optional) – If included, the user will get sent there if they reject the connection. If omitted, the user will be sent to the success_url, with ?success=false appended to the end.
    If the success_url is omitted, the user just will be sent to their WordPress dashboard.
A screenshot of the new Authorize Application screen in the WP-Admin. A button is displayed to approve the connection, and one to reject the connection.
A screenshot of what the authorization flow will look like to a user.

As the parameters are all passed in via GET variables, if the user needs to log in first, they will all be preserved through the redirect parameter, so the user can then continue with authorization.

It is also worth noting that the success_url and redirect_url parameters will generate an error if they use a http:// rather than https:// protocol — however other application protocols are acceptable! So if you have a myapp:// link that opens your Android, iOS / MacOS, or Windowsthose will work!

Here is an example of a simple javascript application (under 100 lines of code) that uses this to authenticate to a WordPress site. Though not the tidiest code, it was created in under two hours one evening, but it goes through the proper flows and can make authenticated requests.

Programmatically through the REST API

If you have previously been using a different system to access the REST API and would prefer to switch over to using application passwords, it’s easy! You can generate yourself a new application password via a POST request to the new /wp/v2/users/me/application-passwords endpoint. Once you’ve got the new application password in the response data, you can delete any old credentials and just use the coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. implementation instead — but please consider using something like libsodium (which has a library bundled with WordPress alreadyhere’s an implementation example) or Vault to store the credentials encrypted, rather than in plaintext.

Using Credentials

REST API

The credentials can be passed along to REST API requests served over https:// using Basic Auth / RFC 7617, which is nearly ubiquitous in its availability — here’s the documentation for how to use it with cURL.

For a simple command-line script example, just swap out USERNAME, PASSWORD, and HOSTNAME in this with their respective values:

curl --user "USERNAME:PASSWORD" https://HOSTNAME/wp-json/wp/v2/users?context=edit

XML-RPC API

To use a generated application password with the legacy XML-RPC API, you can just use it directly in lieu of the account’s real password.

For a simple command-line script example, again just swap out USERNAME, PASSWORD, and HOSTNAME in this with their respective values:

curl -H 'Content-Type: text/xml' -d '<methodCall><methodName>wp.getUsers</methodName><params><param><value>1</value></param><param><value>USERNAME</value></param><param><value>PASSWORD</value></param></params></methodCall>' https://HOSTNAME/xmlrpc.php

Future 🔮 APIs

The application passwords authentication scheme can also be applied to future APIs for WordPress as they become available. For example, if GraphQL or other systems are enabled in WordPress, application passwords will provide them with a solid, established authentication infrastructure to build off of out of the box.

As an example of this, with a trivial code addition identifying whether the current load is an api request, WPGraphQL will now be able to accept authenticated requests without the need of an ancillary plugin, using just the application passwords functionality that has merged into core.

Using an Application Password on wp-login.php

You can’t. 😅 The point of application passwords are that they are to be used programmatically for applications, and not by humans for interactive sessions.

Feature Availability

By default, Application Passwords is available to all users on sites served over SSLSSL Secure Sockets Layer. Provides a secure means of sending data over the internet. Used for authenticated and private actions./HTTPSHTTPS HTTPS is an acronym for Hyper Text Transfer Protocol Secure. HTTPS is the secure version of HTTP, the protocol over which data is sent between your browser and the website that you are connected to. The 'S' at the end of HTTPS stands for 'Secure'. It means all communications between your browser and the website are encrypted. This is especially helpful for protecting sensitive data like banking information.. This can be customized using the wp_is_application_passwords_available and wp_is_application_passwords_available_for_user filters.

For example, to completely disable Application Passwords add the following code snippet to your site.

add_filter( 'wp_is_application_passwords_available', '__return_false' );

Without SSL, it is possible for the Application Password to be seen by an attacker on your networknetwork (versus site, blog) or the network between your site and the authorized application. If you are ok with this risk, you can force availability with the following code snippet.

add_filter( 'wp_is_application_passwords_available', '__return_true' );

If desired, it is possible to restrict what users on your site can use the Application Passwords feature. For example, to restrict usage to administrator users, use the following code snippet.

function my_prefix_customize_app_password_availability(
	$available,
	$user
) {
	if ( ! user_can( $user, 'manage_options' ) ) {
		$available = false;
	}

	return $available;
}

add_filter(
	'wp_is_application_passwords_available_for_user',
	'my_prefix_customize_app_password_availability',
	10,
	2
);

Future Development

Authentication Scoping

In future versions, the expectation is to include the ability to scope a given application password to limit its access. The intention is to work on building this in plugin-land until it’s ready for a core proposal.

What might password scoping look like? Here’s some methods being considered:

  • In a multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site environment, either restrict the credentials to a subset of the user’s blogs, or restrict it to only operate in a normal “blogblog (versus network, site) adminadmin (and super admin)” context, and not a “network admin” context.
  • Restrict functionality to only manage content — posts, pages, comments, custom post types — and disallow infrastructure management functionality like managing plugins, themes, and users.
  • Restrict the role that credentials can allow an application to operate as. For example, an Editor may restrict a set of credentials to only operate as though they had Author or Contributor permissions.

However this is done, implementing additional functionality to enforce the principle of least privilege on an application-by-application basis is a worthwhile expansion on the included functionality.

Fine-grained Capabilities

Right now, a user’s application passwords can be managed by any user who has permission to edit_user them. The ability to customize this behavior using a new set of more fine-grained capabilities is currently planned for 5.7.

Eventually Two-Factor Authentication?

Another useful bit of application passwords is that it will removes an obstacle for the inclusion of multi-factor authentication on interactive logins.

Previously, if you enabled an interactive step — whether captcha or second factor validation — on login pages, you would be in a bind with other non-interactive authentications, for example the legacy XML-RPC system. After all, if a bad actor can just brute force or use social engineering to discern the user’s password, it would be trivially usable via XML-RPC, where there is no ability to include an interactive prompt, and that functionality would need to be disabled entirely.

With that use case now being provided for via application passwords, there is additional flexibility for the normal browser-based wp-login.php system to evolve.

Further Resources

For 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 or enhancements, open a Trac ticket in the Login and Registration component with the rest-api focus.

Props @timothyblynjacobs, @m_butcher, @desrosj, @jeffmatson, for helping to write, review, and proofread.

#5-6, #application-passwords, #authentication, #core-passwords, #dev-notes, #rest-api, #two-factor

Dev Chat Summary: November 04 2020

Hello! Here’s what happened in the coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. dev chat on Wednesday, November 4, 2020, 05:00 UTC and Wednesday, November 4, 2020, 20:00 UTC, following this agenda.

05:00 UTC core dev chat

@thewebprincess facilitated the meeting and took notes. Find the full Slack archive here.

20:00 UTC core dev chat

@thelmachido facilitated the meeting and @laurora took notes. The full Slack archive can be viewed here.

Both groups followed this agenda: https://make.wordpress.org/core/2020/11/04/dev-chat-agenda-october-4th-november-2020/

Announcements

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. 3 of 5.6 has been released!

WordPress 5.5.2 & 5.5.3 were also released. You can read up on the technical details in this post.

Highlighted Posts

Introducing auto-updates interface for Core major versions in WordPress 5.6

What’s next in Gutenberg? (November)

Updates from Component Maintainers/Focus Leads

General:
@sergeybiryukov reminded us that PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 8 release is scheduled for November 26. We have two weeks until November 17 (scheduled date for WordPress 5.6 RC1) to discover and fix any remaining issues. Please see the PHP 8 call for testing: https://make.wordpress.org/core/2020/10/06/call-for-testing-php-8-0/. We need more testing on PHP 8, expanding test coverage, and creating tickets for any issues found.

Build/Test Tools:
@sergeybiryukov shared the following updates:

  • The test matrix on Travis was trimmed for older branches to remove the jobs that are no longer necessary. See #51705 for more details.
  • Multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site test failures 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/ Actions were fixed, see #51670 for more details.

Open Floor

@ahmedchaion asked if there were any plans to have a New Contributor Meeting suited to APAC timezones. The group agreed that there’s:
1. No reason  we can’t have one if there are available contributors to run it
2. And that the regular APAC Triagetriage The act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors. session fulfills that gap to some extent.
@thewebprincess asked if there were any core requirements for someone willing to run a new contributor meeting and if there was any documentation available. @sergeybiryukov followed up by stating there is no documentation currently available for this, but the following links might be helpful:

The group had a lively (and lengthy) discussion on the auto-updates UIUI User interface. The full transcript of the discussion can be viewed here.

@nalini highlighted the latest Month in WordPress post. And also shared the write-ups from the WordPress translation celebrations, adding that the Marketing and Polyglots teams are now working on questions and answers to encourage translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization., including about releases.

Next Dev Chat meetings

The next meetings will take place on Wednesday, November 11, 2020, 05:00 UTC and Wednesday, November 11, 2020, 20:00 UTC in the #core 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. Please feel free to drop in with any updates or questions.

#5-5-2, #5-5-3, #5-6, #dev-chat, #summary

Updating core jQuery to version 3 – part 2

A 3-step plan was outlined for upgrading the version of jQuery bundled with core in June 2020.

The first step was included with WordPress 5.5, which stopped enabling jQuery Migrate version 1.x by default.

As part of #50564, part two of this process was committed, which updated the bundled jQuery version to 3.5.1. Alongside this, jQuery Migrate was also updated to the newer 3.3.1 version.

For the duration of WordPress 5.6, the migrate script will remain enabled by default, to capture any unexpected uses of deprecated features.

Do note that the Migrate script for version 3 is not compatible with features that the previous migrate script provided a polyfill for, and features previously marked as deprecated are no longer available.

When testing the changes, it is recommended to have SCRIPT_DEBUG defined and set to true, this will load jQuery Migrate in debug mode, and output stack traces in your 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/. developer console.

As this is a major upgrade to the jQuery library, please make sure you test your plugins and themes as thoroughly as possible before the release of WordPress 5.6 to avoid any preventable breakage.

The jQuery Core Upgrade Guide provides details on what features are deprecated, and removed, and how to upgrade your code accordingly.

#5-6, #dev-notes, #jquery

What’s new in Gutenberg? (4 November)

This is the first 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/ release that is not going to be included entirely in WordPress 5.6. The important bug fixes were backported to WordPress 5.6 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. 2 and 3.

In addition to the stability work for WordPress 5.6, the contributors also focused on improvements to the Full-site editing flows. The FSE experiment will be automatically enabled if you activate 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.-based theme.

The site editor and its navigation panel saw a lot of improvements as well.

Site Editor Screen

9.3 🇲🇾

Enhancements

  • Support for all units in Font Size presets. (26475)
  • Sort post formats alphabetically by translated name. (26305)
  • Ensure Alignment options are always rendered in the same order. (26269)
  • Buttons block: Overhaul alignment and justification controls. (23168)
  • a11yAccessibility 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): Retain focus position when tabbing back to the block toolbar. (25760)
  • Dark mode UIUI User interface enhancements. (26483) (26510)
  • Social Links: Add Patreon, Telegram, and Tiktok icons. (26118)

Bug Fixes

  • Fix Visual regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5. on the color palette editor. (26614)
  • wordpress/scripts: Fix error in ignore-emit-webpack-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. (26591)
  • Cover block: Restore default overlay background. (26569) (26625)
  • 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 incorrectly pluralized strings. (26565)
  • Limit the editor interface to max-width 100%. (26552)
  • Ensure editor footer remains at the bottom of the screen when navigating regions. (26533)
  • URLInput: Use debounce() instead of throttle(). (26529)
  • Heading Block: Fix double alignment controls in toolbar. (26492)
  • Fix Block preview vertical offset. (26487)
  • Reusable Blocks: Make the number retrieved from the 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. unlimited. (26486)
  • Fix editor error when an empty reusable block exists. (26484)
  • Latest Posts: Add missing classname. (26477)
  • Fix single column block display for smaller screens. (26438)
  • Turn off autocomplete for ComboboxControl components. (26427)
  • Fix parent post selector initial value and search. (26397)
  • Fix gallery block undo issue. (26377)
  • Fix spellings in the Getting Started guide. (26310)
  • Fix embed blocks rendering in 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. areas. (26307)
  • Fix design of color/gradient controls. (26255)
  • Fix drop zone indicators for non blocks. (25986)
  • Fix left and right alignments for video embeds. (24847)
  • Next Page block: Center text properly. (26515)

New APIs

  • Allow text buttons in DropdownMenu. (26425)
  • Support custom viewportWidth in block previews (example). (26346)
  • Change updateSelection property to false for InnerBlocks. (26312)

Experiments

  • Full Site Editing :
    • Disable customizerCustomizer Tool built into WordPress core that hooks into most modern themes. You can use it to preview and modify many of your site’s appearance settings. and widgets screens. (26594)
    • Automatically enable FSE experiment. (26500)
    • Remove the demo templates. (26419)
    • Strip post ids from template part blocks on export. (26268)
    • Allow themes to live in a subdirectory. (26391)
  • Introduce the layout prop to InnerBlocks. (26380)
  • Site Editor
    • Add Dropdown to Create Generic Templates. (26284)
    • Prevent inserter overscroll. (26432) (26583)
    • Fix dirty template and template parts on template creation. (26560)
    • Fix composite role warnings triggered by template part previews. (26406)
    • Reduce the Amount of Data Passed Through the Components Tree. (26463)
    • Add the option to convert a template part to regular blocks. (26488)
    • Fix Invisible Template Previews in the 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.. (26424)
    • Add convert to template part flow. (20445)
    • Fix custom template part theme metaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress.. (26587)
  • Query block:
    • Add initial variations. (26378)
    • Add sticky support. (26279)
  • Global Styles:
    • Use block settings on the block panels. (26218)
    • Fix: Font size picker regression on edit site global styles. (26603)
    • Process settings only once. (26330)
  • Navigation Component:
    • Add Support for RTL Languages. (26334)
    • Styling revisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision.. (26338)
    • Fix focus behavior when opening the panel. (26296)
    • Fix the height of the Navigation panel and make it scrollable. (26187)
    • Search Control in Menu Titles. (25315)
  • Use a DropdownMenu for menu selection on the navigation screen. (25390)

Documentation

  • Update glossary to include more block-based terminology. (26478)
  • Update triagetriage The act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors. documentation for clarity around closing issues and labels. (26480)
  • Update WordPress versions document to include 5.6. (26365)
  • Typos and tweaks: (26491), (26553), (26437), (26400), (26566).
  • Storybook: Fix broken BlockDraggable story. (26457) (26431)

Code Quality

  • Remove anonymous components from global styles sidebar. (26604)
  • Add types to components:
    • Tip. (26173)
    • BaseControl and VisuallyHidden. (26078)
  • Improve wordpress/I18n types. (26171)
  • Migrate to builtin data controls. (25993) (25949) (25773) (25990) (26509) (25772)
  • Chore: Ensure WordPress packages share the same hoisted dependencies. (26453)
  • Use CSSCSS Cascading Style Sheets.-in-JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. in wordpress/components:

Build Tooling

  • Components: Copy SCSS file from reactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/.-dates to components package. (26534)
  • webpack: Replace legacy namedChunks/namedModules options with chunkIds/moduleIds. (26502)
  • Rewrite sideEffects flags to use only positive patterns. (26452)
  • Load the Twenty Twenty-one theme by default in Gutenberg’s local environement. (26414)
  • Build: Assign the library exports to window.wp rather than this.wp. (26272)
  • Move to Dart Sass compiler. (25628)
  • Fix composer test failures due to invalidinvalid A resolution on the bug tracker (and generally common in software development, sometimes also notabug) that indicates the ticket is not a bug, is a support request, or is generally invalid. lock. (26472)
  • Update node-watch to 0.7.0. (26403)
  • Release tool: Support multiple RCs. (25971)
  • jest-puppeteer-axe: Migrate to @axe-coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress./puppeteer. (25659)
  • Improve End-to-End tests stability:
    • Fix autosave end-to-end tests. (26416)
    • Fix ‘Multi entity saving -> site editor’ end-to-end failures. (26371)
    • Fix Twenty Twenty One related end-to-end test failures. (26341)
    • Fix demo test by disabling the welcome dialog. (26314)
    • Disable BlockPreviews from axe-core tests. (26527)
    • Site editor: Fix end-to-end tests navigation panel. (26454)
    • Consolidate sequential multi-entity-saving tests. (26373)
    • Make the adding patterns test stable. (26345)

Various

  • Create Block: Update the list of categories to pick from. (26448)
  • Removes extra full stop from preferences. (26586)
  • wordpress/scripts: Configure all the tools to skip vendor folder. (26450)

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.

VersionLoading TimeKeyPress Event (typing)
Gutenberg 9.36.6s27.16ms
Gutenberg 9.26.2s26.62ms
WordPress 5.56.4s27.53ms

Kudos for all the contributors that helped with the release. 👏

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

Dev Chat Agenda: November 4th 2020

Here is the #agenda for this week’s meetings happening at:
Wednesday, 4 November 2020, 0500UTC and Wednesday, 4 November 2020, 2000UTC .

The #dev-chat meetings will be held on Wednesday, 4 November 2020, 05:00UTC and Wednesday, 4 November 2020, 2000UTC. These meetings are held in the #core channel. To join the meeting, you’ll need an account on the Making WordPress Slack .

#5-6, #agenda