fix(): Fixed AppData subfolder detection bug to fix Disco Eslysium save path resolution - #1557
Conversation
…y having their save files being detected.
📝 WalkthroughWalkthroughThe PR modifies Epic cloud-save directory resolution to canonicalize AppData path segments and resolve paths against trusted root directories (user, Wine prefix, install) instead of the filesystem root, with accompanying tests to validate the new behavior. ChangesEpic Cloud Save Path Resolution
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
1 issue found across 2 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
|
@phobos665 - question, why was it not fixed by this PR? #941 Also, the CaseInsensitiveFileSystem seems to be the right place to fix it rather than just overriding for Epic. Could you look please? |
Thanks. It's because it's specifically around LocalLow, from what I understood Linux was matching insensitively to locallow, which worked for Windows, but not for Linux. So we'd match for locallow instead of LocalLow. Example: Before: [Cloud Saves] Scanning path: /data/user/0/app.gamenative/files/imagefs/home/xuser-EPIC_359/.wine/drive_c/users/xuser/AppData/locallow/ZAUM Studio/Disco Elysium/SaveGames 06-09 09:22:04.323 32665 14772 D Epic : [Cloud Saves] Resolved: /data/user/0/app.gamenative/files/imagefs/home/xuser-EPIC_359/.wine/drive_c/users/xuser/AppData/locallow/ZAUM Studio/Disco Elysium/SaveGames You can see above that it case-insensitvely matched, but they're different folders in Linux. So the actual fix is not to do case-insensitivity on its own, but to match it correctly to the right capitlisation. After: Original: {appdata}/../locallow/ZAUM Studio/Disco Elysium/SaveGames/ Resolved: /data/user/0/app.gamenative/files/imagefs/home/xuser-EPIC_362/.wine/drive_c/users/xuser/AppData/LocalLow/ZAUM Studio/Disco Elysium/SaveGames TL;DR The specific casing is very important for the subfolders of Appdata. Matching case-insensitively breaks the folder structure and causing misses. Before it would match on locallow, but needs to be case-sensitively linked to LocalLow. |
|
Hey I've made a PR to this branch, can you check? And also confirm if it fixes the issue? Basically this should be fixed at the caseinsensitivefilesystem level so that it applies to all stores |
|
Done in #1598 - closing |
Description
AppData subfolders weren't be capitlized correctly and thus were being missed out by Epic's CloudSavesManager.
This was seen in Disco Elysium where saves weren't being uploaded or downloaded correctly as it couldn't detect the folder:
Here's what the fix now gives:
Uploading:
Downloading:
This is based on my testing with both unit tests & uploading & downloading saves back and forth between 2 devices.
Changes
Recording
Type of Change
Checklist
#code-changes, I have discussed this change there and it has been green-lighted. If I do not have access, I have still provided clear context in this PR. If I skip both, I accept that this change may face delays in review, may not be reviewed at all, or may be closed.CONTRIBUTING.md.Summary by cubic
Fixes AppData casing resolution so Epic Cloud Saves correctly detects Disco Elysium save paths. Saves now upload and download reliably.
Local,LocalLow, andRoaming.LocalLowpath resolution and AppData canonicalization.Written for commit 08c8d8d. Summary will update on new commits.
Summary by CodeRabbit
Bug Fixes
Tests