Skip to content

Merge dev: games from your devices set themselves up again - #135

Merged
Omar-VF merged 7 commits into
dev-publicfrom
merge/dev-into-dev-public
Oct 28, 2026
Merged

Omar-VF merged 7 commits into
dev-publicfrom
merge/dev-into-dev-public

Conversation

@Omar-VF

@Omar-VF Omar-VF commented Oct 28, 2026

Copy link
Copy Markdown
Collaborator

Brings sivadaboi's dev branch onto dev-public for the next release.

What dev adds:

  • Games from your other devices set themselves up again. A game arriving from a paired device is tracked by itself wherever this device can vouch for the folder as that game's save: where the save catalogue or Steam says the game keeps its saves here (even before it exists, so a new PC fills itself in), as well as a folder a scan noted or an emulator's save folder. Otherwise it's still offered on Home, as since 2.4.1.
  • "Trust it to choose folders" on Devices (opensave peers trust <device> on). Off by default, asks before turning on, dropped when the device is unpaired. Only a device proven by its signature counts (LAN signature or relay MAC). Migration 0038_peer_folder_trust.
  • An offered game's folder is looked for straight away, not at the next hourly scan (at most once a minute).
  • The catalogue index is kept in memory and built once for everyone who needs it; a caller says how long it may wait.
  • The broad-folder check is case-insensitive on every OS. Includes our earlier fix 0eec6a3 (no catalogue wildcard vouches for a folder inside a game's install).

Conflicts resolved:

One addition (second commit): a catalogue location whose folder is a bare wildcard (<winAppData>/*) no longer vouches for anything. It stood for any folder at all and would have vouched for every folder in application data, Microsoft's included. No current catalogue entry does this (checked: only prefix wildcards like JustADream*, which still work), but the catalogue is downloaded weekly. TestCatalogueSaveLocation_ABareWildcardVouchesForNothing fails without it.

Checks: full unit suite, frontend tests and build, and the full e2e suite pass locally. Apart from the two CLI tests that clash with a running OpenSave on the default port, and one Windows "file in use" flake that passes on rerun.

sivadaboi and others added 7 commits October 2, 2026 08:59
The catalogue check on dev (2e9cb42) lets a game arriving from a peer be
tracked at a folder the save catalogue names for it. Inside the game's
install folder that went too far: "<base>/**/*.sav" and
"<base>/<storeUserId>/..." stand for save files, but matched as a folder
they took in any subfolder of the install - Binaries, Engine - and a
paired device could then sync files into the game's own program folder.
About 110 catalogue entries have such a pattern.

Inside an install folder a folder is now vouched for only as the
catalogue names it, never through a wildcard, and never when it already
holds a program or library. Outside install folders nothing changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…again

sivadaboi's dev branch, brought onto dev-public:
- A game arriving from a paired device is tracked by itself wherever this
  device can vouch for the folder as that game's save: where the save
  catalogue or Steam says the game keeps its saves here, as well as a
  folder a scan noted or an emulator's save folder. Otherwise it is still
  offered on Home.
- "Trust it to choose folders" on Devices (opensave peers trust), off by
  default, asks first, and is dropped when the device is unpaired. Only a
  device its signature proved counts. Migration 0038_peer_folder_trust.
- An offered game's folder is looked for straight away, not at the next
  hourly scan.
- The catalogue index is kept in memory, built once for everyone who
  needs it, and a caller can say how long it may wait.
- The broad-folder check is case-insensitive on every system.

Conflicts:
- p2p/routes.go: the manifest query is kept for the held-state check
  (#106), and the proven device is passed for folder trust.
- presets/ludusavi.go: dev's in-memory index cache replaces #102's
  separate no-wait path; loadManifestIndexNoWait is now manifestIndex(0),
  the same behaviour. #102's tests use the cache.
- CHANGELOG.md: dev's entries folded into [Unreleased].
- The version stays 2.4.1 until the release sets it.
A game from a paired device is tracked by itself at a folder the save
catalogue gives that game here. A catalogue location whose folder is a
bare wildcard ("<winAppData>/*") stands for any folder at all, and would
have vouched for every folder in application data, Microsoft's included,
for the other device to write into. No current catalogue entry does
this, but the catalogue is downloaded weekly. Such a location now
vouches for nothing; a wildcard with a name around it ("JustADream*")
still names the game's own folder.
@vercel

vercel Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
open-save Ready Ready Preview Oct 28, 2026 3:11pm UTC

@Omar-VF
Omar-VF merged commit e5377ce into dev-public Oct 28, 2026
22 checks passed
@Omar-VF
Omar-VF deleted the merge/dev-into-dev-public branch October 28, 2026 15:25

This branch was successfully deployed

1 active deployment
Preview — 6683ee28 Deployed Oct 28, 2026 by vercel[bot]
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.

1 participant