Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1044 commits
Select commit Hold shift + click to select a range
30a849a
Tests: Make function test data providers static.
lancewillett Oct 17, 2026
9cbfedb
Tests: Make admin test data providers static.
lancewillett Oct 17, 2026
1e7d5ea
Tests: Make bookmark test data providers static.
lancewillett Oct 17, 2026
05d314a
Tests: Make sitemap test data providers static.
lancewillett Oct 17, 2026
b65c057
Tests: Make comment test data providers static.
lancewillett Oct 17, 2026
6969ec3
Tests: Make term test data providers static.
lancewillett Oct 17, 2026
4aa62b3
Tests: Make compatibility test data providers static.
lancewillett Oct 17, 2026
4b28542
Tests: Make date test data providers static.
lancewillett Oct 17, 2026
716a329
Tests: Make font test data providers static.
lancewillett Oct 17, 2026
a2297e0
Tests: Make block support test data providers static.
lancewillett Oct 17, 2026
66e0f0b
Tests: Make canonical redirect test data providers static.
lancewillett Oct 17, 2026
3cf8712
Tests: Cover REST page response preparation.
lancewillett Oct 17, 2026
27f834b
Tests: Cover navigation fallback response preparation.
lancewillett Oct 17, 2026
1a95edb
Tests: Cover whitespace and character references in `class_list()`.
lancewillett Oct 17, 2026
c7c91ef
Tests: Add coverage for `WP_Importer` and `get_cli_args()`.
lancewillett Oct 17, 2026
b877d72
Tests: Cover serialized parent block helpers.
lancewillett Oct 17, 2026
d57569e
Tests: Add coverage for `get_category()`.
lancewillett Oct 17, 2026
696c1f4
Tests: Add coverage for `cat_is_ancestor_of()`.
lancewillett Oct 17, 2026
2695d61
Database: Avoid a fatal error in `wpdb::load_col_info()` if the resul…
SergeyBiryukov Oct 17, 2026
9f29727
Tests: Add coverage for `clean_category_cache()`.
lancewillett Oct 17, 2026
2fa1b23
Tests: Add coverage for `sanitize_category()`.
lancewillett Oct 17, 2026
119c23c
Tests: Add coverage for `sanitize_category_field()`.
lancewillett Oct 17, 2026
2930244
Tests: Add coverage for `get_the_category()`.
lancewillett Oct 17, 2026
883b5b5
Tests: Add coverage for `has_category()`.
lancewillett Oct 17, 2026
1341634
Tests: Add coverage for `user_can_access_admin_page()`.
lancewillett Oct 17, 2026
023740f
Tests: Add coverage for `the_category()`.
lancewillett Oct 17, 2026
795df58
Tests: Add coverage for `walk_category_tree()`.
lancewillett Oct 17, 2026
6c132f5
Tests: Add coverage for `get_tag()`.
lancewillett Oct 17, 2026
80188ad
Tests: Add coverage for `walk_category_dropdown_tree()`.
lancewillett Oct 17, 2026
6edd2f5
Tests: Add coverage for `wp_get_code_editor_settings()`.
lancewillett Oct 17, 2026
fda8803
Tests: Add coverage for `in_category()`.
lancewillett Oct 17, 2026
78a1867
Tests: Add coverage for `get_the_tags()`.
lancewillett Oct 17, 2026
f414f48
Tests: Add coverage for `image_edit_apply_changes()`.
lancewillett Oct 17, 2026
8c60f28
Tests: Add coverage for `get_the_term_list()`.
lancewillett Oct 17, 2026
94cbab2
Tests: Add coverage for `the_terms()`.
lancewillett Oct 17, 2026
b6100bd
Tests: Add coverage for `term_description()`.
lancewillett Oct 17, 2026
597a351
Tests: Add coverage for `get_the_tag_list()`.
lancewillett Oct 17, 2026
916b0ce
Tests: Add coverage for `the_tags()`.
lancewillett Oct 17, 2026
1ce5e8f
Tests: Add coverage for `the_author_meta()`.
lancewillett Oct 17, 2026
935dab6
Tests: Add coverage for `is_multi_author()`.
lancewillett Oct 17, 2026
7b8b2f4
Tests: Add coverage for `the_author()`.
lancewillett Oct 17, 2026
9c7eaad
Tests: Add coverage for `the_author_link()`.
lancewillett Oct 17, 2026
a1e45a0
Tests: Add coverage for `get_author_posts_url()`.
lancewillett Oct 17, 2026
e4d8bdd
Tests: Isolate the navigation menu ID filter per test.
lancewillett Oct 18, 2026
e1ed2ab
Tests: Reuse existing fixtures in REST user tests.
lancewillett Oct 18, 2026
acf82f5
Script Loader: Remove obsolete compression constants.
westonruter Oct 18, 2026
518cd65
Script Loader: Remove the unused compression test.
westonruter Oct 18, 2026
88912df
Database: Ignore default integer display widths in `dbDelta()` on Mar…
SergeyBiryukov Oct 18, 2026
8cffc95
Editor: Add emoji reactions ❤️ 🎉 😄 👀 🚀
adamsilverstein Oct 18, 2026
7ed4f03
Media: stop adding crossorigin attributes in the editor.
adamsilverstein Oct 18, 2026
8307885
Media: Generate animated image sub-sizes by default.
adamsilverstein Oct 18, 2026
4f9f74c
Editor: Remove theme.json preset items of unexpected types to prevent…
ramonjd Oct 18, 2026
d1cd73a
REST API: Send URL sideloads through the shared attachment insert path.
adamsilverstein Oct 18, 2026
883ff4a
Editor: ignore unsupported duotone attribute types.
tellthemachines Oct 19, 2026
a17507f
REST API: Enable filtering comments by multiple statuses.
adamsilverstein Oct 19, 2026
8e01500
HTML API: Simplify the `class_list()` loop.
sirreal Oct 19, 2026
8778884
Script Loader: Document `wp_inline_script_attributes` `$data` paramet…
sirreal Oct 19, 2026
a4cc58e
Docs: `get_block_wrapper_attributes()` expects unescaped values.
sirreal Oct 19, 2026
87e86a9
Administration: Avoid `$()` with non-literal selectors.
sirreal Oct 19, 2026
1f93570
Editor: Add author support to the `wp_block` post type.
fabiankaegy Oct 19, 2026
1881d63
Abilities API: Allow declaring required capabilities
gziolo Oct 19, 2026
f64aa5a
Interactivity API: Print `data-wp-html` tokens as the `wpServerHtml` …
luisherranz Oct 19, 2026
5fc0a06
Toolbar: Fix display name live preview and "Howdy" color
mcsf Oct 19, 2026
f29d3e1
View config endpoint: add align to author and extract utility.
oandregal Oct 19, 2026
254c36d
Toolbar: Undo partial changes to user menu
mcsf Oct 19, 2026
c23d0e5
Tests: Make AJAX data providers static.
lancewillett Oct 19, 2026
0d60d7e
Tests: Make HTTP data providers static.
lancewillett Oct 19, 2026
38b4b34
Tests: Make rewrite data providers static.
lancewillett Oct 19, 2026
6737fec
Tests: Simplify theme fixture setup in REST API tests.
lancewillett Oct 19, 2026
253dfb4
Tests: Cover `wp_is_serving_rest_request()`.
lancewillett Oct 19, 2026
3c6484f
Tests: Cover internal host and link helpers.
lancewillett Oct 19, 2026
38f5cdf
Tests: Cover `wp_removable_query_args()`.
lancewillett Oct 19, 2026
5fd32be
Tests: Cover `wp_get_server_protocol()`.
lancewillett Oct 19, 2026
9607bf4
Tests: Cover `wp_is_jsonp_request()`.
lancewillett Oct 19, 2026
a2b5979
Tests: Cover `wp_is_json_request()`.
lancewillett Oct 19, 2026
7e02b77
Tests: Cover `the_title_attribute()`.
lancewillett Oct 19, 2026
962c8d7
Tests: Cover `wp_is_xml_request()`.
lancewillett Oct 19, 2026
ecb7bfc
Editor: Add the entity actions API.
jorgefilipecosta Oct 19, 2026
1e91058
Tests: Pair the hidden admin-page access cases.
lancewillett Oct 19, 2026
2102b68
Toolbar: Fix display name live preview and "Howdy" color.
mcsf Oct 19, 2026
53b1105
Tests: Cover `tag_description()`.
lancewillett Oct 19, 2026
c30b2af
Tests: Strengthen code editor settings coverage.
lancewillett Oct 19, 2026
a3f014c
Tests: Verify edits target the filtered image editor.
lancewillett Oct 19, 2026
ffa4c0a
Tests: Cover `has_tag()`.
lancewillett Oct 19, 2026
880efab
Tests: Cover `the_author_posts_link()`.
lancewillett Oct 19, 2026
af4ae3b
Tests: Cover `the_privacy_policy_link()`.
lancewillett Oct 19, 2026
b9d0c53
Tests: Cover `the_author_posts()`.
lancewillett Oct 19, 2026
08b2dc2
Code Quality: Narrow types for REST requests and responses.
westonruter Oct 19, 2026
fef7474
Editor: Add the entity fields API.
oandregal Oct 19, 2026
983d4a0
Tests: Cover `get_year_link()`.
lancewillett Oct 19, 2026
1581a36
Tests: Cover `the_permalink()`.
lancewillett Oct 19, 2026
2ca11ef
Tests: Cover `get_month_link()`.
lancewillett Oct 19, 2026
402dc0e
Tests: Cover `wp_is_file_mod_allowed()`.
lancewillett Oct 19, 2026
e0fdb8a
Tests: Cover `get_day_link()`.
lancewillett Oct 19, 2026
344a454
Tests: Cover suggested privacy policy content updates.
lancewillett Oct 19, 2026
0831153
Tests: Cover `the_guid()`.
lancewillett Oct 19, 2026
ee70d19
Tests: Cover `wp_doing_ajax()`.
lancewillett Oct 19, 2026
b48f4a4
Tests: Cover `wp_doing_cron()`.
lancewillett Oct 19, 2026
5e2b02a
Tests: Cover `wp_using_themes()`.
lancewillett Oct 19, 2026
2fe2f15
Build/Test Tools: Report PHPStan errors in a pull request comment.
westonruter Oct 19, 2026
622e222
Tests: Cover `wp_get_environment_type()`.
lancewillett Oct 19, 2026
7e916f2
Tests: Cover `the_time()`.
lancewillett Oct 19, 2026
be7ad85
Tests: Cover `wp_installing()`.
lancewillett Oct 19, 2026
a6d66d9
Tests: Cover `the_modified_time()`.
lancewillett Oct 19, 2026
1758ea6
Tests: Cover `the_modified_date()`.
lancewillett Oct 19, 2026
520af33
Tests: Cover `wp_using_ext_object_cache()`.
lancewillett Oct 19, 2026
3508c2e
Tests: Cover `get_post_format_link()`.
lancewillett Oct 19, 2026
ea10c35
Tests: Cover `the_shortlink()`.
lancewillett Oct 19, 2026
4148046
Tests: Cover `the_modified_author()`.
lancewillett Oct 19, 2026
724c553
Tests: Cover `get_search_link()`.
lancewillett Oct 19, 2026
04e6a05
Tests: Cover `get_delete_post_link()`.
lancewillett Oct 19, 2026
a3248ad
Tests: Cover `is_protected_endpoint()`.
lancewillett Oct 19, 2026
8c0b2a9
Tests: Cover `is_protected_ajax_action()`.
lancewillett Oct 19, 2026
81ca319
Tests: Cover `wp_is_maintenance_mode()`.
lancewillett Oct 19, 2026
bb2e705
Tests: Cover `wp_skip_paused_plugins()`.
lancewillett Oct 19, 2026
861fef6
Tests: Cover `wp_skip_paused_themes()`.
lancewillett Oct 19, 2026
b70e572
Tests: Cover `wp_is_recovery_mode()`.
lancewillett Oct 19, 2026
dbc4560
Tests: Cover `wp_magic_quotes()`.
lancewillett Oct 19, 2026
3831bf5
Tests: Test edited-file error output.
lancewillett Oct 19, 2026
609b4cd
Tests: Test active plugin loading.
lancewillett Oct 19, 2026
5e67e01
Tests: Test internal character encoding.
lancewillett Oct 19, 2026
a2483a9
Tests: Test active theme loading.
lancewillett Oct 19, 2026
897fd88
Tests: Test edited-file error scraping setup.
lancewillett Oct 19, 2026
c4d8253
Tests: Test blog administration detection.
lancewillett Oct 19, 2026
5a52629
Tests: Test user edit links.
lancewillett Oct 19, 2026
de7ea88
Tests: Test comment edit link output.
lancewillett Oct 19, 2026
a9398d7
Editor: Register the core entity actions on the server.
jorgefilipecosta Oct 19, 2026
388a22f
Editor: Add the attachment entity view config for the media editor.
jorgefilipecosta Oct 19, 2026
afa224f
Tests: Cover tag retrieval.
lancewillett Oct 19, 2026
9765946
Tests: Cover media state labels.
lancewillett Oct 19, 2026
24af905
Tests: Cover JSONP callback edge cases.
lancewillett Oct 19, 2026
32518cf
Tests: Strengthen mobile detection fixtures.
lancewillett Oct 19, 2026
fc37f58
Tests: Cover tag edit links.
lancewillett Oct 19, 2026
caf396d
Tests: Cover feed link output.
lancewillett Oct 19, 2026
114231d
Tests: Use the error assertion in image resize tests.
lancewillett Oct 19, 2026
6264622
Tests: Cover registered entity action modules.
lancewillett Oct 19, 2026
47f473b
Tests: Use the error assertion in spam authentication tests.
lancewillett Oct 19, 2026
844fa77
Tests: Restore entity action module coverage annotations.
lancewillett Oct 19, 2026
aa7198f
Tests: Use the error assertion in term tests.
lancewillett Oct 19, 2026
fa3d847
Editor: Fix link color in the "Large title" query pattern.
mikachan Oct 19, 2026
e62a5de
Tests: Make media data providers static.
lancewillett Oct 19, 2026
e205f82
Editor: Register the core entity fields on the server.
jorgefilipecosta Oct 19, 2026
b3f6bc3
Upgrade/Install: Report fatal errors in auto-update emails.
westonruter Oct 19, 2026
5832f82
Administration: Replace Dashicons in admin bar and sidebar with wp-ic…
mcsf Oct 19, 2026
40979e0
Tests: Verify timezone persistence and restore original settings.
lancewillett Oct 19, 2026
cc60bcd
Script Loader: Retire script and style concatenation.
westonruter Oct 19, 2026
9038784
Upgrade/Install: Explain when automatic updates cannot run.
SergeyBiryukov Oct 19, 2026
7cede9a
General: Bump the pinned hash for Gutenberg to 7b95ee96b (24.2.0).
peterwilsoncc Oct 20, 2026
9fbaa2d
Media: Enable client-side uploads in the Media Library and modal.
adamsilverstein Oct 20, 2026
0a52ffb
Posts, Post Types: Add `pre_wp_count_attachments` filter.
westonruter Oct 20, 2026
1a03151
Editor: Add a background clip block support.
aaronrobertshaw Oct 20, 2026
065c362
Editor: Scope state rules to the block's own element.
aaronrobertshaw Oct 20, 2026
ba4c6de
Abilities API: Preserve empty objects in JSON results
gziolo Oct 20, 2026
051f9dc
Administration: Add a ”On This Day” section to the Activity widget
audrasjb Oct 20, 2026
a90a667
JSON Schema: Prepare default values according to their schemas
gziolo Oct 20, 2026
d1ce8fe
Editor: Preload the entity fields and actions the editors read.
jorgefilipecosta Oct 20, 2026
5caf6fe
Tests: Port Gutenberg tests for REST action links and view configs.
jorgefilipecosta Oct 20, 2026
147200e
Editor: Add pseudo-selector support for text inputs.
mikachan Oct 20, 2026
5890394
Editor: Add pseudo-selector support for select elements.
Mamaduka Oct 20, 2026
00dc70f
General: Bump the pinned hash for Gutenberg to be6a50be6.
Mamaduka Oct 20, 2026
43f60f4
Editor: Support the current state for Navigation Submenu in `theme.js…
audrasjb Oct 20, 2026
9ec9604
Editor: Remove the unsupported `single` action context.
jorgefilipecosta Oct 20, 2026
3673e3a
REST API: Use `wp_prepare_json_value_for_client()` for view configs a…
jorgefilipecosta Oct 20, 2026
168c48d
Administration: Add a reusable `.delete-link` CSS class.
audrasjb Oct 20, 2026
5f92be5
REST API: Cleanup empty test file.
dream-encode Oct 20, 2026
8573614
WordPress 7.2 Beta 1.
audrasjb Oct 20, 2026
f141543
Post WordPress 7.2 Beta 1 version bump.
audrasjb Oct 20, 2026
3892b84
Docs: Correct the `@param` tag in a `wp_is_internal_link()` test.
SergeyBiryukov Oct 20, 2026
0e8e5fa
Tests: Cover legacy widget settings conversion.
lancewillett Oct 20, 2026
9495270
Tests: Cover theme data preparation for JavaScript.
lancewillett Oct 20, 2026
2e9c2c7
Twenty Nineteen: Adjust `sass` usage.
SergeyBiryukov Oct 20, 2026
0d38a53
Tests: Cover automatic update eligibility decisions.
lancewillett Oct 20, 2026
f4a9abd
Tests: Expand category ancestry tests.
lancewillett Oct 20, 2026
ff0b79c
Tests: Cover permalink anchor output.
lancewillett Oct 20, 2026
69882e6
Tests: Cover navigation menu conditionals.
lancewillett Oct 20, 2026
4c8b298
Build/Test Tools: Cover user creation and bulk deletion.
lancewillett Oct 20, 2026
7c6970b
Tests: Cover media date filtering in attachment queries.
lancewillett Oct 20, 2026
3c8f6ae
Build/Test Tools: Cover page parent selection in Quick Edit.
lancewillett Oct 20, 2026
06c9868
Build/Test Tools: Cover restoring a trashed post with Undo.
lancewillett Oct 20, 2026
0e425ad
Build/Test Tools: Cover moving selected posts to Trash in bulk.
lancewillett Oct 20, 2026
70d7e25
Build/Test Tools: Cover changing selected posts to drafts in bulk.
lancewillett Oct 20, 2026
b853e9d
Tests: Cover elapsed request time from `timer_float()`.
lancewillett Oct 20, 2026
0c656c2
Build/Test Tools: Cover persisted dashboard preferences.
lancewillett Oct 20, 2026
a6fa21a
Build/Test Tools: Cover successful media uploads.
lancewillett Oct 20, 2026
1045d14
Build/Test Tools: Cover plugin upload and management.
lancewillett Oct 20, 2026
38b021e
Tests: Cover search feed links.
lancewillett Oct 20, 2026
7dccbf6
Tests: Cover plugin header markup and translation.
lancewillett Oct 20, 2026
b096f17
Tests: Cover plugin lifecycle hook registration.
lancewillett Oct 20, 2026
ab6830a
Tests: Cover dispatch to the all hook.
lancewillett Oct 20, 2026
2a29ae9
Tests: Cover plugin dependency notices.
lancewillett Oct 20, 2026
0146efd
Tests: Cover page permalink generation.
lancewillett Oct 20, 2026
4de3802
Tests: Cover post type archive feed links.
lancewillett Oct 20, 2026
c81dd32
Tests: Cover bookmark editing links.
lancewillett Oct 20, 2026
f63fea7
Tests: Cover post datetime and timestamp helpers.
lancewillett Oct 20, 2026
78c7f02
Tests: Cover privacy policy content registration.
lancewillett Oct 20, 2026
6278945
Tests: Cover archive link markup.
lancewillett Oct 20, 2026
bfc5008
HTML API: Use `@link` instead of `@see` for URL references.
westonruter Oct 20, 2026
627db7d
Tests: Cover language attributes.
lancewillett Oct 20, 2026
cffa4b4
Tests: Cover trackback URLs.
lancewillett Oct 20, 2026
8147891
Tests: Cover comment links.
lancewillett Oct 20, 2026
38afbd9
Tests: Use `assertWPError()` in user tests.
lancewillett Oct 20, 2026
d2720e7
Tests: Use `assertWPError()` in theme tests.
lancewillett Oct 20, 2026
e6ee56b
Tests: Use `assertWPError()` in taxonomy tests.
lancewillett Oct 20, 2026
de3ef30
Tests: Use `assertWPError()` in REST users controller tests.
lancewillett Oct 20, 2026
2b749d9
Tests: Use `assertWPError()` in REST server tests.
lancewillett Oct 20, 2026
36668cf
Tests: Use `assertWPError()` in REST API tests.
lancewillett Oct 20, 2026
eae8dcb
Tests: Use `assertWPError()` in GD image resize tests.
lancewillett Oct 20, 2026
d595ea6
Tests: Use `assertWPError()` in image function tests.
lancewillett Oct 20, 2026
0e1f633
Tests: Use `assertWPError()` in GD image editor tests.
lancewillett Oct 20, 2026
00f1c96
Tests: Use `assertWPError()` in Customizer setting tests.
lancewillett Oct 20, 2026
6b2c73e
Tests: Use `assertWPError()` in image editor tests.
lancewillett Oct 20, 2026
e35a93c
Tests: Cover plugin installation status.
lancewillett Oct 20, 2026
b2a3f52
Tests: Cover plugin list table bulk actions.
lancewillett Oct 20, 2026
3d3a7eb
Tests: Use error assertions in Customizer nav menu tests.
lancewillett Oct 20, 2026
7c5c57e
Tests: Use error assertions in nav menu item setting tests.
lancewillett Oct 20, 2026
bc94e32
Tests: Use error assertions in block template tests.
lancewillett Oct 20, 2026
fdfbe2a
Tests: Use error assertions in authentication tests.
lancewillett Oct 20, 2026
dcd687e
Tests: Use error assertions in Customizer manager tests.
lancewillett Oct 20, 2026
0ffcf14
Build/Test Tools: Recognize REST uploads in the media E2E test.
lancewillett Oct 20, 2026
efed318
Tests: Cover AJAX plugin dependency checks.
lancewillett Oct 20, 2026
f94cad9
Tests: Cover plugin overwrite confirmation.
lancewillett Oct 20, 2026
12d246c
Tests: Cover plugin package validation.
lancewillett Oct 20, 2026
3acd32a
Tests: Cover plugin update notices.
lancewillett Oct 20, 2026
b4de250
Tests: Cover update counts and titles.
lancewillett Oct 20, 2026
c0d4813
Tests: Cover Site Health auto-update checks.
lancewillett Oct 20, 2026
1dc0c7c
Tests: Cover plugin debug information.
lancewillett Oct 20, 2026
f73eda6
Tests: Cover circular plugin dependency detection.
lancewillett Oct 20, 2026
e02bb57
Tests: Cover Site Health plugin version checks.
lancewillett Oct 20, 2026
4966630
Tests: Cover empty plugin list messages.
lancewillett Oct 20, 2026
48d627a
Docs: Use triple digit convention for `since` mentions in class `WP_T…
audrasjb Oct 20, 2026
ff2a71f
Docs: Allow a callable `$args` in `register_setting()`.
westonruter Oct 20, 2026
6591179
Security: Update `composer/ca-bundle` to version `1.6.0`.
peterwilsoncc Oct 21, 2026
cd6bc90
Build/Test Tools: Add types for dynamic constants in PHPStan.
westonruter Oct 21, 2026
e46ac23
Code Quality: Remove dead code and document bookmark exceptions.
westonruter Oct 21, 2026
92c1741
Security: Keep the previous secret version when a value is saved unch…
whyisjake Oct 21, 2026
16bdb6d
Tests: Use the null coalescing operators in the test suite.
SergeyBiryukov Oct 21, 2026
d229a1f
Editor: Generate custom CSS for blocks rendered by their parent block
ramonjd Oct 22, 2026
8f7616e
Bundled Themes: Ipsum dolor sit amet, consectetur adipiscing elit.
peterwilsoncc Oct 22, 2026
df3d798
Bundled Themes: Add missing assets to Ipsum theme.
audrasjb Oct 22, 2026
9063498
Bundled Themes: Add missing screenshot to Ipsum theme.
audrasjb Oct 22, 2026
e29e51d
Abilities API: Replace the `author_slug` filter of `core/content-quer…
jorgefilipecosta Oct 22, 2026
b4cd8f8
Widgets: Avoid sidebar name collision in `dynamic_sidebar()`.
SergeyBiryukov Oct 22, 2026
eaa3b6b
Formatting: Document `sanitize_key()` as accepting `mixed`.
westonruter Oct 22, 2026
bc5cfb3
Themes: Add `label` support to `theme.json` schema.
peterwilsoncc Oct 23, 2026
3fb786c
Comments: Restore child notes trashed with their parent note.
t-hamano Oct 23, 2026
212f9d5
Abilities API: Improve inline documentation
gziolo Oct 23, 2026
1bc27d1
Editor: Fix edge cases in the entity actions and fields APIs.
oandregal Oct 23, 2026
3968407
Abilities API: Align environment info permissions with Site Health
gziolo Oct 23, 2026
38a613a
Abilities API: Name the author of a `core/content-query` post only to…
jorgefilipecosta Oct 23, 2026
7900018
Merge remote-tracking branch 'upstream/trunk' into css-api/css-token-…
sirreal Oct 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ LOCAL_DIR=src
# Valid options are 'on' and 'off'.
LOCAL_NGINX_COMPRESSION=off

# How long browsers may cache static assets served by the web server, as an nginx `expires` value.
# Valid options are 'off' and a duration such as '1y'. A far-future duration matches typical
# production behavior, but edited CSS and JavaScript is then served stale until a hard reload.
LOCAL_NGINX_STATIC_EXPIRES=off

# The PHP version to use. Valid options are 'latest', and '{version}-fpm'.
LOCAL_PHP=latest

Expand Down
26 changes: 0 additions & 26 deletions .eslintignore

This file was deleted.

113 changes: 86 additions & 27 deletions .eslintrc-jsdoc.js
Original file line number Diff line number Diff line change
@@ -1,29 +1,88 @@
module.exports = {
rules: {
'require-jsdoc': 'off',
'valid-jsdoc': [ 'error', {
prefer: {
arg: 'param',
argument: 'param',
extends: 'augments',
returns: 'return',
/**
* ESLint v10 flat config file for JSDoc linting.
* This config is based on the original valid-jsdoc rules.
*/

const jsdocPlugin = require( 'eslint-plugin-jsdoc' );

module.exports = [
{
plugins: {
jsdoc: jsdocPlugin,
},
settings: {
jsdoc: {
tagNamePreference: {
'arg': 'param',
'argument': 'param',
'extends': 'augments',
'returns': 'return',
},
preferredTypes: {
'array': 'Array',
'bool': 'boolean',
'Boolean': 'boolean',
'float': 'number',
'Float': 'number',
'function': 'Function',
'int': 'number',
'integer': 'number',
'Integer': 'number',
'Number': 'number',
'object': 'Object',
'String': 'string',
'Void': 'void',
},
},
preferType: {
array: 'Array',
bool: 'boolean',
Boolean: 'boolean',
float: 'number',
Float: 'number',
int: 'number',
integer: 'number',
Integer: 'number',
Number: 'number',
object: 'Object',
String: 'string',
Void: 'void',
},
requireParamDescription: false,
requireReturn: false,
} ],
},
rules: {
'jsdoc/check-alignment': 'error',
'jsdoc/check-indentation': [ 'error', {
excludeTags: [
'deprecated',
'example',
'param',
'property',
'return',
'since',
'todo',
],
} ],
'jsdoc/check-line-alignment': [ 'error', 'always', {
tags: [ 'param', 'property' ],
} ],
'jsdoc/check-param-names': 'error',
'jsdoc/check-property-names': 'error',
'jsdoc/check-syntax': 'error',
'jsdoc/check-tag-names': [ 'error', {
definedTags: [
'memberOf',
'output',
'ticket',
'link',
],
} ],
'jsdoc/check-types': 'error',
'jsdoc/no-blank-blocks': 'error',
'jsdoc/no-blank-block-descriptions': 'error',
'jsdoc/require-description': 'error',
'jsdoc/require-hyphen-before-param-description': [ 'error', 'never' ],
'jsdoc/require-jsdoc': 'error',
'jsdoc/require-param': [ 'error', {
enableFixer: false,
} ],
'jsdoc/require-param-description': 'error',
'jsdoc/require-param-name': 'error',
'jsdoc/require-param-type': 'error',
'jsdoc/require-property': 'error',
'jsdoc/require-property-name': 'error',
'jsdoc/require-property-description': 'error',
'jsdoc/require-property-type': 'error',
'jsdoc/require-returns': 'error',
'jsdoc/require-returns-check': 'error',
'jsdoc/require-returns-description': 'error',
'jsdoc/require-returns-type': 'error',
'jsdoc/valid-types': 'error',
},
},
};
];
55 changes: 55 additions & 0 deletions .github/actions/setup-npm/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: 'Set up npm'
description: 'Installs the npm version required by the devEngines field of package.json, so every job resolves dependencies identically. Keeps the bundled npm when the field is absent.'

inputs:
working-directory:
description: 'Optional. The directory holding the package.json to read the required npm version from. Defaults to the workspace root.'
required: false
default: '.'
cache:
description: 'Optional. Whether to restore and save the npm cache. Defaults to true.'
required: false
default: 'true'

runs:
using: 'composite'
steps:
- name: Install npm
id: npm
env:
WORKING_DIRECTORY: ${{ inputs.working-directory }}
run: |
NPM_VERSION="$(jq -r '.devEngines.packageManager.version // empty' package.json)"
if [ -n "$NPM_VERSION" ]; then
# Contributors need the floor; CI stays on that major's newest release.
npm install --global "npm@${NPM_VERSION/>=/^}"
echo "Required npm version: $NPM_VERSION"
else
echo "No devEngines.packageManager.version, keeping the bundled npm."
fi
echo "Installed npm version: $(npm --version)"

# actions/setup-node cannot restore the npm cache: it locates the
# directory with `npm config get cache`, which runs before this step
# and fails the devEngines check under the bundled npm.
echo "cache-dir=$(npm config get cache | tr -d '\r')" >> "$GITHUB_OUTPUT"

# Scopes the cache key to this package and keeps the hashFiles patterns
# workspace-relative and free of a "./" prefix, so they match the same
# files as every other cache key.
PATH_PREFIX=""
if [ "$WORKING_DIRECTORY" != '.' ] && [ -n "$WORKING_DIRECTORY" ]; then
PATH_PREFIX="${WORKING_DIRECTORY%/}/"
fi
echo "path-prefix=$PATH_PREFIX" >> "$GITHUB_OUTPUT"
working-directory: ${{ inputs.working-directory }}
shell: bash

- name: Cache npm downloads
if: ${{ inputs.cache == 'true' }}
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: ${{ steps.npm.outputs.cache-dir }}
key: npm-cache-${{ runner.os }}-${{ runner.arch }}-${{ steps.npm.outputs.path-prefix }}lock-${{ hashFiles(format('{0}package-lock.json', steps.npm.outputs.path-prefix), format('{0}patches/**', steps.npm.outputs.path-prefix)) }}
restore-keys: |
npm-cache-${{ runner.os }}-${{ runner.arch }}-${{ steps.npm.outputs.path-prefix }}lock-
20 changes: 20 additions & 0 deletions .github/actions/smoke-check/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: 'Smoke check a WordPress installation'
description: 'Serves an installed single site with PHP built-in web server and checks that its front end, REST API, and admin respond.'

inputs:
admin-user:
description: 'The username of an administrator account on the site.'
required: true
admin-password:
description: 'The password of the administrator account.'
required: true

runs:
using: 'composite'
steps:
- name: Serve the site and check it
shell: bash
run: bash "${GITHUB_ACTION_PATH}/smoke-check.sh"
env:
WP_ADMIN_USER: ${{ inputs.admin-user }}
WP_ADMIN_PASSWORD: ${{ inputs.admin-password }}
117 changes: 117 additions & 0 deletions .github/actions/smoke-check/smoke-check.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
#!/bin/bash
#
# Smoke checks an installed WordPress single site over HTTP.
#
# Runs from the root of the installation, with WP-CLI available. Multisite is not supported because
# a network's domain lives in wp-config.php and the database, not just an option.

set -euo pipefail

: "${RUNNER_TEMP:?}" "${WP_ADMIN_USER:?}" "${WP_ADMIN_PASSWORD:?}"

site_port=8889
site_url="http://127.0.0.1:${site_port}"
server_log="${RUNNER_TEMP}/server.log"
jar="${RUNNER_TEMP}/cookies.txt"
: > "${jar}"
response="${RUNNER_TEMP}/response.txt"
code="${RUNNER_TEMP}/http-code.txt"
http_code=''

version="$(wp core version)"

# Nothing undoes these, so the site is only good for this check afterwards.
wp option update home "${site_url}"
wp option update siteurl "${site_url}"
# A fresh install shows posts here already, but the front page check below needs it.
wp option update show_on_front posts
# Both make requests no check asked for, and the update checks call api.wordpress.org.
wp config set DISABLE_WP_CRON true --raw
wp config set WP_HTTP_BLOCK_EXTERNAL true --raw

# opcache counts php -S as a web SAPI, so the runner's JIT runs here and segfaults.
php -d opcache.jit=disable -S "127.0.0.1:${site_port}" -t . > "${server_log}" 2>&1 &
server_pid=$!

stop_server() {
local status=$?
kill "${server_pid}" 2> /dev/null || true
wait "${server_pid}" 2> /dev/null || true
[ "${status}" -eq 0 ] || cat "${server_log}" || true
exit "${status}"
}
trap stop_server EXIT

# No connection prints 000 and exits 7, which set -e would take as fatal.
deadline=$(( SECONDS + 30 ))
while :; do
ready_code="$(curl --silent --max-time 5 --output /dev/null --write-out '%{http_code}' "${site_url}/" || true)"
[ "${ready_code}" = '000' ] || break
[ "${SECONDS}" -lt "${deadline}" ] || { echo '::error::the server never answered'; exit 1; }
sleep 1
done

fail() {
echo "::error::${1}"
tail -n 20 "${response}"
exit 1
}

# An HTTP error returns to the caller. No reply at all is fatal.
fetch() {
local path="${1}" status=0
shift
: > "${response}"
curl --silent --show-error --max-time 30 --output "${response}" \
--write-out '%{http_code}' --cookie "${jar}" --cookie-jar "${jar}" \
"$@" "${site_url}${path}" > "${code}" || status=$?
http_code="$(cat "${code}")"
[ "${status}" -eq 0 ] || [ "${status}" -eq 22 ] \
|| fail "${path} got no reply and curl exited ${status}"
return "${status}"
}

check() {
local path="${1}" marker status=0
shift
fetch "${path}" --fail-with-body || status=$?
[ "${status}" -eq 0 ] || fail "${path} returned HTTP ${http_code}"
for marker in "$@"; do
grep -qF -e "${marker}" "${response}" || fail "${path} did not contain: ${marker}"
done
echo "ok ${path}"
}

# A fatal mid-page still returns 200, so every check also asks for the closing tag.
check '/' "content=\"WordPress ${version}\"" 'Hello world!' '</html>'

fetch '/?rest_route=/' --fail-with-body || fail "/?rest_route=/ returned HTTP ${http_code}"
jq -e --arg url "${site_url}" '.url == $url and ( .namespaces | index( "wp/v2" ) )' "${response}" > /dev/null \
|| fail 'the REST index was not the expected JSON'
echo 'ok /?rest_route=/'

# It prints this for an empty database too, which the checks above rule out.
check '/wp-admin/upgrade.php' 'No Update Required' '</html>'

fetch '/?p=99999999' || true
[ "${http_code}" = '404' ] || fail "a missing post returned ${http_code}, expected 404"
grep -qF '</html>' "${response}" || fail 'the 404 page was cut short'
echo 'ok 404 handling'

login_status=0
fetch '/wp-login.php' --fail-with-body \
--data-urlencode "log=${WP_ADMIN_USER}" --data-urlencode "pwd=${WP_ADMIN_PASSWORD}" || login_status=$?
[ "${login_status}" -eq 0 ] || fail "logging in returned HTTP ${http_code}"
grep -qF 'wordpress_logged_in_' "${jar}" || fail 'logging in did not set an authentication cookie'
echo 'ok login'

# The admin bar renders only for a logged-in user.
check '/wp-admin/' 'id="wpadminbar"' '</html>'

# Catches a fatal during shutdown. An empty log would let the grep pass silently.
[ -s "${server_log}" ] || { echo '::error::the server wrote no log'; exit 1; }
if grep -qE 'Fatal error|Uncaught|Segmentation fault' "${server_log}"; then
echo '::error::the server logged a fatal error'
exit 1
fi
echo 'ok server log'
Loading
Loading