From a8eea54c0f9d3a7e881b33f099cbb8c4cd060949 Mon Sep 17 00:00:00 2001 From: Woody Date: Sat, 9 May 2026 16:43:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20Phase=203.4=20=E2=80=94=20YouTube=20Inp?= =?UTF-8?q?ut=20+=20Video=20Player=20frontend=20components?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - YouTubeInput.tsx: URL input with validation (youtube.com/watch, youtu.be, /live/, /shorts/), loading/error states, Load Stream button, uses useYouTubeExtract mutation - YouTubeVideoPlayer.tsx: dual hls.js (video + hidden audio), forwardRef, thumbnail placeholder until play, LIVE badge, quality capped ≤480p, onAudioReady callback for ASR hook exposure, dynamic import('hls.js') - Types: YouTubeFormat, YouTubeStreamResponse interfaces - API: extractYouTubeStream() — POST /youtube/extract - Query: useYouTubeExtract() TanStack Query mutation hook - Tests: 16 new (7 YouTubeInput, 9 YouTubeVideoPlayer) - 171/171 total pass (zero regressions) - Updated plan: 3.4 marked Complete, 4/7 sub-phases done --- .plans/phase3_youtube_proxy_plan.md | 76 ++++--- frontend/package-lock.json | 7 + frontend/package.json | 2 +- frontend/src/components/YouTubeInput.tsx | 110 ++++++++++ .../src/components/YouTubeVideoPlayer.tsx | 207 ++++++++++++++++++ frontend/src/lib/api.ts | 7 +- frontend/src/lib/queries.tsx | 10 +- .../test/test_phase3_YouTubeInput.test.tsx | 149 +++++++++++++ .../test_phase3_YouTubeVideoPlayer.test.tsx | 168 ++++++++++++++ frontend/src/types/index.ts | 23 ++ 10 files changed, 720 insertions(+), 39 deletions(-) create mode 100644 frontend/src/components/YouTubeInput.tsx create mode 100644 frontend/src/components/YouTubeVideoPlayer.tsx create mode 100644 frontend/src/test/test_phase3_YouTubeInput.test.tsx create mode 100644 frontend/src/test/test_phase3_YouTubeVideoPlayer.test.tsx diff --git a/.plans/phase3_youtube_proxy_plan.md b/.plans/phase3_youtube_proxy_plan.md index 3b1daed..7239e86 100644 --- a/.plans/phase3_youtube_proxy_plan.md +++ b/.plans/phase3_youtube_proxy_plan.md @@ -1,8 +1,8 @@ # Phase 3: YouTube Live Stream Proxy → ASR → RAG — Implementation Plan **Created:** 2026-05-09 -**Updated:** 2026-05-09 (Phase 3.1 + 3.2 implemented) -**Status:** In Progress (3.1 Complete, 3.2 Complete) +**Updated:** 2026-05-09 (Phase 3.1–3.4 implemented) +**Status:** In Progress (3.1 ✅, 3.2 ✅, 3.3 ✅, 3.4 ✅) **Depends on:** Phase 1 (Complete), Phase 2 (Complete) --- @@ -147,35 +147,40 @@ Proxy service that rewrites HLS manifests and proxies .ts segments. StreamingRes --- -### Phase 3.4 — Frontend: YouTube Input + Video Player (1 day) +### Phase 3.4 — Frontend: YouTube Input + Video Player ✅ Complete -URL input component and hls.js-based video player. Two hidden media elements: visible `