main ← fix/twitter-onebox-blocking-and-empty-fallback
merged 02:10PM - 25 Mar 26 UTC
Two issues with Twitter/X oneboxes:
1. Adding `x.com` or `twitter.com` to `bl…ocked_onebox_domains` had no effect. In `FinalDestination#resolve`, domains in the `ignore_redirects` list (which includes x.com, twitter.com, youtube.com, etc.) trigger an early return with `:resolved` status before `blocked_domain?` is ever checked. This made it impossible to block oneboxes for any of these domains. The fix adds the blocked domain check before the `ignore_redirects` shortcut in `resolve()`.
2. When X/Twitter returns no useful Open Graph metadata (which is the current real-world behavior without API credentials), the onebox rendered an empty shell — an `<aside>` with blank title, empty tweet div, and no timestamp. `TwitterStatusOnebox` had no field validation unlike other engines (e.g. `AmazonOnebox`). The fix adds a `verified_data` method that requires `title` and `tweet` to be present, returning empty HTML when they're missing. This causes Discourse to fall back to a plain link instead of rendering a broken onebox.
https://meta.discourse.org/t/397516