Skip to content

Correct the casing of declared game paths before validating them - #15

Merged
Arkazzae merged 1 commit into
Arkazzae:masterfrom
CaptSilver:fix/case-only-platform-paths
Oct 16, 2026
Merged

Arkazzae merged 1 commit into
Arkazzae:masterfrom
CaptSilver:fix/case-only-platform-paths

Conversation

@CaptSilver

Copy link
Copy Markdown
Contributor

patches/0034-linux-case-only-platform-paths.patch. Extensions spell paths the way Windows shows them: Elden Ring declares game/eldenring.exe, while Steam installs it under Game/. resolvePlatformPath in nativeExecutable.ts, which the required-file checks, the executable path and the game version lookup go through, now matches each part of the path against the disk case-insensitively.

The segment walk moves out of resolveCaseInsensitiveSync in linuxCompatibility.ts into matchExistingCaseSync, which skips the Wine user-folder mapping so a game installed under ~/Documents is not redirected into a Proton prefix. resolveCaseInsensitiveSync behaves as before.

patches/0034-linux-case-only-platform-paths.patch. Extensions spell
paths the way Windows shows them: Elden Ring declares
game/eldenring.exe, while Steam installs it under Game/.
resolvePlatformPath in nativeExecutable.ts, which the required-file
checks, the executable path and the game version lookup go through, now
matches each part of the path against the disk case-insensitively.

The segment walk moves out of resolveCaseInsensitiveSync in
linuxCompatibility.ts into matchExistingCaseSync, which skips the Wine
user-folder mapping so a game installed under ~/Documents is not
redirected into a Proton prefix. resolveCaseInsensitiveSync behaves as
before.

PKGBUILD and .SRCINFO list the new patch.
@Arkazzae
Arkazzae merged commit 790e40d into Arkazzae:master Oct 16, 2026
Arkazzae added a commit that referenced this pull request Oct 16, 2026
extensionInStack escaped only backslashes, so a real path with
parentheses, such as a folder named "Data (2TB)", reported the extension
as "unknown", and an unbalanced one would throw inside the error handler.
It now escapes the whole path. A root that doesn't exist yet, such as
plugins/ before the first extension is installed, takes the real path of
its nearest existing parent instead of caching the unresolved path for
the session.

matchExistingCaseSync returns early when the path already exists, like
resolveCaseInsensitiveSync.

CHANGELOG.md describes #14 and #15, and pkgrel moves to 4 to release
them.
@Arkazzae

Copy link
Copy Markdown
Owner

Thanks, and nice catch with the Documents mapping! Merged. I only added an early return when the path already exists and fixed the PKGBUILD conflict with #14. Both fixes will be in 2.8.2-4.

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.

2 participants