Files
EchoHub/docs/changelog/v0.2.4.md
T
HueByte b508a5854a feat: Add notification sound functionality and embed support
- Introduced NotificationConfig to manage notification settings, including sound file.
- Added Notification.mp3 asset for notifications.
- Implemented NotificationSoundService to handle playing notification sounds.
- Enhanced ChatRenderer and MainWindow to support emoji rendering.
- Updated MessageDto to allow multiple embeds per message.
- Modified LinkEmbedService to fetch multiple embeds from message content.
- Added data migration for legacy embed JSON format to new array format.
- Adjusted embed handling in ChatService and IrcMessageFormatter to accommodate multiple embeds.
- Updated HubConstants for new embed dimensions and limits.
2026-02-19 21:52:18 +01:00

1.5 KiB

v0.2.4 - Link Embeds

Features

  • 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 <title> 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