Grabs now carry the movie's identity so the Downloads cards are rich, not anonymous: - video_downloads gains media_id / media_source / year / poster_url (schema v15 + migration); grab stores them (passed from the get-modal → download view → grab). - Cards show the POSTER in the art tile (emoji fallback), 'Title (Year)', a quality chip (1080p · BluRay · X265), and an ↗ Open button that jumps to the movie/show detail page (dispatches soulsync:video-open-detail). Cancel/retry unchanged. 16 tests green, ruff + balance clean. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| music_database.py | ||
| personalized_schema.py | ||
| video_database.py | ||
| video_schema.sql | ||