38 PRs since v0.16.0. The player gets a visual refresh: artwork-tinted colour, a floating navigation rail, a new Home hero and detail pages, and a native iOS 26 tab bar. Cardigann indexers gain login, a Prowlarr-based engine and per-indexer search metrics.
Upgrade notes
- Six migrations: library membership for indexers (#1112), one Cardigann session per definition (#1116), a pinned metadata provider per show (#1119), a full watch-sync relisting (#1127), dropping the legacy settings category check (#1128) and indexer search events (#1133).
- The Cardigann engine download now lives in
MYDIA_DATA_DIR, defaulting to the database's directory (#1132).
Player
- Visual refresh: colour tinted from the artwork on screen, the Outfit display font, softer shapes and white primary buttons (#1139).
- Floating navigation rail on tablets and desktop, a floating bottom bar with a library sheet on phones, and reworked Home and detail pages: a poster-card hero over a sharp backdrop, landscape Continue Watching cards, cast and trailer on movies (#1140).
- Detail screens share one frame, hero and sections (#1101).
- Native iOS 26 tab bar on iPhones, with the cast bar as its accessory (#1142).
- Fullscreen by default on phones and tablets (#1143).
- rustls no longer floods logcat at trace level (#1138).
Indexers
- Cardigann login for every method, with captcha and 2FA, and public trackers that work at runtime (#1116, #1118).
- Prowlarr-based Cardigann engine, switchable from the Indexers page and downloaded precompiled instead of compiled on first boot, with capped concurrency and memory (#1121, #1126, #1128, #1132, #1134).
- Per-indexer search metrics and Cardigann health, with one verification badge per row (#1133, #1137).
- Disable a library indexer without removing it (#1112).
- More reliable Cardigann search: Pirate Bay arrays, FlareSolverr clearance and concurrency, and release page links for same-page results (#1114, #1131).
Library and metadata
- TV shows fall back to the other metadata provider (TVDB or TMDB) per show (#1119).
- Watch sync imports plays on copies mapped after they were watched (#1127).
- Library bulk actions require permission and respect account restrictions (#1105).
Web UI
- The download flow works from Search Media (#1109).
- The calendar's media type filter works (#1123).
- Poster rails scroll with the mouse wheel (#1124).
- The file actions menu paints above the collection rail (#1108).
- Admin pages on phones: one scroller per screen, closable modals without sideways scroll, card edges and a one-line page switcher (#1130, #1135, #1136).
Under the hood
- Mydia.Media, Mydia.Library, MediaImport, Downloads.Queue and ImportCandidates split into focused modules, behind a diff-based quality ratchet (#1103, #1106, #1110, #1111).
- Dialyzer runs in CI with every finding cleared (#1113, #1115).
- CI: Rust lint across all native crates, Cardigann guest releases, a pinned Nix guest and RustFS startup (#1102, #1122, #1125, #1129).