# v0.2.4 - Link Embeds ## Features ### OpenGraph Link Embeds - Messages containing URLs now show a rich preview below the message text, similar to Discord - Server-side fetching: detects the first URL in a message, fetches the page, and parses OpenGraph meta tags (`og:title`, `og:description`, `og:image`, `og:site_name`) - OG images are converted to a small 24x12 colored ASCII thumbnail using the existing half-block renderer - Embeds are persisted in the database and included in channel history - TUI client renders embeds with a `▏` left border bar — site name and border in blue, title in white, description in gray, followed by the ASCII thumbnail - IRC gateway receives a text-only embed preview (site name, title, description) — no ASCII thumbnail to keep IRC output clean - Falls back to `` tag when no OG tags are present; gracefully skips if no useful metadata is found - 3-second fetch timeout ensures message delivery is never significantly delayed - SSRF protection rejects private/loopback IP addresses before fetching ## Infrastructure - New `LinkEmbedService` on the server — URL detection, HTML fetching (first 64KB), OG tag parsing via regex, image thumbnail generation - `EmbedDto` record added to shared Core DTOs; `MessageDto` extended with optional `Embed` field (backward-compatible) - `EmbedJson` nullable column on the `Message` table stores serialized embed data (max 8KB) - Dedicated `"OgFetch"` named HttpClient with bot User-Agent header and 5-second timeout - New EF Core migration: `AddMessageEmbed`