Note: This release adds smart local scanning, a revamped onboarding flow with auto-detection, and cache-first game loading for instant list display. Upgrading from
<= 0.9.3still requires a fresh install.
Highlights
- Scan Library — Full-library scan from Settings with animated per-system progress, game count badges, and a completion summary showing total games discovered across all consoles.
- Smart Onboarding — Local Setup now auto-detects existing ROM folders at common paths. Choose to scan a found folder, create standard folders with a system picker, pick an existing folder manually, or skip for later.
- Cache-First Loading — Game lists load instantly from local cache, then silently refresh from remote providers in the background. The UI only updates if the list actually changed.
- Expanded ROM Support — 27 systems, 200+ file formats. Added support for GameCube (ISO/GCM/CISO), Wii (WBFS/WIA/CISO), PS2 (CSO), PS3 (PKG), and many more across all systems.
- Library-Based Search — Y button on home now navigates directly to Library with search open, replacing the standalone global search overlay.
Change Log
Added:
- Scan Library screen — Settings entry opens animated console grid with per-system scan progress and result badges.
- Smart onboarding auto-detection — detects ROM folders at
/storage/emulated/0/ROMs,/Roms,/romswith scan, create, or pick options. - Cache-first game list loading with silent background refresh and filename-diffed updates.
- Offline indicator — amber "Offline — cached data" toast when sync fails; sync badge shows failure state.
- Provider reordering — D-pad or arrow buttons to change provider priority in console config.
- Test & Save — single button press tests provider connection and auto-saves on success.
- User Guide (
docs/USER_GUIDE.md) — comprehensive 582-line guide covering all features, controls, and troubleshooting.
Improved:
- ROM format coverage expanded across 10+ systems (GameCube, Wii, PS2, PS3, PSP, Mega Drive, Dreamcast, Saturn, Arcade, N64, SNES).
- Isolate-based local scanning — filesystem scanning offloaded to a Dart isolate for smoother UI.
- Library sync freshness — 5-minute cache prevents redundant re-syncs;
clearFreshness()forces refresh after config changes. - Sync now covers local-only systems, not just remote ones.
- Batched install-status checks (20-game parallel batches).
- Games with no region/language metadata now pass through filters instead of being excluded.
- Console grid shows blue folder badge for local-only systems (distinct from green provider checkmark).
- Post-settings navigation re-syncs config and clears freshness.
- Library installed detection matches extracted ROM files (e.g.,
Game.zip→Game.iso).
Bug Fixes:
- GameDetail variant index clamped to valid range (prevents crash on variant list changes).
- Search overlay focus handling improved.
Technical Internal:
GlobalSearchOverlayremoved (675 lines) — replaced by Library withopenSearch: true.RepoManagerandRomHeaderParserremoved (no longer needed).archivedependency removed frompubspec.yaml.GameMergeHelperextracted for dedup logic (remote-vs-local merge, archive expansion, multi-file detection).SystemModelgainsarchiveExtensions,allRomExtensions,allGameExtensions, andisGameFile().- Unused providers cleaned up from
app_providers,config_providers,download_providers. LibrarySyncServiceextended withdiscoverAll(),isFresh(),hadFailuresstate.