Skip to content

fix+feat: RSS feed repairs, HLS native playback, summarization cache fix, embed improvements#452

Merged
koala73 merged 4 commits intomainfrom
feat/direct-hls-feeds
Feb 27, 2026
Merged

fix+feat: RSS feed repairs, HLS native playback, summarization cache fix, embed improvements#452
koala73 merged 4 commits intomainfrom
feat/direct-hls-feeds

Conversation

@koala73
Copy link
Owner

@koala73 koala73 commented Feb 27, 2026

Summary

  • RSS feed repairs — replace 25 dead/stale RSS URLs across all feed categories, add validation script
  • Stable CDN HLS feeds — direct CDN stream URLs for desktop native playback, replacing fragile YouTube Live scraping
  • Summarization cache fix — pass panelId as geoContext to prevent Redis cache key collision across panels with overlapping headlines
  • Embed improvements — sidecar embed autoplay, webcam fullscreen support, optional channel fallbacks

Commits

  • 855438dc fix(feeds): replace 25 dead/stale RSS URLs and add feed validation script
  • ce5448c9 feat(live-news): use stable CDN HLS feeds for desktop native playback
  • b2935c20 fix(summarization): pass panelId as geoContext to prevent Redis cache key collision
  • 964e2150 fix(desktop): sidecar embed autoplay, webcam fullscreen, optional channel fallbacks

Test plan

  • RSS feeds load without 404/403 errors
  • Desktop app — live news channels play via HLS
  • Different panels (World, US, Europe, Middle East) get unique AI summaries
  • Webcam panel fullscreen toggle works
  • npx tsc --noEmit passes

…ript

- Replace 16 dead feeds (404/403/timeout) with working alternatives
  (Google News proxies or corrected direct RSS endpoints)
- Replace 6 empty feeds with correct RSS paths (VnExpress, Tuoi Tre,
  Live Science, Greater Good, News24, ScienceDaily)
- Replace 3 stale feeds (CNN World, TVN24, Layoffs.fyi) with active sources
- Remove Disrupt Africa (inactive since Jan 2024)
- Add scripts/validate-rss-feeds.mjs to check all 420 feeds
- Add test:feeds npm script
Direct HLS feeds bypass YouTube's expiring tokenized URLs and iframe
cookie issues on WKWebView. 10 channels (Sky, DW, France24, Euronews,
Al Arabiya, Al Jazeera, CBS News, TRT World, Sky News Arabia, Al Hadath)
now play via native <video> on desktop with automatic YouTube fallback
when CDN feeds are down (5-min cooldown).

Also:
- Fix euronews handle typo (@euabortnews → @euronews)
- Fix TRT World handle (@taborrtworld → @trtworld)
- Add fallbackVideoId to CBS News, Sky News Arabia, TRT World
- Extract hlsManifestUrl from YouTube API for non-mapped channels
- Add sidecar /api/youtube-embed endpoint (auth-exempt for iframes)
- Switch webcam/embed iframes from cloud to local sidecar origin
- CSP: allow frame-src http://127.0.0.1:* for sidecar embeds
- Remove legacy WEBKIT_FORCE_SANDBOX env var (deprecated in WebKitGTK)
- Add 37 tests covering HLS map integrity, decision tree ordering,
  cooldown logic, race safety, service layer, sidecar endpoint, and CSP
@vercel
Copy link

vercel bot commented Feb 27, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
worldmonitor Ready Ready Preview, Comment Feb 27, 2026 9:51am
worldmonitor-finance Ready Ready Preview, Comment Feb 27, 2026 9:51am
worldmonitor-happy Ready Ready Preview, Comment Feb 27, 2026 9:51am
worldmonitor-startup Ready Ready Preview, Comment Feb 27, 2026 9:51am

Request Review

… key collision

When breaking news appeared across multiple panels (World, US, Europe,
Middle East), all panels generated identical cache keys because geoContext
was always undefined. The first panel's summary was served to all others.
…nnel fallbacks

