What's New
Debrid Support
- Sign in with Real-Debrid or TorBox in Settings — torrent links resolve to direct HTTP downloads
- Cached torrents download at full speed with no P2P; automatically falls back to P2P when not cached
- Per-provider API keys with a connection test, stored in secure storage
Game Descriptions, Screenshots & Artwork (#21)
- ROM detail pages now show a description, screenshots, and artwork
- Sign in with ScreenScraper (descriptions + screenshots) and/or SteamGridDB (artwork) in Settings
- Tap any image for a fullscreen swipeable viewer
- Results are cached on-device; multi-disc games share a single lookup
Multi-Disc Games (#17)
- Multi-disc titles are grouped on the detail page with per-disc navigation
- New Download all discs button fetches every disc and writes an
.m3uplaylist - Playlists point at the playable file (e.g. the
.cue) even for extracted archives
Download Reliability (#22)
- Fixed the loop where a finished download was deleted and re-downloaded after an app crash
- Downloads verify final file size (and torrent filename) before completing
- Failed extractions keep the archive and mark the task failed instead of completing a corrupt file
- Stale torrent file indices are remapped by filename so the wrong ROM can never be saved under the right name
- Large-archive extraction is less likely to crash on memory-constrained handhelds
Catalog Fixes
- Restored all MiNERVA entries after upstream removed their index file (#28)
- NoPayStation downloads are named after the game instead of a CDN token (#27)
- The weekly database build now refuses to publish if a source comes back empty
Code Quality
- Flutter test suite tripled to 152 tests, including download-integrity and debrid coverage; 261 Python tests
- Updated GitHub Actions and fixed analyzer warnings on latest stable Flutter
Full Changelog: v1.6.0...v1.7.0