From 7ad948e26c031747da29ce8c1d9a08c22f31d95a Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Tue, 7 Jul 2026 12:13:01 -0400 Subject: [PATCH] docs: document inline media embeds feature - README: new bullet for inline media embeds (video/audio/post players + facade). - LOTUS_FEATURES: 'Inline Media Embeds' section (kinds table, facade, provider notes, sandbox, setting, CSP, the fixed YouTube-thumbnail web bug). - LOTUS_TODO: awaiting-verification row (16 providers) + deferred providers (Bandcamp / on.soundcloud / Vimeo event) under the feature backlog + the iframe onError gap. - LOTUS_TESTING: section Q (facade, TikTok, post self-resize + close, new Bluesky/Loom/Kick + toggle + cap). Co-Authored-By: Claude Opus 4.8 --- LOTUS_FEATURES.md | 59 +++++++++++++++++++++++++++++++++++++++++++++++ LOTUS_TESTING.md | 37 +++++++++++++++++++++++++++++ LOTUS_TODO.md | 11 +++++++++ README.md | 1 + 4 files changed, 108 insertions(+) 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 `