github P-Adamiec/Free-Games-Claimer-Remaster v1.8

latest releases: v1.9, v1.9d
13 days ago

Added

  • A setting that does nothing now says so (#40)STEAM_ENABLE=false is not a setting, so it changed nothing and nobody said a word; DRYRUN=maybe quietly counts as false in the same way. At startup main.py now names every setting in your .env that the bot does not read, points at STORES when the name looks like a per-store switch, and flags a value a yes/no or number setting cannot use. Passwords, e-mail addresses and webhook URLs are masked in that message.

Changed

  • Your e-mail address stays out of the log – AliExpress and the side stores printed the address they signed in with, and the README asked you to cut it out by hand before pasting a log into a bug report, which only protects the people who remember. mask_account() in src/core/claimer.py shortens it to p***@gmail.com everywhere it is printed, the notification header included, while the database keeps the whole address as the account key.
  • Itch.io giveaways that are only a download now say so once – plenty of itch.io giveaways hand you a file and offer no control that puts the game on your account, and the bot reported every one of them like a failed claim, on every run. src/stores/gamerpower.py now tells the two apart: the first run reports download only, nothing to claim, later runs keep quiet under skipped:download-only, which the summary hides unless NOTIFY_ALREADY_CLAIMED=true.
  • Dependency updates – bumped sqlalchemy to >=2.0.52, apprise to >=1.13.0,<2.0.0, python-dotenv to >=1.2.3 and pytest to >=9.1.1 (Dependabot #34, #36, #35, #31). The SQLAlchemy release matters here: it restores the daemon flag on aiosqlite's worker thread, which stopped working with the aiosqlite version this bot already requires. Apprise carries an upper bound because its author calls 1.13 the last 1.x and says 2.x will break the API, which a plain >= would pull into the image on the first rebuild after its release. Verified with a local image rebuild, pip check, pip-audit --strict, the full test suite and a real Chrome launch inside the container.
  • Dependabot stops opening one pull request per package – the group in .github/dependabot.yml filtered on update-types, a classification a >= requirement bump does not have, so four separate pull requests piled up instead of one. Every Python update now lands in a single python-dependencies group, and its pull requests target dev instead of main, the same route every other change takes. Both settings start working once the file reaches the default branch, which is what Dependabot reads.

Fixed

  • The test suite could not run inside the container.dockerignore dropped every *.md file, so tests/test_docs_env.py died on a missing README.md before a single test ran. The README stays in the image now, which costs a few kilobytes and makes python -m pytest tests/ -q work in the container as well as on your machine.
  • Epic announced mobile giveaways as claimed without claiming them (#39) – the status came from walking Epic's checkout, and that walk accepted any page text saying "in library", which an owned game in a recommendation row is enough to produce. _claim_game() in src/stores/epic.py now reloads the product page afterwards and reports claimed only when the page itself no longer offers the game, anything else is failed:unconfirmed.
  • GOG and Prime sometimes refused to start, with "coroutine raised StopIteration" (#38) – nodriver reads Chrome's list of open pages once at startup, so a first tab that arrives a moment late took the whole store down. open_first_tab() in src/core/claimer.py waits for that tab, asks Chrome for one outright when it never shows up, and a failure now retries the full launch. Each profile is also marked as cleanly closed before every start, which is what deleting the profile folder by hand used to fix.

Don't miss a new Free-Games-Claimer-Remaster release

NewReleases is sending notifications on new releases.