URL preview & playlist support:
- POST /url-info endpoint extracts metadata (title, type, entry count)
- Preview box shows playlist contents before downloading (up to 10 items)
- Auto-detect audio-only sources (SoundCloud, etc) and switch to Audio mode
- Video toggle grayed out for audio-only sources
- Enable playlist downloading (noplaylist=False)
Admin panel improvements:
- Expandable session rows show per-session job list with filename, size,
status, timestamp, and source URL link
- GET /admin/sessions/{id}/jobs endpoint for session job details
- Logout now redirects to home page instead of staying on login form
- Logo in header is clickable → navigates to home
UX polish:
- Tooltips on output format chips (explains Auto vs specific formats)
- Format tooltips change based on video/audio mode
- Move gear icon to left of Video/Audio toggle
- Add output format selector in options panel:
Audio: Auto, MP3, WAV, M4A, FLAC, OPUS
Video: Auto, MP4, WEBM
- Backend: postprocess audio to selected codec via FFmpegExtractAudio
- Backend: postprocessor_hooks capture final filename after conversion
(fixes .webm showing when file was converted to .mp3)
- Add media type icon (video camera / music note) in download table
next to filename, inferred from quality field and file extension
- Pass media_type and output_format through JobCreate model
- Use extract_info + prepare_filename to determine output filename
before downloading (yt-dlp skips progress hooks when file exists)
- Normalize filenames to relative paths (strip output dir prefix)
- Include filename in completion SSE event so frontend displays it
- Fixes file download 404s from subdirectory source templates
- Move Video/Audio toggle to same row as Download button
- Auto-condense toggle to icon-only below 540px
- Move gear icon to right of Download button
- Fix file download URLs: normalize filenames to relative paths in progress hook
- Display filename with visible extension (truncate middle, preserve ext)
- Remove border/box from dark mode toggle — glyph only
- Fix light/dark theme fonts: use monospace display font across all themes
Adds STACK, FEATURES, ARCHITECTURE, PITFALLS, and SUMMARY research files
for media.rip() v1.0 (self-hosted yt-dlp web frontend).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>