Skip to content

24.3.0

Latest

Choose a tag to compare

@wp-printingpress wp-printingpress released this 28 Oct 16:36
· 1 commit to release/24.3 since this release

Changelog

Features

  • Block Editor: Allow rich text formatting across blocks. (58913)
  • UI: Add Avatar with initials, colored fallbacks, and an optional color ring. (84145, 84653, 84822, 84824)

Enhancements

  • React 19: Add new incompatible plugins. (84607)
  • Scripts: Run end-to-end tests against the configured wp-env test environment. (84654)
  • Standardize focus rings with the design system:
    • Components: Checkbox and radio, DataViews list items, Link, Snackbar, Tabs panels, and the UnitControl unit select. (85379, 85358, 84697, 85168, 84914, 85444)
    • Editor: Block Directory downloadable blocks, Edit as HTML textarea, LinkControl preview, MediaEdit, and the Meta Boxes panel toggle. (85307, 85266, 84695, 84940, 85355)

Block Library

  • Accordion Heading: Add background gradient support. (83938)
  • Comments Pagination Previous and Next: Add border and padding support. (64308, 64310)
  • Cover: Add link and button color support. (83972)
  • Cover: Add minimum width support. (83975)
  • File: Add typography support. (83969)
  • Gallery: Improve mobile lightbox with animated swiping. (79114)
  • Heading: Enable editableRoot for multi-selection on mobile. (84358)
  • Icon: Add background image, size, and gradient support. (83948)
  • Icon: Add minimum width and height support. (83971)
  • Icon: Add shadow support. (83921)
  • Icon: Show the collection name in the "All" tab of the icon library. (84055)
  • List: Add minimum width and height support. (83915)
  • Navigation Link: Check page create permission only when needed. (84663)
  • Navigation Overlay Close: Add margin support. (83970)
  • Navigation Overlay Close: Add minimum width and height support. (83907)
  • Paragraph: Add background image, size, and gradient support. (83934)
  • Paragraph: Add minimum width and height support. (83924)
  • Playlist: Add background image, size, and gradient support. (83928)
  • Playlist: Add minimum width and height support. (83909)
  • Post Navigation Link: Add background image, size, and gradient support. (83940)
  • Post Navigation Link: Add minimum width and height support. (83973)
  • Post Template: Add minimum width and height support. (83911)
  • Post Title: Add fit text support. (83036)
  • Pullquote: Add writing mode and text indent support. (83964)
  • Query Loop: List taxonomy terms so they can be browsed, not recalled. (82583)
  • Quote: Add writing mode support. (83965)
  • Search: Add background gradient support. (83954)
  • Search: Add border style support. (83960)
  • Search: Add minimum width and height support. (83977)
  • Search: Add shadow support. (83937)
  • Tab List: Add background image, size, and gradient support. (83953)
  • Tab List: Add line height, font weight, letter spacing, and text transform support. (83961)
  • Table of Contents: Read headings from the post in block context. (85040)
  • Table: Add background gradient support. (83949)
  • Table: Add link color support. (72229)
  • Table: Add text align support. (83966)
  • Term Count: Reuse term data from Term Template. (84119)
  • Term Template: Add heading and button color support. (83968)
  • Terms Query: Add padding, margin, and block gap support. (83959)
  • Video: Add minimum width and height support. (83974)

