mirror of
https://github.com/alexbelgium/hassio-addons.git
synced 2026-09-04 00:43:34 +02:00
feat(free_games_claimer): update upstream remaster to 1.6 (#3012)
* feat(free_games_claimer): update upstream remaster to 1.6 Bumps the pinned Free-Games-Claimer-Remaster commit from 1.1 to the 1.6 release, adding the Ubisoft, Fab, AliExpress and Epic mobile stores, fixed daily scheduler times and the --accept-lang detection fix. Mirrors upstream's Chromium hardening (no-op xdg-open plus an AutoLaunchProtocolsFromOrigins managed policy) so app-scheme links cannot block the VNC session, and defaults upstream's release-update notification off because it advises "docker compose pull" instead of the add-on store. Closes #2990 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * feat(free_games_claimer): track upstream releases instead of a pinned commit The Dockerfile pinned upstream by commit SHA, which the repository updater cannot bump, so updater.json was paused and every upstream release needed a manual edit. Replaces the SHA with ARG BUILD_UPSTREAM="1.6" -- the repo-wide idiom the updater rewrites -- and downloads the matching v<version> source tarball. Unpauses updater.json and excludes upstream's development tags (v1.7d and similar), which carry no GitHub release. The add-on keeps its own 2.x version series: ha_version.py derives a strictly newer add-on version (2.1.0 -> 2.1.1) from a lower-sorting upstream tag, so Home Assistant still offers the update. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * fix(free_games_claimer): survive an upstream tag naming change lastversion reports upstream's v1.7d development tag as release "1.7", for which GitHub serves no source archive; "github_exclude": "d" keeps it out of the updater's reach. As a second line of defence the build now also tries the tag name without the "v" prefix, so an unattended version bump cannot break the image build on a tag naming change alone. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * docs(free_games_claimer): make the description's store list explicitly partial The shortened description named a subset of the supported stores, which both review bots read as an inaccurate list. "and more" says the list is partial while keeping the line inside the 80 column limit. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * docs(free_games_claimer): state the mutable-tag trade-off honestly The comment and README carried over a claim from the commit-pin era: that the image contents cannot change without a version bump. A release tag is mutable, so that is no longer true. Say what actually holds and why the trade-off is accepted. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * fix(free_games_claimer): stop the upstream label guessing the tag form io.hass.upstream named the v-prefixed tag, which is wrong on the path where the build falls back to the unprefixed archive. Point it at the releases list, which is correct either way; the installed release is already recorded in updater.json, CHANGELOG.md and the startup banner. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,3 +1,28 @@
|
||||
## 2.1.0 (2026-08-24)
|
||||
|
||||
- Updated the pinned upstream from Free Games Claimer Remaster 1.1 to 1.6,
|
||||
which adds the Ubisoft giveaway, Fab, AliExpress and Epic mobile stores,
|
||||
fixed daily scheduler times, the `VNC_URL` notification link override, and a
|
||||
fix for the `--accept-lang` flag that made every store's browser detectable
|
||||
as automated.
|
||||
- Mirrored upstream's Chromium hardening: `xdg-open` is neutralised and an
|
||||
`AutoLaunchProtocolsFromOrigins` policy is installed, so app-scheme links
|
||||
cannot open a blocking dialog in the VNC session.
|
||||
- Disabled upstream's release-update notification by default. It tells the user
|
||||
to run `docker compose pull`, while the add-on is updated through the Home
|
||||
Assistant add-on store. Set `NOTIFY_UPDATES=true` in `config.env` to receive
|
||||
it anyway.
|
||||
- Reworded the add-on description so the store list reads as partial rather
|
||||
than exhaustive; the full list is in the README.
|
||||
- The default store selection is unchanged: existing installations keep
|
||||
claiming from Epic, Prime Gaming and GOG until `STORES` is edited.
|
||||
- Replaced the pinned upstream commit with `ARG BUILD_UPSTREAM`, which names an
|
||||
upstream release tag, and re-enabled the repository updater for this add-on.
|
||||
Upstream releases are now picked up automatically instead of requiring a
|
||||
manual commit pin. Upstream's development tags are excluded: `lastversion`
|
||||
reports the `v1.7d` development tag as release `1.7`, for which no source
|
||||
archive exists, so an unfiltered update would have broken the build.
|
||||
|
||||
## 2.0.1 (2026-07-17)
|
||||
|
||||
- Aligned the pull-request build context with the production builder by copying
|
||||
|
||||
@@ -17,7 +17,7 @@ ARG BUILD_REF
|
||||
ARG BUILD_REPOSITORY
|
||||
ARG BUILD_VERSION
|
||||
ARG UPSTREAM_REPOSITORY="P-Adamiec/Free-Games-Claimer-Remaster"
|
||||
ARG UPSTREAM_REF="cca4992354215cef8807b748575af797606627f4"
|
||||
ARG BUILD_UPSTREAM="1.6"
|
||||
|
||||
ENV S6_CMD_WAIT_FOR_SERVICES="1" \
|
||||
S6_CMD_WAIT_FOR_SERVICES_MAXTIME="0" \
|
||||
@@ -27,10 +27,7 @@ ENV S6_CMD_WAIT_FOR_SERVICES="1" \
|
||||
WIDTH="1280" \
|
||||
HEIGHT="720" \
|
||||
DEPTH="24" \
|
||||
SHOW="1" \
|
||||
COMMIT="${UPSTREAM_REF}" \
|
||||
BRANCH="main" \
|
||||
NOW="${BUILD_DATE}"
|
||||
SHOW="1"
|
||||
|
||||
# Install the dependencies used by Free Games Claimer Remaster. The upstream
|
||||
# Dockerfile supports both amd64 (Google Chrome) and arm64 (Chromium), so the
|
||||
@@ -87,6 +84,11 @@ RUN apt-get update \
|
||||
else \
|
||||
apt-get install -y --no-install-recommends chromium; \
|
||||
fi \
|
||||
&& printf '#!/bin/sh\nexit 0\n' > /usr/bin/xdg-open \
|
||||
&& chmod +x /usr/bin/xdg-open \
|
||||
&& mkdir -p /etc/opt/chrome/policies/managed /etc/chromium/policies/managed \
|
||||
&& printf '%s\n' '{"AutoLaunchProtocolsFromOrigins":[{"protocol":"aliexpress","allowed_origins":["*"]},{"protocol":"aliexpresshd","allowed_origins":["*"]},{"protocol":"aecmd","allowed_origins":["*"]},{"protocol":"alibaba","allowed_origins":["*"]},{"protocol":"alipay","allowed_origins":["*"]},{"protocol":"alipays","allowed_origins":["*"]},{"protocol":"tmall","allowed_origins":["*"]},{"protocol":"taobao","allowed_origins":["*"]},{"protocol":"market","allowed_origins":["*"]},{"protocol":"intent","allowed_origins":["*"]}]}' \
|
||||
| tee /etc/opt/chrome/policies/managed/fgc-autolaunch.json /etc/chromium/policies/managed/fgc-autolaunch.json > /dev/null \
|
||||
&& ln -sf /usr/share/novnc/vnc_auto.html /usr/share/novnc/index.html \
|
||||
&& ln -sf /usr/bin/python3 /usr/bin/python \
|
||||
&& apt-get purge -y gnupg \
|
||||
@@ -94,13 +96,20 @@ RUN apt-get update \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/* /var/cache/* /var/tmp/* /tmp/* /usr/share/doc/*
|
||||
|
||||
# Install a deterministic snapshot of the replacement upstream. Updating the
|
||||
# upstream reference is intentionally explicit so image contents cannot change
|
||||
# without an add-on version bump.
|
||||
# Install the upstream release named by BUILD_UPSTREAM. The repository updater
|
||||
# bumps that value together with the add-on version. A release tag is a mutable
|
||||
# reference: rebuilding the same BUILD_UPSTREAM installs whatever the tag points
|
||||
# at today, which is the accepted cost of tracking upstream automatically.
|
||||
# Upstream tags its releases "v1.6", but the tag name is downloaded without the
|
||||
# prefix as well so that an unattended update does not fail the build if
|
||||
# upstream ever drops it.
|
||||
WORKDIR /fgc
|
||||
RUN curl --proto "=https" --tlsv1.2 -fsSL \
|
||||
"https://github.com/${UPSTREAM_REPOSITORY}/archive/${UPSTREAM_REF}.tar.gz" \
|
||||
RUN (curl --proto "=https" --tlsv1.2 -fsSL \
|
||||
"https://github.com/${UPSTREAM_REPOSITORY}/archive/v${BUILD_UPSTREAM}.tar.gz" \
|
||||
-o /tmp/free-games-claimer-remaster.tar.gz \
|
||||
|| curl --proto "=https" --tlsv1.2 -fsSL \
|
||||
"https://github.com/${UPSTREAM_REPOSITORY}/archive/${BUILD_UPSTREAM}.tar.gz" \
|
||||
-o /tmp/free-games-claimer-remaster.tar.gz) \
|
||||
&& tar -xzf /tmp/free-games-claimer-remaster.tar.gz --strip-components=1 -C /fgc \
|
||||
&& python3 -m pip install --no-cache-dir --break-system-packages -r requirements.txt \
|
||||
&& dos2unix ./*.sh \
|
||||
@@ -155,4 +164,4 @@ LABEL \
|
||||
org.opencontainers.image.created="${BUILD_DATE}" \
|
||||
org.opencontainers.image.revision="${BUILD_REF}" \
|
||||
org.opencontainers.image.version="${BUILD_VERSION}" \
|
||||
io.hass.upstream="https://github.com/${UPSTREAM_REPOSITORY}/tree/${UPSTREAM_REF}"
|
||||
io.hass.upstream="https://github.com/${UPSTREAM_REPOSITORY}/releases"
|
||||
|
||||
@@ -24,14 +24,19 @@ This add-on is based on
|
||||
[Free Games Claimer Remaster](https://github.com/P-Adamiec/Free-Games-Claimer-Remaster).
|
||||
It can claim free games from:
|
||||
|
||||
- Epic Games Store
|
||||
- Epic Games Store, including its weekly free mobile game
|
||||
- Fab, Epic's asset marketplace (`fab`)
|
||||
- Amazon Prime Gaming
|
||||
- GOG
|
||||
- Steam
|
||||
- Ubisoft giveaways (`ubisoft`)
|
||||
- AliExpress daily coin check-in (`aliexpress`)
|
||||
- GamerPower-supported stores, when explicitly enabled
|
||||
|
||||
For compatibility with previous add-on releases, the default store selection
|
||||
remains Epic Games, Prime Gaming, and GOG.
|
||||
remains Epic Games, Prime Gaming, and GOG. The other stores are enabled by
|
||||
adding them to `STORES`, for example `epic,prime,gog,fab,ubisoft`, and each
|
||||
needs its own credentials in `config.env`.
|
||||
|
||||
## Web interface
|
||||
|
||||
@@ -98,6 +103,11 @@ NOTIFY=tgram://bot-token/chat-id
|
||||
# DISCORD_WEBHOOK=https://discord.com/api/webhooks/...
|
||||
```
|
||||
|
||||
Upstream's release-update notification (`NOTIFY_UPDATES`) is disabled by the
|
||||
add-on, because it advises running `docker compose pull` while the add-on is
|
||||
actually updated through the Home Assistant add-on store. Setting
|
||||
`NOTIFY_UPDATES=true` in `config.env` re-enables it.
|
||||
|
||||
Existing variables such as `EG_EMAIL`, `EG_PASSWORD`, `PG_EMAIL`,
|
||||
`PG_PASSWORD`, `PG_OTPKEY`, `GOG_EMAIL`, `GOG_PASSWORD`, `SHOW`, `WIDTH`,
|
||||
`HEIGHT`, `TIMEOUT`, `LOGIN_TIMEOUT`, `DRYRUN`, and `NOTIFY` remain compatible.
|
||||
@@ -132,16 +142,31 @@ normally uses port `7080`.
|
||||
|
||||
## Upstream update policy
|
||||
|
||||
The image is built from an explicit upstream commit in the Dockerfile. This
|
||||
keeps amd64 and aarch64 images reproducible and prevents an upstream branch or
|
||||
container tag from changing without an add-on review and version bump.
|
||||
The image is built from the upstream release named by `ARG BUILD_UPSTREAM` in
|
||||
the Dockerfile, downloaded as the matching `v<version>` source tarball. The
|
||||
repository updater tracks upstream releases and bumps that value, the add-on
|
||||
version and `CHANGELOG.md` together, so a new upstream release reaches the
|
||||
add-on without a manual edit.
|
||||
|
||||
The repository updater is intentionally paused for this add-on because the
|
||||
add-on uses its own `2.x` version series while the replacement upstream uses a
|
||||
`1.x` version series. An automatic replacement would risk a Home Assistant
|
||||
version regression and would not safely update the pinned commit. A maintainer
|
||||
upstream update must therefore update `UPSTREAM_REF`, `upstream_version`, the
|
||||
add-on version, and `CHANGELOG.md` together.
|
||||
A release tag is a mutable reference. Rebuilding the same `BUILD_UPSTREAM`
|
||||
installs whatever that tag points at, so an upstream tag that is force-moved or
|
||||
deleted would change or fail the build without an add-on change. That is the
|
||||
accepted cost of automatic tracking, and it is the same trade-off every other
|
||||
automatically updated add-on in this repository makes; the previous commit pin
|
||||
was immutable but could only be advanced by hand.
|
||||
|
||||
Upstream's development tags (`v1.7d` and similar) are filtered out through
|
||||
`"github_exclude": "d"` in `updater.json`. Without it the updater reports the
|
||||
`v1.7d` tag as release `1.7`, for which GitHub serves no source archive, and
|
||||
the build would fail.
|
||||
|
||||
The add-on version does not track the upstream version. The add-on uses a `2.x`
|
||||
series while upstream is on `1.x`, and Home Assistant only offers an update
|
||||
when the new version sorts strictly higher, so the updater increments the
|
||||
add-on version (`2.1.0` to `2.1.1`) instead of publishing a lower-sorting
|
||||
upstream number. The upstream release actually installed is recorded in
|
||||
`upstream_version` in `updater.json`, in `CHANGELOG.md`, and in the add-on's
|
||||
startup banner.
|
||||
|
||||
## Installation
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
arch:
|
||||
- aarch64
|
||||
- amd64
|
||||
description: "Automatically claims free games from Epic Games Store, Amazon Prime Gaming, GOG, Steam, and optional GamerPower-supported stores"
|
||||
description: "Claims free games from Epic, Prime, GOG, Steam, Ubisoft and more"
|
||||
devices:
|
||||
- /dev/dri
|
||||
- /dev/dri/card0
|
||||
@@ -96,5 +96,5 @@ schema:
|
||||
slug: free_games_claimer
|
||||
udev: true
|
||||
url: https://github.com/alexbelgium/hassio-addons
|
||||
version: "2.0.1"
|
||||
version: "2.1.0"
|
||||
webui: "[PROTO:ssl]://[HOST]:[PORT:6080]"
|
||||
|
||||
@@ -36,6 +36,12 @@ set -a
|
||||
source "${RUNTIME_CONFIG}"
|
||||
set +a
|
||||
|
||||
# Upstream checks GitHub for newer releases and then tells the user to run
|
||||
# "docker compose pull", which is wrong here: the add-on is updated through the
|
||||
# Home Assistant add-on store. Default the check off, but honour an explicit
|
||||
# NOTIFY_UPDATES from config.env.
|
||||
export NOTIFY_UPDATES="${NOTIFY_UPDATES:-false}"
|
||||
|
||||
# The Home Assistant port mapping is intentionally kept at 6080 for a seamless
|
||||
# upgrade from the previous add-on, even though the new upstream defaults to 7080.
|
||||
if [ -n "${NOVNC_PORT:-}" ] && [ "${NOVNC_PORT}" != "6080" ]; then
|
||||
|
||||
@@ -10,12 +10,17 @@ TIMEOUT=60
|
||||
LOGIN_TIMEOUT=180
|
||||
VNC_LOGIN_TIMEOUT=180
|
||||
NOVNC_PORT=6080
|
||||
# Public address used in notification links when behind a reverse proxy.
|
||||
# VNC_URL=https://fgc.example.tld
|
||||
|
||||
# Keep the previous add-on's default stores. Add steam or gamerpower if wanted.
|
||||
# Keep the previous add-on's default stores. The upstream also supports
|
||||
# steam, fab, ubisoft, aliexpress and gamerpower; add them here if wanted.
|
||||
STORES=epic,prime,gog
|
||||
|
||||
# Used only when RUN_ONCE is disabled in the add-on options.
|
||||
SCHEDULER_HOURS=12
|
||||
# SCHEDULER_TIMEZONE=UTC
|
||||
# SCHEDULER_FIXED_TIMES=17:00,21:30
|
||||
|
||||
# Common credentials can be used as fallbacks for all stores.
|
||||
# EMAIL=
|
||||
@@ -33,7 +38,27 @@ SCHEDULER_HOURS=12
|
||||
# GOG_PASSWORD=
|
||||
# STEAM_USERNAME=
|
||||
# STEAM_PASSWORD=
|
||||
# UBI_EMAIL=
|
||||
# UBI_PASSWORD=
|
||||
# UBI_OTPKEY=
|
||||
# AE_EMAIL=
|
||||
# AE_PASSWORD=
|
||||
|
||||
# Epic's weekly free mobile game, claimed with the epic store.
|
||||
# EG_MOBILE=true
|
||||
# EG_MOBILE_PLATFORMS=android,ios
|
||||
|
||||
# Fab assets sign in with the Epic account. Accepting the licence agreement is
|
||||
# required to claim; set to false to be notified instead of accepting.
|
||||
# FAB_ACCEPT_EULA=true
|
||||
|
||||
# Notifications (Apprise or Discord)
|
||||
# NOTIFY=
|
||||
# DISCORD_WEBHOOK=
|
||||
# NOTIFY_ALREADY_CLAIMED=false
|
||||
# NOTIFY_SKIP_STORES=
|
||||
|
||||
# Upstream release notifications are disabled by the add-on: updates are
|
||||
# delivered through the Home Assistant add-on store, not by docker compose.
|
||||
# Set to true to receive them anyway.
|
||||
# NOTIFY_UPDATES=false
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
{
|
||||
"dockerhub_by_date": false,
|
||||
"dockerhub_list_size": 2,
|
||||
"last_update": "17-07-2026",
|
||||
"paused": true,
|
||||
"github_exclude": "d",
|
||||
"github_fulltag": false,
|
||||
"last_update": "24-08-2026",
|
||||
"paused": false,
|
||||
"repository": "alexbelgium/hassio-addons",
|
||||
"slug": "free_games_claimer",
|
||||
"source": "github",
|
||||
"upstream_repo": "P-Adamiec/Free-Games-Claimer-Remaster",
|
||||
"upstream_version": "1.1"
|
||||
"upstream_version": "1.6"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user