- Remove API-level validation that rejected `audio_multistream` unless the
container was explicitly set to `mkv` in both app config and channel update endpoints.
- Update yt-dlp option building to only force MKV output when multiple audio tracks are actually selected, instead of always forcing MKV whenever multistream is enabled. This keeps multistream behavior flexible and avoids unnecessary container restrictions for single-track selections.
- Introduce a `.transcoding` sentinel file to prevent concurrent
ffmpeg processes for the same video; return HTTP 202 with
`Retry-After: 5` when a transcode is already in progress
- Serve cached transcode immediately when the output file exists,
avoiding unnecessary re-transcodes on repeat requests
- Fix transcode failure response code from 404 to 500
- Add `isTranscoding` state in VideoPlayer that triggers an
in-UI message and auto-retries the video source after 5 s
when the server responds with 202
- Use `retryKey` to force re-mount of the `<video>` element on retry
- Return `None` from `_get_audio_languages` when `audio_multistream` is
not effectively enabled; `audio_languages` alone must not trigger
multi-track downloads (strict mode)
- Remove `audio_languages` from MKV container-forcing logic in
- Extend `StreamItemSerializer` with optional `language`, `title`,
`channels`, and `channel_layout` fields to surface per-track metadata
- Improve `_extract_audio_metadata` to extract language (normalising
"und" → None), track title, channel layout, and fall back to BPS/MKV
tags when a stream-level bitrate is absent
- Add `container` config option (mp4/mkv) and `audio_languages` to
downloads config with defaults
- Add validation to enforce mkv container when audio_multistream
is enabled, returning a 400 error otherwise
- Add `download_container` channel-level overwrite (mp4/mkv)
- Update filesystem scanner to detect both `.mp4` and `.mkv` files
- Add video streaming API endpoint with fallback transcoding to mp4
for unsupported formats
Changed:
- Changed index setup and migrations handling
- Use index aliaes on mapping update
- Detect what needs a mapping refresh
- Fix several inconsitent indexing issues and serialization
- Add PO token provider URL
- Add temporary cookie persistence