Components

  • Button: Use Spinner for loading indicators. (84321)
  • BorderBoxControl: Unpack multi-value shorthand width when unlinking border sides. (84826)
  • DataViews: Format footer counts. (84622)
  • DataViews: Improve bulk actions discoverability. (82730)
  • DataViews: Render table bulk actions outside the table. (85250)
  • DataViews: Support mixed-library overlays. (84305)
  • Dialog: Add an auto popup size that fits content width. (84559)
  • Migrate SelectControl consumers to @wordpress/ui. (83035, 84345, 84546, 84584, 84936)
  • Modal: Add focus fallback for firstContentElement. (84344)
  • Notice: Match dismiss controls and titles to status colors. (84571)
  • Popover: Use design system tokens on the default surface. (84574)
  • RangeControl: Add size prop. (69844)
  • SearchableSelect, SelectControl: Add trigger slots for props and content. (84934, 84828)
  • Select, Combobox, Autocomplete: Align popup list spacing. (84393)
  • Snackbar: Keep snackbars with an action on screen longer. (84842)
  • Tabs: Align interaction backgrounds and focus states. (84572)
  • Theme: Enrich the design-tokens.js export with more token data. (76604)
  • Theme: Generate JavaScript design token fallbacks. (84569)
  • UI: Support button items in Breadcrumb. (84156)
  • UI: Use solid brand highlights for popup items. (84087)
  • UI: Use the compatibility overlay slot for AlertDialog, Dialog, and Drawer. (83878, 84379, 84380)

Block Editor

  • Block Breadcrumbs: Use the @wordpress/ui Breadcrumb component. (84295)
  • Block Supports: Add background clip UI. (77142)
  • Block Toolbar: Only show the parent selector plus when no allowed block splits. (84645)
  • Drag a multi-selection by pressing anywhere inside it. (81602)
  • FontAppearanceControl, FontFamilyControl: Migrate to @wordpress/ui. (84715, 84716)
  • LinkControl, PostURL: Use the @wordpress/ui Link. (84819, 84820)
  • Mark non-breaking spaces with a red dot and add a button to replace them. (84737)
  • Media Inserter: Redesign using a DataViews grid. (82749)
    • Add a FilePreview component for audio and other non-image or video files. (84882)
    • Clear the grid and show a loading spinner when switching categories. (84667)
    • Change the page size with the window height when switching categories. (85053)
  • Move a dragged text selection. (81603)
  • Navigation: Edit links in a popover from the sidebar List View. (84005)
  • Navigation: Show the inserter for an empty Navigation Menu in the sidebar. (84003)

Post Editor

  • Core Data: Keep read-only taxonomy fields out of collaborative edits. (84838)
  • Editor: Stabilize the DataForm-based inspector. (85081)
  • Improve save and autosave failure handling:
    • Add a copy option and a "Show/Hide details" button to save failure notices. (82496)
    • Explain autosave failures with no response, and show the HTTP status. (85157)
    • Show a countdown to the next autosave after an autosave fails. (84656)
    • Remove the autosave failure notice once a later save succeeds. (84649)
    • Show the browser backup's date and compare it before restoring. (84735)
    • Don't promise a browser backup in save failure notices. (84948)

Notes

  • Add emoji reactions to notes ❤️ 🎉 😄 👀 🚀. (76767)
  • Improve how notes highlight and connect to content. (80578)
  • Make the "Add note" toolbar button add-only and drop the avatars. (84635)
  • Mark the text an unsent note is about with a draft marker. (84125)
  • Remove the divider between the canvas and floating notes. (84850)

Patterns

  • Rename the inserter's "My patterns" to "Site patterns" and add an author filter. (84680)
  • Support synced patterns the user can read but not edit: list them in the inserter, load them without "Edit original", and allow detaching them. (84661, 84641, 84681)

Global Styles

  • Add pseudo-selector support for text inputs and select elements. (71634, 81644)
  • Font Library: Mark installed font variants in font collections. (84023)
  • List elements alongside blocks. (81645)
  • Preview the selected state on element screens. (83787)
  • Remove the custom styles dot from the block list. (84657)
  • Style states: Add footer viewport and responsive styles status. (84146)
  • Style states: Enable state-specific custom CSS. (83539)

Extensibility

  • Actions and Fields APIs: Register the core entity actions and fields on the server. (84650, 84660, 84696, 84700)
  • Blocks: Accept a feature path array in getBlockSupport and hasBlockSupport. (84708)
  • Rename "fields" to "entity fields". (84691)

