Skip to content

Media REST API: Fix sideload and finalize for EXIF rotated images - #80295

Merged
andrewserong merged 9 commits into
trunkfrom
fix/400-error-when-uploading-image-with-exif-rotation
Jul 16, 2026
Merged

Media REST API: Fix sideload and finalize for EXIF rotated images#80295
andrewserong merged 9 commits into
trunkfrom
fix/400-error-when-uploading-image-with-exif-rotation

Conversation

@andrewserong

@andrewserong andrewserong commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

What?

Part of:

Update the logic for 'original' sized images in sideload and finalize to account for rotated images. To do so, essentially reuse the same logic that we have for the scaled size.

My thinking here is: when the client uploads a rotated image to upload as the original, it's very similar to the scaled logic, which is that we're effectively saying "please use this one, but point back to the original".

Part of this is also at the finalize step, declaring that the image has been rotated and that the image rotation should be treated as 1 (i.e. already handled).

Note: I haven't put up a backport of this PR just yet as I'm still a little unsure if it's the right approach. If it looks okay, happy to do that, though!

Why?

Fixes a bug described in #77582 (comment)

Basically, with some EXIF rotated images (e.g. 6), we'd get a 400 error from sideload requests for the original size because the dimensions did not match what the server expected.

But, in the client-side media upload flow, we expect something like:

  • The client uploads the original file (which might be unrotated)
  • The client then proceeds to process that original file and performs rotation and sub-size generation, etc
  • The client then sideloads those sub-sizes and rotated original
  • The client then fires off a finalize request
  • So, at the end of all that, the REST API requests should treat the finalize / original sideload as "the client gave us the final version of these where the rotation has occurred"... or something like that

I'm a little hesitant about this PR because I don't fully understand the implications of re-using the logic like this. So I'll likely need to lean on @adamsilverstein for verification here!

How?

  • In the sideload and finalize steps, treat

Testing Instructions

Test in WordPress Playground

Download the raw version of this file: https://github.com/WordPress/gutenberg/blob/trunk/packages/vips/src/test/fixtures/exif-rotated-90cw.jpg

  • Add an image block to a post
  • Upload that file to the post

In trunk this fails with a 400 error. In this PR, it should successfully upload.

With your network inspector open, select the block after upload, and look for the media REST API request that returns the attachment response. Double-check the response and that the image sizes and other metadata look correct, including original_image.

Screenshots or screencast

Before

image

After

image

Use of AI Tools

Claude Code and then Codex to verify the fix from Claude. This seemed to confirm that the fix needs to happen on the PHP side and not the JS side.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the Gutenberg Media REST API client-side upload flow so the original sideload/finalize path correctly handles EXIF quarter-turn rotations (where width/height are transposed), aligning behavior more closely with WordPress core’s “replace original” semantics and preventing rest_upload_dimension_mismatch 400s.

Changes:

  • Treat image_size=original sideloads like scaled: swap the attachment’s main file and track the replaced file as original_image.
  • In finalize, apply original sub-size metadata to the attachment (including resetting stored EXIF orientation to 1 to avoid re-rotation on refetch).
  • Relax original dimension validation to accept either exact dimensions or a width/height transpose.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
lib/media/class-gutenberg-rest-attachments-controller.php Updates sideload/finalize handling for original, resets orientation to avoid double-rotation, and allows transposed dimensions in validation.
phpunit/media/class-gutenberg-rest-attachments-controller-test.php Renames/updates the existing original sideload test and adds regression/behavioral tests covering transposed dimensions and parity with server-side rotation behavior.

Comment thread lib/media/class-gutenberg-rest-attachments-controller.php Outdated
Comment on lines +857 to +858
// Sideload the "original" (rotated) version. canola.jpg is 640x480,
// matching the stored dimensions, so validation passes.
@github-actions

github-actions Bot commented Jul 15, 2026

Copy link
Copy Markdown

Flaky tests detected in 409b1e1.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/29472952588
📝 Reported issues:

@ramonjd

ramonjd commented Jul 15, 2026

Copy link
Copy Markdown
Member

Did a quick test, and it fixes the 400. But so far it's also fixing the rotation bug I was trying to address over in WordPress/wordpress-develop#12492

2 birds with one stone!

@ramonjd

ramonjd commented Jul 15, 2026

Copy link
Copy Markdown
Member

But so far it's also fixing the rotation bug I was trying to address over in WordPress/wordpress-develop#12492

