- Adjust "Block Protected Games" to "Block games with known anti-cheat"
- Change "Enable Dark Mode" to "Enable dark theme"
- Improves right click "Refresh Game Data" to refresh all game/DLC data
- Adds logging statements on success for Refresh Game/DLC Data
- Change Refresh Queries to "Refresh Game Data" or "Refresh DLC Data" depending on what is right clicked upon
- Change Refresh Queries to only Refresh the selected Game/DLC Data, rather than all games data.
- Remove constant API retries, reduce attempted to 1 it's pointless when we hammer the API to retry over and over again. We get rate limited and even less data is returned. (Should simulatenously improve scanning to some extent
- Limit the amount of parallel API requests that we perform to avoid hammering the API (probably will still get rated limited if you scan a shit load of games though)
- Remove timeout on DLC name queries, was killing SteamCMD before it could resolve the name (Should ensure we get less Unknown DLC data)
- Add shared helper for DLC name resolution, consolidates duplicate StoreAPI and SteamCMD fallback (Again, should hopefully ensure there's less unknown DLC data)
- Add shared method for game record construction, removes duplicate code in install and persist paths
- Store DLCs per-game by ID in memory during scan to prevent duplicate DLC entries from displaying
- Read DLC names from CreamAPI configs alongside IDs for better DLC name matching before API requests
- Adjust logging for background DLC refreshes so they're better timed and groupped appropriately
- Add NEW label for DLCs that are "newly" detected VIA Background refresh
- Ensure newly discovered DLC for SmokeAPI are enabled by default due to how SmokeAPI functions by default unlocking DLC regardless of config
- Rename "All" to "Select All"
- Relocated settings button to top right corner
- Better center the Select All button with the settings button
- Remove the Uninstall All button > fuck it, you can already do this by selecting all and uninstalling selected.
- Fixes bug where game list was not updates after saving settings when changing the sort setting
- Add tooltips to the settings menu to describe what each setting does
- Add tooltips to the buttons in the mainform
- MainForm is the primary application window that displays the list of installed games and DLC unlockers, and is where DLC unlockers are configured and installed.
- ScanDialog performs a library scan and allows the user to select which games to begin configuring DLC unlockers for.
- Remove the MainForm cancel button > it doesn't really serve a purpose and it breaks the UI cause I suck.
- Add the start to a settings dialog, relocated several settings from the top bar into the new setttings dialog
- Add a custom Toggle Switch, change the CheckBox for SmokeAPI/CreamAPI to a Toggle Switch
- Relocate Uninstall All button to main form (Currently disabled)
- Better handling for the enabled/disabled state of a games DLC if an existing SmokeAPI/CreamAPI configuration is detected.
- Some additional checks to avoid duplicate DLC entries in the visual tree
- Add additional clarity to SmokeAPI logs for reading DLC unlocked/original state.
- Count how many DLCs SmokeAPI attempts to auto unlock, include this in the logging
- Save DLC enabled state to installed.json during install
- Restore DLC enabled state from installed.json when loading saved installed games on launch
- Added SmokeAPI.ReadConfigDlcIds() to read SmokeAPI.config.json and extract enabled/disabled DLC IDs from override_dlc_status and extra_dlcs
- Added CreamAPI.ReadConfigDlcIds() to read cream_api.ini and extract DLC IDs from [dlc] section
- On scan, when a SmokeAPI or CreamAPI unlocker is detected, read its config and adjust DLC enabled state accordingly
- Removed legacy dlc.json entirely (DlcChoicesPath, ReadDlcChoices, WriteDlcChoices, and all references) since installed.json now fully manages DLC state
- Refactored logging methods ProgramData.Log/LogWarning/LogError with a better structured Log.Info/Warn/Error and LogDestination enum for routing logs to the correct file (Scan, Steam, Unlocker, App)
- Relocated the cooldown folder from C:\ProgramData\CreamInstaller\cooldown to C:\ProgramData\CreamInstaller\Cache\cooldown (Does not cleanup the old location currently)
- Removes the old Save/Load buttons on the main window as they don't provide a real purpose with the new changes of loading installed DLC Unlockers
- Removes the Reset button as it clears the loaded settings which really serves no effective purpose with the new changes
- Moves the Uninstall All button to the Main Window since it doesn't really make sense for it to live on the Rescan window
- Add prompt on Uninstall All to confirm you actually WANT to remove EVERYTHING
- Chaged several classes within ThemeManager to sealed since they're not inherrited from in other areas of the code.
- Added Nullable section and defined some variables as nullable.
- Fix for SteamCMD Migration: Creates SteamCMD directory before trying to start the download (Woops, kinda need to do that.)
- Ensures the application migrates SteamCMD files fom the legacy location C:\ProgramData\Creamlnstaller\ to C:\ProgramData\Creamlnstaller\SteamCMD\
- Add information about proxying DLLs and finding the correct proxy DLL for a game.
- Adjust the FAQ section into an expand/collapse section. (Surely you'll read it if you have to expand it right?!)
- Add additional flags to the false positive section
- Cleanup some of the AI shit. (Yes, I ran the readme through AI, it made the formatting better for sure. ¯\_(ツ)_/¯)
- SteamCMD: Changed output reading from one character at a time to buffered reads, fixing a stderr deadlock issue and making the process much faster and more responsive to cancellation.
- DLC detection: Eliminated a busy-wait loop that was polling every 200ms on a background thread while waiting for game data to arrive. Now uses proper async signaling so the thread is freed up entirely.
- HTTP retries: Previously every Steam API error was retried up to 10 times with delays, even for "403 Forbidden" errors that will never succeed. The scanner now gives up immediately on permanent errors, preventing up to 90 seconds of wasted retries per failed app, and avoids triggering rate limits by hammering the API on doomed requests
- Replaced fixed 1-second waits with smarter retry timing that waits longer after each failed attempt and adds a small random delay to reduce API requests. Also reduced the maximum number of retry attempts from 10 to 3 for temporary network errors.
- Adds the ability to Test Ubisoft Games > Has a search function with a "public" API.
- Remove the DLC section from Steam Game Test Window, never really going to use this as originally the idea with test games was primarily to test DLC resolution.
- Ensure the game name is cleared whens witching between test platforms
- Proper cleanup of test data if the Clear All Tests button is clicked, ensures test games get cleared from the selection list as well.
- Adds a badge/color for ScreamAPI (Epic Games)
- Adds a badge/color for UPlay Unlocker (Ubisoft Games)
- Adds a badge/color for Koaloader (MISC Injection Methods)