Media

  • Client-side media: Upgrade wasm-vips to 0.0.19 and raise memory budgets. (84980)
  • Generate animated image sub-sizes by default. (80385)
  • Media editor: Add an edits slice to the session and reset the whole session in one step. (83899, 84591)

Icons

  • Add asterisk and form-based icons. (85442, 84074)
  • Experiment with proportional stroke scaling. (84081)
  • Mirror the tag icons to match the other angled icons. (84675)
  • Ship popular icons to the core-admin collection. (85072)

Bug Fixes

  • DOM: Fix getOffsetParent infinite loop on a non-element parent. (84374)
  • Experiments: Don't invalidate saved option with a legacy key. (84619)
  • Icons: Restore the missing speech bubble in the postComments icon. (85275)

Components

  • BorderControl: Remove double focus outline. (85173)
  • CustomGradientPicker: Keep the color interpolation method when editing a gradient. (84383)
  • DataForm: Center the text control's prefix and suffix. (84314)
  • DataViews: Fix the page title row jumping on hover when a page type badge is shown. (84368)
  • DropdownMenu: Keep a disabled toggle closed on ArrowDown. (84556)
  • DropdownMenu: Match initial focus to the opening interaction. (85486)
  • Grid: Fix bottomLeft alignment mapping to the bottom left corner. (82641)
  • InputControl: Ignore the drag gesture on touch devices. (81519)
  • Link: Keep the new-tab indicator with the link text. (84806)
  • SearchableChipSelect: Preserve selected chips on Escape. (84172)
  • SearchableSelectControl: Fix search icon orientation. (84690)
  • Select: Preserve scrolling when item alignment falls back. (84682)
  • SelectControl: Fix default options showing the Select placeholder. (85172)
  • Snackbar: Restore focus when used outside SnackbarList. (84342)
  • Tabs: Expand vertical interaction backgrounds and focus rings. (84821)
  • Tabs: Restore fit-content width for horizontal tab lists. (84626)
  • UI: Keep popups open for presses inside their iframes. (83870)
  • UI: Preserve explicit null portal containers. (84370)
  • UI: Show keyboard focus on disabled menu items. (85488)
  • UI: Synchronize popup hover and keyboard targets. (85487)
  • UnitControl: Use a neutral color for static unit labels. (85456)

Post Editor

  • Customize Widgets: Keep the block selected when using @wordpress/ui overlays. (84628)
  • Editor: Fix long author name overflowing the Post sidebar panel. (84165)
  • Editor: Keep a preview canvas from adopting the entity's selection. (84832)
  • Editor: Keep the block toolbar row on phones while no block is selected. (84461)
  • Editor: Validate parent container when converting blocks to template parts. (84155)
  • Ensure "Hide block tools" text isn't wider than the button background. (85051)
  • Fields: Lock the status and slug fields for users who can't publish. (84371)
  • Post Taxonomies: Restore shortcuts to create terms. (84601)
  • Post slug: Derive the slug preview from the current title instead of generated_slug. (84893)
  • PostURL: Remove double focus ring outline. (84694)
  • Revisions: Save unsaved changes as a revision before restoring a revision. (84590)
  • Style Book: Fix crash when the Heading block is unregistered. (84359)
  • Template field: Show the default template instead of the Select placeholder. (85167)
  • URL: Make cleanForSlug match WordPress Core's sanitize_title(). (84896)

Notes

  • Focus the new note form once it's positioned. (84639)
  • Keep the avatar round when it fails to load. (85807)
  • Read note markers from the rich-text record, not its HTML. (84310)
  • Select the note under the caret. (84147)
  • Skip the reaction summary pre-fetch when Core already does it. (85047)

