Skip to content

Remember which games the user removed - #62

Merged
Vasanthdev2004 merged 1 commit into
mainfrom
fix/removals-stick
Sep 4, 2026
Merged

Vasanthdev2004 merged 1 commit into
mainfrom
fix/removals-stick

Conversation

@Vasanthdev2004

Copy link
Copy Markdown
Owner

Closes #61.

gsg remove hogwarts-legacy --purge deleted the game and its backups. The next rescan added it straight back. Same for GTA V Enhanced. Observed on a real install: 11 tracked games, then 9, then 11 again, within two hours.

Why

Auto-add skipped a game only when detect_launcher said a launcher owned it. Epic writes a manifest per installed game, so a title Epic is not currently showing classifies as other and becomes eligible all over again. Removing recorded nothing — there was no memory that the user had said no.

The periodic rescan added in 0.8.1 did not cause this. It made an existing hole visible on a timer rather than once per reboot.

This matters more than tidiness: --purge is destructive and irreversible. Watching the game reappear teaches people the command does not work, and re-running it burns another delete cycle on data recreated in between.

The fix

declined_game_ids in config. gsg remove appends, auto_add_skip_reason consults it first — an explicit decision by the user outranks anything gsg worked out for itself — and an explicit gsg add clears it, so the list can never become a trap that silently ignores a direct request.

The scan reports what it is skipping and why:

Not tracking 2 game(s) you removed: Hogwarts Legacy, Roblox.
'gsg add "<title>"' to track one again.

A list that suppresses games invisibly is its own trap, and this is how someone works out why a game they installed is not appearing.

Both gsg remove and gsg remove --purge record. They should not differ by accident, and "stop tracking this" is what remove means. gsg pause already exists for "stop watching for now" and deliberately records nothing — there is a test pinning that, because the two verbs drifting apart is the obvious way this goes wrong later.

Verification

End to end through the real commands: remove writes the id, a second remove does not duplicate it, add clears it, pause leaves it alone.

Five mutations, all caught:

remove stops recording       caught
predicate ignores the list   caught
add stops clearing           caught
discovery stops passing it   caught
pause starts declining       caught

336 tests, ruff and mypy clean.

`gsg remove hogwarts-legacy --purge` deleted the game and its backups, and
the next rescan added it straight back. Same for GTA V Enhanced. Observed on
a real install: 11 tracked games, then 9, then 11 again within two hours
(#61).

Auto-add skipped a game only when detect_launcher said a launcher owned it,
and Epic writes a manifest per INSTALLED game - so a title Epic is not
currently showing classifies as "other" and is eligible all over again.
Removing recorded nothing. There was no memory that the user had said no.

The periodic rescan added in 0.8.1 did not cause this. It made an existing
hole visible on a timer rather than once per reboot.

Config now carries declined_game_ids. `gsg remove` appends to it,
auto_add_skip_reason consults it first - an explicit decision by the user
outranks anything gsg worked out for itself - and an explicit `gsg add`
clears it, so the list can never become a trap that silently ignores a
direct request.

The scan says what it is skipping and why, because a list that suppresses
games invisibly is its own kind of trap, and this is how somebody works out
why a game they installed is not appearing.

Both `gsg remove` and `gsg remove --purge` record. They should not differ by
accident, and "stop tracking this" is what remove means; `gsg pause` already
exists for "stop watching for now" and deliberately records nothing.

Verified end to end through the real commands: remove writes the id, a second
remove does not duplicate it, add clears it, pause leaves it alone. Five
mutations, all caught.
@Vasanthdev2004
Vasanthdev2004 merged commit 400040d into main Sep 4, 2026
6 checks passed
@Vasanthdev2004
Vasanthdev2004 deleted the fix/removals-stick branch September 4, 2026 11:22
@Vasanthdev2004 Vasanthdev2004 mentioned this pull request Sep 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Purging a launcher-owned game does not stick: the next rescan re-adds it

1 participant