2 birds with one stone!

Sorry, I withdraw that. I was testing with the wrong image. No 400s though!

Comment thread lib/media/class-gutenberg-rest-attachments-controller.php Outdated
@github-actions

github-actions Bot commented Jul 15, 2026

Copy link
Copy Markdown

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: andrewserong <andrewserong@git.wordpress.org>
Co-authored-by: adamsilverstein <adamsilverstein@git.wordpress.org>
Co-authored-by: ramonjd <ramonopoly@git.wordpress.org>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@adamsilverstein

Copy link
Copy Markdown
Member

Thanks for the PR! I will test it soon.

@adamsilverstein

Copy link
Copy Markdown
Member

@andrewserong this tested well for me trying jpeg, heic, and avif rotated images (from packages/vips/src/test/fixtures). One small glitch I noticed with the avif - it shows faded out in the horizontal position while processing, then switches to the correct vertical alignment when completed:

initially:
after drop

after upload complete:
complete

The other test images show the correct orientation immediately.

@adamsilverstein

Copy link
Copy Markdown
Member

The other test images show the correct orientation immediately.

Looking into this further.

@adamsilverstein

Copy link
Copy Markdown
Member

The other test images show the correct orientation immediately.

Looking into this further.

ps. its easy to reproduce by starting the upload while offline.

@andrewserong

Copy link
Copy Markdown
Contributor Author

One small glitch I noticed with the avif - it shows faded out in the horizontal position while processing, then switches to the correct vertical alignment when completed:

Good catch! My best guess is that during the uploading preview, the browser is doing its best to render things as is (i.e. for jpegs, etc, it'll display with the rotation as it can, but this isn't supported for avif?)

Separately, looks like the PHP unit tests are failing due to -1 being appended. I'll take a look at that.

andrewserong and others added 2 commits July 16, 2026 12:20
Merge the 'original' and 'scaled' finalize branches: both replace the
attachment's main file, so both need the EXIF orientation reset that
wp_create_image_subsizes() applies on its scale and rotate paths.
Skip entries missing the file name so a malformed finalize payload
cannot blank out the main file metadata.

Fix the CI failures in the sideload tests: assert against the actual
attached file basename instead of a hardcoded name, which breaks when
earlier tests upload the same fixture and wp_unique_filename() adds a
numeric suffix. Skip rotation-dependent tests when the image editor
or exif extension cannot support them.
…ge-with-exif-rotation' into fix/400-error-when-uploading-image-with-exif-rotation

# Conflicts:
#	phpunit/media/class-gutenberg-rest-attachments-controller-test.php
@adamsilverstein

Copy link
Copy Markdown
Member

Pushed a few follow-ups after reviewing:

  • Applied the orientation reset to the scaled finalize branch too and merged the two branches: core resets orientation in both its scale and rotate paths in wp_create_image_subsizes(), and vips has already applied rotation to scaled images client-side.
  • Guarded finalize against original/scaled entries missing file, so a malformed payload can't blank out the main-file metadata.
  • Fixed the failing PHP tests: they hardcoded canola.jpg, but wp_unique_filename() adds a numeric suffix when earlier tests in the suite upload the same fixture. They now assert against the actual attached-file basename (same fix you pushed, @andrewserong - I merged both). Also added skip guards for environments without exif/rotate support.
  • Opened the core backport Media REST API: Fix sideload and finalize for EXIF rotated images wordpress-develop#12550 and added the backport-changelog/7.1/12550.md entry, which should clear the backport changelog check.

On the approach question: this is a faithful port of core's rotate path. wp_create_image_subsizes() saves a -rotated file, calls _wp_image_meta_replace_original() (attached-file swap + width/height/file/filesize + keeps the upload as original_image), then resets orientation to 1 - exactly what this PR now does across sideload/finalize. The previous behavior (rotated file stored as original_image) was backwards relative to core.

On the AVIF preview glitch I mentioned above: expected browser behavior, not a bug in this PR. The rotated AVIF fixtures signal rotation only via EXIF; per the AVIF/MIAF spec renderers apply irot/imir and ignore EXIF orientation, so Chrome renders the raw-file blob preview un-rotated while uploading, then the block switches to the rotated server file when processing completes. JPEG previews correctly because browsers do honor EXIF for JPEG, and HEIC goes through client-side conversion before preview. If we want the transient preview correct for EXIF-only AVIF/HEIF, the client could swap the preview to the vips-rotated file once it's produced - follow-up material.