Block Library

  • Accordion Heading: Anchor inline notes to selected title text. (84497)
  • Cover: Decode the oEmbed iframe source before parsing its query string. (83770)
  • Custom HTML: Show a floating marker when the block renders nothing. (84150)
  • Gallery: Let columns override legacy responsive styles. (84360)
  • Icon: Fix display issues in the block manager. (84107)
  • Image: Measure the lightbox container, not the image's parent. (82312)
  • Layout: Pair physical margins with the physical float on .alignleft and .alignright. (83520)
  • Login/out: Mark the block as content. (84849)
  • Media & Text: Restore content padding in classic themes with a CSS reset. (85200)
  • Navigation Link: Apply "Open in new tab" from the link popover. (83506)
  • Navigation: Fix error when inserting a block via "Browse all" in List View. (84665)
  • Navigation: Keep custom CSS, including from Global Styles, off inner list containers. (84881, 85366)
  • Navigation: Keep the flex layout on a block inserted into an overlay. (82232)
  • Navigation: List only the blocks the sidebar supports in its link search. (85122)
  • Pattern: Load the view record, and the edit record only once it's loaded. (84799)
  • Search: Don't clip the button focus outline when the field is collapsed. (84685)

Block Editor

  • Allow block toolbar to wrap when text labels are enabled. (84802)
  • Block Styles: Clamp variation labels to two lines and show the label in a tooltip. (85721)
  • Block Toolbar: Fix UI menus requiring two clicks to open. (84547)
  • Block Toolbar: Keep last item fills out of the placeholder toolbar. (84554)
  • Keep multiline paste inside empty Preformatted and Poetry blocks. (83552)
  • List View: Allow nesting with top level items. (84856)
  • List View: Show appender in contentOnly locked section. (84713)
  • Preserve rich text selection on Shift+click within the same block. (84579)
  • Rich Text: Derive active formats at the caret for input and paste. (84303)
  • Rich Text: Strip every object replacement character in getTextContent. (81526)

Global Styles

  • Add icons and tweak styling for element and block buttons. (85363)
  • Custom CSS: Generate styles for blocks rendered by their parent block. (82590)
  • Custom CSS: Use the correct selector for block style variations on the front end. (84530)
  • Fix inconsistent "Elements" tools panel heading level. (85247)
  • Font Library: Load all installed font families. (84684)

Media

  • Preserve EXIF metadata when converting HEIC to JPEG client-side. (82040)
  • Skip auto-attach on save when attachment pages are enabled. (84851)
  • For published posts, only auto-attach newly added images. (84890)

Interactivity API

  • Align directive name validation with WordPress Core. (81023)
  • Fix late data-wp-html values, throwing functions, and directive conflicts. (84652)
  • Keep server-rendered data-wp-html content for the server's token representation. (84889)

Accessibility

  • Block Toolbar: Give the phone placeholder button a name and icon when the default block is unregistered. (84533)
  • ColorPicker: Improve accessibility and discoverability of inputs. (70214)
  • Cover: Don't autoplay an uploaded background video when reduced motion is preferred. (83853)
  • Modal: Keep an accessible name when the header is hidden. (82645)
  • navigateRegions: Only outline focused Publish and Save regions. (84343)
  • Notes: Drop misleading aria-haspopup from the "Add note" menu item. (84818)
  • PaletteEdit: Name picker dialogs and add screen reader dismissal. (84333)
  • Revisions: Meet AA contrast for the inline deletion diff without an opacity filter. (82258)
  • ToolsPanel: Put setting names first in accessible action labels. (84341)
  • Video: Don't autoplay on the front end when reduced motion is preferred. (84308)

Performance

  • Cache the theme.json data merged from all origins. (81979)
  • Connectors: Preload REST API responses on the Connectors screen. (77353)
  • Icon: Speed up rendering of the icon library. (84327)
  • Icons: Skip sanitizing the core icons. (85083)
  • Interactivity API: Optimize toVdom walk. (81699)
  • Site Editor: Preload the entity actions of the screen. (85155)

