Surfaced by the clarity-review pass on the v0.1.0 release branch (B5). Do NOT apply for v0.1.0 — captured for post-launch.
src/lib/scrambler/video.ts:59 accepts a single URL, but src/components/ScramblerCard.svelte:172-174 has to coalesce card.videoUrl ?? card.cta?.url plus a separate inlineVideo === false opt-out. Today only pycon-talk.yaml and plotly-workshop.yaml use the explicit videoUrl; everywhere else the CTA is the video URL. Authors have to remember which field carries the embed source.
Cleaner shape: a single optional media.video field on the card with { url, inlineEmbed?: boolean }, with cta purely about the navigation target. The videoUrl ?? cta.url fallback goes away, the YAML reads obviously, and parseVideo no longer needs to scrutinise CTA URLs to decide whether to render an iframe.
Files
src/content/cards/*.yaml (schema migration across existing cards)
src/lib/scrambler/types.ts
src/lib/scrambler/video.ts
src/components/ScramblerCard.svelte (lines 78 — mediaIconKind derives from cta.url; line 172 — videoEmbed derives from the fallback chain)
Surfaced by the clarity-review pass on the v0.1.0 release branch (B5). Do NOT apply for v0.1.0 — captured for post-launch.
src/lib/scrambler/video.ts:59accepts a single URL, butsrc/components/ScramblerCard.svelte:172-174has to coalescecard.videoUrl ?? card.cta?.urlplus a separateinlineVideo === falseopt-out. Today onlypycon-talk.yamlandplotly-workshop.yamluse the explicitvideoUrl; everywhere else the CTA is the video URL. Authors have to remember which field carries the embed source.Cleaner shape: a single optional
media.videofield on the card with{ url, inlineEmbed?: boolean }, withctapurely about the navigation target. ThevideoUrl ?? cta.urlfallback goes away, the YAML reads obviously, andparseVideono longer needs to scrutinise CTA URLs to decide whether to render an iframe.Files
src/content/cards/*.yaml(schema migration across existing cards)src/lib/scrambler/types.tssrc/lib/scrambler/video.tssrc/components/ScramblerCard.svelte(lines 78 —mediaIconKindderives fromcta.url; line 172 —videoEmbedderives from the fallback chain)