diff --git a/.plans/phase2_enhancement_use_text_field.md b/.plans/phase2_enhancement_use_text_field.md index 8ffa3bc..b941fd6 100644 --- a/.plans/phase2_enhancement_use_text_field.md +++ b/.plans/phase2_enhancement_use_text_field.md @@ -1,7 +1,7 @@ # Phase 2 Enhancement: Use `text` field instead of `stash` **Created:** 2026-05-07 -**Status:** Planning +**Status:** Complete **Depends on:** Phase 2 (Complete) --- @@ -107,12 +107,12 @@ _stash_logger.info( ## 6. Acceptance Criteria -- [ ] `text` field used for partial events instead of `stash` -- [ ] `_merge_stash` function removed -- [ ] Text displayed in QueryInput grows monotonically (no jumping/replacing) -- [ ] All 16 ws_protocol tests pass (updated) -- [ ] Text persists on pause (existing behavior, unchanged) -- [ ] Stash log captures both `stash` and `text` fields for reference +- [x] `text` field used for partial events instead of `stash` (already in delta implementation) +- [x] `_merge_stash` function removed (was dead code — never called since delta refactor) +- [x] Text displayed in QueryInput grows monotonically (no jumping/replacing) — verified via `test_text_grows_monotonically_across_events` +- [x] All ws_protocol tests pass (13 tests, updated: removed `TestMergeStash`, added `TestTextFieldFormatting`) +- [x] Text persists on pause (existing behavior, unchanged) +- [x] Stash log captures both `stash` and `text` fields for reference (already present in current code) ## 7. Rollback Risk diff --git a/.plans/phase3_youtube_proxy_plan.md b/.plans/phase3_youtube_proxy_plan.md new file mode 100644 index 0000000..81b326f --- /dev/null +++ b/.plans/phase3_youtube_proxy_plan.md @@ -0,0 +1,381 @@ +# Phase 3: YouTube Live Stream Proxy → ASR → RAG — Implementation Plan + +**Created:** 2026-05-09 +**Updated:** 2026-05-09 (user decisions incorporated) +**Status:** Planning +**Depends on:** Phase 1 (Complete), Phase 2 (Complete) + +--- + +## 1. Overview + +Phase 3 adds YouTube live stream (and VOD) playback as an alternative to file upload. User pastes a YouTube URL → backend extracts separate video-only and audio-only HLS streams via yt-dlp → backend proxies HLS manifests and .ts segments (zero re-encoding) → frontend plays video in `