Documentation

  • Badge: Clarify that badges should not be interactive. (84920)
  • BaseControl: Update prop documentation. (70064)
  • Breadcrumb: Fix usage guidelines sidebar structure. (84564)
  • Components: Update guidance after the Emotion migration. (85020, 85023)
  • Framework: Improve AGENTS.md guidance around running package scripts. (84195)
  • Menu: Clarify icon, label, and description usage guidelines. (84020)
  • Note reduced-motion handling for autoplaying media. (84594)
  • Storybook: Add more visual pages for all tokens. (84373)
  • Storybook: Keep documentation first by sorting unlisted folders alphabetically. (84563)
  • Storybook: Present motion tokens as an MDX documentation page. (85080)
  • Tabs: Fix filled link icon in Storybook. (84618)
  • UI: Add missing popup width stories. (84320)

Code Quality

Components

  • Migrate Emotion styles to SCSS Modules: ColorPicker, CustomSelectControl, DatePicker, DateTimePicker, FocalPointPicker, InputControl, Menu, Navigator, NumberControl, PaletteEdit, RangeControl, SelectControl, Tabs, TimePicker, and UnitControl. (84128, 84131, 84724, 84129, 84736, 84728, 84706, 84565, 84330, 84130, 84562, 84732, 84332, 84331, 84561)
  • Remove Emotion: context system, StyleProvider cache, styling utilities, test and story fixtures, dependencies, and compiler tooling. (84925, 85019, 84929, 84926, 85022, 85021, 85038, 84707)
  • Actions API: Remove the unsupported single action context. (85186)
  • Dialog: Check story and test sizes against popup prop types. (84705)
  • Gradient parser: Switch to the official gradient-parser types. (84582)
  • Simplify RangeControl, Tabs, and BorderBoxControl styles. (85086)
  • Text: Simplify the internal highlighter. (85101)
  • Theme: Consolidate border mode overrides in the token resolver. (84108)
  • Tip: Migrate inserter usages to Notice and deprecate the component. (84197)
  • UI: Consolidate shared iframe dismissal tests. (84296)

Block Editor

  • Block Supports: Share the state text clip helpers with theme.json. (85057)
  • Include migration hint in useSetting deprecation warning. (85100)
  • Rich Text: Remove refs from event listener contexts. (84545)
  • Sorting: Rely on stable standard sort and use toSorted. (52213)

Block Library

  • A11y: Move prefersReducedMotion into the block library's shared utils. (84297)
  • Blocks: Clarify button background comment and template part error string. (85176)
  • Media & Text: Replace deprecated word-break with overflow-wrap: anywhere. (82580)
  • Remove compat function for unsupported unprefixed style states. (84531)
  • Rename inspector and toolbar style-states slots for consistency. (84598)

Extensibility

  • Actions API: Extract the core actions into the @wordpress/core-actions script modules, and remove the fields that moved to @wordpress/core-fields. (84643, 84897)
  • Core Actions, Core Fields: Translate the labels with the default text domain. (85139)
  • Fields API: Take over Core's registry singleton like the Icons API. (84168)

Tools

  • Props Bot: Queue runs instead of cancelling superseded ones. (84176)

Testing

  • Add an iOS end-to-end test harness and test selecting text across two paragraphs. (84463, 84585, 84640, 84741, 84859)
  • Add end-to-end tests for the autosave failure notice. (84644)
  • Automated Testing: Add AI review guidance for lint suppressions. (84638)
  • Automated Testing: Fix Storybook manifest errors and validate in CI. (84198)
  • Changelog validation: Reject blank lines between Unreleased entries. (84804)
  • DuotonePicker: Add component tests. (69264)
  • Entity Actions: Fix the taxonomy collision test against Core trunk. (85146)
  • Flaky end-to-end tests: Open settings sidebar in constrained canvas test. (84606)
  • Icons: Add unit test coverage for WP_REST_Icon_Collections_Controller. (83168)
  • React 19 codemod: Apply defaultProps when rendering a memo component. (84568)
  • Tests: Fix HTML comparison tests. (84294)
  • Tests: Fix list item unsafe markup test on older WordPress versions. (84302)
  • Tests: Scope Classic block media checkbox locator. (84524)
  • Upgrade JSDOM to 30.1.2. (84367)

