Open
Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit ed5b325. Configure here.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

🚀 Summary
Adds the
MediaEmbedResizeplugin: drag handles to resize embedded media, mirroring the image resize UX. Bundled with aresizeMediaEmbedcommand, supporting CSS, and plugin exports.Modernizes provider iframe HTML (YouTube, Vimeo, Dailymotion, Spotify) to use
aspect-ratioCSS instead of a<div style="padding-bottom:…">wrapper. Existing content still upcasts correctly via the URL. This is a prerequisite for resize to work cleanly.Adds an
isResizableprovider option (exposed viaMediaRegistry.isMediaResizable()) so providers can opt out of handles — used by Spotify, whose player doesn't adapt well to free resizing.Splits
media-embed.mdinto a landing page plus dedicated pages for configuration, external preview, styles, and resize. Umberto redirects and@glinkreferences updated.📌 Related issues
💡 Additional information
The iframe HTML emitted by the built-in providers (YouTube, Vimeo, Dailymotion, Spotify) changed from a
<div style="padding-bottom:…"><iframe>…</iframe></div>wrapper — which used the classic padding-bottom hack to enforce an intrinsic aspect ratio — to a bare<iframe width="…" height="…" style="width:100%; height:auto; aspect-ratio:X/Y">. This was needed because the old wrapper fought the resize mechanism (the figure's width couldn't propagate cleanly through a padding-based ratio box), and modernaspect-ratioCSS is baseline-supported (Chrome 88+, Firefox 89+, Safari 15+).Consequences to be aware of:
editor.getData()output for new or re-inserted embeds changes structurally — any downstream HTML post-processing, sanitizer rules, CSS selectors, or content-diffing that targeted the outer<div>wrapper will need updating.data-oembed-urland regenerates the preview from the current provider config. Once that content is re-saved, however, it persists in the new format.aspect-ratiosupport, the iframe falls back to its intrinsicwidth/heightattributes rather than preserving the ratio — acceptable for the platforms we target, but worth noting for anyone on legacy stacks.config.mediaEmbed.providersare not affected — they keep whatever HTML theirhtml()function returns.🧾 Checklists
Use the following checklists to ensure important areas were not overlooked.
This does not apply to feature-branch merges.
If an item is not relevant to this type of change, simply leave it unchecked.
Author checklist
Reviewer checklist
t()(if any).