What's New
New Pages (thanks @NoLooseEnds!)
- Watch History (
/history) — browse previously watched videos grouped by day, with progress bars and infinite scroll (PR #33) - Activity Row — homepage "Your Requests" reworked to show the 6 most recent unfinished videos with progress bars, dismiss controls, and collapse/expand toggles (PR #34)
- Requests Page (
/requests) — dedicated page for one-off video approvals, showing pending and approved-by-request videos separately (PR #35)
Enhancements
- Progress bars on channel video catalog cards
- Section collapse/expand toggles for all homepage sections (persisted in localStorage)
- Channel pills alphabetized on homepage
- Avatar dropdown menu icons for Requests, History, and Switch Profile
- Rate limit handler returns JSON for
/api/routes - History and requests pages now use full-width responsive layout
Security & Performance
position_secondsbounded to [0, 86400] in heartbeat requestsdismissedcatalog param validated against video ID regex- Catalog progress annotation uses a single targeted JOIN query instead of scanning all approved videos
get_active_videosSQL includesresume_secondsin completion check (eliminates Python post-filter gap)- HAVING clause fix for videos without stored duration
Bug Fixes
- History infinite scroll retries on all fetch errors (not just HTTP 429)
- Fixed extra divider line in avatar dropdown between menu links
- Fixed category badge positioning on requests page cards
Full Changelog: v1.30.0...v1.31.0