Skip to content

Update Free Loader to version 1.6.0 - #1107

Open
jwhitlow45 wants to merge 1 commit into
SteamDeckHomebrew:mainfrom
jwhitlow45:main
Open

Update Free Loader to version 1.6.0#1107
jwhitlow45 wants to merge 1 commit into
SteamDeckHomebrew:mainfrom
jwhitlow45:main

Conversation

@jwhitlow45

@jwhitlow45 jwhitlow45 commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Update Free Loader to 1.6.0

Fixing the sins in the Free Loader source code now that my day job is in Typescript and I finally had a free weekend. I'm also more than open to feedback on the new UI as it's a pretty big change and I am decidedly not a frontend developer.

Notable Changes

Amazon Prime Support (jwhitlow45/free-loader#1)

  • Free games from Amazon Prime are now shown alongside the other stores, with their own store toggle
  • Amazon Prime games are sourced from the free and open-source LootScraper project, as GamerPower does not cover them
  • Amazon Prime prices are shown in euros, as that is the only currency LootScraper provides

New Look

  • Redesigned game cards with full-width artwork, store icons, and a Steam-style FREE badge shown next to the original price
  • Compacted game details into a single line, e.g. "Steam · 2d", with time remaining counting down through days, hours, and minutes as a giveaway nears its end
  • Hidden games are now dimmed and marked with an eye icon instead of a text label
  • Added a loading spinner and friendlier messages when there are no games or the list fails to load
  • Added an "Updated 2h ago" note under the action buttons and a spinning refresh icon while an update is running
  • QR codes now return to the game art when moving to another game, so only one QR code is ever on screen
  • Update frequency is now set with native sliders instead of arrow buttons
  • Clear Games Database and Restore Settings now ask for confirmation first
  • Store toggles are ordered Steam first, then alphabetically, and "Notify on Free Games" is now "Enable Notifications"

Accessibility

  • Added an Accessibility settings section
  • Added a Larger Text mode that increases text size across the games list (defaults to off)
  • Added a Disable Animations toggle that turns off all plugin animations (defaults to off)

Behavior

  • Clicking a toast notification now opens the plugin in the quick access menu
  • Update frequency is now honored across restarts by scheduling from the last update time, instead of updating on every boot
  • Games list updates no longer freeze the rest of the plugin on a slow connection
  • The plugin now recovers automatically from a corrupted games database instead of failing until manually cleared
  • An update frequency of zero can no longer be set

Bugs

  • Fix section headers on the settings page hiding behind the top bar after scrolling
  • Fix stray "(Itchio)" and "(itchio)" markers being left in some game titles
  • Fix the back button in the plugin header fading out on its right side
  • Fix the "Cleared games database" toast showing before the database was actually cleared

Nerd stuff

  • Migrated to the current Decky SDK: @decky/ui and @decky/api on the frontend, the decky module with api_version 1 on the backend
  • Deal sources are fetched independently and merged, so one source failing cannot wipe the other source's cached games or hidden flags
  • The Amazon feed is parsed with regex, as Decky's bundled Python does not ship xml.etree
  • Enabled TLS certificate verification on GamerPower requests using the system CA bundle, with fallbacks for bundled Pythons
  • Added a 15 second HTTP timeout and moved deal updates into a thread, with locked, atomic writes to the deals database
  • The User-Agent string now reads its version number from package.json instead of hardcoding it
  • Added settings_read so the frontend loads all settings in one backend call instead of eleven
  • Reworked the games list to store deal data instead of rendered elements, and the settings page to use React state instead of module globals
  • Fix update timers leaking across plugin reloads and orphaned intervals from concurrent updates
  • Game panels are now keyed by deal id so panel state cannot attach to the wrong game
  • Namespaced animation keyframes to stop clashing with Steam UI styles
  • Store title markers are now matched case-insensitively
  • Lowered log noise from setting reads and unparseable end dates
  • Added unit tests for deal formatting plus a make test target
  • Updated the toolchain to rollup 4, TypeScript 5, and React 18 types

Task Checklist

Developer

  • I am the original author or an authorized maintainer of this plugin.
  • I have abided by the licenses of the libraries I am utilizing, including attaching license notices where appropriate.
  • Generative AI was NOT used to write a majority of the code I am submitting.

Plugin

  • I have verified that my plugin works properly on the Stable and Beta update channels of SteamOS.
  • I have verified my plugin is unique or provides more/alternative functionality to a plugin already on the store.

Backend

  • No: I am using a custom backend other than Python.
  • No: I am using a tool or software from a 3rd party FOSS project that does not have it's dependencies statically linked.
  • No: I am using a custom binary that has all of it's dependencies statically linked.

Community

  • I have tested and left feedback on two other pull requests for new or updating plugins.
  • I have commented links to my testing report in this PR.

Testing

  • Tested by a third party on SteamOS Stable or Beta update channel.

@jwhitlow45
jwhitlow45 requested a review from a team as a code owner August 16, 2026 20:50
@github-actions github-actions Bot added the plugin-update Updating a plugin on the Plugin Store label Aug 16, 2026
@github-actions

Copy link
Copy Markdown

Issues Found

  • Both testing boxes are present in your description. Please remove one of them per the Markdown comment above the testing section.

Next Steps

  1. If we found any issues above, please edit your pull request description to resolve them and leave a comment saying you've done so.
  2. For the quickest review, please see the Community section of the pull request template for how you can help other developers.
  3. Once your description is correct, a maintainer will review your pull request as soon as possible.

Thank you for your contribution! If you need any help, please reach out on our Discord server. ❤️

@jwhitlow45

Copy link
Copy Markdown
Contributor Author

Fixed issues from PR bot

@jwhitlow45

jwhitlow45 commented Aug 16, 2026

Copy link
Copy Markdown
Contributor Author

@jwhitlow45

jwhitlow45 commented Aug 16, 2026

Copy link
Copy Markdown
Contributor Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

plugin-update Updating a plugin on the Plugin Store

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant