Fix #393 dangling PAPGT entry after Rescan; fix #398 bundle ICU for Wine/Proton - #399
Merged
Conversation
Rescan deleted leftover mod dirs before hashing but never rebuilt meta/0.papgt, so the vanilla snapshot captured an index that still listed the deleted dir (0052). The #383 rebuild then treated every snapshot entry as vanilla and restored 0052 on each apply, giving '[PAPGT] Missing directory 0052' four times and finally 'There may be a problem with the game installation' at launch. - rebuild: a dangling entry (no dir on disk) in the mod range (0036+) is kept or restored only when its own flags say is_optional -- the 2.0 language-pack placeholders. Non-optional dangling entries are dropped and never restored from the snapshot. Vanilla range < 0036 keeps the historical rule (a vanilla dir may legitimately be absent). - snapshot: strip_dangling_entries() rebuilds the index right after mod-dir removal and before hashing, so the snapshot can no longer carry a leftover.
Qt6Core.dll hard-imports icuuc.dll, a Windows system component (since Win10 1703) that Wine prefixes before 11.5 do not ship. Under Proton the frozen exe died at startup: err:module:import_dll Library icuuc.dll (which is needed by ...\PySide6\Qt6Core.dll) not found Bundle FaithLife-Community's ICU 72.1 build (Unicode license, text shipped alongside; unversioned exports matching the Windows ABI) next to Qt6Core.dll. Qt only uses ucnv_*, which needs no icudtl.dat; all 20 imports resolve (pefile) and ucnv_open works standalone (232 converters). On real Windows the app-local copy takes precedence with no behaviour change; self_check passes on the built exe.
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.
Two fixes, both from today's reports.
#393: game refuses to start after Rescan then Apply (delichandelarosse)
Rescan deleted leftover mod dir 0052 before hashing but never rebuilt
meta/0.papgt, so the vanilla snapshot captured an index still listing 0052. The #383 rebuild then treated every snapshot entry as vanilla and restored 0052 on every apply ('[PAPGT] Missing directory 0052' x4), and the game showed 'There may be a problem with the game installation'.is_optional(2.0 language-pack placeholders); non-optional ones are dropped and never restored. Vanilla range < 0036 keeps the historical rule.strip_dangling_entries()rebuilds the index after mod-dir removal and before hashing.#398: exe does not start under Proton (NonDScript)
Qt6Core.dllhard-importsicuuc.dll, a Windows system DLL Wine < 11.5 lacks. Bundle FaithLife-Community's ICU 72.1 (Unicode license, shipped) beside Qt6Core. Verified: all 20 Qt imports resolve,ucnv_openworks standalone, built exe passes self_check, bundle containsPySide6/icu*.dll.Full suite 3129 passed, 1 known machine-local failure. Canary on new game build 25050808: exit 0, every table decodes.
🤖 Generated with Claude Code
https://claude.ai/code/session_0171WFoHWQThdDZkKhrbnCGr