8000 Releases · mtkennerly/ludusavi · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Releases: mtkennerly/ludusavi

v0.29.1 (2025-04-17)

18 Apr 01:26
f7c3737
Compare
Choose a tag to compare
  • Fixed:
    • Glob-based backup exclusions did not work correctly. (This issue was introduced in v0.29.0.)
  • Changed:
    • The standalone Linux release is now compiled on Ubuntu 22.04 instead of Ubuntu 20.04 because of a change by GitHub.

v0.29.0 (2025-04-07)

07 Apr 23:34
98683d0
Compare
Choose a tag to compare
  • Added:
    • A custom game's installed name may now be set to a relative path with multiple folders, rather than only supporting a single bare folder name.
    • CLI: The wrap command now supports --force-backup and --force-restore for more granular control than --force.
    • GUI: During a scan, you can click on the progress bar to see a list of the games currently being scanned and how long each one is taking. This can be useful to identify why a scan might be taking longer than expected.
    • CLI: When backing up or restoring, if your local and cloud backups are in conflict, Ludusavi will now ask you if you'd like to resolve it by downloading or uploading. You can also choose to ignore the conflict (which is the existing behavior), and --force will automatically ignore any conflicts. You can combine --force and --no-force-cloud-conflict to be prompted only when there is a conflict.
    • CLI: When using --gui in the commands that support it, dialog titles now include the game's name (if you've specified only one) or the total number of games (if you've specified more than one).
  • Fixed:
    • For home folder roots, Ludusavi skipped any paths containing <storeUserId>, on the assumption that it shouldn't be applicable to non-store-specific roots. However, there are some cases where it's worth scanning regardless, so Ludusavi will now use a wildcard match like it does for other root types.

    • On Windows, a backup would fail if the original file were encrypted and the backup destination could not be encrypted. Now, in this situation, the backup will proceed without encryption. (Contributed by Summon528)

    • Ludusavi did not detect some save data for Heroic Epic games that had been uninstalled.

    • System folders and game installed names were not scanned properly if they contained [ or ], because Ludusavi did not escape them before integrating them into larger glob patterns.

      For roots, there was a similar issue with escaped brackets ([[] or []]). Although root paths do support globs, Ludusavi internally expands each configured root into one root per glob match, but it did not then escape each expanded root path before integrating it into a larger pattern.

    • GUI: In the scan results, some elements could get squished with long file paths.

    • CLI: In the scan results, if you enabled the option to skip backups when there are only removals, those games would still count towards the change tally.

    • CLI: In the default scan results output format, registry content would be dumped even without --dump-registry.

    • On Windows, some paths were unnecessarily scanned twice.

    • On Windows, some network share paths were not scanned properly in certain contexts.

    • When an Rclone command failed, the error message did not include quotes around arguments with spaces, even though the actual command did account for spaces.

  • Changed:
    • When a disabled game is new or updated in the scan results, that game's change badge will now be faded, and it will be sorted with games that do not have changes.
    • GUI: In some cases, Ludusavi would automatically close any open modal in order to show a different one, which could be inconvenient if you were filling out fields in certain modals. Now, Ludusavi will redisplay the older modal when the new one is closed.
    • When Ludusavi checks your non-Steam games added as shortcuts in Steam, it now normalizes the titles to allow for more lenient matching.
    • Updated translations. (Thanks to contributors on the Crowdin project)

v0.28.0 (2025-01-15)

15 Jan 16:41
822da32
Compare
Choose a tag to compare
  • Added:
    • On Linux, for Lutris roots that point to a Flatpak installation, Ludusavi now checks $XDG_DATA_HOME and $XDG_CONFIG_HOME inside of the Flatpak installation of Lutris.
    • Custom games now let you specify installed folder names. This can be used to satisfy the <base> and <game> path placeholders in cases where Ludusavi can't automatically detect the right folder. For more info, see the custom games document.
    • On the "other" screen, there is a new option to skip backups when saves are only removed but not added/updated. This can be useful because uninstalling a game may cause some of its data (but not all) to be removed, but you may not want to exclude that data from your backups yet.
    • CLI: config show command.
    • CLI: The backup, restore, cloud upload, and cloud download commands now support a --gui option for graphical dialog prompts.
    • CLI: The backup and restore commands now support a --dump-registry option, which includes the serialized registry content in the output. This may be useful if you're consuming the --api output to back up with another tool, but don't have a good way to check the registry keys directly.
    • CLI: The find command now supports --fuzzy and --multiple options. This is also available for the api command's findTitle request.
    • CLI: The wrap command now supports several options from the backup command: --path, --format, --compression, --compression-level, --full-limit, --differential-limit, --cloud-sync, --no-cloud-sync.
  • Changed:
    • When the game list is filtered, the summary line (e.g., "1 of 10 games") now reflects the filtered totals.
    • The enable/disable all buttons are now constrained by the active filter.
    • GUI: Changed some icons to a softer version.
    • CLI: When using the --gui option of any command that supports it, errors at the end of the process will also be reported via dialogs. This does not apply to CLI parse errors.
    • Application crash and CLI parse errors are now logged.
    • Updated translations, including partial support for Vietnamese and Swedish. (Thanks to contributors on the Crowdin project)
  • Fixed:
    • If a custom game's title begins or ends with a space, that custom game will now be ignored. Previously, Ludusavi would make a backup folder for the game including the space, but the OS (namely Windows) would remove the space from the folder title, causing unpredictable behavior when Ludusavi couldn't find the expected folder name.
    • GUI: In backup mode, if Ludusavi failed to prepare the backup target folder, it would get stuck where you couldn't cancel/restart the operation.
    • CLI: find --normalized now better prioritizes the closest match when multiple manifest entries have the same normalized title.
    • Some default paths are now formatted more consistently.
    • GUI: There was an error when the backup/restore paths were relative to the working directory.
    • When backing up a read-only file using the simple format, Ludusavi would fail to set the backed up file's modified time.

v0.27.0 (2024-11-19)

20 Nov 02:25
cfb647d
Compare
Choose a tag to compare
  • Added:
  • Changed:
    • Windows registry backups are now saved as *.reg files instead of *.yaml. Existing backups will not be affected.

    • On Linux, Ludusavi previously reported its application ID as just ludusavi, which meant the desktop file should be named ludusavi.desktop to show the right icon. However, that name does not follow the Freedesktop.org desktop-entry specification.

      To better conform, Ludusavi now reports its ID as com.mtkennerly.ludusavi (except for Flatpak, which will use com.github.mtkennerly.ludusavi for legacy reasons). If you need to preserve the original behavior, you can set LUDUSAVI_LINUX_APP_ID=ludusavi in your environment variables.

      (Prototyped by OlegAckbar)

    • Dialogs (folder picker and wrap --gui prompts) now use GTK on Linux. The previous system relied on Zenity/KDialog, which could behave poorly depending on the version or in a Flatpak context.

    • The standalone Mac release is now compiled on Mac OS 13 instead of Mac OS 12 because of a change by GitHub.

    • Updated translations. (Thanks to contributors on the Crowdin project)

  • Fixed:
    • The registry format change also resolved an issue where very large (over 100 MB) registry.yaml files could be slow to read and consume a lot of extra memory, whereas the same data in .reg format can be loaded without issue.
    • When set to only keep 1 full backup and 0 differential backups using the simple format, Ludusavi keeps the existing backup in place and just adds/removes any changed files. However, after removing obsolete files, Ludusavi could leave empty directories behind. Now, Ludusavi will clean these up as well after creating a new backup for a game.
    • GUI: After a backup, if a file were removed, its change status wouldn't immediately refresh.
    • GUI: When performing a multi-game scan with a filter active, the visible games would be backed up or restored even if they were disabled.
    • GUI: When performing a multi-game scan on the restore screen with a filter active, the scan would exclude games that were disabled for backup rather than disabled for restore.
    • Ludusavi would try to scan games (custom or from secondary manifest) with a blank title. In the GUI, they would be omitted from the results, while on the CLI, they would be reported without a title. Now such games are ignored when scanning.

v0.26.0 (2024-10-29)

29 Oct 11:57
a794be2
Compare
Choose a tag to compare

The Linux and Mac downloads are now provided in .tar.gz format to better preserve the files' executable permissions.

  • Added:
    • Paths may now use the <storeGameId> placeholder. This is supported in Steam, GOG, and Lutris roots. For Steam roots, this also supports shortcuts to non-Steam games, where the placeholder will map to the shortcut's dynamic app ID.
    • Paths may now use the <winLocalAppDataLow> placeholder.
    • GUI: On the backup and restore screens, if you activate the filter options, then the backup/restore buttons will only process the currently listed games. This allows you to quickly scan a specific subset of games.
    • You can now choose whether a custom game will override or extend a manifest entry with the same name. Previously, it would always override the manifest entry completely.
    • GUI: Custom games can now be expanded/collapsed, sorted, and filtered.
    • GUI: Custom games now have an icon to indicate when they override/extend a manifest entry.
    • You can now configure redirects to be processed in reverse sequence when restoring.
    • GUI: On the custom games screen, when you use the button to preview a custom game, the window will switch to the backup screen and show you the results for that game.
    • GUI: There is now a button to quickly reset the game list filters, while still leaving the filter options open.
  • Fixed:
    • Files on Windows network shares were not backed up correctly. For example, a file identified as \\localhost\share\test.txt would be backed up as <game>/drive-____UNC_localhost_share_test.txt instead of the intended <game>/drive-____UNC_localhost_share/test.txt.
    • When Steam was not installed, the logs would contain a warning-level message. This has been demoted to an info-level message.
    • GUI: Fixed some inconsistent spacing between elements.
    • CLI: On Linux, the wrap command's --infer steam option would fail to find the SteamAppId environment variable due to a case mismatch.
    • CLI: In some error conditions, the wrap command would show an alert and wait for the user to press a key, even if --force was specified. Now, with --force, Ludusavi will not wait for any input.
    • Old log files were not deleted when stored on a Windows network share.
    • GUI: The title filter was case-sensitive.
  • Changed:
    • GUI: After successfully backing up or restoring a game, the status icons (new/updated/etc) will be cleared for that game.
    • GUI: If the GUI fails to load, Ludusavi will try to log the error info.
    • GUI: When you launch Ludusavi, the window now ensures that it gains focus.
    • GUI: Modals now display on top of the app with a transparent background.
    • GUI: On the backup and restore screens, the filter controls now wrap depending on the window size.
    • GUI: The backup format and retention settings are now on the "other" screen, instead of being accessed via the gear icon on the backup screen.
    • GUI: Some uses of "select"/"deselect" have been changed to "enable"/"disable".
    • GUI: The game list filters now have a different background color.
    • Updated translations. (Thanks to contributors on the Crowdin project)

v0.25.0 (2024-08-18)

19 Aug 03:04
b7576dd
Compare
Choose a tag to compare
  • Added:
    • You can now ignore specific manifests during scans. For example, if you only want to back up custom games, you can now disable the primary manifest's entries.
    • GUI: On startup and once every 24 hours, Ludusavi will check if a new version is available and notify you.
    • GUI: When left open, Ludusavi will automatically check for manifest updates once every 24 hours. Previously, this check only occurred when the app started.
    • Manifests may now include a notes field. If a game has notes in the manifest, then the backup screen will show an info icon next to the game, and you can click the icon to display the notes. The primary manifest does not (yet) contain any notes, so this mainly applies to secondary manifest authors.
    • GUI: You can now filter scan results by which secondary manifest defined each game. You can also filter to display custom games only.
    • CLI: The api command now supports a checkAppUpdate message.
    • Linux: Added keywords to the .desktop file. (Contributed by Merrit)
  • Fixed:
    • CLI: Some commands would fail with relative path arguments.
  • Changed:
    • In the config file, manifest.url is now set to null by default to indicate that the default URL should be used, rather than explicitly putting the default URL in the file.
    • Updated translations. (Thanks to contributors on the Crowdin project)

v0.24.3 (2024-07-01)

02 Jul 03:22
ae6cc0f
Compare
Choose a tag to compare
  • Fixed:
    • If two consecutive differential backups both ignored different save files and none of those files were ignored in the associated full backup, then the second differential backup would fail to redeclare the first differential backup's ignored saves.
    • If you redirected all of the saves for a game that already had a backup, then the next scan would list the game as new instead of updated.
    • GUI: On Mac, the file/folder selector would cause the app to crash.

v0.24.2 (2024-06-28)

28 Jun 13:27
ea7245e
Compare
Choose a tag to compare
  • Fixed:
    • When multi-backup was enabled and Ludusavi backed up a game for the first time, it would first insert an empty backup in that game's mapping.yaml and then insert the real backup after. This behavior was meant for updating old backups from before multi-backup was added, but it was mistakenly being applied to brand new backups as well.

      Ludusavi will automatically detect and fix this. If the empty backup has a differential backup associated, then the oldest differential backup will replace the empty full backup. Otherwise, Ludusavi will remove the entry for the empty backup.

      If you use Ludusavi's cloud sync feature, please run a preview in restore mode, which will automatically fix any of these incorrect initial backups, and then perform a full cloud upload on the "other" screen.

    • For Lutris roots, after reading pga.db, Ludusavi did not properly combine that data with the data from the games/*.yml files. (Verified by nihaals)

    • Ludusavi assumed that a Lutris root would contain both games/ and pga.db together. That's true for new installations of Lutris, but older/existing installations would store them separately (e.g., ~/.config/lutris/games and ~/.local/share/lutris/pga.db). To fix this, you can now specify a different pga.db path explicitly. In some cases, Ludusavi can prompt you to update the root automatically.

    • CLI: The find command's --steam-id and --gog-id options only considered primary IDs from the manifest. They will now also consider secondary IDs (e.g., for DLC or different editions).

  • Changed:

v0.24.1 (2024-06-15)

16 Jun 00:20
80977e9
Compare
Choose a tag to compare
  • Fixed:
    • Symlinks were incorrectly traversed when applying redirects. For example, if you had a backup-type redirect from /old to /new, but /new happened to be a symlink to /newer on your system, then the backup would incorrectly contain a reference to /newer.
    • Redirects could match a partial folder/file name. For example, a restore-type redirect from C:/old to C:/new would also redirect C:/older to C:/newer (C:/[old -> new]er).
    • On Linux, if a file name contained a colon (:), it would fail to back up.
    • GUI: When using a game's context menu to create a custom entry, Ludusavi did not scroll down to the new entry.
  • Changed:
    • Updated translations, including a new translation for Finnish. (Thanks to contributors on the Crowdin project)

v0.24.0 (2024-06-08)

09 Jun 02:08
367abb6
Compare
Choose a tag to compare
  • Added:
    • On the "other" screen, you can choose not to back up games with cloud support on certain stores. If a game is customized or already has local backups, then Ludusavi will continue backing it up regardless.
    • For Heroic roots, Ludusavi now supports Amazon and sideloaded games.
    • For Lutris roots, Ludusavi now scans pga.db in addition to games/*.yml in case the YAML files do not contain all of the necessary information.
    • CLI: There is a new api command that can be used for bulk queries. Right now, it only supports looking up titles (analogous to the find command).
    • CLI: There is a new schema command to display some of Ludusavi's schemas.
    • CLI: The find command now accepts a --lutris-id option.
    • CLI: The backups command output now includes each game's backup directory.
  • Changed:
    • Title normalization now ignores apostrophes and quotation marks (e.g., ludusavi find --normalized "Mirrors Edge" will find Mirror's Edge).
    • Some additional fields in the config file have been made optional.
    • Updated translations. (Thanks to contributors on the Crowdin project)
  • Fixed:
    • For Heroic and Lutris roots, if you had multiple copies of the same game, Ludusavi would only use the metadata from one of them.
    • GUI: The game-level duplication badge did not always fade out when the conflicts were resolved.
0