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

one hour ago

Added

  • Run the container as your own user (#58) – set PUID and PGID and docker-entrypoint.sh hands the data folder to that user once, then runs the screen, the viewer and the bot as it, so files in a mounted folder belong to you on the host. Leave them out and nothing changes.
  • Fanatical giveaways end up on your Steam account – _claim_fanatical_game() in src/stores/gamerpower.py checks your Fanatical orders before and after a claim and reveals only that giveaway's key. With steam in STORES, redeem_pending_keys() in src/stores/steam.py activates it at the end of the run.

Changed

  • The log says how long the IndieGala sign-in lasts – IndieGala keeps a sign-in for 14 days from the login and visits do not extend it, so the bot logs the end date and warns two days ahead that the next IndieGala giveaway will ask you for the captcha again.
  • Chrome closes cleanly before it is killed (PR #60 by @zaryar) – close_browser() in src/core/claimer.py asks Chrome to shut down first, so cookies and sessions reach the disk before the leftover processes are ended. Every store stayed signed in on the next run.
  • Microsoft always gets a window (PR #60 by @zaryar) – src/stores/microsoft.py starts Chrome visibly, like Epic, because Microsoft's account pages fail without one. It only matters when SHOW=false.
  • Fab is opt-in – fab left DEFAULT_STORES in main.py, so like Unity it runs only when STORES names it. If your STORES is empty and you want Fab's free assets, add STORES=steam,epic,fab,prime,gog,microsoft,ubisoft,aliexpress.
  • Failed claims are in the summary by default – NOTIFY_CLAIM_FAILS now defaults to true, so a game or check-in the bot could not take is listed with the reason instead of vanishing. That also makes NOTIFY_MISSING_BASE work as described; set NOTIFY_CLAIM_FAILS=false to hide failures again.
  • A shorter .env.example – every setting keeps its line, now with a one-line hint instead of a paragraph; the full description is in the README table. Microsoft is no longer called off by default, and the notification switches lost their end-of-line comments, which docker run --env-file kept as part of the value.
  • Dependency updates – sqlalchemy to >=2.1.0 (Dependabot #64). Checked against a copy of a live database: reading, the bot's queries and get_or_create() behave exactly as on 2.0.

Removed

  • TIMEOUT is gone – it was meant as the wait for a page element, but only a helper no store ever called read it, so changing it did nothing. Every store keeps its own waits; a TIMEOUT left in .env is named at startup as a setting the bot does not read.
  • The old *_ENABLE store switches are gone – FANATICAL_ENABLE, ITCHIO_ENABLE, INDIEGALA_ENABLE and ALIENWARE_ENABLE were replaced by STORES in 1.9 and kept for one more release. They do nothing now and the log says so at startup; name the site in STORES, e.g. STORES=...,fanatical, to keep it running.

Fixed

  • IndieGala signs in and claims again – _claim_indiegala_game() in src/stores/gamerpower.py never found IndieGala's e-mail field, and once signed in it took every giveaway as owned from a hint all its pages carry. It types the sign-in now, hands the login captcha to you over VNC, and counts a game only when the reloaded page says it is yours.
  • A quoted password works everywhere – a .env value written as 'secret' reached the bot with its quotes when the container was started with docker run --env-file or a NAS form, so sign-ins failed. src/core/config.py takes one matching pair of quotes off every setting it knows; compose and a plain .env behave as before.
  • A container started as another user gets its screen – NAS templates that set a user for the container left VNC without a home folder it could write, so the screen never came up. docker-entrypoint.sh gives such a user one in /tmp, so the bot runs whenever the data folder is writable.
  • A captcha in Epic's checkout now reaches you (#61) – after "Add to library" Epic sometimes shows an hCaptcha inside the checkout window, where the bot never looked. _checkout_challenge_present() in src/stores/epic.py looks there too, asks you over VNC and finishes the order once it is solved.
  • An Epic claim that did not land is reported (#61) – when the store page does not confirm the game, the summary lists it as notified with a link instead of hiding it with the failures, so you can take it yourself.
  • Epic never ticks a consent box for you – the licence step in _handle_new_checkout() ticked the first checkbox on the page, and after "Get" that can be "Share my email with Ubisoft". It only touches Epic's own licence box now.
  • Ubisoft's reCAPTCHA reaches you – when Ubisoft doubts a sign-in it shows a reCAPTCHA picture challenge that the captcha check in src/core/claimer.py did not recognise, so the bot gave up and asked you to sign in again. It now asks you to solve the challenge and waits on the same page.
  • Two more human checks are recognised (PR #60 by @zaryar) – _human_challenge_present() also knows DataDome's captcha and Cloudflare's "review the security of your connection" page, so they reach you over VNC instead of stalling a store.
  • A failed Ubisoft sign-in shows up in the summary (PR #60 by @zaryar) – the giveaways it held back are listed as failed:login-required instead of disappearing.
  • Itch.io no longer asks you to sign in while you are signed in (#59) – _itch_session_ready() in src/stores/gamerpower.py judged the session while Cloudflare's "Just a moment" page was still up. It lets that page clear first, and the prompts for Itch.io, Fanatical and IndieGala name the site instead of "gamerpower".
  • A VNC password no longer stops the container (#67) – since 1.10 start-vnc.sh left the password file readable by everyone, TurboVNC refused it and the container restarted forever whenever VNC_PASSWORD was set. The file is private now.
  • PUID with dropped capabilities explains itself (#58) – with cap_drop: ALL the switch to your user failed silently and the container restarted forever. docker-entrypoint.sh now says to add CHOWN, SETUID and SETGID back with cap_add and keeps running as root until you do.
  • Unity finds the asset it bought – since 1 October the giveaway link carries only the asset's number, which _package_id() in src/stores/unity.py did not read, so the bot could not check ownership: it reported its own claim as unconfirmed and then failed at the checkout every run. The name now comes from the asset page too.
  • A game Epic blocks in your region is no longer a failed claim – on Epic's "unavailable in your platform or region" page _claim_game() in src/stores/epic.py reported that sentence as a failed game. It now keeps the real name, leaves a game you own as owned and skips the rest quietly, and checks a game GamerPower also lists only once.
  • Steam's "Remember me" is read properly (#65) – the login form draws it as a styled box, so _do_login() in src/stores/steam.py never found it. It now leaves Steam's own tick alone and ticks the box only when it is off.
  • A GOG code that is mid-redemption is tried again (#66) – on "This code is currently being redeemed by someone" _redeem_gog_code() in src/stores/gog.py checks the sign-in and tries once more, otherwise it keeps the code for the next run instead of asking you to check it by hand.
  • An itch.io sale that ended stays out of the summary – GamerPower keeps listing an itch.io giveaway after the price comes back, and the bot reported it as a failed claim every run. It now only notes in the log that the game is not free right now.
  • The notification switches keep their word – NOTIFY_SKIP_STORES takes every name STORES takes and also silences the GamerPower sites and the "Needed you" line. NOTIFY_ERRORS=false stops the crash alert in main.py, AliExpress and GOG failures follow NOTIFY_CLAIM_FAILS, and Epic and AliExpress no longer send a failure twice.
  • Steam no longer adds a game's demo (#62) – checking a free DLC's base game, _ensure_base_game() in src/stores/steam.py could click the demo's button, and the free check could take a demo block for the giveaway. Demo blocks are skipped everywhere now, and the "costs 0.00" check, which never matched, works.

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

NewReleases is sending notifications on new releases.