Two fixes for captions downloads:
1. Language variant fallback: When user requests 'en' but the video only
has 'en-GB' (or other regional variants), yt-dlp silently skips
subtitle extraction because it uses exact language matching. Now the
subtitleslangs list includes common regional variants (e.g. en-US,
en-GB, en-AU, etc.) so yt-dlp can match the first available variant.
2. Error on no files: When yt-dlp completes successfully (ret=0) but
produces no subtitle files (e.g. no matching language at all), the
download was incorrectly shown as 'completed'. Now it's marked as
'error' with a descriptive message like 'No subtitles found for
language "en"'. Same treatment for thumbnail downloads.
- Reset download_phase when transitioning to paused (pause(), update_status(),
_post_download_cleanup()) so UI shows 'Paused' instead of stale phase label
- Reset download_phase when starting/resuming download (start() preparing state)
- Count 'postprocessing' as active download in updateMetrics() so dashboard
shows accurate counts during ffmpeg post-processing
- Add missing completedDownload Subject to DownloadsServiceStub in app.spec.ts
- Add Download type import to app.spec.ts
Fixes: TypeError Cannot read properties of undefined (reading 'pipe')
at app.ts:300 (completedDownload not in test stub)
- _download_phase_from_status now falls back to checking requested_formats
when top-level vcodec/acodec are both 'none' (common when yt-dlp uses
separate downloaders for video+audio streams)
- Clear download_phase on download completion/error (was persisting stale
phase value in finished state)
- Add debug logging in put_status for phase detection
- Update docker-compose.local.yml to match docker-compose.yml structure
with local image build (adds TARGETARCH build arg)
- Removed shadow from URL entry wrap in app.html for a cleaner look.
- Updated various icon files to improve visual consistency across the application.
- Add suffix to identify different files of same video
- Fixed invisible download for short link
Co-authored-by: Copilot <copilot@github.com>