What's Changed
- fix(gamepad/windows): adopt GameInput backend for XInput controller support (#112) by @androosio in #115
- fix(launcher): stop ungated RetroArch override corrupting standalone launches; surface launch failures by @androosio in #120
- fix(themes): daisyUI conversion follow-ups — brightness, outline, toggle, accent readability by @androosio in #122
- Update README.md by @misobadev in #123
- Update NeoStation Hero image in README.md by @misobadev in #124
- fix(secondary-screen): stop preview video audio when device locks by @androosio in #125
- feat(esde): import metadata and fallback artwork from ES-DE by @androosio in #121
- fix: Linux RetroArch path resolution and ARM64 SoLoud audio deps by @misobadev in #126
- Added automatic multi-disc organiser by @ItsRetroPup in #119
- Feature/new gamelist by @misobadev in #127
- refactor(game_screen): extract GameListView into its own file by @androosio in #128
- fix(game_screen): restore analyze-clean by using null-aware list element by @androosio in #130
- refactor: extract self-contained helper types into focused files (move-only) by @androosio in #129
- refactor(settings): extract reusable SettingRow widget by @androosio in #131
- refactor(systems-grid): extract pure grid_geometry helpers + unit tests by @androosio in #132
- style: dart format 5 drifted files to restore release format gate by @androosio in #133
- refactor(systems-grid): promote grid loading/empty states to widgets by @androosio in #134
- refactor(screenscraper): promote scraping summary dialog to a widget by @androosio in #135
- refactor(secondary-screen): extract pure background builders to top-level functions by @androosio in #136
- fix(secondary): stop auto-screenshot (and mute/dock actions) firing on every restart by @androosio in #138
- refactor(secondary-screen): extract pure Now Playing helpers to top-level functions by @androosio in #137
- refactor(secondary-screen): promote app dock to a widget by @androosio in #139
- refactor(secondary-screen): promote Now Playing panel to a widget by @androosio in #140
- refactor(secondary-screen): promote achievement panel to a widget by @androosio in #141
- refactor(secondary-screen): promote achievement comments page to a widget by @androosio in #142
- refactor(games-list): extract gamepad-nav input handlers into a part file by @androosio in #143
- refactor(games-list): extract favorites/reorder into a part file by @androosio in #144
- refactor(games-list): extract data-loading into a part file by @androosio in #145
- refactor(games-list): extract secondary-display/video into a part file by @androosio in #146
- refactor(games-list): extract launch-flow into a part file by @androosio in #147
- refactor(settings-dialog): extract gamepad-nav into a part file by @androosio in #148
- refactor(settings-dialog): extract emulator row builders into a part file by @androosio in #149
- refactor(settings-dialog): extract dialog chrome into a part file by @androosio in #150
- refactor(settings-dialog): extract tab bodies into a part file by @androosio in #151
- refactor(systems-grid): extract gamepad grid navigation into a part file by @androosio in #152
- refactor(systems-grid): extract theme/background asset handling into a part file by @androosio in #153
- refactor(systems-grid): extract pull-to-refresh/pinch gestures into a part file by @androosio in #154
- refactor(settings): extract LanguagePickerOverlay into its own widget file by @androosio in #155
- refactor(screenscraper): extract region-priority config into a collaborator by @androosio in #156
- refactor(screenscraper): extract ROM identity helpers into a collaborator by @androosio in #157
- refactor(screenscraper): extract media-resolution helpers into a collaborator by @androosio in #158
- refactor(screenscraper): extract HTTP client + rate limiter into a collaborator by @androosio in #159
- refactor(screenscraper): extract media downloader into a collaborator by @androosio in #160
- refactor(game): extract GamepadNavigationManager/NavLayer out of game_service by @androosio in #161
- refactor(game): extract GameListService out of game_service facade by @androosio in #162
- refactor(game): extract FavoritesService out of game_service facade by @androosio in #163
- refactor(game): extract GameSessionManager out of game_service facade by @androosio in #164
- refactor(game): extract GameLaunchService out of game_service facade by @androosio in #165
- refactor(config): extract trivial mutators out of SqliteConfigProvider (H start) by @androosio in #166
- refactor(config): extract ROM scanning + system detection out of SqliteConfigProvider (H) by @androosio in #167
- refactor(config): extract secondary-display integration out of SqliteConfigProvider (final H slice, closes campaign) by @androosio in #168
- feat(esde): confirm before resetting ES-DE import by @androosio in #169
- Docs/readme project team by @misobadev in #175
- fix(secondary): fanart dim on system art + preview-audio race + stale RA snapshot by @androosio in #176
- fix(system-art): stop re-probing uncovered systems on every theme select by @androosio in #177
- feat(dock): secondary-screen app dock + launcher by @androosio in #178
- refactor(settings): unify row/section components across settings panels by @androosio in #179
- fix(secondary): guard initialSync await so app dock actually reveals by @androosio in #180
- feat(setup-wizard): ES-DE import & system art-pack steps by @androosio in #184
- fix(setup-wizard): eagerly load theme manifest so art pack actually applies by @androosio in #185
- Added Korean language by @ItsRetroPup in #183
- feat(themes): import custom themes from daisyUI JSON by @androosio in #186
- Feature/new gamelist two by @misobadev in #188
Full Changelog: v0.9.5+118...v0.9.6+120