Build Tooling

  • babel-preset-default: Add polyfill list to generated bundle. (84835)
  • Build: Fix npm run dev failing on the patterns tsconfig comment. (84898)
  • Build: Guard SCRIPT_DEBUG with defined() in script and style registration. (83633)
  • Build: Keep absolute paths out of worker source maps. (84163)
  • Build: Update pr-baseline-action to v0.3.0. (84692)
  • CI: Run the required trunk changes cron every 4 hours. (84301)
  • CI: Set explicit retention periods for large artifacts. (84525)
  • Cherry-pick script: Add an optional dry-run parameter. (78878)
  • Packages: Stop publishing tsconfig files, TypeScript build info, tests, and Markdown files other than README.md. (84164, 84307)
  • PR meta: Add a Playground preview link. (84687)
  • PR meta: Log fallback bodies verbatim and keep query strings in run links. (85119)
  • PR meta: Write sections on stacked pull requests. (84703)
  • Project management automation: Convert to TypeScript and move to tools as an internal action. (71193, 85087)
  • Raise the minimum required Node.js to 22 with CJS/ESM interop. (84313)
  • Release Tooling: Publish wp/X.Y branches with their own npm configuration. (84160)
  • Remove some stale overrides. (84674)
  • Update Ariakit to 0.4.42, Base UI to 1.9.0, Terrazzo token tools to 2.9.0, Testing Library user-event to 14.6.8, and Vite to 8.3.4. (84539, 85066, 84542, 85067, 85068, 84544)
  • WP Build: Support importing SVG files as inlined data URIs. (85147)
  • Zed: Exclude node_modules from the file scan and turn off Tailwind CSS. (84604)

Linting

  • ESLint: Align UI caution components with Storybook status. (84319)
  • ESLint: Allow design tokens in component JavaScript. (84827)
  • ESLint: Make jsdoc/escape-inline-tags an error. (84701)
  • ESLint: Remove an unused comments-plugin dependency. (85102)
  • ESLint: Require TypeScript for new files. (84829)
  • ESLint: Require WCSpinner alias for legacy Spinner imports. (84390)
  • JSDoc: Escape WordPress package names in comments. (84369)
  • Stylelint: Consolidate lint rules for simplification. (71235)

Env

  • Update simple-git to v4. (84137)
  • Use the matching wordpress-develop branch for pre-release PHPUnit tests. (84758)

First-time contributors

The following PRs were merged by first-time contributors:

Contributors

The following contributors merged PRs in this release:

@00kaku @aaronrobertshaw @adamsilverstein @aduth @amitraj2203 @anamwp @andrewserong @annezazu @ariel-maidana @awss1i @bhaskargurram-ai @bitworks-io @ciampo @CookieDarb @DAreRodz @desrosj @dhruvikpatel18 @dinhtungdu @ellatrix @fabiankaegy @faisalahammad @fushar @gigitux @himanshupathak95 @im3dabasia @jameskoster @jasmussen @jeryj @jorgefilipecosta @joshualip-plaudit @jsnajdr @Kgupta62 @kraftbj @lancewillett @luisherranz @MaggieCabrera @Mamaduka @manzoorwanijk @Mayank-Tripathi32 @mirka @nb @nickchomey @noruzzamans @ntsekouras @oandregal @obenland @poligilad-auto @prasadkarmalkar @preetpatel713 @R1shabh-Gupta @rajpreetcodes @ramonjd @SainathPoojary @salvatorecorsi @sanketio @scruffian @sgomes @shail-mehta @shimotmk @simison @sirreal @Soean @t-hamano @talldan @tellthemachines @vedant-ere @westonruter @yashjawale @yotatameguchi-boop @youknowriad