@andrewserong

Copy link
Copy Markdown
Contributor Author

Fantastic, thanks so much @adamsilverstein, much appreciated! Your updates look good to me.

Do you want to give this an approval and then I can merge it?

Opened the core backport WordPress/wordpress-develop#12550 and added the backport-changelog/7.1/12550.md entry, which should clear the backport changelog check.

Super, thanks for that. I can give that a look shortly.

@andrewserong andrewserong added Backport to WP 7.1 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta Backport to Gutenberg RC Pull request that needs to be backported to a Gutenberg release candidate (RC) labels Jul 16, 2026
@andrewserong

Copy link
Copy Markdown
Contributor Author

Backport looks good and I've given it the ✅. Just updated a stale comment, but otherwise I think this one is good to go 🤞

@adamsilverstein adamsilverstein left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice one!

@ramonjd ramonjd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM - works as described, thanks folks!

@andrewserong
andrewserong merged commit 2059b9c into trunk Jul 16, 2026
47 of 48 checks passed
@andrewserong
andrewserong deleted the fix/400-error-when-uploading-image-with-exif-rotation branch July 16, 2026 05:45
@andrewserong

Copy link
Copy Markdown
Contributor Author

Thanks for all the collaboration here! 🙇

@github-actions github-actions Bot added this to the Gutenberg 23.7 milestone Jul 16, 2026
@github-actions github-actions Bot removed the Backport to WP 7.1 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta label Jul 16, 2026
gutenbergplugin pushed a commit that referenced this pull request Jul 16, 2026
…0295)

* Media REST API: Fix sideload and finalize for EXIF rotated images

* Consolidate the logic with scaled where we can

* Try to fix tests

* Apply orientation reset to scaled finalize and guard malformed payloads

Merge the 'original' and 'scaled' finalize branches: both replace the
attachment's main file, so both need the EXIF orientation reset that
wp_create_image_subsizes() applies on its scale and rotate paths.
Skip entries missing the file name so a malformed finalize payload
cannot blank out the main file metadata.

Fix the CI failures in the sideload tests: assert against the actual
attached file basename instead of a hardcoded name, which breaks when
earlier tests upload the same fixture and wp_unique_filename() adds a
numeric suffix. Skip rotation-dependent tests when the image editor
or exif extension cannot support them.

* Add Core backport changelog entry for wordpress-develop PR 12550

* Update comment for accuracy

---------

Co-authored-by: andrewserong <andrewserong@git.wordpress.org>
Co-authored-by: adamsilverstein <adamsilverstein@git.wordpress.org>
Co-authored-by: ramonjd <ramonopoly@git.wordpress.org>
@github-actions github-actions Bot added the Backported to WP Core Pull request that has been successfully merged into WP Core label Jul 16, 2026
@github-actions

Copy link
Copy Markdown

I just cherry-picked this PR to the wp/7.1 branch to get it included in the next release: b39c633

t-hamano pushed a commit that referenced this pull request Jul 21, 2026
…0295)

* Media REST API: Fix sideload and finalize for EXIF rotated images

* Consolidate the logic with scaled where we can

* Try to fix tests

* Apply orientation reset to scaled finalize and guard malformed payloads

Merge the 'original' and 'scaled' finalize branches: both replace the
attachment's main file, so both need the EXIF orientation reset that
wp_create_image_subsizes() applies on its scale and rotate paths.
Skip entries missing the file name so a malformed finalize payload
cannot blank out the main file metadata.

Fix the CI failures in the sideload tests: assert against the actual
attached file basename instead of a hardcoded name, which breaks when
earlier tests upload the same fixture and wp_unique_filename() adds a
numeric suffix. Skip rotation-dependent tests when the image editor
or exif extension cannot support them.

* Add Core backport changelog entry for wordpress-develop PR 12550

* Update comment for accuracy

---------

Co-authored-by: andrewserong <andrewserong@git.wordpress.org>
Co-authored-by: adamsilverstein <adamsilverstein@git.wordpress.org>
Co-authored-by: ramonjd <ramonopoly@git.wordpress.org>
@t-hamano

Copy link
Copy Markdown
Contributor

I just cherry-picked this PR to the release/23.6 branch to get it included in the next release: 6f41b85

