fix(windows): correct file operations and core checks #64
No reviewers
Labels
No labels
area/build
area/install
area/saves
area/ui
area/updates
good first issue
gpu/amd
gpu/intel
gpu/nvidia
help wanted
kind
bug
kind
chore
kind
docs
kind
feature
kind
performance
kind
question
platform/linux
platform/steam-deck
platform/windows
priority
critical
priority
high
priority
low
status
blocked
status
confirmed
status
duplicate
status
invalid
status
needs-info
status
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/LongshotLauncher!64
Loading…
Reference in a new issue
No description provided.
Delete branch "Anarkkie/LongshotLauncher:fix/windows-filesystem-checks"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The Windows core runner exposes real filesystem failures: concurrent atomic replacements can fail with access denied, and adding a separator to an existing drive root makes free-space detection fall back. This fixes those Windows paths and writes, and makes the cross-platform test fixtures state their platform requirements accurately.
Changes
AtomicFilerename with a named mutex derived from the normalized, case-folded destination. Temporary writes and flushes remain independent. Abandoned ownership recovers; genuine locked-file errors still propagate with the old bytes intact and temporary files removed.Disk.Within, so free-space lookup usesC:\rather than a doubled separator.These are separate commits within the Windows correctness topic, so the runtime fixes and fixture changes can be reviewed independently. No retry loop hides permission errors.
Reproduction and validation
Code
a8f320e, based on main01f2797; it applies cleanly to current main9b3d202. The accompanying documentation commit adds the measured configurations without changing code.File.Replacealternative: 71; named-mutex final rename: 0. Correctness comparison, not a performance benchmark.The Windows successful-link capability skip is explicit in output. Linux release tests emit existing Python socket ResourceWarnings but pass.
docs/tested-configurations.mdrecords the runs and their limits.The private integration of these fixes with #55 and the root-layout fix in #63, on main
9b3d202, also passes Windows/Linux core 1,120 / 1,145, headless UI 290 / 289 and Linux release 28. These larger totals are combined validation, not this branch's standalone counts. Native Early -> Upgraded -> Early player routing passed in that integration; this PR itself changes no renderer or gameplay behavior.Boundaries
The mutex coordinates ordinary normalized paths within one Windows session, following the existing
InstanceLockconvention. It does not promise coordination through arbitrary aliases, across sessions or across machines. Linux retains its existing atomic-replacement behavior. No UI layout or new default is introduced.Open #54 also touches
SelfUpdate.CurrentFilefor package start paths. This change preserves its existing contract and should be kept when resolving merge order with that proposal.AI-assisted implementation and independent source review with OpenAI Codex. Tests use authored files and processes; no game data is included.
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.