diff --git a/LOTUS_FEATURES.md b/LOTUS_FEATURES.md index 8ed2d97e8..d6a4c2649 100644 --- a/LOTUS_FEATURES.md +++ b/LOTUS_FEATURES.md @@ -767,6 +767,65 @@ Redacted events display "This message has been deleted" along with the redaction Generic (non-domain-specific) cards display a Google S2 favicon. Empty or unparseable preview responses are suppressed entirely rather than showing a blank card. +### Inline Media Embeds + +Media links play/render **in place** instead of opening a browser tab. A pure +resolver, `parseMediaEmbed(url, host)` in `src/app/utils/videoEmbed.ts`, maps a +URL to `{ provider, kind, embedUrl }`; `MediaEmbedCard` / `TikTokEmbedCard` / +`TwitterCard` in `UrlPreviewCard.tsx` render it. Four render `kind`s: + +| kind | shape | providers | +| ----------- | ------------------------ | ----------------------------------------------------------------- | +| `landscape` | 16:9 video player | YouTube, Vimeo, Dailymotion, Streamable, Twitch, Loom, Kick (live) | +| `portrait` | 9:16 video player | YouTube Shorts, TikTok | +| `audio` | fixed-height audio player | Spotify, SoundCloud, Apple Music, Tidal | +| `rich` | self-resizing post embed | X/Twitter, Instagram, Reddit, Bluesky | + +**Privacy-friendly facade.** The tile first shows the homeserver's cached +`og:image` thumbnail + a play button; the third-party `