- Sidecar YouTube embed: use mute param (not hardcoded), add play overlay
  for WKWebView autoplay fallback, add postMessage bridge for play/pause/
  mute/unmute commands matching the cloud embed handler
- Webcam iframes: only set allowFullscreen on web to prevent grid-breaking
  fullscreen on desktop click
- Optional channels: add fallbackVideoId + useFallbackOnly for livenow-fox,
  abc-news, nbc-news, wion so they play instead of showing "not currently live"
- Tests: 9 new assertions covering mute param, postMessage bridge, play
  overlay, yt-ready message, and optional channel fallback coverage (46 total)
@koala73 koala73 changed the title feat(live-news): direct CDN HLS feeds for desktop native playback fix+feat: RSS feed repairs, HLS native playback, summarization cache fix, embed improvements Feb 27, 2026
@koala73 koala73 marked this pull request as ready for review February 27, 2026 09:55
@koala73 koala73 merged commit 87969b6 into main Feb 27, 2026
6 checks passed
@chatgpt-codex-connector
Copy link

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@koala73 koala73 deleted the feat/direct-hls-feeds branch February 27, 2026 10:41
facusturla pushed a commit to facusturla/worldmonitor that referenced this pull request Feb 27, 2026
…fix, embed improvements (koala73#452)

* fix(feeds): replace 25 dead/stale RSS URLs and add feed validation script

- Replace 16 dead feeds (404/403/timeout) with working alternatives
  (Google News proxies or corrected direct RSS endpoints)
- Replace 6 empty feeds with correct RSS paths (VnExpress, Tuoi Tre,
  Live Science, Greater Good, News24, ScienceDaily)
- Replace 3 stale feeds (CNN World, TVN24, Layoffs.fyi) with active sources
- Remove Disrupt Africa (inactive since Jan 2024)
- Add scripts/validate-rss-feeds.mjs to check all 420 feeds
- Add test:feeds npm script

* feat(live-news): use stable CDN HLS feeds for desktop native playback

Direct HLS feeds bypass YouTube's expiring tokenized URLs and iframe
cookie issues on WKWebView. 10 channels (Sky, DW, France24, Euronews,
Al Arabiya, Al Jazeera, CBS News, TRT World, Sky News Arabia, Al Hadath)
now play via native <video> on desktop with automatic YouTube fallback
when CDN feeds are down (5-min cooldown).

Also:
- Fix euronews handle typo (@euabortnews → @euronews)
- Fix TRT World handle (@taborrtworld → @trtworld)
- Add fallbackVideoId to CBS News, Sky News Arabia, TRT World
- Extract hlsManifestUrl from YouTube API for non-mapped channels
- Add sidecar /api/youtube-embed endpoint (auth-exempt for iframes)
- Switch webcam/embed iframes from cloud to local sidecar origin
- CSP: allow frame-src http://127.0.0.1:* for sidecar embeds
- Remove legacy WEBKIT_FORCE_SANDBOX env var (deprecated in WebKitGTK)
- Add 37 tests covering HLS map integrity, decision tree ordering,
  cooldown logic, race safety, service layer, sidecar endpoint, and CSP

* fix(summarization): pass panelId as geoContext to prevent Redis cache key collision

When breaking news appeared across multiple panels (World, US, Europe,
Middle East), all panels generated identical cache keys because geoContext
was always undefined. The first panel's summary was served to all others.

* fix(desktop): sidecar embed autoplay, webcam fullscreen, optional channel fallbacks

- Sidecar YouTube embed: use mute param (not hardcoded), add play overlay
  for WKWebView autoplay fallback, add postMessage bridge for play/pause/
  mute/unmute commands matching the cloud embed handler
- Webcam iframes: only set allowFullscreen on web to prevent grid-breaking
  fullscreen on desktop click
- Optional channels: add fallbackVideoId + useFallbackOnly for livenow-fox,
  abc-news, nbc-news, wion so they play instead of showing "not currently live"
- Tests: 9 new assertions covering mute param, postMessage bridge, play
  overlay, yt-ready message, and optional channel fallback coverage (46 total)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant