Remember which games the user removed - #62
Merged
Merged
Conversation
`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.
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #61.
gsg remove hogwarts-legacy --purgedeleted 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_launchersaid a launcher owned it. Epic writes a manifest per installed game, so a title Epic is not currently showing classifies asotherand 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:
--purgeis 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_idsin config.gsg removeappends,auto_add_skip_reasonconsults it first — an explicit decision by the user outranks anything gsg worked out for itself — and an explicitgsg addclears it, so the list can never become a trap that silently ignores a direct request.The scan reports what it is skipping and why:
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 removeandgsg remove --purgerecord. They should not differ by accident, and "stop tracking this" is what remove means.gsg pausealready 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:
336 tests, ruff and mypy clean.