- Platform-aware overlay sizing: 82% width for Threads (was 45% for all)
so comment screenshots fill more of the output video
- scale_h: -1 → -2 across all overlay items for yuv420p compatibility
- Cookie validation in auth.py: detect stale Threads sessions and
re-login automatically instead of screenshotting the login modal
- Remove ("button", "Log in") from popup dismissals — clicking Log in
opens the auth flow, not a dismissal
- Fail-fast guard after popup dismissal: raise RuntimeError if login
overlay is still visible, preventing bad screenshots
- Remove dead bgcolor/txtcolor assignments in screenshot.py
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add Supertonic as the default TTS provider, introduce browser backend plumbing, make the Settings UI template-driven, and tighten Threads discovery/auth behavior with regression coverage.
Add keywords input to Create page to override search_queries per run.
Split /create into two panels: left controls + progress, right
real-time scraper activity feed with stage diagram and typed event
cards. Emit structured events from scraper and auth modules. Add
blocked_words fields to Settings page Content tab.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Web scraper (platforms/threads/scraper.py) with div-based card parsing
- Multi-source discovery: For You feed + configurable search queries
- Engagement filtering (min_engagement) and post age filter (max_post_age)
- Shared Playwright auth module (platforms/threads/auth.py)
- Migrated ffmpeg-python to av (PyAV) for in-process media probing
- Video composition uses subprocess ffmpeg (av filter graph segfault workaround)
- Updated CLAUDE.md with Threads scraping and macOS-specific notes
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>