v0.13.0-beta.1
Pre-releaseFirst beta for v0.13.0, cut from master.
Back from vacation. 52 PRs have landed since v0.12.0, most of them small fixes, plus three things worth calling out properly. Read the upgrade notes at the bottom before you pull this, there's a data-loss fix in there and two migrations that delete rows.
Automatic quality upgrades
The "Allow automatic quality upgrades" checkbox has been sitting in the admin UI for months doing nothing at all. It works now. A daily sweep looks for library files scoring below their profile's cutoff and goes looking for something better.
The budget is counted in indexer searches rather than items, since searches are what gets you banned from a private tracker. Episodes group into season packs where they can. After import the new file gets re-scored on real ffprobe output, and if it turns out worse than what it replaced, it goes to trash and the release gets blacklisted.
upgrade_until_quality is gone. There's a score cutoff and a minimum margin in its place, so a better codec or audio track can now trigger an upgrade on its own.
External downloads
Plenty of people run a torrent client for things besides Mydia. Every one of those torrents used to get a database row, show up in your Queue, count toward the sidebar badge, and sit in Issues waiting to be fixed. Dismissing them didn't help, the next monitor tick put them straight back.
Unmanaged torrents are now read off the client on each scan and never persisted. Anything that parses as a movie or show goes to Issues → Needs Matching. The rest lands in a new External tab. Match from either one and the download gets created at that point and imports normally.
Player
Chromecast and DLNA both work, on desktop and mobile. The old Chromecast path never could have: iOS was missing its Bonjour declaration, so the picker came back empty every time. If the receiver can reach your server it gets a direct URL and playback survives you quitting the app. Over p2p the player bridges the stream across your LAN.
Two caveats I'd rather say up front than have you find: cast sessions don't survive an app restart, and DLNA subtitles are best-effort because sidecar signalling varies too much between TVs to promise anything.
The playback chrome got rebuilt. The scrubber was 3px at 20% opacity with a thumb that only appeared on hover, four different Material icon families had drifted into one control row, and the timecodes sat 1450px apart in opposite corners. It's one component now. Also new: a neutral palette with a gold accent, hold anywhere to drag the window on desktop, and season episodes in a horizontal rail.
Smaller things
Library search across movies, shows, episodes and collections. It was unreachable on desktop before this, the magnifier only rendered in the mobile app bar.
Scheduled library scanning, per library, off by default. Manual-search grabs come back immediately and survive closing the modal. Bulk auto-search from the selection toolbar. Movie franchises on the detail page, TV trailers, and a progress filter on library pages from @aescolastico.
Quality profiles collapsed down to one model and one struct with the dead config stripped out.
Fixes
Multi-resolution quality profiles were grabbing the lowest resolution you'd checked. Tick 720p and 1080p, get 720p. Fixed, though see note 4 below, because it changes what your instance picks.
Most of the rest was downloads. qBittorrent 5.2+, TorBox uploads (thanks @ppoloskov), two bugs found on a live instance where 47 of 101 downloads never imported, provider failure reasons reaching debrid blacklists, rqbit shared-directory contamination. Removing a download client no longer leaves its downloads pointing at a name that doesn't resolve.
On the player: stale data reaching the UI, cast controls you couldn't get to from most screens, a failed startup step leaving a blank window, cold HLS streams restarting from zero. The web UI got infinite scroll, favicon and date sorting fixes.
Upgrade notes
Back up first.
- SQLite table rebuilds were firing foreign-key deletes on child tables. One of them shipped in v0.10.0 through v0.12.0 and wiped
subtitles,media_hashesandtranscode_jobsfor anyone coming from a pre-v0.10 install. The fix lives in the migration helper, so every rebuild inherits it. If you're on an old install, this is the release to upgrade on. - The quality-profile migration can't be rolled back. It backfills
preferred_resolutions, then dropsqualities,metadata_preferencesandcustomizations.down/0raises on purpose. - Old
unmatcheddownload rows get deleted. Nothing referenced them and none had ever been imported. Anything still sitting in a client reappears in the new tabs on the next scan. - Multi-resolution profiles now pick the highest resolution you've checked, where they used to pick the lowest. It's the bug fix from above, but it will change your grabs.
media.scan_interval_hoursis gone and every library starts out manual-only, so nothing begins scanning on its own after you upgrade. A leftover env var or YAML key gets ignored rather than rejected, so your instance still boots.- Trashed media moves to a trash directory with a retention window. It used to just get marked in place.
Docker is ghcr.io/getmydia/mydia:0.13.0-beta.1, or :beta. Add -pg for the Postgres image. If you're already on :master you have all of this.
Full Changelog: v0.12.0...v0.13.0-beta.1