Skip to content

Find a save folder on another drive letter; a drive this PC lacks is no warning - #24

Open
ChakraFusion wants to merge 2 commits into
Liquid-co:dev-publicfrom
ChakraFusion:pr/save-on-other-drive
Open

ChakraFusion wants to merge 2 commits into
Liquid-co:dev-publicfrom
ChakraFusion:pr/save-on-other-drive

Conversation

@ChakraFusion

Copy link
Copy Markdown

Part of #21.

Why

A save inside a game's install folder (most often a Steam library) is on whichever drive that library is on, and that differs between PCs: D: on one, E: on another. A game tracked on one PC arrives on the other with the first PC's drive letter. There it shows as "missing" with a warning, even though the folder is right there on another drive.

What

  • Relocation: a missing save folder is looked for at the identical path on every other drive letter.
    • Exactly one match is adopted for this device and logged.
    • No match, or several, is logged once.
    • The search runs at most once an hour per game.
  • No false warning: a save folder on a drive this PC doesn't have at all is shown as "Not on this device" (muted). It stays out of the warning headline and the notification bell. A folder gone from a drive that does exist is still a warning.

Tests

  • relocate_test.go and missing_test.go: a save recorded on an unmounted drive letter is found at the same path on the drive it really is on, and not warned about. These tests skip on non-Windows systems.
  • gamestatus.test.js and notifications.test.js.
  • CI on the fork (all jobs green): https://github.com/ChakraFusion/OpenSave/actions/runs/37163184185

🤖 Generated with Claude Code

@vercel

vercel Bot commented Oct 4, 2026

Copy link
Copy Markdown

@ChakraFusion is attempting to deploy a commit to the sivadaboi's projects Team on Vercel.

A member of the Team first needs to authorize it.

@Omar-VF

Omar-VF commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator

Thanks, the drive-letter case is real. One request before merging: rather than switching the save path automatically, could it ask the user first (the same "found it at E:\…, use this?" through the app, CLI and log)? An identical path on another drive can be an old backup copy, and silently syncing from it is the risk we'd like to avoid. The "not on this device" part is fine as it is.

ChakraFusion and others added 2 commits October 13, 2026 18:14
…no warning

- A missing save folder is looked for at the identical path on every
  other drive letter (a Steam library on D: on one PC and E: on another).
  Exactly one match is adopted for this device and logged; none or
  several are logged once. Searched at most once an hour.
- A save folder on a drive this device does not have is shown as "Not
  on this device" (muted) instead of a warning, kept out of the warning
  headline and the notification bell. A folder gone from a drive that
  exists is still a warning.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
As asked in review (Liquid-co#24): the same path on another drive
can be an old backup copy, and switching to it silently would sync stale
saves to every device. The folder found is offered, not adopted:

- daemon: exactly one match is remembered as a suggestion and said once in
  the log, with the command that answers it. The game stays missing - not
  watched, not synced - until someone accepts. AcceptRelocation switches
  only to the folder offered; DismissRelocation answers "not this one",
  which is then not offered again while OpenSave runs. The folder coming
  back where it was clears the offer.
- API: relocateSuggestion in each game; POST /api/games/{id}/relocate
  {path} and /relocate/dismiss.
- app: the game's header asks "The same folder is at E:\... - use it?"
  with Use this folder / Not this one, and the notification bell lists it
  as waiting for an answer.
- CLI: `opensave relocate <gameId> use|dismiss`, and `opensave status`
  shows the offer.

The "not on this device" part is unchanged.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@ChakraFusion

Copy link
Copy Markdown
Author

Done. The folder found on another drive is now offered, not used:

  • App: the game's header shows "The same folder is at E:\…. Is that where this game saves on this device? Only use it if it holds your current saves, not an old copy." with Use this folder / Not this one. The notification bell lists it as waiting for an answer.
  • CLI: opensave relocate <gameId> use|dismiss, and opensave status shows the offer.
  • Log: said once, with the command that answers it.

Until someone accepts, the game stays "missing": not watched, not synced. Accepting switches only to the exact folder that was offered, so an old answer can't switch to something nobody was shown. "Not this one" isn't offered again while OpenSave runs. The "not on this device" part is unchanged.

The branch is rebased onto dev-public, and the change is a separate commit so it's easy to review.

@ChakraFusion
ChakraFusion force-pushed the pr/save-on-other-drive branch from 5ccfc3b to bb36185 Compare October 13, 2026 17:55

This branch has not been deployed

No deployments
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