Changes:
- Introduced controller architecture: split MainWindow responsibilities into six focused controller classes (NotificationManager, GreenLumaLauncher, GameListController, ProfileController, SearchController, AppListController) and one new model (AppListProgressReport)
- Injected an inline search box and type-filter ComboBox row directly above the game list
- Added an AppList import progress overlay containing an indeterminate ProgressBar and live status labels
- Tweaked header layout dimensions
- Hardened SteamService by switching SteamClient to the WebSocket protocol with a 10-second connection timeout to prevent indefinite hangs caused by stale task-completion sources after a reconnection
- Implemented exponential backoff on reconnection attempts (5s × 2^attempt, capped at 60 seconds) along with a SemaphoreSlim(2,2) API throttle for batch app and package info lookups
- Implemented a hybrid app-list merge feature that streams a local legacy snapshot (
Data/steam_applist_legacy.json) using an async FileStream with a 64 KB read buffer to discover hidden and delisted Apps - Configured the hybrid merge engine to use the legacy data as a baseline, overwrite collisions with modern live API data, and sort final entries ascending by AppId (falling back to an unsorted merge on sort failures)
- Added a 5-second per-request timeout to SearchStoreAsync
- Added multi-resolution ICO file decoding in IconUrlConverter via IconBitmapDecoder to pick the largest available frame and prevent FileFormatException crashes
- Added a no-op DecodeFailed handler on BitmapImage to suppress async HTTP source decode exceptions from surfacing on the UI thread
- Pre-warmed the SteamService connection on a background thread immediately after configuration loading to establish the WebSocket handshake before the user's first search
- Optimization pass: replaced
results.Any(...)withresults.Exists(...)on active List structures to completely eliminate unnecessary LINQ allocations - Increased AppListLimit to 148
- Renamed Software to Other
New Contributors:
- @FroggMaster made their first contribution in #41
Full Changelog: v1.0.0-rc2.13...v1.0.0-rc2.14
ToDo:
- Remove entries from
Data/steam_applist_legacy.jsonthat are present in the modern API endpoint - Fix
Data/steam_applist_legacy.jsonnot being included in the build (tehee, sry about that) - Add the option to turn off the GreenLuma version notice
- Split the
Lots of improvementscommit into seperate commits.