Skip to content

Say when the downgrade list may be out of date, and check Steam updating a pinned game - #94

Merged
skjiisa merged 5 commits into
mainfrom
game-drift-and-offline-recipes
Oct 19, 2026
Merged

skjiisa merged 5 commits into
mainfrom
game-drift-and-offline-recipes

Conversation

@skjiisa

@skjiisa skjiisa commented Oct 18, 2026 •

Copy link
Copy Markdown
Owner

Works through the remaining items on #26.

Patch list unreachable

ModSync already fell back to the last list it downloaded, then to the one bundled with it. Now it also records why the latest list wasn't used: it couldn't be downloaded, or it's for a newer ModSync. Opening ModSync from Steam's Play skips the download on purpose, so that case isn't treated as a failure.

  • When the game needs a version the list can't reach, the Game version sheet now says which copy it used and why, and how to get a newer one ("Choose "Check again" once you're online", or "Update ModSync"). The note also appears under Technical details whenever the list wasn't the latest. modsync game status prints it too.
  • New tests fail the download in several ways and check the fallback for each:
    • DNS failure, timeout, reset connection, 404 (file moved), 503 (GitHub down)
    • a cut-off download
    • a damaged saved copy
    • a list for a newer ModSync
    • choosing not to download at all

Fixes found along the way

  • A game newer than where the patches start (Steam updated past them) was told "Update Skyrim in Steam first". That advice now appears only when the game is older than that.
  • modsync game downgrade with no terminal to answer "Proceed?" crashed with a traceback. It now stops with a message pointing to --yes.
  • SKSE scripts that differ only in capitals. SKSE 2.0.20 names its scripts ActiveMagicEffect.pex and 2.2.6 uses activemagiceffect.pex. Installing one over the other kept both, because Linux treats them as different files. Under Wine either one may load, and Steam refused to move the game to another library ("Content file locked"). On the real install, 62 scripts were there twice.
    • The installer now matches names regardless of capitals and removes the other spellings.
    • The game check counts scripts that have two spellings. Home then shows "Files from another SKSE build are in the game folder", and the Game page offers "Install SKSE".
    • Reinstalling SKSE on the real install removed all 62.

Review by GPT-6.1-Sol (2026-10-18)

It found five problems and reproduced each one. All are fixed, each with a test that fails without its fix:

  • High: SKSE cleanup could delete files outside the game folder. If data was a link to another drive, the installer deleted old script spellings there. It now never deletes through a link, or anything outside the game folder.
  • Medium: a patch list with a malformed version left the Game card stuck on "Checking…". Such lists are now rejected while being read, so the saved or bundled copy is used instead. The page also no longer fails when comparing versions it can't read.
  • Medium: a mod's own scripts were blamed on SKSE. Two spellings of a script SKSE doesn't ship were reported as SKSE leftovers, which reinstalling SKSE can't fix. Only the 62 scripts SKSE ships count now.
  • Medium: two spellings of a folder hid leftovers. With both Data/Scripts and Data/scripts, the cleanup and the check looked in only one of them. Both now look in every spelling.
  • Low: an older or damaged list was called "for a newer ModSync". Those are now reported as "couldn't read".

Steam updating a pinned game, tested on a real install

Case What happened ModSync
Verify integrity after a downgrade Steam downloaded 5.2 GB and put 1.7.104 back Home: "Needs 1.6.1170", offers the downgrade. The Game sheet says the 14.4 GB backup is no longer needed and offers to delete it. The downgrade (500 MB) replaced the leftover backup.
Pin lost (manifest marked as needing an update) Steam shows an update, not downloaded because the game updates only on launch Home: "Steam has an update waiting", offers "Keep this version"
Keep this version while Steam is open Pin queued "Close Steam to keep this version". After Steam closed, the open app applied the pin on its next poll, and Steam then showed the game as up to date.
Moving the game to another Steam library and back Each move marked the game "Update Required, Files Missing", so the pin was lost. The first two attempts stopped with "Content file locked": first on the duplicate SKSE scripts above, then on a folder Proton keeps under two spellings in the prefix (merged by hand). Found the game in each library, with the backup moved along. Home offered "Keep this version", and pinning cleared both flags. Steam then left the game alone after a restart.

docs/advanced.md has a new section, "When Steam updates the game anyway", which covers library moves and "Content file locked" too.

Closes #26.

🤖 Generated with Claude Code

skjiisa and others added 4 commits October 18, 2026 19:41
…ing a pinned game

The recipe index now records why the latest list wasn't used (offline, or
for a newer ModSync). When the game needs a version the list can't reach,
the Game version sheet and `modsync game status` say which copy was used
and why. Tests cover the fallback with the network failing in several ways.

A game newer than where the patches start no longer says "Update Skyrim in
Steam first". `modsync game downgrade` with no terminal to answer stops
with a message instead of a traceback.

docs/advanced.md records what happens when Steam updates the game anyway,
checked on a real install: a verify, a lost pin, and a pin queued while
Steam was open.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…old ones

SKSE 2.0.20 names its scripts in CamelCase and 2.2.6 in lowercase, so
installing one over the other kept both on Linux. Wine may load either, and
Steam refuses to move the game ("Content file locked"). The installer now
matches names regardless of case, removes other spellings and keeps the
folder spelling already on disk. The game check counts scripts under two
spellings and offers to reinstall SKSE. The install summary no longer
lists files it replaced as removed.

Found by moving the real install to a second Steam library for #26.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Checked on a real install: a move marks the game "Update Required, Files
Missing", ModSync finds it in the new library with its backup and offers
"Keep this version", and pinning clears both flags. Also explains
"Content file locked" when a move stops on names that differ only in case.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Proton#10270 (fix proposed in Proton#10276) adds DriverStore beside Wine's
driverstore, and the proposed fix deletes DriverStore outright. Advise
emptying DriverStore into driverstore, not the other way round, so Wine's
drivers survive that fix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…, bad lists

- The SKSE installer never deletes through a link or outside the game
  folder, and cleans every spelling of a folder (Data/Scripts and
  Data/scripts), so nothing is left behind or reported missing.
- Only scripts SKSE ships count as its leftovers: a mod's own duplicates
  aren't something reinstalling SKSE could fix.
- A recipe index whose versions don't read is rejected while parsing, so
  the saved or bundled copy is used instead of the Game card failing.
- An older or damaged index is "couldn't read", not "for a newer ModSync".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@skjiisa
skjiisa merged commit 3e88232 into main Oct 19, 2026
2 checks passed
@skjiisa
skjiisa deleted the game-drift-and-offline-recipes branch October 19, 2026 00:18
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.

Handle Steam updating a pinned game, and unreachable recipe index

1 participant