🎉 New Features
Discover & Metadata
- Add discover page with curated lists, filtering, and UI refresh
- Add TVDB as first-class metadata provider alongside TMDB
- Auto-discover TVDB IDs for legacy TMDB-only TV shows
- Show error state when metadata service is unavailable
Plex Integration
- Add Plex watched status sync
Media Imports
- Add batch editing, inline season/episode editing, series re-match, and collapsible seasons
- Speed up media imports with caching and standardize page layouts
- Filter extras, samples, and trailers during scan and import
Downloads & Search
- Add expandable details panel with release, client, and quality info
- Surface indexer errors to UI so you know when something's wrong
- Show download errors inline and mark grabbed releases
- Reduce aggressive automatic search to prevent rate limiting
Cardigann Engine
- Improve engine compatibility with filter extraction and JSON parsing fixes
- Add parenthesized sub-expression support to template parser
- Add snapshot testing for engine definitions
Library & Files
- Add media file trash system with 30-day retention
- Detect and clean stale/orphaned download records
- Delete files when removing download after import
Player
- Add smart file selection based on device and network
- Fix auto-play next episode never triggering
Admin & UI
- Redesign media show page sidebar and action buttons
- Redesign status tab activity panels
- Polish form inputs and fix media card corner clipping
- Add job cancel UI and prevent DefinitionSync stacking
🐛 Bug Fixes
- Reject releases with zero title match when search query is provided
- Reject TV season/episode releases in movie searches
- Skip duplicate check for manual downloads and ignore trashed files
- Exclude trashed files from all remaining codepaths
- Correct unique constraint field check and handle search_completed message
- Handle missing year key and restore edited badges in import UI
- Resolve crash when rendering quality info in downloads page
- Extract clean error messages from Prowlarr API responses
- Handle Req.TransportError in FlareSolverr and indexer connections
- Make FlareSolverr health check async to prevent page blocking
- Handle P2P get_network_stats race condition on startup
- Use repeated query params for Prowlarr API compatibility
- Handle client_error tuples and non-string reasons in download error formatting
🔧 Technical Changes
- Add NixOS module, VM test, and PostgreSQL package variant
- Add Nix CI workflow with package build and NixOS module test
- Run full test suite against both SQLite and PostgreSQL in CI
- Use Blacksmith build-push-action for Docker layer caching
- Add compact test output with timing and isolated precommit pipeline
- Add Wallaby feature tests for guest system
- Extract build_magnet into TorrentHash module
- Remove unused Trakt GraphQL types and /media route
- Migrate Nix flake to flake-parts with modular structure
Docker Images
# SQLite (recommended for most users)
docker pull ghcr.io/getmydia/mydia:0.9.0
# PostgreSQL
docker pull ghcr.io/getmydia/mydia:0.9.0-pgPlayer Downloads
Platform-specific player downloads are available as release assets below.
| Platform | Notes |
|---|---|
| Android | APK for direct installation |
| iOS | Available on TestFlight (if configured) |
| macOS | DMG disk image with auto-updates via Sparkle |
| Windows | Installer (.exe) |
| Linux | Bundle in tar.gz archive |
| Web | Integrated at /player on your Mydia server
|
Full Changelog: v0.8.1...v0.9.0