@t-hamano t-hamano removed the Backport to Gutenberg RC Pull request that needs to be backported to a Gutenberg release candidate (RC) label Jul 21, 2026
pento pushed a commit to WordPress/wordpress-develop that referenced this pull request Jul 22, 2026
This updates the pinned commit hash of the Gutenberg repository from `e73c3c481db0650183f092af157f6e42efe9ee2d` to `4997026b75c922d8a6f77a03d72ed7cad04c7073`.

A full list of changes included in this commit can be found on GitHub: 
WordPress/gutenberg@e73c3c4...4997026

- Notes: Replace blur-deselect bookkeeping with useFocusOutside (WordPress/gutenberg#80222)
- Playlist: Update @SInCE tags to 7.1.0 (WordPress/gutenberg#80317)
- fix playlist block Dimensions Design (WordPress/gutenberg#80312)
- UI: Backport compat overlay fixes to WordPress 7.1 (WordPress/gutenberg#80322)
- Editor: allow selecting which block styles to apply globally (WordPress/gutenberg#79839)
- Global Styles: Reject non-string custom CSS in the REST controller (WordPress/gutenberg#80338)
- Open inspector sidebar when toggling responsive editing (WordPress/gutenberg#80307)
- Client Side Media: Honor image_strip_meta and image_max_bit_depth on the client upload path (WordPress/gutenberg#80218)
- Hide block style variations when state is enabled in global styles (WordPress/gutenberg#80341)
- Media REST API: Fix sideload and finalize for EXIF rotated images (WordPress/gutenberg#80295)
- Fix upload snackbar stuck in uploading state on server-side uploads (WordPress/gutenberg#80345)
- Try fixing responsive layout in Nav block (WordPress/gutenberg#80305)
- Responsive styles: Use viewport dropdown to control states for in-editor global styles sidebar (WordPress/gutenberg#80339)
- RichTextControl: Replace DOM focus tracking with a single React-tree focus boundary (WordPress/gutenberg#80324)
- Notes: Finish WPDS treatment for mention chips (WordPress/gutenberg#80300)
- Notes: Add placeholders to the RichText fields (WordPress/gutenberg#80296)
- Fix upload hang when converting long animated GIFs: decode only the first frame for still outputs (WordPress/gutenberg#80260) (WordPress/gutenberg#80342)
- Device preview dropdown: use active color for device icon when responsive styles are active (WordPress/gutenberg#80346)
- Fix default aspect ratio for lazy loaded Featured image (WordPress/gutenberg#80386)
- Vips/upload-media: consolidate optional params into options objects (WordPress/gutenberg#80330)
- Autocompleters: Don't pre-encode mention search terms (WordPress/gutenberg#80377)
- Animated GIF uploads: generate sub-sizes from the first frame, matching core (WordPress/gutenberg#80268)
- Custom CSS: Fix cascade order against block style variations (WordPress/gutenberg#80340)
- Rich Text: Restore the selection when focus returns to the editable (WordPress/gutenberg#80396)
- Notes: Arm the mention kses allowance on REST note creation (WordPress/gutenberg#80221)
- Fix upload snackbar double-counting a single HEIC upload in Safari (WordPress/gutenberg#80436)
- ContentEditableControl: fix invalid label association with contenteditable div (WordPress/gutenberg#80441)
- Editor: Disable canvas resizing while zoomed out (WordPress/gutenberg#80391)
- Fix Color Picker Cursor Shaking Issue (WordPress/gutenberg#80205) (WordPress/gutenberg#80435)
- Misc fixes for WordPress-Develop 7.0 merges (WordPress/gutenberg#80444)
- Style Book: Restore live global styles updates on the styles route (WordPress/gutenberg#80459)
- Worker threads: reject pending RPC calls on worker failure or termination (WordPress/gutenberg#79955) (WordPress/gutenberg#80421)
- Media: Add timeout and size guardrails to client-side GIF to video conversion (WordPress/gutenberg#80420)
- Post Content: Use the default block appender for empty content (WordPress/gutenberg#80026)
- Block Supports: Handle nested array block gap values properly (WordPress/gutenberg#80464)
- Editor: Restore fixed device preview height for mobile and tablet (WordPress/gutenberg#80466)
- Block Editor: Guard against non-string spacing preset values (WordPress/gutenberg#80467)
- Writing flow: fully select the ancestor when a text selection crosses a nesting boundary (WordPress/gutenberg#80462)
- Block Editor: Reflect inherited Global Styles values in block inspector controls (WordPress/gutenberg#80481)
- Autocomplete: Reference the suggestions list with `aria-controls` and `aria-haspopup` (WordPress/gutenberg#80403) (WordPress/gutenberg#80499)
- Media: Remove the redundant __heicUploadSupport flag (WordPress/gutenberg#80486)
- State control - avoid tertiary variant on toggle to match style of other dropdown toggles (WordPress/gutenberg#80505)
- Icons: Store the sanitized SVG content when registering an icon (WordPress/gutenberg#80508)
- Fix `useHomeEnd` on tabs in mac testing (WordPress/gutenberg#80374)
- Playlist: Fix playback of tracks served without CORS headers (WordPress/gutenberg#80533)
- Redirect editing events to extension handlers under editableRoot (WordPress/gutenberg#80287)
- Writing flow: fully select the items when a selection extends down into a nested item (WordPress/gutenberg#80492)
- Global Styles panels: fix wrong preset committed and shown when two color presets share a hex (WordPress/gutenberg#80497)
- Replaces the `title` attributes used by revision inline diff annotations with `aria-describedby` (WordPress/gutenberg#80440)
- Notes: Remove "Add note" from the inline styles dropdown (WordPress/gutenberg#80531)
- Global Styles: Resolve per-level heading element styles in block inspector controls (WordPress/gutenberg#80495)
- Notes: Render @ mentions as span chips and narrow the kses class allowance (WordPress/gutenberg#80528)
- Revisions: Specify block level diff status via aria-label (WordPress/gutenberg#77779)
- Backport from Core: improve icon name unit tests (WordPress/gutenberg#80552)
- Device type preview: fix collapsing to content height (WordPress/gutenberg#80553)
- Wrap notices in ThemeProvider with 0 corner radius (WordPress/gutenberg#80557)
- Global Styles: Limit the inherited value treatment to the Gutenberg plugin (WordPress/gutenberg#80555)
- Fix crashes when manipulating locked blocks (WordPress/gutenberg#80509)
- Notes: align floating threads with their inline marker (WordPress/gutenberg#79877)

Props wildworks.
See #65529.

git-svn-id: https://develop.svn.wordpress.org/trunk@62824 602fd350-edb4-49c9-b593-d223f7449a82
markjaquith pushed a commit to markjaquith/WordPress that referenced this pull request Jul 22, 2026
This updates the pinned commit hash of the Gutenberg repository from `e73c3c481db0650183f092af157f6e42efe9ee2d` to `4997026b75c922d8a6f77a03d72ed7cad04c7073`.

A full list of changes included in this commit can be found on GitHub: 
WordPress/gutenberg@e73c3c4...4997026

- Notes: Replace blur-deselect bookkeeping with useFocusOutside (WordPress/gutenberg#80222)
- Playlist: Update @SInCE tags to 7.1.0 (WordPress/gutenberg#80317)
- fix playlist block Dimensions Design (WordPress/gutenberg#80312)
- UI: Backport compat overlay fixes to WordPress 7.1 (WordPress/gutenberg#80322)
- Editor: allow selecting which block styles to apply globally (WordPress/gutenberg#79839)
- Global Styles: Reject non-string custom CSS in the REST controller (WordPress/gutenberg#80338)
- Open inspector sidebar when toggling responsive editing (WordPress/gutenberg#80307)
- Client Side Media: Honor image_strip_meta and image_max_bit_depth on the client upload path (WordPress/gutenberg#80218)
- Hide block style variations when state is enabled in global styles (WordPress/gutenberg#80341)
- Media REST API: Fix sideload and finalize for EXIF rotated images (WordPress/gutenberg#80295)
- Fix upload snackbar stuck in uploading state on server-side uploads (WordPress/gutenberg#80345)
- Try fixing responsive layout in Nav block (WordPress/gutenberg#80305)
- Responsive styles: Use viewport dropdown to control states for in-editor global styles sidebar (WordPress/gutenberg#80339)
- RichTextControl: Replace DOM focus tracking with a single React-tree focus boundary (WordPress/gutenberg#80324)
- Notes: Finish WPDS treatment for mention chips (WordPress/gutenberg#80300)
- Notes: Add placeholders to the RichText fields (WordPress/gutenberg#80296)
- Fix upload hang when converting long animated GIFs: decode only the first frame for still outputs (WordPress/gutenberg#80260) (WordPress/gutenberg#80342)
- Device preview dropdown: use active color for device icon when responsive styles are active (WordPress/gutenberg#80346)
- Fix default aspect ratio for lazy loaded Featured image (WordPress/gutenberg#80386)
- Vips/upload-media: consolidate optional params into options objects (WordPress/gutenberg#80330)
- Autocompleters: Don't pre-encode mention search terms (WordPress/gutenberg#80377)
- Animated GIF uploads: generate sub-sizes from the first frame, matching core (WordPress/gutenberg#80268)
- Custom CSS: Fix cascade order against block style variations (WordPress/gutenberg#80340)
- Rich Text: Restore the selection when focus returns to the editable (WordPress/gutenberg#80396)
- Notes: Arm the mention kses allowance on REST note creation (WordPress/gutenberg#80221)
- Fix upload snackbar double-counting a single HEIC upload in Safari (WordPress/gutenberg#80436)
- ContentEditableControl: fix invalid label association with contenteditable div (WordPress/gutenberg#80441)
- Editor: Disable canvas resizing while zoomed out (WordPress/gutenberg#80391)
- Fix Color Picker Cursor Shaking Issue (WordPress/gutenberg#80205) (WordPress/gutenberg#80435)
- Misc fixes for WordPress-Develop 7.0 merges (WordPress/gutenberg#80444)
- Style Book: Restore live global styles updates on the styles route (WordPress/gutenberg#80459)
- Worker threads: reject pending RPC calls on worker failure or termination (WordPress/gutenberg#79955) (WordPress/gutenberg#80421)
- Media: Add timeout and size guardrails to client-side GIF to video conversion (WordPress/gutenberg#80420)
- Post Content: Use the default block appender for empty content (WordPress/gutenberg#80026)
- Block Supports: Handle nested array block gap values properly (WordPress/gutenberg#80464)
- Editor: Restore fixed device preview height for mobile and tablet (WordPress/gutenberg#80466)
- Block Editor: Guard against non-string spacing preset values (WordPress/gutenberg#80467)
- Writing flow: fully select the ancestor when a text selection crosses a nesting boundary (WordPress/gutenberg#80462)
- Block Editor: Reflect inherited Global Styles values in block inspector controls (WordPress/gutenberg#80481)
- Autocomplete: Reference the suggestions list with `aria-controls` and `aria-haspopup` (WordPress/gutenberg#80403) (WordPress/gutenberg#80499)
- Media: Remove the redundant __heicUploadSupport flag (WordPress/gutenberg#80486)
- State control - avoid tertiary variant on toggle to match style of other dropdown toggles (WordPress/gutenberg#80505)
- Icons: Store the sanitized SVG content when registering an icon (WordPress/gutenberg#80508)
- Fix `useHomeEnd` on tabs in mac testing (WordPress/gutenberg#80374)
- Playlist: Fix playback of tracks served without CORS headers (WordPress/gutenberg#80533)
- Redirect editing events to extension handlers under editableRoot (WordPress/gutenberg#80287)
- Writing flow: fully select the items when a selection extends down into a nested item (WordPress/gutenberg#80492)
- Global Styles panels: fix wrong preset committed and shown when two color presets share a hex (WordPress/gutenberg#80497)
- Replaces the `title` attributes used by revision inline diff annotations with `aria-describedby` (WordPress/gutenberg#80440)
- Notes: Remove "Add note" from the inline styles dropdown (WordPress/gutenberg#80531)
- Global Styles: Resolve per-level heading element styles in block inspector controls (WordPress/gutenberg#80495)
- Notes: Render @ mentions as span chips and narrow the kses class allowance (WordPress/gutenberg#80528)
- Revisions: Specify block level diff status via aria-label (WordPress/gutenberg#77779)
- Backport from Core: improve icon name unit tests (WordPress/gutenberg#80552)
- Device type preview: fix collapsing to content height (WordPress/gutenberg#80553)
- Wrap notices in ThemeProvider with 0 corner radius (WordPress/gutenberg#80557)
- Global Styles: Limit the inherited value treatment to the Gutenberg plugin (WordPress/gutenberg#80555)
- Fix crashes when manipulating locked blocks (WordPress/gutenberg#80509)
- Notes: align floating threads with their inline marker (WordPress/gutenberg#79877)

Props wildworks.
See #65529.
Built from https://develop.svn.wordpress.org/trunk@62824


git-svn-id: http://core.svn.wordpress.org/trunk@62104 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backported to WP Core Pull request that has been successfully merged into WP Core [Feature] Client Side Media Media processing in the browser with WASM [Type] Bug An existing feature does not function as intended

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants