diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 65c0927..a596213 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,3 +31,76 @@ jobs: - name: Run tests (lint + type check) 🔍 run: bun run test + + # Build here so the content lint below sees the real rendered output, + # including YouTube descriptions fetched at build time that never + # appear in src/. Deliberately after the offline checks above, so an + # unreachable feed cannot mask the lint and type-check verdict. + - name: Build site 🏗️ + run: bun run build + + - name: Content lint (prose) 📝 + run: | + cat > "$RUNNER_TEMP/lint-content.mjs" <<'LINT' + import { readFileSync, readdirSync } from "node:fs"; + import { join } from "node:path"; + + const RULES = [ + [/—|—|—|—/gi, "em dash"], + [/\bdelv(e|es|ed|ing)\b/gi, "delve"], + ]; + + // Non-prose regions, blanked before matching. Order matters: the + // escape hatch and code samples must go before the catch-all tag strip. + const STRIP = [ + / + + diff --git a/src/components/VideoFacade.astro b/src/components/VideoFacade.astro new file mode 100644 index 0000000..e304be1 --- /dev/null +++ b/src/components/VideoFacade.astro @@ -0,0 +1,132 @@ +--- +/** + * Click-to-load YouTube facade. Renders a poster and a play button; the real + * iframe is only created on click, so no third-party player loads on page view. + * Without JS the anchor is a plain link to YouTube. + */ +export interface Props { + embedUrl: string; + videoUrl: string; + title: string; + thumbnailUrl?: string | null; + /** Set on the first facade in the viewport so the poster is not lazy-loaded. */ + eager?: boolean; +} + +const { embedUrl, videoUrl, title, thumbnailUrl, eager = false } = Astro.props; +--- + +
+ + + + diff --git a/src/content/talks/securing-the-realm-purview-mcp-and-agentic-communi.json b/src/content/talks/securing-the-realm-purview-mcp-and-agentic-communi.json index f09c5e1..1cf676e 100644 --- a/src/content/talks/securing-the-realm-purview-mcp-and-agentic-communi.json +++ b/src/content/talks/securing-the-realm-purview-mcp-and-agentic-communi.json @@ -3,7 +3,7 @@ "date": "2025-04-29", "event": "YouTube - Securing the Realm", "videoUrl": "https://www.youtube.com/watch?v=Y8XAdQiR1D0", - "summary": "In this conversation, Josh McDonald and Chris Lloyd-Jones discuss the importance of securing communications in the realm of agentic AI. They explore the CIA triangle of security—confidentiality, in...", + "summary": "Josh McDonald and Chris Lloyd-Jones on securing communications between agents: confidentiality, integrity and availability, and what each one costs you when agents talk to each other.", "tags": [ "YouTube", "Video" diff --git a/src/layouts/Base.astro b/src/layouts/Base.astro index e43a4c6..8ce4b58 100644 --- a/src/layouts/Base.astro +++ b/src/layouts/Base.astro @@ -81,7 +81,17 @@ const currentPath = Astro.url.pathname; class="logo-link" aria-label="Securing the Realm - Home" > -