2.2 KiB
2.2 KiB
Sprint 002 — UX Overhaul, Full-Text Search & Metadata Enrichment
Goal: Overhaul the t-youtube reading experience by completing the search workflow, adding transcript visibility, fetching duration/views metadata, and implementing cursor-based/offset pagination (infinite scroll).
[x] T2.1 — Full-Text Search Frontend Integration
- Files:
frontend/src/routes/YoutubeDashboard.svelte - Done means: Search queries directly populate the main video list in the sidebar (rather than a temporary dropdown), and clearing the search resets the view.
- Verify by:
- Type search query -> video list dynamically updates with FTS results from backend.
- Click a search result -> detail view loads it.
- Clear query/blur search -> list reverts to standard tab view.
[x] T2.2 — Transcript Accordion in Details View
- Files:
frontend/src/routes/YoutubeDashboard.svelte - Done means: Add an expandable accordion below the "AI Digest" section to view the raw video transcript. If transcript is long, render in scrollable container.
- Verify by:
- Click video with transcript -> "Show Full Transcript" accordion appears.
- Click to expand -> raw transcript displays correctly.
[x] T2.3 — Ingest Duration and View Count Metadata
- Files:
backend/fetcher.py,backend/tests/test_fetcher.py - Done means: Update
fetcher.pyvideos.list API call to requestpart="snippet,contentDetails,statistics". Parse ISO 8601 duration into integer seconds, and store duration + view count in SQLite db. Update unit tests to include mock response fields. - Verify by:
- Run
./run_tests.shto ensure fetcher tests pass. - Sync subscriptions -> inspect database to confirm
durationandview_countare populated for new videos.
- Run
[x] T2.4 — Cursor/Offset Pagination (Infinite Scroll)
- Files:
backend/main.py,frontend/src/routes/YoutubeDashboard.svelte - Done means: Add pagination queries to
/api/videosbackend endpoint (e.g.offsetandlimit). In Svelte frontend, implement scroll listener on the sidebar video list to trigger next page load when reaching bottom. - Verify by:
- Load pending tab -> initially loads 50 videos.
- Scroll to bottom of sidebar -> next 50 videos append automatically.